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
|
System Notes File for IRAF Version 2.9.
Begun 9 July 1989.
-------------------------------------------
doc/notes.v28 +
local/notes.v29 +
unix/hlib/motd
unix/hlib/zzsetenv.def
vms/hlib/motd
vms/hlib/zzsetenv.def
Switched IRAFX development systems to version 2.9. (7/9)
unix/os/zfiobf.c
unix/os/zfiotx.c
Changed a couple of <sys/fcntl.h> to <fcntl.h>. (7/9)
unix/as.vax/*
Replaced directory by version from BSD/IRAF (carina). (7/9)
dev/hosts
Changed the bin in the pegasus entry to bin.i386. (7/9)
dev/graphcap
In the process of updating carina I discovered another set of
dpp/psdump entries in graphcap; modified as was done for the termcap
entries a while back. (7/10)
doc/bugs.v25 +
local/bugs.log
Archived the old V2.5-V2.7 buglog in doc and started a new buglog
for V2.8. (7/14)
doc/suniraf.ms
doc/sunsmg.ms +
Installed all new Sun/IRAF installation and site manager's guides.
(7/21)
doc/vmsiraf.ms -> vmsiraf.ms.v25
doc/vmsiraf.ms
Installed new v2.8 VMS/IRAF combined installation & site manager's
guide. (7/25 SRo)
doc/unixiraf.ms
Fixed a couple of typos: {IS,NS}.SOS4.GEN -> {IS,NS}.PORT.GEN. (7/26)
doc/ports/notes.mips
Saved a copy of the notes file for the DECstation (MIPS cpu) port.
(7/26)
dev/devices [tucana only]
Replaced missing cartridge drive entries (old devices had July 24
date). (8/7 SRo)
unix/boot/spp/xpp/xppcode.c
Rewrote the HMS routine in this file, to use integer rather than
floating point to perform the HMS to decimal floating translation.
This appears to have been the only floating point code in the HSI,
and we don't want any floating in the HSI if it can be avoided. (8/8)
unix/hlib/buglog.csh
Changed the default system to V2.8. (8/9)
unix/hlib/extern.pkg [orion]
Uncommented stsdas stuff. (8/9 SRo)
unix/hlib/extern.pkg [orion]
Added rv package, currently pointing to /tucana/u2/fitz/...;
this is a temporary measure. (8/11 SRo)
unix/hlib/install
Added $host/reboot to the list of files for which execute permission
is required. (8/15)
doc/unixsmg.ms +
doc/bsdiraf.ms +
doc/v28revs.ms +
Added the source for the UNIX/IRAF Site Manager's Guide to doc. (8/16)
Installed the BSD IRAF Installation Guide in doc. (8/17)
Installed the V2.8 revisions summary. (8/17)
dev/hosts [orion]
Changed the entry for pegasus to point to `.../bin.i386/...',
not just `.../bin/...'. Must have happened when system was
made generic. (8/31 RS)
/local/iraf/unix/bin.mc68020/alloc.e
Changed ownership to root, though at present this is not necessary
as there are no magtape drives on the Sun-3 complex hosted by orion
disks. Argo was reporting the error message must change ownership
to root for alloc.e when a user logged onto argo tried to alloc mta
(user should have been using orion!mta). Curiously, pictor, also
using same hbin, simply reports 'cannot allocate device', the usual
message when the drive does not exist. (9/1 SRo)
unix/hlib/mkfloat.csh
Replaced by the version developed for Convex/IRAF, which has the
following features:
1. RM can no longer be called to deleted a null list of files.
2. A call to RMBIN was omitted, making the script run about twice
as fast. (9/4)
-------------
Updated the f68881, ffpa, and sparc binaries on tucana (sparc update still
in progress). There was something wrong with some of the binaries, e.g.,
some of the objects were missing from the bin.ffpa OBJS.arc - maybe someone
accidentally deleted these when attempting to change architectures. (9/4)
Completed tucana (irafx) bin.sparc update. (9/5)
sys/imio/iki/qpf/qpfaccess.x
Would supply a missing .qp extension automatically when called with
mode NEW_IMAGE or NEW_COPY. This was inconsistent with the
specification of an image access routine as defined by IKI, and would
cause IMACCESS to fail when called to test the legality of an object
name not containing an extension.
1. Modified to return NO if called with an object name with no
extension and one of the NEW_ access modes.
2. If called with an access mode other than NEW_xxx and no extension
is supplied, and an image with extension .qp exists, will now output
the .qp extension in the EXTN argument. This was another minor
deviation from the IKI specification. (9/5)
dev/graphcap
Corrected the "vapl" (generic laserwriter printer queue for VMS)
entry: there was an "irafhlib:sgiqueue.com", which needed to have
the ":" as "\072". (9/8 SRo)
vms/hlib/libcalcomp.a [iraf, irafx]
vms/bin/x_calcomp.e [iraf, irafx]
Added calcomp libraries to hlib on draco and relinked the calcomp
graphics kernel to accommodate some user requests (USE_CALCOMP is
still set to NO in mkpkg.inc, as it should be for distribution).
Had to link by hand with "-z" to avoid fatal linker conflicts with
the C runtime library, which is used in the hacked kpno version of the
calcomp library; a user site with a standard calcomp library probably
would not have this problem. (9/13 SRo)
doc/bsdiraf.ms
Fixed error in example showing how to make a symbolic link to
$iraf/bin.vax. (9/13)
sys/fmio/fmfcache.x
Modified to close and reopen an lfile if already open, and accessed
with a mode requiring write permssion and lfile is currently opened
read only. (9/14)
sys/qpoe/qpgpar.x
sys/qpoe/qpppar.x
These routines use a static data array PVAL as intermediate storage
for the parameter value, returning a pointer to this buffer to the
calling program. Misalignment would occur when reading or writing
values of type DOUBLE if the PVAL buffer was not double aligned.
Double alignment of a statically allocated buffer cannot be guaranteed
portably. The solution was to make the buffer 1 double larger,
compute a char pointer to pval[2], then double align this pointer.
(9/16)
sys/qpoe/qpsizeof.x
Fixed a typo in the procedure header comment. (9/16)
sys/qpoe/qpppar.x
sys/qpoe/qpiowb.x
Added a QP_MODIFIED(qp)=YES in a couple of places to ensure that
the QPOE file header is marked for updating. (9/16)
unix/shlib/edsym.c
Commented out the code which deletes "file.o" type symbols.
It appears that deleting these may cause trouble for DBX. (9/17)
-----------------
Did the first full bootstrap under SunOS 4.0.3, with no apparent problems.
Did a sysgen/relink of the f68881 binaries on tucana. (9/20)
local/.login
Cleaned up a bit, e.g., added a commented out version of "irafarch"
for the Sun-4 and 386i (omits the FLOAT_OPTION), and commented out the
call to irafarch for the Sun-3 (to avoid the possibility of it being
set wrong). (9/21)
sys/fio/getlline.x -> glongline.x
sys/fio/getlline.x +
1. Changed the name of the source file for GETLONGLINE from getlline.x
to glongline.x. Modified the routine to reconstruct long lines broken
by the SZ_LINE limit of getline. If the text returned by getline is
not newline terminated another line will be fetched, and so on until
the original newline delimited line has been reconstructed. The
linenumber argument is not incremented until a newline delimited
logical line has been reconstructed.
2. Added a new routine GETLLINE, for get-logical-line. This is like
getlongline except that it does not do anything fancy, like skip
comment lines or join lines with backslash continuation. All it does
is eliminate the SZ_LINE restriction when reading lines of text from
a file. Lines longer than SZ_LINE are reconstructed, returning the
full newline delimited line to the caller. (9/26)
sys/etc/main.x
Modified the iraf main to use getlline rather than getline to read
input lines, to allow reconstruction of very long lines of text.
Note that this is independent from the use of backslash continuation
to enter very long task invocation commands containing many arguments.
The main advantage of getlline is that it allows task *arguments*
that are longer than SZ_LINE. (9/26)
hlib$extern.pkg [pegasus]
Changed the local package pathname to `/orion/local/kpnolocal/'
from `/orion/u2/kpnolocal/', where it used to be. (9/26 RLS)
--------------------
Updated tucana.f68881, irafx@draco. (10/2)
/orion/local/stsdas/stsdas.cl
usr$2:[stsdas]stsdas.cl
usr$2:[stsdas.pkg.problems]newspr.temp
Added comment about sending SPR's and contacting SDAS group for
help to package header. Copied orion version of newspr.temp to
draco, as it was lacking there (shouldn't have been! - mystery).
(10/4 SRo)
unix/shlib/mkshlib.csh
1. Replaced a couple references to "unix/hlib" by "unix/bin.`mach`",
to allowing linking the shared library regardless of which BIN
directory the link unix/bin points to.
2. Modified the command "cc medit.c -o medit.e" to include the
-fsoft switch when compiled on mach=mc68020. Otherwise, if the
architecture were set to ffpa but there was no fpa on the host,
the executable would fail to run. (10/4)
unix/sun/fifo.c
The FIFO program is a debug-server which emulates the DISPLAY/IMTOOL
datastream, writing to a frame buffer implemented as an array in
memory. As the program executes all commands are logged to the
stderr to provide a record of the server-client communications.
Since the program does not use the window system, it can be run
remotely on any node to test the fifo/datastream interface.
1. Updated to the datastream protocol and fifo pipe semantics used
by the V2.9 DISPLAY/ZFIOGD.
2. Fleshed out the program a bit, to make it more useful as a
datastream debugger, in particular added an interactive cursor
capability. The original version of the program was written mostly
to debug fifo i/o. (10/7)
-------------------
Updated tucana.{f68881,ffpa,sparc}.
Configured the first scientist workstation (bokchoy) to run irafx.
Added entries for all the scientist workstations to the iraf dev$hosts
file on all major iraf server nodes. (10/7)
sys/etc/envgetd.x
Fixed a typo: the variable dval, which should be of type double,
was inadvertently declared as int. (10/7)
dev/termcap
dev/graphcap
Added a site local additions section to the top of each file.
In the graphcap, moved the host dependent plotter device name section
to near the top of the file, since it has to be modified more often
than what follows. (10/7)
pkg/cl/bkg.c
sys/libc/csppstr.c
Found and fixed another place where long environment strings would
be truncated. This was occuring when spawning a background job
in the CL, due to a SZ_LINE buffer limitation in the CL bkg.c code,
and an 128 char limitation in the LIBC routine c_sppstr.c.
Increased both buffer sizes to 1024 chars. (10/7)
unix/hlib/strip.iraf
Fixed a typo iraf$bin.68881/OBJS.arc -> iraf$bin.f68881/OBJS.arc.
Added entries for sparc and i386. (10/12)
unix/boot/spp/xc.hlp
unix/boot/mkpkg/mkpkg.hlp
Added documentation for the "-p pkgname" flag. (10/16)
unix/hlib/buglog.csh
Modified to add a blank line between the BUG: and STATUS: fields
of the buglog entry to improve readibility, since these sections
are often large, multiline paragraphs. (10/19)
unix/os/zgcmdl.c
This routine uses a highly system dependent (BSD43) technique,
depending upon the layout of argc/argv/environ in process memory,
to reconstruct the argument list of the process. This can fail
on systems that don't lay out variables in the assumed order.
Accordingly, code was added (for systems that define BSDUNIX in
<iraf.h>) to import the global variables xargc/xargv, defined by
the BSD routine getarg(3), and use these to reconstruct the argument
list. The variables must be present in an object or library
(normally libU77.a) for processes to link successfully.
The variables are initialized to argc/argv by a Fortran main.
If xargv is zero when ZGCMDL is called, the old scheme will be used
to try to locate the process argv (hence C programs that don't
initialize xargc/xargv should still run). This scheme is still
not ideal as it is implementation dependent, but is better than
what was being done previously. (10/20)
NOTE - zmain.c should possibly also be updated to initialize or
define and initialize xargc/xargv, however due to complications
having to do with the shared library (global variables are tricky)
I am going to hold off on this. ZGCMDL should continue to work
from SPP programs (which don't initialize xargv) as it has in the
past.
dev/hostlogin
Expanded on the comments somewhat. (10/20)
dev/hosts [orion, tucana, draco]
Changed .f68881 to .sparc in irafks.e pathname for pictor, now
a sparcstation. (10/24 SRo)
vms/gdev/sgidev/sgi2vhpp.for [irafx only]
Added a declaration integer for function str_len in module
parse_command (bug discovered by j.eisenhamer at ucla). (10/27 SRo)
dev/pix.imh
dev/pix.pix [vms/iraf]
Somehow the standard test image in VMS/IRAF got its file type
changed to Stream_LF, instead of fixed 512 byte records. Restored
to its normal state by doing an imcopy/imdel/imren. (11/1)
sys/osb/bitfields.c
Corrected a misstatement in a comment in BITUPK. (11/4)
dev/termcap
Changed the names "gterm-nqs", "g-lpr", and "g-enscript" to omit
the minus. (11/10)
unix/boot/generic/tok.l
The generic preprocessor would translate symbols such as "FOO_PIXEL",
as, e.g., "FOO_int", making it awkward to manipulate generic macro
definitions in applications code. The translator was modified to
replace the string "PIXEL" occurring as part of an upper case
identifier, as the type name in upper case. (11/11)
lib/mii.h
sys/etc/miiread.gx
sys/etc/miiwrite.gx
sys/etc/mkpkg
sys/etc/gen/ +
sys/osb/miilen.x
sys/osb/miinelem.x
sys/osb/miipak.x
sys/osb/miipak16.x
sys/osb/miipak32.x
sys/osb/miipak8.x
sys/osb/miipakd.x +
sys/osb/miipakr.x +
sys/osb/miipksize.x
sys/osb/miiupk.x
sys/osb/miiupk16.x
sys/osb/miiupk32.x
sys/osb/miiupk8.x
sys/osb/miiupkd.x +
sys/osb/miiupkr.x +
sys/osb/mkpkg
Added support for single and double precision IEEE floating to the
MII interface. The new datatypes are MII_REAL and MII_DOUBLE,
as defined in <mii.h>. The new routines miipak[rd] and miiupk[rd]
convert to and from the native floating point format and the
machine independent IEEE (non byte swapped) format. (11/11)
sys/osb/mkpkg
sys/osb/ieee.gx +
sys/osb/bswap8.c +
unix/hlib/mach.h
unix/hlib/libc/knames.h
Add support for low level IEEE/native floating point conversions to
the host interface.
1. The following definitions were added to <mach.h>:
IEEE_SWAP4 byte swapping required for 32 bit IEEE
IEEE_SWAP8 byte swapping required for 64 bit IEEE
IEEE_USED local host uses IEEE format
2. The following conversion primitives were added to OSB:
ieepak[rd] (datum)
ieeupk[rd] (datum)
ieevpak[rd] (native, ieee, nelem)
ieevupk[rd] (ieee, native, nelem)
The first two routines handle scalar conversions, the second vectors.
The routines in ieee.gx are the "portable" versions. The "portable"
solution it to merely copy the array - this works on any modern IEEE
host. If the local host does not use IEEE floating, a host specific
version of this file should be written and placed on the MKPKG special
file list, with the source in AS.
3. Also added a new routine BSWAP8 to OSB, for swapping doubles.
(11/11)
sys/imfort/imrnam.x
sys/imfort/imcrex.x
sys/imfort/imfmkpfn.x +
sys/imfort/imemsg.x
sys/imfort/imfort.h
sys/imfort/mkpkg
sys/imfort/imdelx.x +
sys/imfort/imdele.x
sys/imfort/imfparse.x
sys/imfort/oif.h
A number of modifications and enhancements were made to IMFORT in
order to fix the following bug. In the original IMFORT, the pixel
file was always placed in the same directory as the header hence no
effort was made to ensure a unique pixel file name. When support
for specifying "imdir" was added, it became possible for images of
the same name in different directories to reference pixel files in
the same imdir, making pixel file name collisions possible. In the
event of a collision, the pixel file of the new image would clobber
the old one, resulting in two images in different directories pointing
to the same pixel file, a very dangerous situation.
1. A new internal routine IMFMKPFN was added to determine a unique
pixel file name in the current imdir. IMCREX and IMRNAM were modified
to use this, fixing the problem described above.
2. Since the above change provides clobber checking for pixel files,
it was necessary to add clobber checking for entire images at create
or rename time (evidently the original interface did not provide this).
Clobber is disabled by default, causing a nonzero IER to be returned
in a IMCREA or IMRNAM operation if the new image already exists; the
variable "clobber" may be defined in the user environment to permit
new images to clobber existing ones (deleting both the header and
pixel files).
3. Examination of interlibrary object module references indicated that
a limited amount of VOS filename mapping could be added without greatly
increasing executable size or link time. A call to vfn_translate was
added in a couple of places to cause the root and extn fields of all
image names to be escape sequence encoded. This should fix the
problems of mixed case image names and image names with embedded
numeric fields (.0001 etc.) translating differently in IRAF and VMS
(this is not a problem with UNIX since it is so similar to IRAF).
4. A new routine IMDELX was added, which is an SPP version of IMDELE.
5. Several new error codes and error messages were added.
(11/28)
sys/imfort/tasks/tasks.cl -
sys/imfort/tasks/tasks.unix +
sys/imfort/tasks/tasks.vms +
Replaced the file "tasks.cl", which contains the host dependent
CL task statements for the IMFORT test programs, by reasonably
portable UNIX and VMS versions which can be used without modification
on most IRAF hosts (for the others they will at least serve as
useful examples). The UNIX version requires that $iraf be defined
in the host environment, the VMS version requires the logical IRAFDISK.
(11/29)
unix/hlib/install
Fixed a bug in the portion of INSTALL which updates the imtoolrc
file. If a local version of the file already exists, and it is
different than the default iraf version, the old file is renamed
to .OLD and replaced by the new version. The problem was that the
new file was being installed with MV rather than CP! Hence, the
first time this happened the correct file would be installed, but
the source file would be removed from unix/sun. The next time
install was run the files would again be different (since the source
file would be missing) and the old file would be moved to .OLD
but not replaced, causing the imtoolrc to be removed from both
the source directory and local/lib. (12/1)
sys/fmio/zzdebug.x
Added a new debug task mkfile, used to make zeroed lfiles of the
indicated size in Kb. (12/2)
lib/syserrmsg
sys/fmio/fmsync.x
sys/fmio/fmioextnd.x
sys/fmio/fmdebug.x
Modified FMIO to improve the way datafile overflow is handled.
The FMIO data structures impose a limit on the size of the datafile
when the datafile is first created; the largest possible datafile
depends upon the page size chosen and the number of page table index
entries. These may be specified by the user, but the default values
of page=512bytes and maxpti=256 will yield a max datafile size of
32 Mb, enough for most applications (ROSAT QPOE files have already
exceeded this however).
1. Previously, the datafile-too-large condition was detected only
at datatype sync time, when the PTI was updated. Added code to the
lfile file driver to check for PTI overflow and return a file write
error if this occurs while writing to an lfile.
2. An effort was made to improve the recovery from such an error.
Enough space is always reserved to permit a sync of the principal
datafile data structures. If a write to an lfile fills the datafile
to capacity, a write error is return to FIO, and a FMIO error is
posted so that a subsequent FM_CLOSE will complain about
datafile-too-large, after syncing the datafile containing the
truncated lfile. No further writes to the datafile which try to
extend an lfile will be possible, but it should still be possible
to read the lfile, or rebuild it with a larger page size or whatever.
(12/2)
unix/boot/spp/xpp/xpp.l
unix/boot/spp/xpp/xppcode.c
unix/boot/spp/xpp/decl.c
Modified the preprocessor to add a statement to the executable body
of every REAL or DOUBLE procedure to initialize the procedure value
to zero upon procedure entry at runtime. The problem is that on
some systems (e.g., a Sun-4) if a procedure which returns a floating
point function value exits without setting the function value, e.g.
during error processing, the function value may be random garbage.
In the case of a floating point function even a simple copy of the
function value may result in a floating point exception, causing
program termination, if the garbage value is not a legal floating
point number. This is despite the fact that the program may be
perfectly correct in that it detects the error return and never uses
the function value. Having the preprocessor initialize the function
value to zero is a simple solution to the problem which does not
require any modifications to applications code, although there is a
very slight performance penalty.
In addition to modifying the compiler as indicated above, I recompiled
all the floating point functions in the bin.sparc version of the VOS
on tucana (use of which led to the above fix). (12/3)
unix/hlib/libc/setjmp.h
Uncommented the old #pragma undefined_control_flow(zsvjmp_), which
again seems to be necessary for the CL on a Sun-4. (12/3)
dev/hosts [tucana, orion]
Changed bin.sparc to bin.ffpa for new Sun3/160 node libra. (12/6 SRo)
unix/os/zfiotx.c
Modified to ignore the file write error which occurs when a process
attempts to write to the terminal after the user has logged out.
This would cause unix/iraf background jobs submitted without
redirecting the output to die after the user logged out, if any
program output occurred. I could also have reopened the stdout and
stderr on a text file in the user's home directory to save the output
in the event that this error occurred, but it would seem that if the
user wanted such output saved they would have redirected it to a file
explicitly. (12/9)
pkg/system/cmdstr.x
This hidden system task, used by MKSCRIPT to construct command strings
to build batch scripts, will abort if a task contains a parameter
which does not have a value. The error message which appears if this
happens was modified to identify the task and parameter name causing
the problem. (12/11)
unix/os/alloc.c
Made some modifications to make the task more secure. (12/13)
gio/imdkern/ +
pkg/plot/plot.cl
pkg/plot/plot.hd
pkg/plot/plot.men
pkg/plot/imdkern.par +
pkg/plot/doc/imdkern.hlp +
dev/graphcap
Installed a new GIO graphics kernel IMDKERN (prepared by Zolt Levay
at STScI, by modifying the SGI kernel operating in bitmap mode).
This kernel draws into the image display device frame buffer, using
the IMD interface. The new kernel is plot.imdkern. Plots may be
directed directly to the display device graphics overlay by
specifying one of the logical graphics device "imd[wrgby]",
(white/red/green/blue/yellow), or just "imd" (defaults to green).
More control over the color is possible by running the kernel
directly as a task.
[...details to be added... system integration still in progress]
(12/21)
pkg/plot/t_contour.x
pkg/plot/t_hafton.x
pkg/plot/doc/contour.hlp
pkg/plot/vport.x
The following changes were made to the CONTOUR program. These changes
affect only the semantics of the "perimeter" and "fill" parameters
and are disabled if the parameters have their default values (draw
perimeter, don't fill).
1. If perimeter drawing is disabled, no perimeter is drawn. This
seems logical, but previously, if perimeter drawing was disabled,
the "crtpict" style perimeter was disabled, but the NCAR grid
perimeter box was still drawn.
2. If fill is enabled and perimeter drawing is disabled, and no user
viewport is specified, the contour map is scaled to fill the entire
device viewport, and all axis and plot labelling is disabled. When
used with the new IMDKERN gio kernel, this allows overlaying of
contour plots on the image display. (12/21)
dev/hosts
Changed "f68881" to "ffpa" for octans entry, now that only the ffpa
executables live on octans (to save space). (12/26 SRo)
pkg/cl/config.h
Increased the stack size from 20K to 32K.
Increased the dictionary size from 40K to 128K. (12/29)
sys/imio/db/imputd.x
Modified this routine to use NDIGITS_DP-1 instead of NDIGITS_DP to
format printed numbers with the format "%0.*g". The machine precision
estimate is only an estimate, and often trying to print that last
digit results in making up garbage. This causes numbers such as
1.000000000000000001 to be printed when the actual number is 1.0.
(12/31)
sys/imio/db/idbcard.x +
Added a little package for reading the internal IMIO FITS header.
This package is used in the WCS code and is not intended for use
outside of the system code. (12/31)
sys/mwcs/ +
Installed the new VOS interface MWCS, or mini-WCS (world coordinate
system). This is a general interface for coordinate system
representation, management, and evaluation, for use both in
applications and as an embedded interface in system code.
Although MWCS addresses the general WCS problem, several important
problems were left unsolved, and a second major version of the
interface is planned for the future. MWCS is NOT regarded as a
frozen VOS interface at this point. (1/3/90)
sys/imio/iki/stf/stf.h
sys/imio/iki/stf/stfget.x
sys/imio/iki/stf/stfopen.x
sys/imio/iki/stf/stfwfits.x
sys/imio/iki/stf/stfrfits.x
Modified the STF image kernel to preserve the comment field of
PTYPEi cards when the FITS header is read and later rewritten to
disk.
sys/imio/iki/stf/stfupdhdr.x
sys/imio/iki/stf/stfrgpb.x
sys/imio/iki/stf/stfreblk.x
sys/imio/iki/stf/stfrdhdr.x
sys/imio/iki/stf/stfopix.x
sys/imio/iki/stf/stfnewim.x
sys/imio/iki/stf/stfaddpar.x
Went through all the STF code and added ERRCHK statements where they
were missing. At least the files listed above were affected. (1/4)
sys/imio/iki/stf/stfwcs.x -
Deleted the little WCS package used in the STF kernel. This was
used to apply the section transform to the WCS when making a newcopy
image. Since this function is now performed by IMIO using the more
general MWCS package, it is no longer necessary to do this in the
kernel. (1/4)
sys/imio/iki/stf/stfhdrextn.x -> stfhextn.x
sys/imio/iki/stf/stfmkpixfn.x -> stfmkpfn.x
Renamed these files to shorten the file names. (1/4)
sys/imio/iki/stf/mkpkg
sys/imio/iki/stf/stf.h
sys/imio/iki/stf/stfopix.x
sys/imio/iki/stf/stfopen.x
sys/imio/iki/stf/stfcopyf.x
sys/imio/iki/stf/stfwfits.x
sys/imio/iki/stf/stfrdhdr.x
sys/imio/iki/stf/stfnewim.x
The original STF code would build the FITS "user area" of the header
by writing out the GPB (group parameter block) cards, marking the
size of the GPB area, then writing the contents of the old user area
or FITS header. When the header was later updated the GPB cards would
be read to get any new values, then the cards following the GPB area
would be output to the image header. This approach turned out to
have the following problems.
1. Since the size of the GPB area at the start of the user area was
fixed at image open time, runtime edits of the header affecting this
area, e.g., deleting of a GPB card, could in effect change the size
of the GPB area, causing user cards to be lost. This should not
happen and would normally result in an error when trying to read the
GPB card to update its value, but if a user card happened to redefine
a GPB card, an incorrect value could result. I don't know of any
occasion where this happened, but it was possible.
2. It was possible for user area cards to redefine GPB area cards.
This is normally harmless since IMIO uses the first occurrence of
a card, but could confuse the user. The problem was particularly bad
because in an image copy involving a format change such as STF -> OIF
and later OIF -> STF, the GPB cards would become OIF user area cards
in the first copy, appearing as duplicate cards in the OIF -> STF
conversion.
This problem was fixed by scrapping the idea of a fixed size FITS/GPB
area at the beginning of the user area. Instead, a filtering scheme
is now used which can, e.g., copy the user cards while deleting any
cards which redefine GPB area keywords. The expense is about the same
as before, as the FCOPYO operation, used to spool user cards and later
copy them back to the user area, was replaced by a copy/filter
operation (stf_copyfits) of comparable expense. The order of non-GPB
cards is never changed; any user defined GPB cards will be deleted
and replaced by system generated cards at the beginning of the FITS
header. All references to the STF_SZGPBHDR field of the STF
descriptor were deleted.
In the process of fixing this I also discovered a large block of
code in stf_opix which would make 5 passes through the entire header
(two fcopyo operations and one strlen), but which was totally
redundant since the stf_mergegpb code was deactivated some time ago.
The whole mess was simply commented out for now. (1/4)
sys/gio/ncarutil/conbd.f
sys/gio/ncarutil/conrec.f
Increased the size of the contour work area (STLINE work area overflow
bug) from 5000 to 20000. (1/4)
sys/imio/iki/stf/stfnewim.x
sys/imio/iki/stf/stfrgpb.x
1. In the process of testing the new STF code I discovered that the
WCS in the first element of a new multigroup image is initialized to
a pixel WCS, whereas subsequent groups are initialized to zero (the
parameters are entered into the descriptor but do not describe any
valid WCS). I modified stfrgpb.x to set up the default pixel WCS
in this case too.
2. The default pixel WCS was modified to set CRVAL=CRPIX=0 rather
than CRVAL=CRPIX=1 as before. The two forms are equivalent, but
zero is more consistent with MWCS practice. (1/5)
sys/imio/iki/qpf/qpf.h
sys/imio/iki/qpf/qpfcopypar.x
sys/imio/iki/qpf/qpfwfilter.x +
sys/imio/iki/qpf/mkpkg
1. Modified QPF to propagate any WCS information in the QPOE file to
the image header. The MWCS, stored in the QPOE header as a variable
length binary array, is loaded into a MWCS descriptor and then "saved"
in the image header as the standard set of FITS cards.
2. Added code to QPF to record in the header the QPIO filter used to
generate the image. This is recorded as a series of FITS cards,
however many it takes, of the form QPFILTnn, where the nn goes 01,
02, etc. (1/5)
sys/qpoe/README
sys/qpoe/qpoe.h
sys/qpoe/qpsavewcs.x +
sys/qpoe/qploadwcs.x +
sys/qpoe/qpiolwcs.x +
sys/qpoe/mkpkg
lib/syserr.h
lib/syserrmsg
Added two new routines qp_[save|load]wcs to QPOE. These are used to
save or load a MWCS type world coordinate system in a QPOE variable
length binary header parameter "qpwcs". A QPOE file can contain any
number of WCS parameters, e.g., each for a different physical system,
but at present only "qpwcs" will be used by the system code, e.g.,
QPF and IMIO.
qp_savewcs (qp, mw)
mw = qp_loadwcs (qp) # aborts if no WCS
mw = qpio_loadwcs (qpio) # aborts if no WCS
A new routine qpio_loadwcs was also added to QPIO. This is like
qp_loadwcs, except that it also sets up the Lterm of the WCS to
reflect the current blocking factor and rect set for the QPIO
descriptor. The logical coordinate system of the resultant WCS
will give the pixel coordinates of the defined rect. Note that
the physical system (event coordinates) and world system (e.g.,
TAN projection) are not affected.
It is qpio_loadwcs which is used by QPF to load the WCS for a QPOE
file. In this case the physical image matrix is described by the
logical coordinate system, since the physical system for QPOE data
is always event coordinates. Any IMIO image section applied to a
QPOE file opened under IMIO modifies the Lterm, so in such a case
the Lterm is formed from the QPIO rect and blocking factor and the
IMIO section as successive transformations, leaving the physical
system unaffected and still referring to the original event coordinate
system. (1/5)
sys/mkpkg
sys/gio/mkpkg
Added entries for the new IMD (GIO kernel) code, so that IMD will be
automatically updated in a sysgen. (1/6)
sys/imio/immaky.x
Added code to this routine, called when a NEW_COPY image is created,
to apply the section transform to the WCS of the new image (since the
WCS itself is currently stored as data in the header it is automatically
propagated). This is the only place in IMIO which knows anything about
MWCS. Although the code added to IMIO is very simple (a mw_loadim on
the old image followed by a mw_saveim in the new image), much of MWCS
gets involved. Since MWCS is not yet sufficiently well tested I set
things up so that if "nomwcs" is defined in the user environment,
the calls to MWCS are skipped. Note that in any case, for OIF and
STF images, MWCS is called only 1) in a NEW_COPY operation, 2) if the
input image was opened with an image section. For QPOE images, MWCS
is called for every image open, but only if a WCS is stored in the
QPOE file. (1/6)
--------------------------
Updated f68881, ffpa, and sparc binaries on tucana.
Copied snapshot of V2.9 system to DECstation.
Started DECstation V2.9 full bootstrap and sysgen. (1/6)
pkg/plot/t_graph.x
This file contained a routine im_projection with the same name as as
identical routine in file improject.x, causing multiple entries for
the same routine in the in package library (caused a warning message
from the MIPS compiler on the DECstation). (1/7)
unix/hlib/mach.h
Changed NDIGITS_DP from 17 to 16 (for IEEE double precision). This
corresponds to a mantissa of 52 bits (IEEE double uses an 11 bit
exponent). The value of 17 set a while back was not correct. (1/20)
unix/hlib/iraf.h
Increased the value of ARB to a larger "arbitrarily large value" (about
1 billion; the max signed integer is about 2 billion). This won't
take affect globally until the entire system is recompiled, but this
allows selective recompilation of objects for which the smaller value
was a problem. This change should be transparent, but will likely
root out any errant programs that are using ARB improperly, e.g., to
dimension a static array. (1/28)
Also manually recompiled the objects for a number of files in FMTIO,
FIO, IMIO, etc., for the f68881, ffpa, pg, and sparc architectures
on tucana, where a small ARB could unnecessarily limit the size of
an operation. A full sysgen will be needed eventually.
sys/imio/iki/stf/stfrdhdr.x
sys/imio/iki/stf/stfreblk.x
These files were setting IM_LENHDRMEM, the current image descriptor
length minus the base descriptor, to the current header length plus
space for 20 cards. The problem was that this would override the
max_lenuserarea specification, used to set the max header size at
image open time. The code was modified to reallocate the header
only if more space is needed, thus allowing more than 20 cards to
be dynamically added to an open STF image. This also eliminates
yet another full pass through the header, if the header gets copied
in a realloc operation. (1/28)
local/.suntools [Sun/IRAF HSI]
local/.sunview
Replaced the sample pathnames used to source the .login file by the
path $home/.login. When these were first set up I didn't think this
worked, but evidently it does now. (1/29)
pkg/lists/rimcursor.x
pkg/lists/rimcursor.par +
pkg/lists/doc/rimcursor.hlp
pkg/lists/lists.cl
pkg/lists/mkpkg
The RIMCURSOR task was completely rewritten to add support for world
coordinate systems. Coordinates may be output in any WCS defined for
the reference image. Currently, this is not being done quite as it
should be, since the image cursor read code (using libds) is an interim
facility which differs from what is planned. Nonetheless this should
provide a useful tool for reading out image locations in world
coordinates until integration of WCS support into the system is more
complete. (1/29)
sys/tty/ttygsize.x
If the terminal device does not support the runtime screen size query,
this routine would make a couple of ttygeti() calls to get the screen
size from the termcap entry for the terminal. This would effectively
override the use of the environment variables ttynlines/ttyncols,
or "stty nlines=NN" etc., to specify a screen size other than the
default. The ttygeti() calls were replaced by ttystati() calls to
permit the user to override the termcap screen size defaults. (1/29)
sys/tty/ttygdes.x
Modified the defaults mechanism for querying the environment, termcap,
etc., for the screen size at termcap entry open time. The defaults
are still much the same, i.e., the environment is used if the device
being opened is the user terminal device, else the termcap entries
are used if found, else the default screen size 24x80 is used. The
main change was to search the termcap if the environment variables
are not defined (unlikely since they are in zzsetenv.def), and to avoid
a possible error abort if li/co are not present in the termcap entry.
This was not a functional change, the code is merely a bit more robust.
(1/29)
unix/hlib/install
unix/hlib/mkmlist.csh
unix/hlib/mkiraf.csh
unix/hlib/buglog.csh
unix/hlib/mkfloat.csh
Revised the "unalias" lists in these scripts to unalias more of the
unix commands that users might possibly have redefined. (1/31)
unix/sun/imtool.c
unix/sun/imtool.icon
unix/sun/gterm.icon
1. Replaced the GTERM and IMTOOL icons by the latest creations.
2. Modified the IMTOOL source to conditionally compile a cursor rop
which avoids the famous "chicken scratch" bug on the SS1. This option
is the default for the sparc version of imtool, until the bug gets
fixed (it is still present in sparcstations shipping today, under
4.0.3). (2/2)
sys/fmtio/strdic.x
Modified slightly to optimize the dictionary string compare. (2/3)
sys/imio/iki/stf/stfrdhdr.x
sys/imio/iki/stf/stfrfits.x
sys/imio/iki/stf/stfctype.x +
sys/imio/iki/stf/mkpkg
sys/imio/iki/stf/stf.h
sys/imio/iki/stf/stfopen.x
The STF image kernel was optimized for the case where the same image
is repeatedly read, as when successively accessing the individual
images in a large group image. This was done by adding a header file
cache. Whenever the kernel tries to read the FITS header of an STF
image, it looks first in the internal STF header cache and uses the
cached version if there is a cache entry for the given file, and the
cached entry is up to date. If the cached entry for a header file is
valid the cache and disk versions are identical and the disk file need
not be opened or read. Modifying the disk version of a header file
automatically invalidates the cache entry in all processes with an
active header cache (by updating the file modify date). Since a cache
access is functionally equivalent to a header file read, the cache
will speed up all types of image accesses, e.g., occasional access
to the same image, and sequential access to all the elements of a group
image, for both reads and writes (so long as the header file is not
modified, forcing a cache slot reload). The cache operates as an LRU
cache with a fixed number of cache slots, by default 3. The default
number of slots may be overridden by defining "stfcache=<nslots>" in
the user environment. Due to the amount of memory required for the
headers, there is a builtin limit of 5 cache slots per process.
Setting stfcache to zero disables the cache.
A profile of STF with the cache enabled shows that, for repeated
immap calls on subimages of a single group format image, most of the
cpu time is now consumed by the read group parameter block code.
Image header keyword accesses, e.g. to define the GPB header entries,
are still relatively expensive due to the sequential-FITS nature of
the current imio/db code. (2/3)
unix/bin.mc68020/bytmov.c
unix/bin.mc68020/amovs.c
unix/bin.mc68020/amovr.c
unix/bin.mc68020/amovl.c
unix/bin.mc68020/amovi.c
unix/bin.mc68020/amovd.c
unix/bin.mc68020/amovc.c
Added an IF test to do nothing if the input and output arrays are
the same (copy is a no-op). (2/4)
---------------------
Begin full bootstrap and sysgen of V2.8 for tucana/f68881. This is the first
full compile since a new version of the Sun Fortran compiler was installed
with SunOS 4.0.3. (2/4)
sys/fmtio/patmatch.x
There were several occurrences of assignments such as "cval = ARB"
in this code, where CVAL is of type char. This is illegal since ARB
can be a large number, and the bug was found and flagged by the
compiler now that ARB is larger than the max value of an integer*2
char. Changed the ARB to 0; it appears that the value is a mere
placeholder, being filled in later by a real value at runtime, hence
the value in the code is indeed arbitrary. (2/4)
unix/hlib/mkpkg.sf.SUN3
Added sys$gio/ncarutil/autograph/agstup.f to the list of files to be
compiled with the optimizer turned off. The f77 optimizer core dumps
on this file. (2/4)
lib/syserrmsg
Added verbose error messages for FMIO, QPOE, and MWCS. (2/4)
---------------------
Updated (incremental) sparc and ffpa binaries as well.
Snapshot of beta system made for STScI. (2/5)
---------------------
Did a full sysgen (recompile) of the NOAO packages for SPARC. (2/6)
sys/mwcs/wftan.x
Modified to check for ra > 360, and subtract 360 if this occurs. (2/7)
local/.forward -
unix/hlib/gripes.cl
1. Deleted the .forward file in iraf/local.
2. Modified GRIPES to attempt to send gripes to iraf via email to
the internet or via span, depending upon the system. (2/8)
sys/plio/README
sys/plio/mkpkg
sys/plio/plrio.x +
sys/plio/plsectnc.x +
sys/pmio/README
sys/pmio/mkpkg
sys/pmio/pmrio.x +
sys/pmio/pmsectnc.x +
1. Added a new routine PL_SECTNOTCONST to PLIO and PMIO. This is
patterned after pl_sectnotempty(), but checks to see if the given
mask section is constant valued, rather than zero. If the section
is constant valued the mask value assigned to the region is returned
as an output argument.
2. Added a new mini-package PLRIO, used to efficiently random access
any 2D plane of an existing pixel list or image mask. The mask is
opened for random access on a special descriptor which incorporates
a scaled, active 2D lookup table. Most subsequent plr_getpix(plr,i,j)
calls will return the given mask value directly from the table with
very little overhead; only if the referenced pixel occurs in a region
too complex to be described by a single table entry is the value
computed by direct evaluation of the mask. A special 2D binary
recursive algorithm (using pl_sectnotconst above) with log2(N)
performance is used to calculate the scaled lookup table. These
algorithms provide efficient table generation and random mask pixel
access even for very large masks. (2/10)
sys/qpoe/qpiogetev.x
sys/qpoe/qpioclose.x
Modified qpio_getevents() to make use of PLRIO to randomly sample a
region mask when performing event filtering of a nonindexed event list.
The problem here is that in a nonindexed event list, events need
not be sorted positionally, and successive events can have random
coordinates (this is guaranteed to be the case, for example, in a
time sorted QPOE file). If a region mask is being used for extraction
with such data, the mask must be evaluated to a single pixel for each
event in the event list. Since a large event list might contain
10E6 events or more, some sort of lookup table is required for
efficient extraction. The old code was using a static lookup table,
but this failed for ROSAT data, where a region mask is 8192 pixels
square, requiring a 128Mb static lookup table! By using the scaled
active lookup table provided by PLRIO, we can provide comparable
runtime efficiency (table generation is actually more efficient),
using a table of only 256x256 or so. (2/10)
sys/qpoe/qpexopen.x
sys/qpoe/qpioparse.x
lib/syserr.h
lib/syserrmsg
1. QPIO_PARSE now checks that brackets, parenthesis, etc., match at
the end of an expression, and takes an error exit if this is not the
case.
2. QPEX_OPEN now checks the error status of the QPEX expression
compiler, and takes an error exit if any errors occurred during
expression compilation (additional warning messages appear during
compilation for each error encountered). (2/10)
sys/qpoe/qpiogetev.x
The event i/o code was not working at all for the case of indexed
extraction, with a bounding box (rect) and a region mask. The call
to the mask code to determine if a line segment is empty had the
endpoint of the segment set to the start point, hence was testing
only a single pixel (column of the rect). (2/11)
sys/plio/plupdate.x
sys/plio/plcmpress.x
sys/plio/zzdebug.x
The following changes were made to fix the "PL_LLFREE inconsistent"
warning seen when editing complex PLIO masks.
1. The code in plcmpress.x which computes the space used by a mask
was incorrect; this would cause the warning message to be printed
even if the descriptor value of PL_LLFREE were correct. The code was
using LP_BLEN (the line list buffer length) to accumulate the mask
length, rather than LP_LEN (the amount of words of the line buffer
actually used to store the current line).
2. There was a bug in plupdate.x which could cause PL_LLFREE to be
computed incorrectly in certain cases. When the reference count of
a line buffer went to zero, causing the buffer to be freed, the entire
buffer space was being added to the free space count, which was
incorrect because any line buffer space unused at the time the
reference count went to zero would already have been counted as free.
3. Added a new debug task "scripts" to the PLIO zzdebug.x This task
is used to create drawing scripts for PLTEST, making it easier to
test complex mask drawing operations.
Both of these bugs reflected special cases that occur only when editing
complex masks. In the actual tests run, a test case of 1500 circle,
box, and point region draws in a 1024sq mask, bug #1 did not show up
until over 4000 line edits had occurred, and bug #2 did not show up
until over 14000 line edits had been made. (The final test, which
ran to completion with no errors, involved 60,000 region draws or about
3 million line edits). (2/12)
sys/qpoe/QPOE.hlp
sys/qpoe/qpadd.gx [INTERFACE CHANGE]
sys/qpoe/qpastr.x [INTERFACE CHANGE]
sys/qpoe/README
The calling sequences of the qp_add[bcsilrdx] and qp_astr routines,
used to set the value of a header parameter while creating it if it
does not already exist, were modified to add a COMMENT argument (the
comment field of the parameter if it is created). Although this is
an interface change, few applications exist yet which use QPOE, and
the few that have written have avoided use of the qp_add and qp_astr
routines due to the inability to specify the comment field if the
parameter is created. (2/12)
sys/qpoe/mkpkg
sys/qpoe/gen/mkpkg
While updating QPOE after the above change, I noticed that only
gen/qpaddb.x was getting built due to omission of the other types in
the mkpkg. Added the mkpkg support for the missing types. (I guess
we don't have to worry about this interface change affecting any
existing applications!). (2/12)
------------------
sparc and f68881 binaries updated.
Beta test snapshot of V2.9 sent off to CFA. (2/14)
STScI beta system updated. (2/15)
imio/iki/stf/stfrgpb.x
Modified the cannot group parameter block to suggest that if this
occurs, it may be because there is no such group. (2/15)
pkg/lists/rimcursor.par
pkg/lists/doc/rimcursor.hlp
The default value of the "cursor" parameter (type *imcur) was changed
to the null string. (2/15)
sys/qpoe/qpio.h
sys/qpoe/qpiogetev.x
The QPIO code was ignoring the region mask if the portion of the mask
within the bounding box or rect (by default the full area) was empty.
Modified to treat this, and the case of a null event list, as a
special case which will cause all subsequent qpio_getevents calls on
that QPIO descriptor to return immediately with EOF, without actually
doing any i/o. (2/16)
doc/ports/notes.convex +
Added the notes on the Convex/IRAF port, which appear never to have
been archived in this directory. (2/16)
unix/hlib/fc.csh +
unix/hlib/login.cl
unix/hlib/install
The task FC, a front end to XC used to compile host programs which
may or may not use IMFORT, was modified to call an intermediate
script hlib$fc.csh, rather than calling XC directly. The purpose
of the fc.csh script is to determine the current iraf architecture
and add a command such as -/ffpa, -/f68881 etc. to the XC command
line to ensure that the architecture of any objects compiled with
the command will match that of the iraf architecture. This is
whatever is defined by IRAFARCH, else an appropriate architecture
is selected. There are potential problems with this approach, e.g.,
if the user specifies a different architecture on the command line
the task can get confused, but short of making more extensive host
dependent changes to XC this is an easy way to make the IMFORT
interface a bit more resistant to user confusion over multiple
architectures, which will solve the problem for most users (the
rest probably don't use FC anyway). (2/16)
unix/hlib/mkiraf.csh
MKIRAF now renames any old login.cl to login.cl.OLD before creating
the new one, rather than clobbering the original file. (2/16)
unix/boot/spp/xc.c
The Sun/IRAF XC now searches -lU77 when linking a host program (-h
switch). (2/16)
unix/boot/spp/mkxc.sh
The call to CC to compile and link XC was not using $HSI_CF. (2/16)
unix/hlib/cl.csh
Modified to define IRAFARCH if not already defined. (2/16)
unix/hlib/mkfloat.csh
1. Modified to use a compressed architecture save file OBJS.arc.Z.
Will still work if an existing save file is not compressed.
2. Will no longer make an empty OBJS.arc (.Z) file if there are no
files to be saved, as when backing up the generic architecture.
3. Modified the code which uses "tar -tv" to verify the save file
to ignore directory name listings. On some systems (Ultrix) TAR
lists directories as archive members, even though only a filename
list may have been used to generate the archive. This makes a
file list compare fail even if the archive is good. (2/17)
noao/mkpkg
noao/lib/mkpkg.inc
noao/lib/mkpkg.sf.MIPS +
Added support for the "mips" architecture (the DECstation). (2/17)
local/notes.i386 -
doc/ports/notes.i386 +
Moved notes on Sun386i port to doc/ports. (2/17)
--------------------
Updated DS3100/IRAF to V2.9BETA.
Full bootstrap and sysgen-recompile. (2/17)
sys/osb/ieee.gx
sys/osb/miipakr.x
sys/osb/miipakd.x
sys/osb/miiupkr.x
sys/osb/miiupkd.x
The MII routines for IEEE to native floating point conversions were
modified to assume that the IEEE conversion primitives handle byte
swapping as part of the IEEE-native format conversion. (2/17)
noao/lib/FC.mips +
noao/lib/mkpkg.sf.MIPS
The MIPS Fortran compiler failed on a couple more large files in the
NOAO sysgen-recompile. This is a parser error, hence turning off the
optimizer (or changing any other compiler switches) has no effect.
The NOAO files currently affected by this bug are the following:
dtoi$database.x
digiphot$apphot/aplib/aprcursor1.x
digiphot$apphot/aplib/apverify1.x
When this problem occurred earlier my solution was to manually
compile database.x and place the .o in noao$lib. Since this approach
is prone to error and there are now several files, I changed the
special file list to use the new script FC.mips in noao$lib to
automate the custom compile, e.g.:
$set FC = "$(iraf)noao/lib/FC.mips"
$special "noao$imred/dtoi/":
database.x & "!(chmod +x $(FC); $(FC) database.x)"
;
$special "noao$digiphot/apphot/aplib/":
aprcursor1.x & "!(chmod +x $(FC); $(FC) aprcursor1.x)"
apverify1.x & "!(chmod +x $(FC); $(FC) apverify1.x)"
;
The script FC.mips may be useful to send to users if this problem
occurs elsewhere, e.g., in add-on packages. Hopefully the bug will
be fixed in the next release of the MIPS compilers. (2/17)
noao/digiphot/apphot/qphot/mkpkg
This mkpkg file had a bad special file list. The same source file
was listed twice, causing the object to be entered into the libpkg.a
twice. This resulted in a warning message from ranlib when the
package was built on the DECstation. The bug was actually harmless,
since both objects were identical. (2/17)
unix/x11 + [DECstation/IRAF]
unix/x11/saoimage +
Installed the latest version of SAOimage in the DECstation HSI. (2/17)
------------------
DECstation update completed. (2/17)
sys/fmio/fmfcache.x
If an lfile was already open READ_ONLY in the FMIO cache, and an
attempt was then made to open it APPEND, a no write perm error
would result on the lfile. The bug was that the code which checks
to see if a file opened read only needs to be reopened with write
perm was not checking for APPEND mode as one of the file modes
requiring write perm. (2/17)
sys/qpoe/qpmacro.x
When opening a compiled macro save file and restoring the saved symbol
table therein, qp_access() was not freeing the old symbol table,
causing a sequence of qp_open/qp_close calls to gradually consume
more memory. (2/17)
pkg/cl/prcache.c
The CL process cache code was modified to check the date of the
executable file associated with a cached process whenever a task
in that process is run. If the modify date of the executable file
is more recent than the time when the process was cached, the cache
entry is automatically invalidated and the process is restarted
(provided it is not actively being used). This avoids the confusing
situation where someone doing software development from within the
iraf environment relinks a process, but then unknowingly tests the
old process which is still in the cache. (2/19)
pkg/cl/unop.c
This code automatically prepares both real and integer versions of
input operands as part of its standard preamble, regardless of which
version is used for processing. This could result in a numeric
conversion exception on some machines if the input operand was real
and the value was too large to coerce to an integer. For the CL
such an invalid conversion produces an INDEF, so the code was modified
to check for very large real values and set the integer version to
INDEFL if overflow occurs. In most cases where this occurs it is
likely that the integer version will never be used in any case. (2/19)
sys/gio/gsetr.x
sys/imio/db/idbpstr.x
These files contained the construct "[il]val = nint ([rd]val)", which
could result in a numeric conversion exception if the real value were
very large. The solution was to delete the [il]val and instead use
nint([rd]val) directly in the code. (2/19)
sys/etc/environ.x
Fixed an obscure bug in the system environment code. When overwriting
the value of an existing variable with reset, if the length of the
new value string was exactly the right size (normally 21 chars for
small value fields) the replacement value could write off the end of
the allocated space by one char. This would overwrite the E_NEXT
field of the entry immediately following, in storage order, the entry
being reset. E_NEXT is the index of the next entry on the hash
thread to which the entry being clobbered belongs. For the typical
iraf environment list which contains approximately as many entries
as there are threads, most threads are either empty or have only a
single element, hence E_NEXT is NULL. When E_NEXT is overwritten it
is overwritten with EOS, which is equivalent to NULL, so if the hash
thread contains only a single value the problem will go unnoticed.
If a non-null E_NEXT link is clobbered the thread is effectively
truncated, causing the remaining entries on that thread to become
invisible in further table lookups (i.e., the entries would become
undefined).
This was a serious bug since the environment code is fundamental to
the system, but it is unlikely that the problem has been seen very
often because 1) environment resets are relatively uncommon at the
CL level, and normally involve items with short values strings like
stdimage, 2) the replacement value would have to be exactly the right
length, e.g., 21 chars, for an overwrite to occur, and 3) the entry
following the entry being reset would have to have a nonnull thread
link for the overwrite to make any difference. (2/19)
sys/qpoe/qpadd.gx
sys/qpoe/qpastr.x
sys/qpoe/qppopen.x
These routines were calling qp_addf() with a numeric datatype code
(e.g., TY_INT) but the calling sequence requires a symbolic code,
necessary in order to specify user defined types. (2/20)
unix/hlib/zzsetenv.def
Added an entry for the system logical directory MWCS. (2/20)
sys/imio/db/idbcard.x
The routine idb_nextcard(), called by the MWCS code to read a FITS
image header, had a bug which could result in an infinite loop when
a *nonblocked* image header (lines not all blocked to 80 chars)
contained a blank line. This bug was fixed, and I also made the
end of header checking more robust, checking for a pointer beyond
the end of data, as well as checking for EOS on the header area.
Note that MWCS is not called during most image operations unless
a NEW_COPY image is made from an image section of the input image,
hence this bug would only be seen if 1) calling a task which makes
a NEW_COPY image with an image section, 2) the image header of the
input task is not blocked to 80 chars per line (not supposed to
happen, but evidently it does occasionally), and 3) the header
contains a blank line. (2/20)
sys/etc/envgetb.x
The operation of this operator in the case of a variable which exists
but has no value string was not well defined. false would be returned
if the parameter did not exist, but false would also be returned if
it existed but had no value string. The routine will now return true
if the parameter exists but has no value string, allowing the existence
of the parameter in the environment to be used as a switch. If a yes
or no value is given, then that will be used instead to determine the
boolean value. (2/21)
sys/imio/immaky.x
Modified to use envgetb() instead of envfind() to test for the
environment switch "nomwcs", to be consistent with the planned use
of an envgetb() test for nomwcs in the IMAGES tasks. (2/21)
-----------------
V2.9BETA installed at CFA and updated to this point. (2/21)
sys/imio/iki/stf/stfnewim.x
sys/imio/iki/stf/stfopix.x
The STF descriptor was being reallocated in stf_newimage without
updating the pointer to the STF descriptor in the image header. (2/24)
sys/gio/gki/gkiprint.x
Modified to print the marker width field in a PM_SET call. (This is
not used in any GIO kernel at present, but since it is a defined
attribute it may as well be printed). (2/24)
sys/etc/cnvdate.x
Added an errchk for stropen. (2/24)
pkg/images/geometry/t_blkrep.x
pkg/images/geometry/t_geotran.x
pkg/images/geometry/t_imshift.x
pkg/images/geometry/t_shiftlines.x
pkg/images/geometry/t_magnify.x
pkg/images/geometry/t_blkavg.x
pkg/images/geometry/t_imtrans.x
The above IMAGES tasks were modified to call MWCS to modify the
Lterm of the image coordinate system. As a temporary insurance
measure until MWCS can be fully tested, the code was written in
such a way that the WCS update is skipped if "nomwcs" is defined
in the iraf environment. The "nomwcs" switch will be deleted
in the next iraf release. (2/24)
sys/fmtio/gargi.x
sys/fmtio/gargl.x
These routines contained a construct such as "ival = dval" which
would perform a blanket conversion from double to int. There could
result in a numeric exception if dval were INDEF or very large.
The procedures were modified to check for these cases and explicitly
set the output value to INDEF if such a case occurs. (2/24)
sys/fmtio/dtoc.x
Changed in a couple of places to replace several long(val) constructs
by a single, precomputed lval variable, to guarantee that the value
is the same in all cases. (2/24)
sys/ki/kfsubd.x
Added code to check for an error return from ZFGCWD and exit
immediately with an error status return in this case. (2/24)
pkg/plot/doc/implot.hlp
Modified to include mention of the usage of the 'l' and 'c' colon
commands to plot averages of lines and columns, e.g. ":l 30 40" to
plot the average of lines 30 through 40. (2/24)
vms/hlib/sgiqueue.com
There were a number of lines in this file of the form
print/que=foo/delete 'p2.foo'
These were changed to the form
print/que=foo/delete 'p2'.foo
i.e., it is the 'p2' which must be quoted, since in DCL the function
of the quotes is to perform variable substitution. (2/24)
lib/sysruk.x
sys/etc/main.x
1. In sysruk, the >6 char arguments "arglist_offset" and "interactive"
were renamed to minimize the likelihood of a name mapping collision
with the procedures in the same same file as the TASK statement.
Also renamed the "eawarn" environment variable to avoid the suggestion
that this is EA_WARN with a missing include <error.h>.
2. Added aliases cd for CHDIR, and reset for SET. chdir is somewhat
of an anachronism these days, and it is nice if reset is recognized
since one gets used to using it in the CL. (2/25)
unix/hlib/iraf.h
unix/hlib/libc/spp.h
sys/clio/clgfil.x
sys/etc/prupdate.x
sys/etc/prenvset.x
sys/etc/prchdir.x
sys/etc/oscmd.x
sys/fmtio/clscan.x
sys/fmtio/fscan.x
sys/fmtio/scan.com
sys/ki/kienvreset.x
sys/libc/sprintf.c
sys/libc/printf.c
sys/libc/cungetl.c
sys/libc/cttset.c
sys/libc/csppstr.c
Added a new global SPP define SZ_COMMAND (similar to SZ_FNAME, SZ_LINE,
etc.) in iraf.h and libc/spp.h. Modified all the VOS routines I could
find which use large command buffers to make use of this new system
parameter. Also in fscan.x, replaced the getline() by a getlline()
to allow for file lines longer than SZ_LINE. (2/25)
unix/hlib/install
1. The alloc.e code now checks the file mode to ensure that set-uid
mode is set on the file. (2/25)
2. [more work to be done here...]
sys/etc/environ.h
sys/etc/environ.x
sys/etc/main.x
1. Increased the default initial environment list size parameters
and doubled the number of hash threads. The new values are about
right for the typical iraf environment list in the present system.
2. In environ.x and main.x, replaced all getline() calls by getlline()
reads into a SZ_COMMAND line buffer. This is necessary to allow
"set name = value" commands longer than SZ_LINE to be passed in via
IPC from the CL. (2/25)
pkg/system/help/help.h
pkg/system/help/t_hdbexamine.x
pkg/system/help/mkpkg
1. hdbexamine had its own private definition of SZ_HELPDB; deleted
and added an include for help.h.
2. Increased the size of the helpdb buffers used within HELP to 1024
chars. (2/25)
sys/fmtio/fmt.com
sys/fmtio/fprntf.x
Increased the size of the "format" buffer from SZ_LINE to SZ_OBUF
(1024 currently). The printf commands can be used for output like
getline(), with any amount of data, and often the "format string" is
mere data. The code should probably be revised to scan the format
string and immediately output data until the first % format specifier
is encountered (to avoid the 1024 char limit, and for enhanced
efficiency) but this was tricky enough that I did not want to risk
it at this time. (2/25)
sys/imio/db/idbcard.x
There was another problem in the code used for headers with variable
length cards (most headers are blocked 80 characters per card, or
should be). The idb_nextcard() routine would return a pointer to
the \n preceeding a card, rather than to the first character of
the card. This was preventing MWCS from seeing any of the WCS
cards in a header with an existing WCS, if the header happened
to be nonblocked. (2/26)
sys/mwcs/iwparray.x
sys/mwcs/mwsaveim.x
1. Added an "index" argument to the internal routine iw_putarray,
used to update array parameters in image headers, and modified
mw_saveim() accordingly. An index value of zero (match all indices)
was being used when checking to see if a given header card existed
to determine if, e.g., adding a card was necessary. This could fail
when updating an array parameter because then there can be multiple
cards which differ only in the index. The result was a message such
as "image header parameter not found" when trying to update the value
of an indexed card when 1) another card of the same type existed in
the header, and 2) a card with the given index did not yet exist.
2. Deletion of obsolete WCS cards following a header update was not
working. The code which checks the C_UPDATED flag to see if a
card is to be preserved was referencing the wrong descriptor, causing
the test to fail. (2/26)
sys/qpoe/qpcopyf.x
The loop which copies an array valued parameter in large chunks with
qp_read/qp_write, was not incrementing the data offset in each pass
through the loop. This would only have affected copies of array
parameters with greater than 8192 elements. (2/26)
sys/qpoe/zzdebug.x
Modified the HLIST task to output the lfile number and lfile offset
of the stored parameter value, in addition to the information already
output. (2/26)
sys/fmio/fmfcache.x
When opening an lfile in APPEND mode and the lfile was already in
the file cache with write permission, a seek to EOF was not being
performed. (2/26)
sys/imio/iki/stf/stfcopyf.x
The stf_copyfits() procedure copies the user area (a series of FITS
cards), optionally separating the cards into reserved or group
parameter cards, which are generated and controlled by the program,
and user cards. The routine was handling cards defining GPB fields
properly, but it turns out that the STF interface also defines the
cards GROUPS, GCOUNT, PCOUNT, and PSIZE in the user area for the
benefit of someone reading the header. The result was that a NEW_COPY
copy of an STF image would contain two copies of these four cards,
since stf_wfits() explicitly outputs all GPB definition cards or
other reserved FITS cards during a header update. The fix was to
modify the stf_copyfits() filter to recognize these four cards in
addition to the GPB cards, and treat them the same way (e.g., omit
them in a copy operation). (2/27)
--------------------
f68881 and sparc binaries updated.
CFA and STScI upgraded to this point. (2/27)
pkg/cl/builtin.c
sys/libc/cenvget.c
Changed a couple of 512 byte buffers to use SZ_COMMAND. (2/27)
sys/etc/envscan.x
Increased the size of the input line buffer to SZ_COMMAND+SZ_LINE.
This is because getlline() requires at least SZ_LINE of space at
the end of the buffer for a read - to read the full SZ_COMMAND chars,
an extra line of space is needed (or SZ_COMMAND should be redefined
to be an integral multiple of SZ_LINE, but that is getting pretty
tricky for something that just defines an arbitrary truncation point
anyhow). (2/27)
sys/etc/main.x
1. Modified the error message "IRAF Main: Unknown task name" to include
the name of the unknown task.
2. Increased the size of the input buffer used in the main to 2048,
to ensure that command truncation will not occur. (2/27)
I tested the system with a 980 char environment variable defined in
extern.pkg. With the above changes, most importantly the change to
the main, everthing works fine. Truncation will occur somewhere
between 960-1024 chars with SZ_COMMAND set to 1024 (the 960 is the
nearest multiple of SZ_LINE). It was necessary to increase the
size of the input command buffer used in the IRAF main to avoid
command truncation, which causes loss of synchronization on the
input command stream and a nasty "Unknown task name" error from
the main (if this occurs during process startup, e.g. during
environment initialization, the process is fried, and if the process
is x_system.e you can't even login to the CL). (2/27)
sys/fmtio/fpradv.x
Escape sequences (\n etc.) embedded in the format string were not
being processed correctly. The sequences were being converted into
escape characters but then the original character (\) was being
output. (2/27)
unix/os/zzstrt.c
The code which maps the shared image into memory during process
startup could fail on the sparcstation with a segmentation violation
due to an unmapped page between the data and bss segments. The
problem was that for the Sun-3 and Sun-4, a.out aligns segment
boundaries to 8192 bytes (defined as PAGSIZ and SEGSIZ in a.out.h).
The hardware page size on the Sun-3 and Sun-4 is 8192 bytes, but on
the sparcstation it is 4096!. The zzstrt code was using PAGSIZ to
determine where the first page of the bss segment begins; on the
sparcstation this could lead to the computation of the first page
of the bss segment being off by one, with the unmapped page causing
a segmentation violation when the bss segment is zeroed after the
mapping operation. The fix was to use the hardware page size (given
getpagesize()) to align the first page of the bss segment. (2/28)
unix/hlib/mkfloat.csh
Changed the compress command to "compress -f" to ensure that any
existing compressed file gets clobbered. (2/28)
sys/imio/iki/stf/stfrfits.x
The STF header file cache code had a bug that would cause it to
continually reuse the same cache slot, even though multiple slots
were available. In the case of an operation which involved repeated
accesses to two STF files (e.g., copying all the elements in a
group file) each header file would be alternately loaded into the
cache for every group element, defeating the cache entirely. (2/28)
mkpkg
unix/mkpkg.sh
unix/setarch.sh +
A "mkpkg <arch>" at the iraf root for a UNIX/IRAF system with multiple
architecture support will now set the AS and BIN links in iraf/unix
to the appropriate values for the new core system architecture. (3/1)
sys/mwcs/mwsaveim.x
sys/mwcs/iwewcs.x
When a WCS is saved in a FITS format image header, MWCS must combine
the Wterm and Lterm to produce the FITS representation CRPIX-CRVAL-CD,
since FITS specifies what is, in MWCS terminology, the transform from
logical to world coordinates, whereas in MWCS the Lterm and Wterm are
independent and the Wterm specifies only the physical to world
transformation. Full system testing revealed that the linear algebra
used to compute the FITS representation was incorrect. The forward
and inverse transforms were consistent, hence the saved MWCS could be
reconstructed, but the forward transform was wrong and the values of
the FITS CRPIX and CD were being computed incorrectly if the Lterm
was not the identity transformation. (3/1)
sys/mwcs/mwsaveim.x
MWCS will now save or update the values of CDELT1 and CDELT2 in the
image header. This is in addition to the CD matrix values, which
are always output. The CDELTn are output only if 1) the image
dimension is 2 or less, and 2) in the case of a two dimensional image,
the CD matrix is diagonal. Hence CDELT1 is always output for a
one dimensional image, and for a two dimensional image, the CDELTn
are not output is the image has been rotated (this includes transpose),
or if the CD matrix contains off diagonal terms for any other reason,
e.g., skew. It would not be difficult to output CROTA2 in addition
to the CDELT for a two dimensional image, but I am going to try to
leave this out to discourage the use of CROTA2, which many programs
which use CDELTn are probably not equipped to deal with in any case.
(3/3)
sys/imio/iki/stf/stfwgpb.x
sys/imio/iki/stf/stfcopyf.x
1. Fixed a bug in the new stfcopyf.x code introduced in the 2/27
revision. The GPB cards were not being loaded into the reserved
keyword table, causing filtering of GPB cards to fail.
2. In stfwgpb.x, I commented out the warning messages for "image
header parameter not found" when updating type real or double GPB
parameters. At least at present, MWCS omits WCS parameters that
have zero values from the header, to avoid large numbers of zero
valued cards for things like identity matrices in which zero elements
are very common. Hence parameters like CRVAL, CDi_j, may be
omitted from the header even though these are defined GPB parameters.
The interface will merely assume a zero value with no warning message
if such a card is not found (formerly, it would assume a zero value
and output a warning message). (3/3)
sys/imio/iki/stf/stfopen.x
When opening the first group of a new group formatted image, opened
NEW_COPY, the GPB cards of the inherited image header were being
extracted with stf_copyfits() using the GPB parameter list in the
STF descriptor of the *new* image, before the new STF descriptor was
initialized by stf_rdheader(). The fix was to use the STF descriptor
of the old image to extract the GPB cards of the old image from the
inherited user area. (3/5)
sys/imio/iki/stf/stfiwcs.x +
sys/imio/iki/stf/stfopen.x
sys/imio/iki/stf/mkpkg
sys/imio/iki/stf/stfrgpb.x
The old version of the STF image kernel had some code stfwcs.x which
was used to propagate WCS information to a new image, applying the
section transformation if necessary. This was removed in the new
version of STF since IMIO and MWCS now perform these functions.
When this was done some code was added to stfrgpb.x to set up the
default unitary pixel WCS reading a zeroed GPB when preparing the
header of a NEW_COPY image. This would work in the case of, e.g.,
copying dev$pix into a new element of a group format image, avoiding
having the new image end up with a zeroed WCS, which is invalid.
This scheme was incorrect, however, because it would edit the WCS
*after* inheriting the FITS cards from the old image in a NEW_COPY
operation. If the old image had a valid WCS it would be modified,
which is incorrect. Furthermore, there were cases where the WCS
editing could fail with an "image header parameter not found" error
when trying to change the values of nonexistent WCS parameters.
The fix was to rip the WCS editing code out of stfrgpb.x. A new
routine stf_initwcs() (stfiwcs.x) has been added. This is called
in stfopen.x when a NEW_COPY image is created, after the new header
has been constructed, to check for the case of an uninitialized WCS
and set up the default unitary pixel WCS in that case. The WCS is
modified only if all elements of the CD matrix are zero, indicating
an unitialized WCS. (3/6)
unix/boot/bootlib/envinit.c
unix/boot/bootlib/osgetenv.c
unix/boot/mkpkg/tok.c
Changed some SZ_LINE buffers to SZ_COMMAND buffers. (3/6)
unix/boot/bootlib/ossysfile.c
Made a minor modification to ensure that filenames extracted from
the "pkglibs" file list do not contain any whitespace. (3/6)
unix/boot/bootlib/envinit.c
The HSI layered package environment facility defines an environment
variable "pkglibs" which is the list of libraries (directories) to
be searched (in addition to the system libraries and IRAFULIB) to
satisfy a -llib or <file.h> file reference in mkpkg or xc. pkglibs
is normally defined in the lib/zzsetenv.def of each layered package,
which is loaded at runtime when a HSI task is called with the -p <pkg>
switch. This works fine so long as only a single layered package
environment is loaded. When multiple package environments are loaded
however, each package redefines pkglibs with the result that the
libraries of the packages already loaded will not be searched.
To avoid this, loadpkgenv() (which is what is called to process a
-p <pkg> switch) was modified to treat "pkglibs" specially,
concatenating new values onto a cumulative file list, rather than
redefining the "pkglibs" variable each time. This is a bit
questionable since this is inconsistent behavior for an environment
variable, but "pkglibs" is an integral part of the load-package-
enviroment facility and the special behavior occurs only when a
package environment is loaded.
A note on the semantics of pkglibs and of environment varibles in
the HSI in general. In the HSI tasks, an environment variable
defined at the host level (or in the system wide file zzsetenv.def
in hlib) will override a variable defined in the package environment.
Hence for example, the logical directory of a subpackage of a
layered package can be redefined during development of a private
version of the package. In the case of "pkglibs", a host or system
wide definition of pkglibs is used only as the initial list of
package libraries to be searched; additional libraries defined by
-p pkg versions of pkglibs are concatenated to this list, with the
user defined libraries being searched first (IRAFULIB will override
all of this by being searched first, if defined). (3/6)
-----------------------
Updated STScI to this point. (3/7)
unix/boot/bootlib/envinit.c
Replaced the ENVPUTS by an ENVRESET, to be consistent with the
other routines which modify the environment list. Also, because the
HSI never deletes definitions from the environment list there is no
need to use ENVPUTS. (3/8)
sys/gio/imdkern/imdclose.x
Added a call to "call ttycdes (g_tty)" to close the graphcap
descriptor at kernel close time. Probably this is not being done
in the other kernels either (altough it probably doesn't matter,
since about the only time a kernel is closed is when the process
shuts down). (3/8)
sys/gio/imdkern/imdclws.x
Modified the closews function for the IMD kernel to call imd_close,
to fully close the kernel down. This causes any buffered graphics
to be flushed to the output device, and unmaps the frame buffer.
For the IMD kernel there is no reason to keep the frame open waiting
for append mode graphics, as the graphics is always drawn into the
frame buffer in "append" (overlay) mode anyhow, and we want graphics
to appear immediately without having to do a gflush. (3/8)
dev/graphcap
Added the alias "imdkern" for device entry "imd". (3/8)
unix/sun/imtool.c
The "sample" type (nonblocking) image cursor reads were not working,
in the sense that the coordinate value returned was always the same.
This was due to the routine returning the coordinates of the last
blocking cursor read, rather than the current cursor position.
Modified to return the coordinates of the most recent event (e.g.,
mouse button press) seen in the image window. In SunView the locator
position is available to the application only when an event occurs.
(3/8)
sys/gio/imdkern/imd.com
sys/gio/imdkern/imdclear.x
sys/gio/imdkern/imdopenws.x
idk_open() was being called with the wrong argument list in this
routine. The old calling sequence (device,tty) was being used,
instead of the IDK calling sequence (frame,color,tty). (3/8)
dev/graphcap
sys/gio/imdkern/idk.x
The IMD kernel was modified to draw into the *current display frame*
if no output display frame is specified. This is the case, for
example, when the IMD kernel is used as a connected subkernel.
For example,
prow dev$pix 101 dev=imdg
will plot line 101 of dev$pix in green on the current display frame.
This feature makes it possible to control both the graphics color
and the frame in which it is drawn when plotting directly to the
image display from a graphics task. (Note that it is also possible
to :.snap graphics output to the display device).
The frame in which graphics is to be drawn is determined as follows.
If the frame specified by the IMDKERN parameter "frame" is greater
than zero then that frame is used, else if the fname number given by
the parameter "FN" in the graphcap is greater than zero that that
frame is used, else the current display frame is used. Hence, FN
must be absent or set to <= 0 in the graphcap for automatic output
to the current display frame to work. (3/8)
pkg/plot/doc/contour.hlp
Modified the help page for CONTOUR to note that contours may not
appear to be centered on objects if a large blocking factor is used.
(3/8)
pkg/plot/doc/imdkern.hlp +
pkg/plot/imdkern.par
When I went to edit the IMDKERN help page to document the new
semantics regarding the output frame, I discovered that there wasn't
any help page! I added a help page for IMDKERN, and modified the
default parameters in plot/imdkern.par. (3/8)
sys/gio/imdkern/imdcancel.x
sys/gio/imdkern/imd.com
These files still contained some vestiges of the SGIKERN origins of
IMDKERN. The IMD common was still called /sgicom/ (harmless so long
as the kernels are in separate processes, but incorrect) and the
imdcancel.x procedure header comment was still calling the procedure
SGI_CANCEL. (3/9)
unix/hlib/mkfloat.csh
This routine is supposed to print out the names of any "dreg .e files
left lying about in the source directories" if it finds any. An
otherwise harmless problem with the use of "tee" in the script was
preventing these filenames from being echoed. (3/9)
sys/imio/iki/stf/stfrfits.x
The STF header file cache logic could fail to invalidate the cache
if the header was entered in the cache, modified on disk, and then
reread all within one second, the time resolution of the timer used
for the cache. To avoid this it was necessary to force a reload if
the file modify time is equal to the cache time. This means that
if a file is created and then immediately loaded into the cache,
the cached entry will not be valid even if the image has not been
modified since it was created. The next reload (provided it occurs
a second or more later) will however result in a valid cache entry.
(3/9)
sys/imio/iki/stf/stf.h
sys/imio/iki/stf/stfopen.x
sys/imio/iki/stf/stfupdhdr.x
The semantics of the STF kernel regarding updates to the FITS header
(global header for all images in the group) was modified to clarify
the distinction between the global header, which pertains to all images
in the group, and the GPB, which by definition contains any header
parameters which can vary for each element of the group.
The new strategy for FITS header updates is to always update, unless
we are explicitly updating an existing group of a multigroup image.
Hence, the FITS header is always updated for an STF image with only
one group, or when writing the first group of a new multigroup file.
The FITS header of an existing STF multigroup image can still be
updated, but only if the image is not opened to any particular group,
e.g., as "pix" rather than "pix[i]", I > 0 (i.e., "pix" and "pix[1]"
are not equivalent when it comes to global header updates!). An image
opened NEW_[IMAGE|COPY] or READ_WRITE to access "pix[i]" will update
only the GPB header.
It is suggested that to avoid confusion, multigroup STF images be
regarded as read-only once created. If the multigroup image is
created with IRAF the FITS header should be fully defined when the
first group is written, opening the image [1/NGROUP]; subsequent
writes to subimages [i] will write only the GPB of the subimage.
During interactive reductions the user should create only single
group images. These should be functionally compatible with OIF
images in all respects including header updates (except that the
contents of the header will not in general be the same, e.g., OIF
does not define a default PIXEL WCS). (3/9)
----------------
Updated DECstation/IRAF. (3/10)
unix/boot/bootlib/osputenv.c
1. Replaced a 1024 by SZ_COMMAND.
2. Merged in #ifdef ultrix stuff for the DECstation. (3/10)
sys/osb/ieee.gx
The BSWAP routines were being called improperly. (3/10)
pkg/system/help/manout.x
Increased the maximum number of lines per page from 128 or so so
1024. (3/10)
sys/etc/pagefiles.x
1. When paging a text file and 'G' was typed to go to the end of the
file, the pager would actually go one line too far, causing one line
less than a full screen to be displayed.
2. The pager was revised so that the 'N' and 'P' keys now have a
dual meaning. When paging a list of files they are used to move to
the next or previous file in the list, as before. When paging a
single large file, they are used to move to the next or previous
formfeed delimited page. The character, line, and page number
accounting was also revised and extensively tested to ensure that
seeks, searches, next/previous screen/page, etc., get to the right
place and report the right line number. (3/11)
pkg/system/phelp.cl +
pkg/system/doc/phelp.hlp +
pkg/system/system.cl
pkg/system/system.hd
pkg/system/system.men
Added a new task PHELP to the system package. PHELP is a CL script
front end to HELP, which runs HELP with the output redirected to a
tmp file, then pages the tmp file with PAGE. The simple usage is
"phelp task" but more complex usages such as "phelp proto.*" are
also possible (in the latter case the 'N' and 'P' keys are used
to view successive formfeed delimited help pages in the tmp file).
All this seems to work fine, except for an as yet unresolved bug
in HELP which is causing some packages to appear twice. For example,
PLOT appears twice in the help database for some reason, and typing
"phelp plot.*" works, but one gets all the help pages and then all
of them all over again. Harmless, but annoying. (3/11)
sys/etc/pagefiles.x
Added an upscroll capability to the file pager. This seems to work,
but the pagefiles code is a mess and there may still be special cases
or combinations of commands where things don't work quite as expected.
This code has grown far beyond its original design and should be
junked and reengineered eventually. (3/12)
pkg/lists/rimcursor.x
1. Modified the task so that if only the first 2 or 3 fields of the
cursor value are input (e.g., x and y) only those fields are output.
2. If the reference image open failed, a non-NULL pointer ct could
be returned. (3/13)
dev/graphcap
dev/cachet.dat
The default "xterm" entry in graphcap now disables the "am" (auto
margin) capability. Evidently xterm will indeed autowrap at the
right margin, but it is clever and eats up any cr/lf/tab characters
which follow the autowrap. If the following line begins with one
or more tabs, these are eaten by xterm and the line will not
indented properly. If one dumps the same file to xterm with the
unix "cat", things work as expected as cat ignores details like
automargin and dumps out the newline at the end of the line. Hence,
although the terminal does implement something like AM, it appears
that this can be safely ignored and a newline sequence output after
writing a character in the right margin. It is possible that the
iraf terminal output code is not interpreting AM properly, but for
the present I am going to disable the AM in the iraf version of the
termcap entry (the unix version enables AM). (3/13)
~sites/logmail.c
The LOGMAIL support utility (part of the iraf/site mail) was modified
to strip the "Received:" lines and continuation lines out of logged
site mail. (3/13)
---------------------
Updated stsci to this point. (Tried to update cfa but couldn't get in).
Updated ffpa binaries on tucana. (3/13)
unix/sun/imtool.c
The IIS datastream reserves 9 bits (resolution 512) for the X and Y
addresses in an image memory write or read. The IMTOOL code was using
a 10 bit mask (01777 = resolution 1024) of the X/Y values for reads,
and a 12 bit mask (07777 = 4096) for writes. Hence, normal write
only image display with IMTOOL (or SAOIMAGE) would work fine for
images up to 4096 square, but read back would fail for images larger
than 1024 square. It turns out that the IIS datastream protocol
(which IMTOOL/SAOIMAGE emulate) can actually support X and Y bitfields
of up to 14 bits, so there should be no problem increasing the size
of these bitmasks. I increased the size of the X and Y address bitmask
used in IMTOOL to 077777 (max 32768 resolution) for both reads and
writes. SAOIMAGE should be similarly modified. The DISPLAY code
does not limit the size of X and Y addresses so there should be no
problem there. (3/14)
-----------------
Updated decstation (cephus).
Installed the 13Mar beta system for CFA. (3/14)
-----------------
Begin VMS/IRAF update to V2.9. (3/17)
Rebuilt system from tucana sources and VMS/IRAF HSI.
Merged in V2.9 HSI revisions.
Begin bootstrap and sysgen.
vms/os/zopcpr.c
The struct "acc$record", defined in <accdef.h>, is used for the
mailbox termination message at process exit. For VMS5, the name
of this structure is evidently changed to struct accdef. Changed
the source accordingly (and we are no longer source compatible with
VMS4). (3/17)
generic/mkpkg.com
mkpkg/mkdebug.com
mkpkg/mkpkg.com
mkpkg/mkpkg
rmbin/mkdebug.com
rmbin/mkpkg.com
rmfiles/mkpkg.com
rtar/mkpkg.com
spp/xc.com
spp/mkpkg.com
spp/rpp/mkpkg.com
spp/xpp/mkpkg.com
wtar/mkpkg.com
In the first attempt to link the HSI utilities under VMS5, all the
links failed with the message
undefined symbol LIB$FIND_IMAGE_SYMBOL...
After looking around at the system libraries for a bit, purely on
a guess, I changed the line
$ define/nolog LNK$LIBRARY sys$library:vaxcrtl.olb
to
$ define/nolog LNK$LIBRARY sys$library:vaxcrtl.olb
$ define/nolog LNK$LIBRARY_1 sys$library:imagelib.olb
in all the mkpkg.com and mkpkg files in the HSI. Evidently a C
runtime library routine now references the system run time library
LIBRTL in VMS5, so this (in the system shared image) has to be
searched now if VAXCRTL is used. (3/17)
unix/boot/spp/xpp/decl.c
The VMS Fortran compiler barfed on the use of ARB for array argument
declarations, complaining about the array dimension exceeding
addressable memory. I expected problems with this construct anyway,
so it was necessary to change the SPP preprocessor to avoid the
problem. Several other improvements were made in the process.
1. ARB in array argument declations is now replaced by the Fortran *
symbol, e.g. "int foo[ARB]" becomes "integer foo[*]".
2. +1 is no longer added to char arrays that are procedure arguments.
This is now only done for local arrays. (The +1 is added by the
preprocessor to allow space for the EOS in an SPP string).
3. Dimensioning a local array ARB is now considered an error and will
result in a compile time error message from the preprocessor. (3/18)
sys/mwcs/wfinit.x
The VMS Fortran compiler didn't like the duplicate definition of
wf_smp_tran(), originally used since the same function appears twice
in the function driver. (3/18)
pkg/dataio/fits/fits_rpixels.x
pkg/dataio/fits/fits_wpixels.x
noao/mtlocal/camera/cam_rpixels.x
noao/mtlocal/pds/pds_rpixels.x
noao/mtlocal/r2df/r2dfrpix.x
noao/twodspec/multispec/msextract.x
noao/twodspec/multispec/fitgauss5.x
These files contained routines with ENTRY points wherein an array
argument was dimensioned ARB. This fooled the SPP compiler, which
now checks for local arrays dimensioned ARB. ENTRY points should
probably be considered illegal in SPP code (certainly they are
discouraged, as they are a common source of compiler problems).
As a workaround for the present I changed the code to dimension
the entry point arrays [1] rather than [ARB]. (3/18)
noao/astutil/t_setairmass.x
This file contained several occurrences of the construct mod(dble,24.).
VMS Fortran insists that the arguments to intrinsic functions all be
the same type, and even a double and a real as in this case is not
permitted. Changed the 24. to 24.D0 and it compiled ok. (3/18)
Linking this process on VMS took so long that I ran a timing test
comparing the VMS 8600 to the Sun-3 180 (tucana). Linking -z on
both systems tooks 5 minutes on the 8600 vs 1 minute on the Sun-3.
vms/uis/*
Installed the latest version of the UIS display program for VMS
(the VAXstation), contributed by Nigel Sharp. (3/18)
[vms shared libraries note]
The following error message appears on our system when some of the
iraf processes are linked. So are as I can tell it is harmless,
and probably not worth trying to track down.
%LINK-I-DATMISMCH, creation date of 14-JUN-1989 11:48 in shareable
image SYS$COMMON:[SYSLIB]DISMNTSHR.EXE;2
differs from date of 10-MAY-1989 17:37 in shareable image library
SYS$COMMON:[SYSLIB]IMAGELIB.OLB;1
vms/gdev/mkpkg
vms/gdev/zfiogd.x
vms/gdev/zfiovi.c +
Installed a new version of ZFIOGD (graphics or image device i/o driver)
for VMS. The IMTOOL device code in this VMS version uses VMS mailboxes
(rather than fifo pipes as in unix) to talk to the display server
process. This new driver was written by Jay Travisano of STScI.
It is used to interface SAOIMAGE to VMS/IRAF, but it could be used for
any other display server as well (e.g., UISDISPLAY could use this
interface too if suitably modified). At this point, the new driver
has only been installed. Checkout will have to wait until we are
ready for full system testing with a display server. (3/18)
------------------------
V2.9BETA shapshot of DECstation/IRAF and VMS/IRAF sent to STScI. (3/19)
Update of Sun386i/IRAF begun. (3/19)
sys/etc/pagefiles.x
1. Fixed a bug in the pager which would allow one to upscroll past the
beginning of file.
2. Typing space at the end of a file causes the pager to move to the
next file in a file list, i.e., the space is turned into an 'N'.
This could cause problems when paging a single file, in which case the
'N' is interpreted as go to next page. On VMS this was leading to a
seek error on the file being paged (not clear why that was but I did
not have time to pursue it further). (3/19)
pkg/cl/builtin.c
A command such as "flpr beep" would cause a segmentation violation
in the CL. This command is pointless since BEEP is a builtin task
(no process in the cache) but the CL should complain a bit more
gracefully. Modified the FLPRCACHE builtin to check for script,
foreign, builtin, and pset tasks and abort with "task `foo' not in
cache" if flprcache is called with the name of such a task. (3/19)
sys/etc/pagefiles.x
The string length of an output line of text was being used to compute
the number of terminal lines required to display a long line of output
text. This computation could fail when the line being displayed
contained a large number of control characters, e.g., tabs, or font
control or enhancement codes. Not a serious problem, but the number
of lines output to fill a screen could be wrong. (3/20)
pkg/system/news.cl
unix/hlib/newsfile -
doc/newsfile +
doc/news.old.hlp +
doc/news.v28.hlp +
The NEWS facility was reworked to provide more up to date information
about the system. The NEWS program merely pages the system news file,
now moved to doc$newsfile. At present all this consists of is a
concatenated sequence of revisions summaries. Formfeeds separate
successive revisons summaries. The revisions for the current release
of the system are paged first, with the 'N' key providing access to
the old news. (3/20)
pkg/system/help/lroff/texout.x
Another ancient file that uses ENTRY points, had to change a "local"
[ARB] to [1]. (3/20)
pkg/images/iminfo/t_imstat.x
This program contained a statement [format = clgetb("format")], where
"format" is type integer. This fails on VMS because the internal
values used for boolean (Fortran logical) are not 0/1 as in UNIX.
The construct is always illegal of course, it merely happens to
work on UNIX because the internal representation of bool and the
SPP YES/NO are identical. (3/20)
sys/fio/ffilsz.x
The file size code (e.g., fstatl(fd,F_FILESIZE)) did not support
file types STRING_FILE and SPOOL_FILE at all. A call to the binary
file driver was being made even though there was no physical file
associated with the file descriptor! The routine ffilsz.x was
modified to add support for the memory buffer file types. The new
STF image kernel uses fstatl to query the size of the spool file
used to store the image header, and the bogus file size being returned
could lead to a segmentation violation in some circumstances. (3/20)
sys/fio/fexbuf.x
The amount by which a spool file buffer size is incremented if
overflow occurs was increased from 1024 to 4096 chars. This is
arbitrary, but will be slightly more efficient when writing large
spool files. (A call to fseti(fd,F_BUFSIZE,n)) can be made before
writing to the spool file if the amount of space needed is known
in advance). (3/20)
unix/os/zfacss.c
Modified ZFACSS, used to test whether a file is binary or text,
to permit a narrow range of control codes in text files. This is
necessary in order to allow iraf text files containing standout mode
control characters or form feeds to be considered part of the source
distribution. (3/20)
---------------------
All local beta test systems (f68881, sparc, 386i, decstation, vax/vms)
updated to this point. (3/20)
unix/hlib/zzsetenv.def
Added an entry for "nomwcs". Currently, this is commented out on
the irafx systems, but defined (MWCS is disabled) for the user
systems. (3/21)
---------------------
V2.9BETA installed on NOAO/Tucson Sun network (orion, gemini). (3/21)
dev/hosts
Added several new "scientist workstation" entries from gemini, on
all local nodes. (3/22/90 SRo)
dev/devices.hlp
Updated to include the three tape drives on gemini. (3/22/90 SRo)
sys/imio/iki/stf/stfopen.x
This routine contained an illegal call to ERRACT at the end of the
procedure, in the error exit code. The call was illegal because
ERRACT can only be called from within an error handler, to take an
action based on the error currently being processed. The correct
thing to do in the case of stfopen was merely to return an error
status, since this procedure uses a status output argument. (3/21)
unix/os/zdojmp.c
This routine would pass a zero status on to the ZSVJMP call at the
other end of the jump buffer. This is incorrect, since ZSVJMP/ZDOJMP
are modeled after the unix setjmp/longjmp, and setjmp must not return
a zero status when the return is via a longjmp. This bug could lead
to an error condition going undetected when error recovery resulted
in a jump back into the iraf main. Calling ZDOJMP with a zero error
code is very rare, i.e., it does not happen in the normal execution
of the system, but it was occuring as a result of the STFOPEN bug
above. (3/21)
doc/ports/notes.mips
Replaced by a later version of the file containing a few notes on
the second update (hereafter, decstation revisions will be documented
in the master systems notes file). (3/21)
sys/imio/iki/stf/stfopen.x
When an STF image is opened new-copy, the old STF header is copied
to the new image in stfopen.x. This was being done by copying the
maximum size descriptor LEN_STFDES, but in the new V2.9 STF kernel
the STF descriptor is reallocated once an image is opened to save
space. Hence the actual descriptor length can be less than LEN_STFDES,
and the amovi operation used to copy the descriptor could result
in a segmentation violation if the old descriptor buffer happened
to be located near the end of dynamic memory. (3/21)
----------------
DECstation updated. (3/21)
unix/boot/rtar/rtar.c
Made the same change to the file type heuristic as made in the
ZFACSS revision on 3/20 (certain formatting control codes are now
considered legal in text files). (3/24)
----------------
VMS/IRAF updated. (3/24)
unix/hlib/motd
Revised the standard motd to include mentioned of the revamped NEWS
facility. (3/24)
pkg/system/doc/news.hlp
Updated the help page for NEWS. (3/24)
unix/boot/mkpkg/char.c
unix/boot/mkpkg/mkpkg.hlp
The syntax "$(@file)" can now be used to substitute the contents of
a text file during mkpkg file interpretation. (The old macro
replacement forms are "$(symbol)" to substitute the value of a
symbol or environment variable, and "$(?symbol)" to interactively
query for the value of a symbol). (3/24)
unix/shlib/mkpkg
unix/os/zzstrt.c
Modified the the shared library facility to support multiple shared
image versions. The shared image, instead of being named "S.e" is
now named "Si.e", where "i" is the major version number. For example
the current shared library version for most V2.9 architectures is 4,
and the shared image is named S4.e. The name "S.e" is reserved for
the V2.8 shared image (since that is what V2.8 executables will be
looking for, lacking version number support). (3/24)
--------------------
tucana{f68881,ffpa,sparc}, orion, pegasus updated. (3/25)
noao/lib/strip.iraf
1. Added ".fits" to the list of files to be retained in the strip
operation.
2. Changed the OBJS.arc in the special files area to OBJS.arc.Z,
changed a .68881 to .f68881, added sparc and i386 entries. (3/26)
--------------------
V2.9BETA updated at STScI. (3/26)
sys/imio/iki/oif/oifmkpfn.x
FATAL was being called in this file with a missing argument, causing
a segmentation violation in the unlikely event that the call was ever
made (due to failure to generate a unique pixel file name). Replaced
by a call to IMERR. I cannot recall why the call to FATAL was being
made, unless it was because it is supposed to be impossible under
normal conditions to fail to generate a unique file name, indicating
some serious problem if this occurs. (3/27)
--------------------
gemini incrementally updated from orion, including layered pkgs. (3/28 SRo)
sys/imio/iki/stf/stfrfits.x
The STF caching code had a nasty hidden assumption which could lead
to repeated cache reloads in some circumstances. When a header file
is loaded into the cache, the clock time on the local cpu is stored
in the cache slot to mark the time of the load. When the cache is
subsequently searched for a cached header file, the file modify date
of the header file is compared to the time when the cache slot was
loaded, and the header is reloaded if the modify date is greater than
or equal to the cache load time (the equal-to is needed due to the
limited resolution of the clock).
The hidden assumption is that the clock used for the file modify time
is the same as that used to mark the time when the cache slot is
loaded. If the file being accessed is on a different machine with a
different clock (due to a NFS access), the file modify clock and the
local clock can easily differ by several minutes! This could lead
to two problems: 1) if the remote clock was ahead, the file modify
time could be greater than the local ttime, causing the cache to be
continually reloaded (due to a repeat loop in the code) until the
time difference was made up, or 2) if the remote clock was behind,
file modifications occuring during the interval defined by the
difference between the two clocks could go undetected.
The solution adopted was to reload the file into the cache if the
modify time *changes*, rather than comparing it to some other time
which could be on a different time base. To avoid the problem of
file modifications going undetected which occur quicker than the 1
second resolution of the clocks, the local timer is used to measure
the time since the file was loaded into the cache. If the cache slot
is less than 1-2 seconds old, the file is reloaded into the cache
(the 2 seconds is necessary to ensure that 1 full second has passed).
If the file is reloaded within the 1-2 second interval the timer is
not restarted, hence so long as the file modify time does not change,
the cache slot will be considered valid within 1-2 seconds after the
initial load. (Amazing how tricky these things can be). (3/29)
---------------------
Updated tucana{f68881,ffpa,sparc}, orion{f68881,ffpa,sparc,i386},
pegasus{i386}, draco/irafx. (3/30-31).
---------------------
IRAF V2.9 RELEASE FROZEN - except for installation of a few things completed
but not yet checked out and installed (IEEE support for VMS, new version of
PLOT, online release notes, etc). (4/2)
unix/as.vax/ieeer.s +
unix/as.vax/ieeed.s +
vms/as/ieeer.s +
vms/as/ieeed.s +
vms/hlib/mkpkg.sf
Installed VAX versions of IEEE/native floating point conversion
primitives. (4/2)
sys/osb/ieee.gx
The IEEE conversions package was modified to add the two routines
iee[sg]nan[rd] (NaN)
e.g.
call ieesnanr (INDEFR)
to set NaN to INDEFR (the default is zero). NaN is the native
floating point value to which IEEE NaN, +/-Inf, exponent overflow,
and so on are mapped when converting IEEE values to native floating
point values.
Since the "portable" routines in osb$ieee.gx have no way of detecting
the IEEE not-a-number values or of dealing with overflow, the default
iee[sg]nan[rd] routines do nothing even though they are included in
the interface. For these routines to do anything, and for NaNs to
be trapped during IEEE input, machine dependent versions of the files
osb$ieee[rd].x must be provided in host$as, with an entry on the
special file list to cause the system to use the host dependent
versions of the files.
While the new routines provide a simple way of dealing with NaNs which
is consistent with our current applications, this is not the end of the
story. In the future we will probably need to add a function-callback
capability, which will allow the application to dynamically post a
function to be called by the host level conversion primitives when a
NaN is detected or generated. Use of a callback will allow efficient
generation of a bad pixel list as well as replacement of NaN values
by a constant or data dependent value. (4/2)
pkg/cl/prcache.c
The process cache code checks the file date of a cached process
whenever a task is run to see if the process has been relinked and
needs to be restarted (often the case when doing software development
from within the iraf environment). It occurred to me that this
probably suffers from the same assumption as did the STF cache code
(3/29), i.e., the test can fail if the process resides on a remote
system being accessed via NFS, and the clocks of the local and remote
systems differ. Checking the code this was indeed the case, so I
modified the cache test code to mark the cache slot with the file
modify time rather than with the local cpu time when the process was
cached. (4/4)
unix/hlib/login.cl
Changed the template login.cl to define "grep" rather than "bgrep"
in the default user package. (4/4)
pkg/plot/doc/pvector.hlp
pkg/plot/getdata.x
pkg/plot/mkpkg
pkg/plot/pvector.par
pkg/plot/t_contour.x
pkg/plot/t_pcol.x
pkg/plot/t_pcols.x
pkg/plot/t_prow.x
pkg/plot/t_prows.x
pkg/plot/t_pvector.x
pkg/plot/t_surface.x
1. The tasks PROW,PROWS,PCOL,PCOLS were largely rewritten. Outwardly
they will appear much the same as before, but they will now work with
group (STF) data, QPOE filters, image sections, and in general any
image specification that uses [].
2. SURFACE and CONTOUR were modified to work with image specifications
containing [].
3. PVECTOR now provides an option to output the vector as a text file
or image, rather than always making a plot. (4/4)
qpqueryf.x
qpiolmask.x
qploadwcs.x
qpiolwcs.x
qpsavewcs.x
zzdebug.x
1. Added a new debug task SETWCS to the QPOE zzdebug.x. The new task
was used to test qp_savewcs, which saves a MWCS wcs object in a QPOE
file.
2. In qpiolmask.x qp_read was being called with the datatype field
TY_OPAQUE. In qp_loadwcs.x and qp_savewcs.x qp_read and qp_write
were being called with a datatype field of TY_CHAR. Both of these
cases were wrong, as the datatype field is a string in these calls.
Changed all calls to use the datatype "opaque", since that is what
the encoded PLIO and MWCS objects are.
3. The linear transformation vector in qpiolwcs.x wasn't quite right;
the bounding box coordinates were used directly to form the translation
vector, but those coordinates are one indexed so I had to subtract
one to get the translation.
4. In qpqueryf.x, fixed a typo: the datatype of an opaque parameter
was being returned as "oqaque".
Performed a full system test, using the zzdebug.setwcs task to save
a wcs in a test qpoe file, and imheader to load and display the wcs
through the higher level code. [Only QPOE could be affected by these
changes]. (4/10)
vms/x11/0readme.xterm +
vms/x11/xterm.e +
vms/x11/xterm.hlp +
vms/x11/saoimage.e +
vms/x11/saoimage.hlp +
vms/x11/setup.com +
Installed a minimal set of executables and help files for the VMS
versions of SAOIMAGE and XTERM in vms/iraf. These are very
preliminary, the release is incomplete, and there are known bugs,
but someone may find the shapshot versions of these tasks useful
while a more carefully prepared release is readied. (4/15)
vms/os/queue.c
vms/os/jbcmsgdef.h
Following the upgrade to VMS-5, VMS/IRAF had a bug wherein once a
job submitted to a batch queue completed, an abnormal termination
message JSB$_NOSUCHENT would be written to the terminal, and a
subsequent "jobs" would cause the CL to panic with an access violation.
The reason for the access violation is not clear, but the NOSUCHENT
termination code is evidently new in VMS-5, and the job queue code
in the VMS HSI wasn't prepared for such a status return. Changed
the code in queue.c to check for and ignore both the old VMS-4 status
return JBC$_NOSUCHJOB and the new VMS-5 code JBC$_NOSUCHENT. The
kernel also had a local file jbcmsgdef.h from VMS-4 which did not
contain the new VMS-5 codes; it was not clear why the kernel needs
a private copy of these definitions, so a dead code comment was
placed in the file and the #include in queue.c was changed to use
the system version instead. (4/15)
doc/newsfile
doc/news.v29.hlp +
doc/v29revs.ms +
Installed the revisions summary or release notes for IRAF V2.9. (4/15)
-------------------------
The V2.9 distribution was made and placed into distribution sometime back.
The following bugs are being fixed retroactively, with patches for the
original V2.9 distribution. (5/5)
unix/spp/boot/spp/xpp/decl.c
This code was not processing multidimensional char array declarations
properly. There were actually three problems: for a multidimensional
array passed as an argument, [1] +1 was not being added to the first
axis to allow for the EOS, and [2] the axis was not being counted,
causing +1 to be added to the *final* axis later in the code.
[3] for all multidimensional char arrays the code was not checking to
see which axis it was on before adding the +1, so +1 would be added
to each axis, instead of only the first axis as it should be. (these
bugs were contstrained to only several lines of code, it takes more
lines to describe them here!). Note that ONLY multidimensional char
arrays were affected by these bugs, and for char arrays of ndim=2,
ONLY arrays declared as arguments to procedures. (5/5)
unix/shlib/mkshlib.csh
unix/shlib/S.ver.f68881
unix/shlib/S.ver.ffpa
unix/shlib/S.ver.sparc
unix/shlib/S.ver.i386
Sun release SunOS 4.1 about a week after Sun/IRAF V2.9, built on
SunOS 4.0.3, was frozen and prepared for distribution. We subsequently
found that V2.9 would not run under SunOS 4.1, failing with a "cannot
map shared image" error during process startup. This was traced to
an overlap of the region of virtual memory used by the hardware stack
and the IRAF shared image; in OS 4.1, Sun has moved the hardware
stack to a lower address. The following changes were made to deal
with this.
1. The base address of the IRAF shared image was changed from
0x0e000000 to 0x0a000000. The base address of the shared image
is arbitrary so long as the region of process virtual memory occupied
by the shared image does not conflict with anything else, so this
change should not affect the functioning of V2.9.
2. The shared image version number was incremented to 5, i.e., the
new shared image is S5.e. This was necessary because with a different
base address, the new shared image cannot be used with applications
linked with the old shared image. (5/5)
|