IRAF V2.11.2 RELEASE August 1999 A summary of the V2.11.2 patch release changes is listed below. For further details about system changes see the "notes.v211" file in the iraf$local directory. Detailed revisions notes for each application package are in the package directories in a file called Revisions, i.e., digiphot$Revisions. System Highlights ----------------- o The new patch release makes IRAF Y2K-compliant. For details of these modifications see our Web page at http://iraf.noao.edu/iraf/web/projects/y2k/. o Solaris 7 is now fully supported. o The CL was modified to add basic support for using the CL as a host shell for shell scripts. That is, one can write a type of Unix shell script which calls the CL to interpret the script. This is done by having the shell script effectively replace the login.cl file, hence startup is faster and flexibility is maximized, but the script is responsible for any initialization normally done by login.cl (e.g. loading packages). This implementation is still fairly basic, e.g. the argument handling facilities are limited, but it works. On a Unix system, the first line of a script which calls the CL as a shell should be something like "#!/usr/local/bin/cl.e -f", where /usr/local/bin/ would be either a copy of the cl.e executable, or a link such as cl.e -> /iraf/iraf/bin.ssun/cl.e (don't call the link "cl", as this name is already used for the shell script used to start up an interactive iraf session). o IRAF i/o has been retuned to be more efficient for modern systems with large memories. The default file buffer size used by IMIO (lib/imio.h) was increased by a factor of 4 from 65536 to 262144. The units are XCHAR, so in byte units the new default image file buffer size increased from about 128 KB to about half a megabyte (about the size of dev$pix). Applications can override the default buffer size with an imset option, and any such existing applications will be unaffected by this change (IMCOMBINE for example probably controls the image buffer sizes in order to have many images open at once). Ordinary imaging tasks should function with fewer i/o operations however. o A new version of the WCS test image header was installed and called dev$ypix. This version of the image header incorporates the new Y2K format dates and has a year 2000 equinox FK5 WCS. The old version is still available as dev$wpix, in addition to the old standard dev$pix. o WFITS was modified to write the DATE keyword value in the new FITS format, including a time field, and in units of GMT. The new format will take effect Jan 1 at 00:0:00 GMT. o The REFERENCES task was modified to add the package name to the output line for each task. o Byte-swapping bug with images created on DEC or PC systems has been fixed. o Two new SGI translators, sgi2gif.c and sgi2xbm.c, were added for use in converting IRAF graphics to either a GIF or XBM image. New entries, 'g-gif' and 'g-xbm' were added to the graphcap file as defaults for generating images in the current working directory, i.e., ":.snap g-gif". o Help pages for the CL printf() and scanf() functions are now available. o FITS Kernel update. The Y2K changes for the FITS Kernel only affect the DATE keyword. Any IRAF task will read either the old or new ISO DATE format. Any new image in FITS format created with an IRAF task will have - as of now - the DATE keyword in ISO format. If a user application cannot read this new DATE format (YYYY-MM-DDTHH:MM:SS) a CL variable "isodates" can be set to a value (say 2010) larger than 1999 to create the old format (DD/MM/YY). A new way of reading scaled 16 bits FITS images is now possible with a significant improvement in efficiency. The FK now does on the fly convertion when BSCALE and BZERO are different from 1 and zero and BITPIX is 16 or 8. Application Package Changes (* indicates a parameter change) --------------------------- IMAGES: IMCOMBINE: * Added a new output which is a pixel mask identifying which pixel in which input image is rejected or not included in the final output. The internal calculation type was changed from the highest precedence type of the input images to the highest of the input and output. This allows setting the output type to be real to force computation in real for integer input images. Not doing this could cause severe truncation errors if users specify there own scaling values. The grow option to exclude pixels near a rejected pixel now works in two dimensions. IMEDIT: The temporary editing buffer image was made into a unique temporary image rather than the fixed name of "epixbuf". IMCOORDS: The IMCOORDS package tasks CCFIND, IMCCTRAN, and SKYCTRAN were modified to support both the old and new DATE-OBS format. Support for an experimental zenithal polynomial WCS was added to the IMCOORDS package tasks. Support for the ICRS (Hipparcos) celestial coordinate system was added to the IMCOORDS package tasks. IMGEOM/IMMATCH: * The IMGEOM and IMMATCH package SHIFTLINES, IMSHIFT, XREGISTER, ROTATE, MAGNIFY, IMLINTRAN, GEOTRAN, GREGISTER, WREGISTER, and SREGISTER tasks were upgraded to support the new sinc and drizzle resampling options. ASTUTIL: All tasks which involve times were checked for Y2K problems. Tasks which read the DATE-OBS keyword were updated to support the new FITS definition for this keyword. CCDTIME: The database keywords can now be indexed by reference to the telescope, filter, and/or telescope. A new filter keyword, "extinction", was added to specify the extinction. ONEDSPEC: Some improvements were made to better recognize various CTYPE values. REIDENTIFY: When the reference and image names are the same the task will now skip the reidentify, IDENTIFY/REIDENTIFY: When a coordinate list is read it is sorted and identical entries are eliminated. Thus, line lists no longer need to be sorted. APEXTRACT: APALL: Added a keyword SUBAP when using echelle output with subapertures. CCDRED: CCDPROC: * Added an optional output image parameter. APPHOT: The APPHOT default input and output file and image naming routines were modified to deal rationally with FITS image extension and GEIS file root names. POLYPHOT: The polygon drawing code in the POLYPHOT task was modified to flush the graphics buffer after each polygon segment is drawn instead of after the polygon is complete. DAOPHOT: The DAOPHOT default input and output file and image naming routines were modified to deal rationally with FITS image extension and GEIS file root names. The DAOPHOT ADDSTAR, ALLSTAR, GROUP, NSTAR, PEAK, PSTSELECT, PSF, and SUBSTAR tasks were modified to read and write default images and files from and to directories other than the current directory just as the DAOFIND and PHOT tasks and the all the APPHOT package tasks do. The restriction on the number of stars imposed by the "maxnstars" parameter in the PSTSELECT, PSF, GROUP, ALLSTAR, and SUBSTAR tasks was removed. Maxnstars is now used only for setting the initial buffer size. UTILITIES: SURFIT: * The UTILITIES package task SURFIT was modified to support the surface fitting package half cross-terms option. Additional System Changes ------------------------- pkg/math/iminterp/ The image interpolation package was modified to support 1D and 2D sinc interpolation and drizzle resampling. pkg/math/slalib/ The Starlink contributed library slalib was upgraded from version 1.6.3 to version 2.3.0. There are seventeen new routines in the upgraded library. Most of these either deal with converting between the FK5 to ICRS (Hipparcos) equatorial coordinate systems, or with computing orbital elements for solar system objects. sys/vops/asok.gx The algorithm used in this routine was found to be extremely slow in cases where many or all of the elements of the input area were equal. It was replaced by a different algorithm from Wirth which avoids this problem. sys/gio/imdkern/idk.x sys/gio/imdkern/imdpcell.x dev/graphcap Changed bits per word of the IDK bitmask from 8 to 32 to increase the encoding efficiency of the bitmask to the maximum and thus reduce the size of the internal IDK frame buffer bitmask used for overlay graphics. Increased the maximum frame buffer size from 2048 square to 8192 square. Changed the max resolution for imdkern to 8192x8192 in the graphcap entry. unix/os/zfioks.c Added a new environment variable "KSRSH". This can be used to define the RSH command to be used to make network connections. The default value is "rsh" (or the equivalent "remsh" on one old system). For example, one can set KSRSH=ssh to cause IRAF networking to use ssh instead of rsh (ssh is a more secure version of rsh that uses strong authentication). lib/time.h sys/etc/cnvtime.x sys/etc/cnvdate.x Minor changes were made to print the year using 4 digits instead of 2, to make this code Y2K compliant. unix/hlib/r1mach.f unix/hlib/d1mach.f unix/hlib/i1mach.f Installed updated versions of these files from the PORT package on netlib. The values for the minimum and maximum IEEE floating point normals were invalid (thanks to Steve Walton for pointing this out). NOTE: even on a machine with IEEE floating point, the file d1mach.f has to be modified to reflect the byte order of the platform IRAF is being ported to. bin.sparc/S.e bin.ssun/S.e The "S.e" link was restored. This link points to the Sun/IRAF shared image for the development system. It is not required for execution, but is required at compile/link time for edsym.e to be able to update the symbols for the IRAF shared image. This is needed to debug functions in the shared image. unix/boot/spp/rpp/mkpkg.sh unix/boot/spp/rpp/ratlibc/mkpkg.sh The ratlibc code was being compiled into a library "libc.a". This caused problems linking rpp.e on Solaris 7, so the name of this internal, temporary library was changed to libratc.a. lib/time.h sys/etc/dtmcnv.x sys/etc/gmtcnv.x sys/etc/mkpkg unix/hlib/libc/knames.h unix/os/gmttolst.c unix/os/mkpkg unix/os/zgmtco.c 1) A new kernel routine "zgmtco" was added to OS. This gives the correction, in seconds, from LST to GMT. (LST here means local standard time, or clock time). Since IRAF already returns the clock time in LST seconds, this allows either LST or GMT to be determined. Note LST corrects for daylight savings time, the GMT correction takes this into account as well. In practice programs can just ignore daylight savings time and let the kernel worry about it. 2) New routines gmttolst() and lsttogmt() were added to ETC. These convert times (in seconds) to and from LST and GMT. A value of zero can be input to get the correction value. 3) A set of four new routines dtm_encode, dtm_decode, dtm_encode_hms, and dtm_decode_hms were added to ETC. A related flag value was added to . "dtm" standard for date/time. These routines convert time expressed in year, month, date, and time of day to and from a string value. A flags value can be used to select the type of time string to be encoded or decoded. Currently DATE-OBS in FITS-Y2K and the old FITS formats are supported. unix/os/zglobl.c Increased the size of SZ_PROCNAME from 32 to 256 chars. On some systems this is a full pathname, and could overflow the buffer. b/gio.h This and the next several changes were part of an effort to change GIO to allow long "device names" for GUIs (which may include a GUI file name) to be passed through the graphics stream to the stdgraph kernel. Increased SZ_UIFNAME from 99 to 199 chars. This also increases the size of the dynamically allocated GIO descriptor. sys/gio/cursor/gtr.h Increased SZ_TRDEVNAME from 29 to 229. Increased SZ_KERNFNAME from 59 to 259. This also increases the size of the dynamically allocated GTR descriptor. sys/gio/stdgraph/stdgraph.h Increased SZ_GDEVICE from 31 to 256. Increased SZ_UIFNAME from 99 to 199. Increased SZ_SBUF from 1024 to 2048. These changes did not change the size of the dynamically allocated stdgraph descriptor, as string space is dynamically allocated in the string buffer. sys/gio/gmsg.x This code was changed to use STDERR rather than STDOUT to send messages to GUIs. Formerly, if the stdout of a GUI task was redirected this could cause GUI messages (gmsg) to never reach the GUI (this is of course still possible using STDERR, but it is less likely that someone will need to redirect the STDERR of an interactive GUI). The text stream are used for messaging because messages can be any size; messages of hundreds of KB are possible, e.g. when sending large GUI files, or documentation text. (Something like the message bus is needed to fully address this problem). dev/graphcap Added a new xgterm entry "xgterm-nogui", which is identical to the xgterm entry but which has GUI messaging (gmsg) disabled. This logical device will completely disable GUIs but still permit vector graphics. It also disables the builtin default ED (xgterm.gui), but the default xgterm GUI built into xgterm itself should kick in in this case when graphics mode is entered. We don't plan to use xgterm-nogui, but it could be useful as a fallback in case of problems, or for testing. lib/imio.h Increased the default file buffer size used by IMIO a factor of 4 from 65536 to 262144. The units are XCHAR, so in byte units the new default image file buffer size increased from about 128 KB to about half a megabyte (about the size of dev$pix). Note that applications can override the default buffer size with an imset option, and any such existing applications will be unaffected by this change (imcombine for example probably controls the image buffer sizes in order to have many images open at once). Ordinary imaging tasks should function with fewer i/o operations however. unix/hlib/config.h 1. Increased the size of the file pushback buffer from 512 to 1024. Not a big deal as it gets incremented anyway if overflow occurs. 2. Changed LEN_RANDBUF from 1 to 8. LEN_SEQBUF remains at 8 as before. Random mode FIO buffers are LEN_RANDBUF*blksize, hence these have increased in size from 512 bytes to 4KB (random mode i/o is rarely used). Sequential mode FIO buffers are LEN_SEQBUF *optbufsize, where optbufsize is returned by the file driver. Sequential mode (fseti (fd, F_ADVISE, F_SEQUENTIAL) is also little used however. Most file operations use the unscaled "optbufsize" returned by the kernel driver (see below). Note config.h contains a few size definitions which are not actually used any longer in the code, since these values now come from the device drivers are are tuned for each device and host system. Hence these older values were unchanged. unix/hlib/libc/kernel.h Increased the optbufsize for a binary file from 4096 to 32768. The static file optbufsize was similarly increased, but static (mapped) files are little used in the current system. All the other optbuf sizes remained the same. The network devices, process communications buffers, and so on all remain at 4KB since this value is a good match for the buffer sizes used in the Unix kernel. Hence, ordinary binary file i/o operations now use 32 KB buffers instead of 4 KB buffers. The special cases of random mode binary file i/o and sequentially optimized binary file i/o have default buffer sizes of 4 KB and 256 KB respectively. These should be reasonable, safe, and efficient buffer sizes for most applications. unix/os/zfiond.c Modified the server-side code to set the socket option SO_REUSEADDR when opening a socket and binding it to an IP address and port. This avoids the annoying delay which is otherwise seen when a server quits, but the socket it was using is not released for some time until the kernel times it out and releases it. This only affects server-side connections and currently I don't know of any IRAF servers that use ZFIOND, but probably all server-side socket code should use this feature. (setsockopt was added quite some time after most of the socket code in IRAF was originally written). sys/gio/imdkern/idk.x sys/gio/imdkern/imdpcell.x dev/graphcap Changed BPW from 8 to 32 (nbits used per integer word of the IDK image bitmask); this increases the encoding efficiency of the bitmask to the maximum to reduce the size of the internal IDK frame buffer bitmask used for overlay graphics. Increased the maximum frame buffer size from 2048 square to 8192 square. Changed the max resolution for imdkern to 8192x8192 in the graphcap entry. unix/os/zfioks.c Added a new environment variable "KSRSH". This can be used to define the RSH command to be used to make network connections. The default value is "rsh" (or the equivalent "remsh" on one old system). For example, one can set KSRSH=ssh to cause IRAF networking to use ssh instead of rsh (ssh is a more secure version of rsh that uses strong authentication). lib/gio.h This and the next several changes were part of an effort to change GIO to allow long "device names" for GUIs (which may include a GUI file name) to be passed through the graphics stream to the stdgraph kernel. Increased SZ_UIFNAME from 99 to 199 chars. This also increases the size of the dynamically allocated GIO descriptor. sys/gio/cursor/gtr.h Increased SZ_TRDEVNAME from 29 to 229. Increased SZ_KERNFNAME from 59 to 259. This also increases the size of the dynamically allocated GTR descriptor. sys/gio/stdgraph/stdgraph.h Increased SZ_GDEVICE from 31 to 256. Increased SZ_UIFNAME from 99 to 199. Increased SZ_SBUF from 1024 to 2048. These changes did not change the size of the dynamically allocated stdgraph descriptor, as string space is dynamically allocated in the string buffer. unix/hlib/libc/kernel.h Increased the optbufsize for a binary file from 4096 to 32768. The static file optbufsize was similarly increased, but static (mapped) files are little used in the current system. All the other optbuf sizes remained the same. The network devices, process communications buffers, and so on all remain at 4KB since this value is a good match for the buffer sizes used in the Unix kernel. Hence, ordinary binary file i/o operations now use 32 KB buffers instead of 4 KB buffers. The special cases of random mode binary file i/o and sequentially optimized binary file i/o have default buffer sizes of 4 KB and 256 KB respectively. These should be reasonable, safe, and efficient buffer sizes for most applications. lib/time.h sys/etc/dtmcnv.x sys/etc/gmtcnv.x sys/etc/mkpkg unix/hlib/libc/knames.h unix/os/gmttolst.c unix/os/mkpkg unix/os/zgmtco.c 1) A new kernel routine "zgmtco" was added to OS. This gives the correction, in seconds, from LST to GMT. (LST here means local standard time, or clock time). Since IRAF already returns the clock time in LST seconds, this allows either LST or GMT to be determined. Note LST corrects for daylight savings time, the GMT correction takes this into account as well. In practice programs can just ignore daylight savings time and let the kernel worry about it. 2) New routines gmttolst() and lsttogmt() were added to ETC. These convert times (in seconds) to and from LST and GMT. A value of zero can be input to get the correction value. 3) A set of four new routines dtm_encode, dtm_decode, dtm_encode_hms, and dtm_decode_hms were added to ETC. A related flag value was added to . "dtm" standard for date/time. These routines convert time expressed in year, month, date, and time of day to and from a string value. A flags value can be used to select the type of time string to be encoded or decoded. Currently DATE-OBS in FITS-Y2K and the old FITS formats are supported.