System Notes File for IRAF Version 2.10. Begun 15 May 1990. ------------------------------------------- pkg/cl/cl.par doc/notes.v29 + local/notes.v210 + doc/bugs.v28 + local/bugs.log unix/hlib/buglog.csh unix/hlib/motd unix/hlib/zzsetenv.def Switched IRAFX development systems to version 2.10. (5/15) unix/hlib/install Added xyacc to the list of HSI tasks to be installed as command in the unix local/bin. (5/16) dev/graphcap Updated entries for devices uapl[123457] and vapl[123457] to include newly measured values of xs, ys and ar. (5/21 ShJ) mkpkg bin.dsux + noao/mkpkg noao/bin.dsux + noao/lib/mkpkg.inc noao/lib/mkpkg.sf.MIPS noao/lib/mkpkg.sf.DSUX + local/.login unix/hlib/cl.csh unix/hlib/install unix/hlib/irafuser.csh [DSUX ONLY] unix/hlib/mkpkg.inc unix/mkpkg.sh unix/setarch.sh + unix/os/irafpath.c unix/os/zgcmdl.c 1. Modified DECstation/IRAF to change the architecture name from "mips" to "dsux". Anyone having IRAFARCH defined in their environment as "mips" will have to change it to "dsux" to run IRAF. 2. A couple of the files in OS were modified to change #ifdef mips constructs to also check for #ifdef ultrix. If both mips and ultrix are defined it is a DECstation, otherwise at present we will assume the OS is umips. (5/27) mkpkg noao/mkpkg Modified so that the same mkpkg file can be used for DSUX and MIPS systems without change. (5/27) local/COPYRIGHT - local/COPYRIGHTS + Replaced the COPYRIGHT file by the more carefully prepared COPYRIGHTS file from the network archive. (5/27) doc/ports/notes.mips - doc/ports/notes.dsux + Renamed the notes file for the DECstation port. (5/28) sys/mwcs/README + Added a README file to MWCS, containing an interface summary. (6/5) sys/mwcs/iwewcs.x The code which computes CRPIX when reconstructing the Wterm from a FITS header was optimized with a "if (have_ltv)" but this was incorrect, since the computation uses both the LTV and LTM portions of the Lterm (hence it is necessary to test have_ltm as well). The result was that, given an Lterm consisting of only a scale term and no shift, the code could fail to restore the correct Wterm reference pixel coordinate. (6/7) dev/termcap [tucana, orion, gemini] Added Rob's 3 two-column landscape mode printer entries. (6/12/90 SRo) * Removed world write permission from all iraf files. Only a few were affected, but there were a few files and directories that happened to have world write perm, and none should (too easy for users to delete or modify files, accidentally or otherwise). (6/18) pkg/softools/mkttydata.hlp Deleted the explicit instructions for performing a sysgen-relink, which are no longer applicable to all versions of IRAF, and added comments to the affect that use of MKTTYDATA to cache termcap or graphcap entries is inadvisable for most sites. (6/19) sys/qpoe/QPOE.hlp Revised and updated the section on QPEX; the documentation for this section was out of date. (6/20) lib/syserrmsg Changed the error message for SYS_QPUKNPAR from "attempt to delete a nonexistent parameter" to "unknown parameter". This message is used for all unknown parameter references, not just parameter deletions. (6/22) sys/qpoe/qpgpsym.x sys/qpoe/qpgmsym.x sys/qpoe/qpaccessf.x sys/qpoe/README 1. The QPOE macro facility supports two kinds of macros, global macros defined in an external QPDEFS type file which affect all QPOE file references, and datafile-local macros defined as "macro" type parameters in the individual QPOE file headers. There was a problem with the latter feature (datafile-local macros) due to QPOE header parameter references employing full macro expansion. A routine such as qp_write would perform macro expansion on the parameter name, and if the referenced parameter was the macro parameter itself, one would get the parameter pointed to by the macro alias rather than the macro parameter, making it impossible to access macro parameters once defined. The solution adopted was to disable expansion of datafile-local macros in low level header parameter accesses. Datafile-local macros are still used in expressions, hence can be used to define things like event struct fields names. Also, global macros are still used in header parameter accesses, hence header parameters may still be aliased using global defines. 2. The routine qp_expandtext was reclassed as an interface routine instead of an internal routine. If aliasing of header parameters using datafile-local macro parameters is desired, this routine may be called to conditionally translate the parameter name before accessing the parameter, allowing the name to be aliased. (6/24) unix/boot/rtar/rtar.c unix/boot/rtar/rtar.hlp Added two new switches to RTAR. -m Do not restore the file modify times. -u Do not attempt to reset the user and group ids. (6/25) sys/qpoe/qpclose.x A qp_open to create a new qpoe file followed immediately by a qp_close would create a file with no qpoe file header descriptor, causing an error when the file was subsequently opened with qp_open. qp_close was checking for the case of an open/close with no header writes and was forcing a qp_bind in this case, but the QP_MODIFIED flag was zero so the file header was not being updated. Added a QP_MODIFIED(qp)=YES to force the file header to be updated, if qp_close is called on a new qpoe file before any header modifications have been made. (6/26) sys/gio/imdkern/imdopen.x sys/gio/imdkern/imdopenws.x The imd_openws routine in the new IMD kernel was given a calling sequence of imd_openws(devname,n,frame,color,mode) when the kernel was first written. However, this routine is one of the externally callable driver routines and the calling sequence is fixed as defined by the GKI interface (the calling sequence must be the same for all GIO kernels). The IMD kernel will work fine when run standalone, but could die on a segmentation violation when called as a GIO subkernel, since the subkernel interface is GKI. By chance this escaped all our testing, as the argument list mismatch can easily go undetected, depending upon the chance contents of the registers or stack locations associated with the missing input arguments. (7/1) unix/hlib/mkiraf.csh Modified the unix/iraf mkiraf script to prevent the user from running mkiraf in an iraf system directory (any iraf directory other than iraf/local). (7/5) unix/hlib/mkpkg.inc unix/shlib/edsym.c 1. In the tucana/irafx mkpkg.inc, deleted the -T from the default link flags to allow editing of shared image symbols. 2. When shared image versions were added a while back I forgot to add version support to EDSYM, the symbol table editor. The program has been modified to examine the text segment of the file being edited to determine the shared library version number, and use this to access the correct shared image (e.g., S5.e is the version 5 shared image). With these changes, executables linked in the default way will again have the correct symbols for the shared image (allowing use of adb or dbx to examine locations in the shared image, without having to relink -z). (7/5) unix/boot/spp/xc.c Modified XC to automatically disable the call to EDSYM (the symbol table editor) when linking a host program (xc -h). (7/6) sys/imfort/mkpkg sys/imfort/imfparse.x sys/imfort/imfmkpfn.x sys/imfort/imftrans.x + 1. Due to the use of vfn_translate in imfparse.x, the directory prefix field, if any, of the image name was being discarded. This would prevent use of IMFORT to access images other than in the current directory. The use of vfn_translate was inadvisable in any case, as it performs more VFN translation than is desired, and IMFORT is supposed to allow unrestricted use of host filenames. The fix was to replace the call to vfn_translate by a call to a new internal imfort routine imf_trans. This will still do a very limited amount of escape sequence encoding on the image filename, allowing mixed case and multiple "." delimited fields to be input and translated as for IRAF vfns, e.g., on VMS. Since such filenames are not legal in VMS (mixed case is legal but is not very useful in VMS) this level of translation should be fairly safe. This was introduced into V2.9 on 11/28/89 (when the IMFORT pixel-file- clobber bug was fixed). It is surprising that the problem was not reported earlier. Most people must access only images in the current directory. (7/6) 2. The call to vfn_encode in imf_parse was not quite right either. vfn_encode only returns the next field of a pathname, and when imf_parse was called with a path and a non-image 3 char extension, part of the path would be lost. The solution was to replace the call to vfn_encode by a call to the new imf_trans routine, which avoids just this problem. (7/9) dev/hosts [tucana, orion, gemini] Changed cmd field for draco, to use known object "241", which currently points at usr$0:[rooke]irafks.com, but will shortly point to usr$3:[irafext.kpnolocal.src.dni]irafks.com. (7/12 SRo) dev/graphcap [tucana, orion, gemini] Added iism70d field for draco-hosted iis, aliased to iism70c & iism70l for backward compatibility. Changed DD in default iism70 entry to point to draco, using iia0, as we currently have no UNIX-hosted iis. (7/12 SRo) unix/os/zmain.c unix/os/zzsetk.c unix/os/zfiopr.c Added a new facility to UNIX/IRAF for debugging interprocess communication (IPC). This feature will also be useful for debugging tasks standalone, particularly in cases where a bug seen when the task is run from the CL is difficult to reproduce when the task is run standalone. The facility is this: if LOGIPC is defined in the host environment when an iraf process is started, the process will create two files PID.in and PID.out, where PID is the process id. Everything read from the IPC input file is copied to the .in file, and everything written to the IPC output (e.g., sent back to the CL) is copied to the .out file. This is done only for connected subprocesses. It will work for any connected subprocess, e.g., normal cached processes and graphics subkernels in both foreground and background CLs, but not the i/o of the CL itself since it is not driven by IPC. The IPC streams saved are an exact binary copy of whatever was sent via IPC, including the binary IPC packet headers, binary graphics data, etc. However, most IPC traffic is textual in nature, so it will usually be possible to read the IPC files with a file pager, or even "cat" them to the screen (not avisable if graphics data is involved). A particularly interesting use of this feature is to allow a process to be run under the CL in the normal fashion, then rerun under the debugger using the saved IPC input to duplicate the input and actions of the process when run under the CL. For example: % setenv LOGIPC % cl cl> dir cl> logout % unsetenv LOGIPC Will run the CL, saving the IPC of all subprocesses (x_system.e). We can then run the system process manually, using the saved IPC input: % $iraf/bin/x_system.e -c < PID.in To run the process under ADB or DBX, using the saved input: % adb $iraf/bin/x_system.e :r <PID.in -c or % dbx $iraf/bin/x_system.e dbx> r -c < PID.in Note that the redirection has to be given first for ADB, and last for DBX. [In recent versions of SunOS there must be no space after the "<" in the :r command to adb.] Running a task in this way is not identical to running the task standalone, e.g. using a DPARAM file for parameter input, because the exact runtime context of the process as run under the CL is reproduced. The differences are subtle but can be important when trying to reproduce a bug seen when the process is run under the CL. For example, the functioning of the task is slightly differenct when the -c flag is used, the environment is passed in via IPC rather than being read from hlib$zzsetenv.def, and so on. Except for possible kernel level differences associated with spawning the process by forking a shell rather than the CL, the process should execute identically as it did under the CL. (7/17) sys/vops/amov.gx This routine could fail, corrupting the data array, in some cases when the input and output arrays overlap. The same problem exists in standard V2.9 iraf except that in most iraf implementations, a host optimized version of AMOV is used, hence the bug has not been seen. (7/19) sys/imfort/tasks/pcube.f This file contained a subroutine containing the following sequence of statements (irrelevant statements ommitted): subroutine pcuber (pix, nx,ny,nz, i1,i2, j1,j2, k1,k2) real pix(nx,ny,nz) integer nx, ny, nz On the MIPS, this produced a warning about nx/ny/nz already having been declared. Probably when the compiler processes the REAL statement it assumes the parameters are type integer. This seems reasonable, so I moved the INTEGER card up before the REAL and the warning went away. (7/19) sys/imfort/tasks/mkim.f This task creates a test image where the pixel value is computed based on the position of the pixel in the image. The relation being used was (j*ncols+i), which is the pixel number starting at [1,1], except that the value is offset by a line, which is ok but not what one would expect. I changed it to ((j-1)*ncols+i). (7/19) vms/hlib/sigqueue.com Added qualifiers /passall/nofeed to the ln03 print command. (7/20 ShJ) pkg/utilities/doc/polyfit.hlp Added the missing "statistical" heading under the weighting section in the polyfit task help page. (7/23/90 LED) sys/plio/pllpr.x sys/plio/pllnext.x sys/plio/pll2r.gx sys/plio/pll2p.gx sys/plio/plcmpress.x These files each contained statements of the form (foo * I_SHIFT) + goo where foo is type short and I_SHIFT is an integer constant. The VMS Fortran compiler, due to a misfeature or otherwise, evaluates a short times an integer literal using short integer arithmetic, causing integer overflow in the short integer intermediate expression. The solution adopted was to replace the "foo" in expressions such as the above by "int(foo)". (7/24) vms/os/zmain.c The vms/iraf process main was modified to add support for calling iraf tasks on the host system command line, a feature which was added to unix/iraf some time ago. As with unix/iraf, any extra command line arguments are passed on to the iraf main as the iraf command to be executed. The vms/iraf version has the additional feature that the process stdin and stdout/stderr may be redirected on the command line, using the usual syntax <file >file >>file. This is NOT THE SAME as redirecting the i/o of the iraf task, with 4>file etc. arguments to the task. Both or either form of redirection may be used, but the process main arguments must preceed the command to be passed to the iraf main. (7/24) noao/lib/strip.noao Added ONEDSPEC to the list of packages to be stripped; don't know why this was missing. (7/25) pkg/utilities/t_curfit.x,curfit.gx Moved the ic_close(rd) calls out of the input file/image loop and into the main routine. The pointer to icfit was being freed after the first file of data was fit and not reallocated before the next fit was initiated resulting in a segmentation violation. (LED 7/30/90) dev/hosts [tucana only] Added adonis (engineering hp9000/370) to network for hpux testing. (7/30/90 SRo) math/gsurfit/gsder.gx,gsderd.x Corrected a typo in the gsder.gx routine which was causing a pointer to be passed to the salloc routine instead of a size. If the pointer addresses became very large this caused an out of memory allocation error. This error has been in existence as long as the package but only showed up on the MIPS. (8/1/90 LED) sys/imio/iki/oif/oifmkpfn.x Modified to check for the null image, and return "dev$null" as the pixel file name in this case. (8/4) unix/boot/spp/xc.c 1. All internal system executables called by XC (currently xpp.e, rpp.e, and edsym.e) are now located using the iraf routine os_sysfile, rather than searching through the host system directories /usr/bin, /usr/local/bin, and so on. This ensures that XC will always find these executables, regardless of where the iraf host level commands xpp, rpp, etc. are installed (XC does not even care if these are installed as user commands, anymore). 2. The technique used to locate host commands such as f77 and cc was changed to the following sequence: [1] first the directories defined by the user's $PATH are searched (using execvp), [2] the internally defined directory SYSBINDIR is searched (this defaults to /usr/lang on a Sun), [3] the internally defined directory LOCALBINDIR is searched (defaults to /usr/local/bin). 3. When linking on a Sun/IRAF system, -lI77 is searched only if the old (pre-V1.3) compilers are being used, as I77 has been deleted with the V1.3 compiler. The result of the above change for Sun/IRAF is that the revised XC will work with either the new V1.3[.1] compiler, or any of the old compilers. If both compilers are installed, either may be selected using $PATH. If the system contains only the new compiler at /usr/lang and the user has not included this directory in their path, XC will still find the compiler. (8/4) NOTE - Although IRAF can now make use of the new V1.3 compilers, these are NOT fully supported yet. These appear to be largely new compilers. A new set of system default compiler switches will have to be developed, and the full iraf system recompiled from scratch and tested before the new compilers are fully supported. In particular, note that there is no guarantee that sources compiled with the new compiler will link correctly with iraf objects produced by the old compiler, or that old iraf objects will link properly with the system libraries included with the new compiler. The default iraf mkpkg compiler switches may not be correct for the new compilers. Compiler bugs are likely. unix/boot/spp/xpp/decl.c unix/boot/spp/xpp/xppcode.c Modified the code which outputs runtime initialization statements to output these statements after any DATA initialization statements (they were coming out before the DATA statements). Runtime initialization is used to zero the function value of real and double functions upon procedure entry. (8/7) sys/qpoe/README sys/qpoe/mkpkg sys/qpoe/qpio.h sys/qpoe/qpmacro.x sys/qpoe/qpoe.h sys/qpoe/qpopen.x 1. The builtin interface default blocking factor for QPOE was changed from 8 to 1. 2. The default blocking factor may now be specified individually for each datafile, by defining the optional parameter "defblock" in the QPOE header. If a datafile default is given this overrides the builtin interface default; any global SET value overrides both, and setting the block factor in the runtime filter expression or in a runtime call to an interface seti routine will override both the datafile and global defaults. 3. In a related change made while implementing the above feature, qp_open was modified so that interface parameters set in global SET statements (as in QPDEFS) will override datafile parameters inherited from an existing datafile in a NEW_COPY operation. In other words, if the user explicitly specifies a parameter such as "pagesize" or "bucketlen" in their QPDEFS, this will override the default value inherited from an old datafile when a new copy is made. As before, any runtime qp_seti calls made once the new datafile has been opened will override these defaults. This was necessary to be consistent with the rule that the most recently specified value for a parameter takes precedence. (8/8) pkg/system/directory.x A couple of obscure bugs were fixed which affected unsorted directory listings. (8/8) pkg/images/imarith/imasub.gx Fixed a bug in the special path for subtracting an image from the constant zero; i.e. negation via subtraction. (8/15) pkg/images/imutil/hedit.x Modified hedit to use the maximum of the default task min_lenuserarea value (28800) and the "min_lenuserarea" environment variable if defined. The previous version always used the default value. (8/15 LED) dev/graphcap [tucana, orion] Known object irafks.e is failing due to some problem with its I/O channels at startup time; this happened apparently without any change to VMS or IRAF software. IIS access via dni from tucana or orion still works if the user has an irafks.com in their login directory. Changed draco!iis to dnidraco!iis, so that the private irafks.com is used. Will have to fix known object irafks.e later. (8/17/90 SRo) pkg/dataio/t2d/t_t2d.x Increased OBUF_PAD, which controls the size of a data record read, from 20000 to 32767 chars. This value limits the maximum size of an input data record in the tape record, and it is a read error if the actual record is larger. (Also increased SZ_OBUF to the next larger power of two and increased the max ranges, not that the latter is likely to matter). (8/22) dev/uhosts Updated this file to reflect changes in the NOAO internet. This file is a modified version of tucana's /etc/hosts file. (ShJ 8/29) dev/graphcap Added entries for all colors of imd devices; color indices 202 through 217 are now available. Also added a device "imddicomed" suitable for drawing black, variable width lines destined for dicomed output via the imdkernel. The imd entry was modified so xs=ys=#0.263, indicating a physically square device. (8/30 ShJ) unix/hlib/config.h Changed MT_SZBDEFIBUF (the default maximum input buffer size for magtape i/o) from 32768 to 65535. This more nearly reflects the maximum record size of most modern devices, and the change was needed to permit the full range of blocking factors for tapes. (9/3) unix/os/zfiomt.c unix/os/zfiomt.c.BSD + Installed the temporary "hacked magtape driver" for SunOS, which includes Exabyte support. This will be replaced shortly in V2.10 but is what is being shipped in V2.9.1. This driver supports the following combinations of devices and host drivers (given the current chaotic situation with tape drivers on Suns it is unlikely that any combinations not tested will work): 1/2" reel tape 4.0.3 all except ST (SCSI tape) driver 1/2" reel tape 4.1 untested, but should work Exabyte 4.0.3 Sun ST driver, Ciprico RT driver sparcstation under 4.0.3 not tested Exabyte 4.1 Sun ST driver, except sparcstation 1/4" cartridge tape and 1/2" reel tape on the Sun SCSI driver (at least under 4.0.3) is not currently supported. The Exabyte on the sparcstation version of the ST driver is not currently supported due to serious bugs in the sparcstation version of the ST driver, which is different than any other version of the ST driver. The driver automatically determines whether the current system is running 4.0.3 or 4.1 and adjusts it behavior accordingly. The behavior of the ST driver differs from 4.0.3 to 4.1, and worse, the driver ioctls changed, which prevents magtape code compiled under 4.0.3 from even running on 4.1. zfiomt works around this by using the hardwired values of the iocts for the two SunOS versions. (9/3) unix/os/tape.c + This file (not part of the runtime iraf system) is a host level magtape test program, which should compile and run on most unix systems. It is kind of like the unix "mt" program, except that it runs as a command interpreter, allowing one to open a drive and issue a series of commands to exercise the drive. All the standard driver ioctls are provided, plus commands for reading and writing data records, and various interpreter control commands. The program is useful for exercising drivers (and drives) to determine exactly what they do when the various driver ioctls are issued. The following commands are provided: open [device [r|w]] rewind fsf [n] close read [nrec [bufsz]] fsr [n] log [file] write [nrec [bufsz]] bsf [n] run <file> weof bsr [n] verbose status quit The "write" command writes records of the given size (default 1024) containing a comment such as "file M, block N" at the beginning of each record. The "read" command prints out the first 80 printable chars or so of each record read, omitting unprintable chars. These commands can be used to prepare test tapes and determine to what record the tape is positioned after a given ioctl or command is issued. (The program is also useful as a crude mtexamine type program). (9/3) unix/boot/spp/xc.c [Sun/IRAF only] The SunOS version of the XC compiler, which makes a stab at trying to support the version 1.3 Sun Fortran and other compilers, was modified as follows: o When a compile is performed with the new compilers in the path, the compiler runtime BIN directory /usr/lang/SC0.0 (or whatever - the path is generated at runtime to reflect whereever the user installed the compiler) is passed as in -L/usr/lang/SC0.0 to the CC command used to link. This is necessary because the version of CC used to link may be the old C compiler, which will not automatically search the compiler BIN directory /usr/lang. The actual library search path specified depends upon whether FLOAT_OPTION is defined in the user environment. For example, if FLOAT_OPTION is defined in the user environment as "ffpa", the search path command line options will be -L/usr/lang/SC0.0/ffpa -L/usr/lang/SC0.0 (where the user specified path (/usr/lang) and BIN version (SC0.0) are determined automatically at runtime). Referencing the right version of each library is necessary in order to get the library version optimized for the local floating point hardware on Sun-3s. o The host libraries searched to link with the 1.3 compilers were changed to -lF77 -lm. It appears that -lU77 was eliminated in 1.3, as well as the -lI77 noted earlier. Using, e.g., f77 to perform the link would avoid the need to have XC know the details of the host libraries but is probably not a workable solution since iraf programs are not Fortran programs ("host" programs linked with xc -h are not necessarily Fortran programs either). f77 would set up the startup files etc. required by f77 programs, whereas an iraf program is to the host system a C program which uses some of the f77 libraries. If f77 could be used to link a C program then it might provide an alternative to having XC know what host libraries to link against, but I doubt if this would work. It should be noted that while we are attempting to support the new compilers, full support cannot be expected until the IRAF project begins using these compilers routinely. (9/3) Addendum - Note on 1.3 compilers. Testing the new XC with the 1.3 compilers on a Sun-3, I find that FLOAT_OPTION no longer works as it used to. If FLOAT_OPTION is defined in the environment and one does, e.g., a cc to compile a file, a message is printed warning that FLOAT_OPTION is being ignored and the the default (fsoft) is being used. It is necessary to explicitly compile with -f68881 or whatever to get the desired architecture. This is not a problem for mkpkg or fc, since these utilities automatically generate the -float arguments, but if one calls xc directly the argument must be given. (9/4) dev/graphcap [orion, tucana] Changed dni networking to draco back to normal (known object) mode after fixing vms irafks.e startup problem (kpnolocal version). (9/4/90 SRo) dev/hosts [orion only] Added columba to hosts file (gemini & tucana were okay). (9/7/90 SRo) -------------------- All tucana architectures and irafx@draco were updated to the latest snapshot of V2.10. orion, pegasus, columba, cephus, and iraf@draco were updated to V2.9.1 and the V2.9 distribution files rebuilt in the network archive. (3-9 Sept.) sys/imio/db/idbfind.x Commented out a couple of lines of code in the code which scans an unblocked header. The erroneous code was harmless given a normal header containing nonempty cards, but could result in header cards being skipped if blank header lines were encountered. (9/11) doc/ports/notes.mips + Archived the notes for the the MIPS port. (9/17) unix/os/tape.c Installed a newer version which is more conservative about the use of the status (NOP) ioctl. (9/17) math/curfit/cvrestore.gx,cvrestorer.x,cvrestored.x math/gsurfit/gsrestore.gx,gsrestorer.x,gsrestored.x math/surfit/isreplace.x Changed all the int() calls to nint() calls in the above math package restore routines. This is a totally safe way for the math routines to do the required floating point to integer conversions and removes any potential precision problems for tasks which read the math package structures back from a text file. This change was made in response to problems encountered with reading text databases on the HP. (LED 9/18) unix/hlib/zzsetenv.def Removed the default imdir=tmp$ entry. Having this in zzsetenv.def prevents use of a host level environment definition to set the per-user default, and isn't necessary as IMIO will default to imdir=HDR$ if imdir is not defined. (10/2) dataio/doc/wfits.hlp Added some comments to the wfits help page concerning the unwisdom of writing to EOT on a blank tape. Updated the section describing the tape blocking factors and added an example showing how wfits can be used to write exabyte tapes with large blocking factors. (LED 10/3) ----------- f68881,ffpa,sparc binaries updated on tucana. (10/16) unix/boot/spp/xpp/xppcode.c Fixed a typo on line 888, changing "op >= &sbuf" to "op >= &obuf". (10/19) pkg/images/imhistogram.par pkg/images/iminfo/imhistogram.x pkg/images/doc/imhistogram.hlp Added a new parameter binwidth to the imhistogram task so that the user can define the imhistogram resolution in terms of intensity units or number of bins. (LED 10/26) pkg/images/tv/doc/display.hlp Modified the description of zrange to note that the minimum and maximum pixel values, if not already known, are estimated rather than computed by examination of the full image. (11/5) sys/INDEX + I added a MKTAGS procedure index listing to the SYS directory, to make it easier for people to locate VOS routines without having to know about MKTAGS (since few do, it seems). This file contains a list of all the procedures defined in all the .x source files in the sys$ directories, giving the calling sequence and source file and line number for each. (11/8) dev/graphcap unix/sun/imtoolrc Added a new entry for the GONG Cache Monitor. (11/9/90 ShJ) sys/qpoe/qpexdebug.x Modified to print the lookup table zero to NDIGITS_DP precision, in the case of a double precision lookup table. (11/9) sys/qpoe/zzdebug.x 1. Modified the `hlist' task to survive the case of a symbol returned by qp_gnfn not being found by qp_gpsym; this can happen when the symbol name is a macro. 2. Modified the default debug event list struct to agree with that of PROS/Einstein datafiles, for convenience sake when debugging with this data (the zzdebug code is crude and uses a wired-in compile time event struct). (11/10) dev/hosts dev/devices dev/devices.hlp 1. Added node ursa. 2. The 1/2" drives now have a default density of 6250 instead of 1600. 3. devices.hlp file updated to reflect the above changes. (ShJ 11/12) (CB 11/12) pkg/images/images.hd pkg/images/rotate.cl pkg/images/imlintran.cl pkg/images/register.cl pkg/images/register.par Added src="script file name" entries to the IMAGES help database for the tasks ROTATE, IMLINTRAN, and REGISTER. Changed the CL script for REGISTER to a procedure script to remove the ugly local variable declarations. Added a few comments to the scripts. (LED 11/12) sys/qpoe/README sys/qpoe/mkpkg sys/qpoe/qpexgetat.x + sys/qpoe/qpexattrl.gx + Added the following new routines to QPEX: nc = qpex_getattribute (ex, attribute, outstr, maxch) nr = qpex_attrl[ird] (ex, attribute, xs, xe, xlen) The qpex_getattribute routine is like qpex_getfilter, except that it returns only that portion of the current compiled filter which pertains to the named attribute. The filter expression for the attribute is returned as a text string. The family of routines qpex_attrl[ird] are similar, except that they return the filter for the named attribute as a binary range list. In both cases, the actual filter is stored internally in the QPEX descriptor as a compiled program, hence the attribute or expression is only a representation of the actual filter. Unless there is a bug they should amount to the same thing, but one should be aware that the internal form of the compiled filter is not a simple range list. (11/12) sys/qpoe/zzdebug.x Added a new debug task TFILTER, used to verify time filtering. Also tests qpex_attrld, qpex_getattribute, and the use of QPEX and QPIO independently, using qpex_seti to set the event attribute filter and rewind the event list. Time filtering is tested by filtering the event list once using the normal optimized time filtering code, saving the x/y of each event which passes the filter in a memory array. The event list is then rewound, the filter removed, qpex_attrld called to get the time filter as a binary range list, and the raw event list is manually filtered and the x/y of each event which passes the filter saved in memory. The filter results are then compared to see if they agree. (11/12) [I wasted half a day getting TFILTER working, due to a very uncommon problem. Changing the name of the task in the task statement in the QPOE zzdebug.x would cause QPEX parsing (totally unrelated) to fail in some cases and work in others. I traced this to particular file, but when it was recompiled the bug went away. The newly compiled object, though, was identical to that on orion (V2.9.1). Short of recalling files from a backup tape, it was impossible to look into this further.] sys/qpoe/qpexeval.x In testing the time filtering code with the new debug task I found the following bugs. 1. The code which evaluates the filter expression for a single event was not initializing the value of the expression to false before evaluation. In most cases this step is redundant (which is probably why I didn't put it in the original code) but it turns out that there is a case in the lookup table code used to evaluate long range lists where the old expression value is pushed before evaluating a subexpression, and an undefined value could be pushed causing events near a range boundary to occasionally be passed when they shouldn't. 2. The first thing the lookup table code does is map the data value to a bin of the lookup table. This involves an INT operation, and values a fraction of a data value left of the first bin of the table would have a fractional negative value which INT would convert to a zero, causing values just left of the first bin to erroneously be mapped into the first bin. (11/14) unix/os/tape.c Was opening the tape drive with mode 1 when open-write was specified; changed this to open with mode 2, read-write. (11/15) sys/qpoe/qpexcode.gx Nested range list evaluation lookup tables occur where a bin of the table at level N maps to so many closely spaced ranges that another lookup table at level N+1 is needed to evaluate the range list for a value that maps into the bin. Using the new TFILTER debug task to test nested floating time filter lookup tables, I found that a couple of internal variables were not being saved on the stack when the routine recursed to generate code for the new table. (This is the first time this feature was ever tested, as it has not been needed until now). (11/15) sys/qpoe/qpex.h Increased the size of the program and data buffers used for expression evaluation by QPEX. These can overflow at runtime causing a program abort and the memory is dynamically allocated so we may as well be more generous. There is still a builtin default upper limit, but if someone does come up with a filter which is large enough to overflow either buffer the size can be increased in QPDEFS before compiling the filter. (11/15) pkg/system/doc/help.hlp Added REFERENCES and PHELP to the "SEE ALSO" section. (11/16) unix/os/mkpkg.sh Modified the bootstrap code to avoid compiling sources such as getproc.c and tape.c into LIBOS, since these are not part of the library. The new version compiles all z*.c files plus an explicit list of other files which are part of the kernel, such as irafpath.c, prwait.c, and so on. (11/19) pkg/images/doc/gauss.hlp Added a detailed mathematical description of the form of the Gaussian kernel used in the GAUSS task to the help page. (28/11/90) pkg/images/filters/t_convolve.x CONVOLVE was not decoding the legal 1D kernel "1.0 2.0 1.0" correctly although the alternate form "1.0 2.0 1.0;" worked. Leading blanks in string kernels as in for example " 1.0 2.0 1.0" also generated an error. Fixed these bugs and added some additional error checking code. (11/28/90 Davis) dev/hosts [draco, iraf and irafx] Changed path to irafks.e to use "bin.dsux" for cephus. Other DECstation installations left as "bin.mips. Node equuleus uses mips as IRAF architecture; couldn't check virgo (passwd changed?). (11/28/90 CB) unix/boot/spp/xc.c While testing the magtape driver code on Ursa (Sun 470, SunOS 4.1) I had occasion to compile a file and found that XC failed with the message "f77 not found". The following two changes were made. 1. There was an actual bug in the code for "run". This would build the path of the executable, e.g., "/usr/lang/f77", but not use it, calling execv with only the task name, e.g. "f77". Hence the routine would only work if the executable was found in the user's path. 2. Evidently the V1.3 compiler cannot even execute unless the directory containing the f77 driver (normally /usr/lang) is in the user's path. Since we want XC to function properly whether or not the user has /usr/lang in their path, I modified XC to use PUTENV to add /usr/lang to PATH in the environment for the XC process, if f77 is found in this directory. (If f77 is in some nonstandard location then the user will already have the directory in their path). (12/1) dev/hosts [tucana only] Added madrona (George Jacoby) to network. (12/4/90 FV) sys/qpoe/qpgettok.x Edited the description of TOK_IDENTIFIER in the file header. The list of legal identifier characters ommitted certain characters. (12/4) pkg/dataio/fits/t_rfits.x Modified the rfits task so that it will supply a temporary root output file name if old_irafname="yes" or quit with a clear error message if old_irafname="no", in the case where the user sets the output file to the null string "". (12/6/90 LED) dev/hosts Modified the dev/hosts file on draco (iraf and irafx) so that the kernel server was started on orion-gw rather than orion. (12/6/90 jvb) pkg/system/cmdstr.x Would ignore any parameter the name of which began with "mode". Fixed to ignore only the mode parameter (I guess this is right; actually it is not obvious if the mode parameter really has to be skipped, although it should be safe to do so). (12/11) doc/ports/notes.dsux Fixed a typo; a Dec 1990 date should have been Dec 1989. (12/13) sys/imio/impmap.x The "flags" value was being passed to im_pmopen, rather than "mode", causing im_pmopen to get an access mode of zero. This was harmless when opening masks read only but prevented opening new masks. (12/14) sys/imio/immap.x The case of a NEW_COPY .pl image (mask image) was broken out as a special case. A mask image is created with mode NEW_IMAGE, set to the logical size of the image being copied, and im_make_newcopy is called to copy the header and other inheritable image attributes. This is not a normal create-mask operation because the new mask is actually an image stored as a mask which is a new copy of another image; this is not the same as a new mask which is created for use with some reference image. The main difference is that a mask is always associated with the physical image matrix, and inherits any runtime section defined for the reference image, whereas an image which is a new copy of another image is sized according to any section defined for the old image. In other words, a new-copy .pl mask-image created from a section of an existing image will be the size of the section being copied, rather than the size of the full image. Normal mask operations do not work that way, which is why im_pmmap cannot be called directly in this case to make a NEW_COPY mask. (12/15) sys/imio/impmmap.x sys/imio/impmopen.x The flag PL_BOOL (create boolean mask) was being set in IM_PLFLAGS by im_pmopen, but that was incorrect as this routine doesn't have access to the image descriptor. Moved the flag setting code to im_pmmap. (12/15) sys/imio/impmhdr.x + sys/imio/impmmap.x sys/imio/imunmap.x The IMIO image mask support was modified to save the image header in the PLIO save file, and restore the header when the mask is later mapped onto an image descriptor. The image title string and header cards are stored in the mask "title" string as an arbitrarily long string consisting of a number of lines of text. In effect, this gives PLIO mask images (.pl images) the same header functionality as, e.g., OIF format images. Mask images can now be dynamically created, edited, etc., and have full headers, so they can be considered full fledged images except for the one restriction that the pixel type is always integer (with 28 bit unsigned integer pixels). The semantics of accessing or copying sections, world coordinates, etc., are the same as for any other image format. Randomly accessing an image should be efficient despite the compression, since the mask lines are compressed and indexed individually. One possibly useful feature of image masks is that they represent the first machine independent image format for iraf. Character data is stored as byte packed ascii strings, and the save format for mask image data is an MII short integer sequence. Mask images provide a general image compression capability for integer images. If you try to store a floating image in a mask it will work, but the data will be converted to integer (with incredible compression if the data converts to zeros!). Since the compression algorithm was designed for masks there will be little compression for noisy 16 bit images. 32 bit integer images, or any smooth (low noise) integer image will compress to some degree. Compression factors for actual image masks, of course, will be very large, with factors of 100-1000 being common. (12/17) sys/imio/iki/iki.h sys/imio/iki/ikiinit.x sys/imio/iki/mkpkg sys/imio/iki/plf/README + sys/imio/iki/plf/mkpkg + sys/imio/iki/plf/plf.h + sys/imio/iki/plf/plfcopy.x + sys/imio/iki/plf/plfdelete.x + sys/imio/iki/plf/plfrename.x + sys/imio/iki/plf/plfaccess.x + sys/imio/iki/plf/plfnull.x + Added limited support to the IKI interface for PLIO image masks. A new mini-kernel PLF was added; this consists of about half of an IKI kernel (the access/copy/delete/rename primitives), with the open/close, header access, and i/o functions being performed directly in the IMIO code and in the IMPM code in IMIO. With this change operations such as imaccess, imdelete, imrename, etc. will work for .pl image masks as for the other image formats. In principle everything related to image masks should be isolated to an IKI kernel, but the mask i/o stuff does not fit the current image kernel model very well, and it was simpler to solve the problem as a special case in the IMIO code. This will be cleaned up later as part of the new image structures project when the IKI interface is redesigned. (12/17) pkg/images/imfit/imsurfit.x pkg/images/imfit/t_imsurfit.x pkg/images/lib/pixlist.h pkg/images/lib/pixlist.x Changed the package prefix of the "pixlist" package, used internally within IMSURFIT, from "pl" to "prl" (pixel range list) to avoid a name conflict with the system interface PLIO. (12/18) sys/imio/immap.x Modified so that the .pl extension does not have to be given explicitly for the code therein to recognize a mask image. (12/18) sys/plio/plloadf.x Modified to make specification of the .pl extension optional when opening an existing save file. (12/18) sys/imio/immap.x sys/imio/imunmap.x sys/imio/iki/ikiinit.x sys/imio/iki/plf/mkpkg sys/imio/iki/plf/plfclose.x sys/imio/iki/plf/plfupdhdr.x sys/imio/iki/plf/plfopen.x The special case nature of the code to map pixel mask images in IMMAP led to further complications, to the point where it became worthwhile to scrap this and move the open procedure into the IKI PLF kernel where it belongs. Added open, update header, and close procedures to the PLF image kernel and deleted the special case code in immap.x and imunmap.x The main thing still missing from this kernel is the i/o, which is still handled directly in IMIO (pixel masks do not fit the virtual file model very well). (12/20) sys/imio/imopsf.x The code in this file which copies the descriptor of the reference image was doing too much. Replaced by some code that copies only selected fields. The concept of what a reference image means in this case is still muddy, however, so I doubt if this stuff is right yet. (12/20) sys/imio/imioff.x The impkden computation could result in a divide by zero if the logical block size was 1 char. Alignment does nothing in such a case anyhow, so I put an IF around this code to skip it if the logical block size is given as 1 char. This is the case in some of the new image kernels which do not do anything so simple as store pixels on a blocked device. (12/20) sys/qpoe/qpoe.h sys/qpoe/qpgettok.x sys/qpoe/qpioopen.x sys/qpoe/qpioparse.x sys/qpoe/qpexeval.x sys/qpoe/qpexmodfil.x QPOE has a parameter "deffilt" which can be used to define a default event attribute filter for event i/o. Previously, either the default filter was used or a user specified filter was used, i.e., if the user specified a filter it would *replace* the default filter. This was changed so that the user specifed filter would add to or modify the default filter, on an attribute by attribute basis. In effect the data is run through the default filter, then the result is run through the user filter. The expected use of the default filter, which is stored in the datafile with the data, is to exclude "bad" data from normal analysis. Since all the data is nonetheless present, the default filter can be overridden to get at the normally excluded data. This can be done by editing the value of the deffilt parameter, deleting the parameter, or by overriding elements of the filter in the user specified filter at run time. For example, cl> countpoe "foo.qp[time:=@times]" would replace the time term of the default filter with the time list from the file "times", preserving any other terms of the default filter, whereas cl> countpoe "foo.qp[time+=@times]" or cl> countpoe "foo.qp[time=@times]" would modify the filter for the time attribute, passing only those events which pass both the default time filter and the time filter given in the file "times". The new assignment operator ":=" must be used to override any existing filter term; if the usual "=" is used, the default filter term, if any, remains in effect. The default filter is a string of the form "attr=expr[,attr=expr...]". This is parsed at qpio_open time just as the user specified filter is, hence the default filter may reference macros, include files, etc. Operators such as qpex_getattribute and qpex_attrl will return the final filter or range list as used to filter the data, produced by combining the default and user filters. (12/27) sys/qpoe/zzdebug.x Added a new debug task SETFILT, used to set the value of the "deffilt" parameter in a QPOE datafile. (12/27) sys/qpoe/QPDEFS 1. Added a comment at the top to make it more clear that this file is only intended as an example of a QPDEFS file, and to give some pointers regarding how to use the global macro facility. 2. Changed the event structure definitions to match those now used in qpoe$zzdebug.x. (12/28) sys/qpoe/qpexpand.x This routine copies the input string to the output string, expanding any macros or include file references in the process. The problem was that qp_gettok returns a string token with the quotes removed, and qp_expand was merely copying tokens out, resulting in the quotes being stripped from string tokens. qp_expand was modified to restore the quotes to string tokens written to the output stream. I checked various other places where text is pushed back, and all other instances preserved the quotes. (12/29) sys/qpoe/qpgettok.x Added support for the builtin symbol or macro "$DFN". When encountered in the input stream being processed by qp_gettok(), this results in the datafile name being returned as a string token. This can be used, for example, in macros used to call external tasks, e.g., [time=`mytask($DFN,arg,...)`]. (12/29) sys/qpoe/qpiogetev.x When rereading an event list opened and read earlier, and a PLRIO descriptor was created, any existing PLRIO descriptor would not be closed first. Added a plr_close call to deal with this case. (12/29) sys/qpoe/zzdebug.x Added a new debug task TESTPOE, used to make simple artificial or test qpoe files for testing purposes. This was used to check out a bug report that events with x=y=1 would pass a filter containing a mask which excluded this corner of the image, however I was unable to duplicate the problem. (12/30) sys/qpoe/qpioparse.x This routine was missing a call to qp_closetext(), causing it to leave an open file descriptor behind. This would cause a task which did many qpio_open() calls to eventually run out of file descriptors. [FDEBUG is very useful to diagnose problems like this). (12/30) sys/qpoe/qpioopen.x sys/qpoe/qpioclose.x While working on other things I noticed that qpio_open() was not setting the IO_EXCLOSE flag when calling qpex_open to open an expression evaluator. This did not matter much as qpio_close was not checking the flag to see if it needed to close the QPEX, but in the rare circumstance that a new QPEX was set with qpio_seti() an open descriptor would have been left behind. Also a QPEX passed in with qpio_seti() woudl be closed by qpio_close() when it shouldn't. Modified qpio_open() to set the flag and qpio_close to check it. (12/30) lib/qpset.h lib/qpioset.h sys/qpoe/qpoe.h sys/qpoe/qpio.h sys/qpoe/qpseti.x sys/qpoe/qpstati.x sys/qpoe/qpioseti.x sys/qpoe/qpiostati.x sys/qpoe/qpmacro.x sys/qpoe/qpioopen.x Since the default filter (and probably mask eventually) are now much more dangerous or noticeable than previously, I added switches in all the usual places to disable the use of these defaults. Specifically, in <qpset.h> we have QPOE_NODEFFILT QPOE_NODEFMASK (default off, i.e., use default filter or mask. In <qpioset.h> we have the same thing, just at the level of a specific QPIO descriptor: QPIO_NODEFFILT QPIO_NODEFMASK And for global control by the user we have the new global set options set nodeffilt set nodefmask which do what they say (omit or comment out these definitions to enable use of the default filter and mask). (12/31) sys/qpoe/qpioparse.x As an alternative to the "attr := expr" syntax, which can only override any earlier filter terms for the referenced attribute (such as terms of the default filter) I added some new syntax which can disable the entire default filter and mask for a particular filter expression. This is done by adding a "!" after the leading "[", and before the new filter, e.g.: display "foo[!time=@times.lst,pha=(3,8:11)]" would temporarily disable both the default filter and mask. This does not affect the use of ! within expressions since an expression cannot be the first term of a filter. (12/31) sys/qpoe/qpioopen.x A QPOE file is supposed to be able to contain more than one event list, so the default filter/mask facility was modified to permit a different default filter or mask to be specified for each event list. For example, to define a default filter for event list "foo", one would insert the parameter "deffilt.foo" into the datafile. When looking for the default filter or mask, qpio_open() will look first for the "def[filt|mask].<evl>" parameter, then "def[filt|mask]". (1/1/91) sys/qpoe/qpiolmask.x sys/qpoe/qpioopen.x sys/qpoe/qpiosetfil.x The default mask mechanism was modified to provide the same semantics as the default filter. If a default mask is defined and nodefmask is not set, the default mask is used as a spatial filter for event i/o. If a default mask is defined, nodefmask is not set, and a user mask is also specified, the user mask is edited using the default mask as a stencil (the new mask is the user mask, with only those pixels set which were also set in the default mask). Setting nodefmask, QPOE_NODEFMASK, QPIO_NODEFMASK, or using ! or mask:= in a filter expression disables the default mask. If the mask is set with an explicit qpio_seti() call the default mask is ignored. (1/1) sys/plio/plsten.x This routine was evidently not working at all, due to an internal interface change that was never propagated to this routine. The call to pl_linestencil was missing the maxpixval argument for both the source and destination line lists. (1/1) sys/qpoe/qpexcode.gx The QPEX parser syntax for bitmask expressions was generalized somewhat to permit expression negation and parens, e.g., "%1", "!%1", "!(%1)", "!(!%1)", etc. are now handled properly. Range lists are still not supported for bitmask expressions, as it is not clear that such a feature would be useful (one can just enter a different bitmask instead). (1/1) sys/qpoe/README Updated this file to reflect all recent changes to the QPOE interfaces. (1/2) pkg/dataio/doc/rcardimage.hlp pkg/dataio/cardimage/t_rcardimage.x Modified the rcardimage help page to include an example of how to reformat an odd-blocked cardimage tape with reblock. Modified the rcardimage task to print a clearer error message when it encounters an odd-blocked rcardimage tape. (1/3 LED) pkg/system/help/help.par pkg/system/help/t_help.x pkg/system/help/tlist.x pkg/system/help/help.h The HELP task was modified to add a new parameter "curpack", default value "AskCL". With this default the help task will issue a clcmdw to ask the CL the name of the current package; this is necessary to preserve the current semantics of HELP (in the case of task redefs, help for the task in the current package is returned). The reason for the new parameter is to allow the current package to be specified explicitly to avoid the clcmdw query, e.g., when calling the task at the host level. (1/4) dev/hosts Added noctua to iraf hosts table. (1/8/91 SRo) pkg/dataio/fits/fits_rimage.x pkg/dataio/fits/fits_wimage.x The scaling routines in rfits and wfits were modified to minimize the precision lost when converting from real pixels to fits integers and vice versa. (1/17/91 LED) dev/hosts Added aquarius to iraf hosts table on tucana and Draco/iraf. (1/17/91 jvb) unix/hlib/extern.pkg [orion, tucana] Added steward package at iraftest level after numerous discussions. (1/22/91 SRo) dev/devices [ursa] Added argo and libra exabytes, since these machines are hosted by ursa now. Just tacked onto the end (mt[fgh]); perhaps we should establish noao conventions for which letters represent 9track, cartridge, exabyte, dat. (1/28/91 SRo) pkg/images/gradient.par pkg/images/laplace.par pkg/images/gauss.par pkg/images/convolve.par pkg/images/doc/gradient.hlp pkg/images/doc/laplace.hlp pkg/images/doc/gauss.hlp pkg/images/doc/convolve.hlp pkg/images/filter/t_gradient.x pkg/images/filter/t_laplace.x pkg/images/filter/t_gauss.x pkg/images/filter/t_convolve.x pkg/images/filter/convolve.x pkg/images/filter/xyconvolve.x pkg/images/filter/radcnv.x Modified the convolution operators (laplace, gauss, and convolve) to make use of symmetries in the convolution kernel to compute the convolution much faster. Laplace now makes use of radial symmetry in the y direction as well as the x direction resulting in a modest decrease in execution time. Gauss now computes 2 indepedent 1D convolutions in x and y if the user specified kernel is separable in x and y instead of the full 2D kernel. (1/29/91 LED) dev/hosts Added Doug Rabin's mozart to irafx host table. (1/30/91 SRo) -------------------------- Tucana system upgraded from SunOS 4.0.3 to 4.1.1. (2/4) Began revisions of Sun/IRAF to support SunOS 4.1. (2/5) ./* The iraf root was relocated to /u3/iraf on tucana, retaining link at /usr/iraf. All of the iraf runtime files (sources and bins) are now consolidated on /u3. (2/6) unix/* Did a bootstrap of the system (mc68020 version) under 4.1.1 without incident. (2/6) local/.login local/.exrc Made a number of changes for 4.1.1. Added OPENWINHOME and MANPATH definitions. Added /usr/lang (default location of new Fortran compiler) to the default PATH. FLOAT_OPTION is no longer defined as it is not used by the new compilers and causes a warning message to be issued. The default IRAFARCH for Sun-3 systems is now f68881 if the f68881 binaries are installed. EXINIT is no longer defined, added a .exrc file instead to allow for vi macros such as the very useful "@". Deleted the susp/eof control in STTY, it seems time to abandon the DEC defaults and go with the UNIX standard ctrl/z and ctrl/d instead. (2/6) unix/boot/spp/xc.c The SunOS version of XC was modified to look for the IRAFARCH environment variable and add a -f68881, -ffpa, etc. switch to the f77 or cc command line. Specifying any switch beginning with -/f on the XC command line overrides the use of IRAFARCH. With this change the architecture used for both compilation and linking is controlled entirely by IRAFARCH, and FLOAT_OPTION is no longer used. So long as IRAFARCH is specified and all modules of a program are compiled with the same setting, mixing of modules or libraries compiled for different architectures is ruled out. (2/6) unix/shlib/edsym.c Looking at the edsym code I note that lseek(fd,o,L_SET) is now considered obsolete and one is supposed to use lseek(fd,o,SEEK_SET) instead, including <unistd.h> to define SEEK_SET. L_SET is still defined for backwards compatibility so I think I will leave things as they are for now. (No changes.) (2/6) unix/shlib/mkshlib.csh 1. Modified to support the new Sun V1.3 Fortran compiler. The iraf shared image is linked explicitly with LD and it is necessary to specify exactly the directories, objects, and libraries to be linked. These are much different for the new compiler than for the old one. For example, for f68881 one links with /usr/lang/SC0.0/crt0.o, /usr/lang/SC0.0/f68881/_crt1.o, the libm.a in SC0.0/f68881 (linking with the SC0.0 version of libm.a causes Mlog10[ds] to be unresolved), and the libF77.a in SC0.0. In principle the directory /usr/lang can be relocated so this is defined as a variable at the top of the file. 2. The following error message was being reported (by edsym) when linking shared with XC under SunOS 4.1: cannot read shared image version number from <file>.e In the code which generates the S.s file (the shared library) I moved ushlib from data space to text space. Evidently under 4.1.1 the system is more clever and can have initialized data at addresses for which corresponding file offsets do not exist in the executable file. This results in a seek to an offset beyond the end of the .e file, leading to the error message shown above. Since ushlib is not modified at runtime we can just as easily have it in text space, which avoids the problem. A simple workaround for this problem is to link -e (no edsym symbol table editing). (2/6) unix/hlib/mkpkg.inc Added -libmil (use inline templates) and -dalign (double align type double data) to the list of default mkpkg compile switches for the new compiler. By default the compiler will use optimization level -O3 and on a Sun-4, will compile -cg87. This latter option is necessary for code compiled for a Sun-4 to run on both older and newer Suns, which have different floating point units. There is another option -cg89 which tells the compile to take advantage of certain features of the newer floating point units (e.g. hardware sqrt) but we can't use that for binaries that must run on all sparc systems. (2/6) unix/hlib/mkpkg.sf.SUN3 unix/hlib/mkpkg.sf.SUN4 Commented out all the bug entries, we should start over with this new compiler. (2/6) --------------------- Started full f68881 sysgen/recompile. (2/6) unix/hlib/mkpkg.sf.SUN3 The files vops$ak/{abnekx.x,abnex.x} and vops$lz/aveqx.x, all of which contain equality comparisons of complex numbers, produced the following message from the V1.3 compiler: warning: unexpected parent of complex expression subtree Compiling the files without optimization avoids the problem. The floating point or complex equalities used in these routines are questionable, but there does not appear to be anything wrong with the code. (2/7) unix/boot/spp/xpp/decl.c The d_runtime() routine returns in a char argument any runtime initialization text needed for a procedure. The routine would do nothing if no initialization was required, which was incorrect, as any old text in the string buffer argument would then be reused. Modified to write an EOS into the output string in this case. This bug was introduced as a result of a recent change in V2.10 iraf. (2/7) pkg/cl/compile.c The CL failed to come up after the sysgen. This was eventually traced to the compile() function. This contains a register flag "status" which was used without being initialized. The routine would operate correctly provided the (random) value of the variable was anything other than ERR. This is highly likely which is why the bug has gone undetected for so long. (2/7) unix/sun/Makefile Changed the suggested values of FLOAT from fswitch/fsingle for Sun-3/other to -f68881/"". (2/7) ----------------------------------- Sysgen of f68881 binaries for core system completed. Sparc bootstrap completed; sparc sysgen begun. Sysgen of f68881 binaries for noao packages begun. (2/7) unix/hlib/mkpkg/host.c In the sparc sysgen I got an error message complaining that a $purge directive had failed. It turns out that the unix/iraf version of h_purge in host.c is a no-op and does not even return an exit status, which is incorrect as the status of the routine is checked by the portable mkpkg code. I modified it to always return an exit status of OK. Checking the rest of the routines in the file, there was one other routine which inconsistently returned status values and I fixed that as well. (2/8) unix/hlib/mkpkg.inc Deleted the "-dalign" switch from all X*FLAGS entries. It turns out that the CL does not begin to double align double data, and cannot be easily modified to do so, so this cannot be used, at least with the CL C code (SPP pretty much double aligns all double data so there is no problem there). This option only affects Sun-4s, i.e., the already compiled f68881 code is not affected by this switch. (2/8) ----------------------------------- ffpa sysgen begun. (2/8) unix/boot/spp/xc.c The ffpa sysgen went fine except that all the links failed with a ffpa_used unresolved external message. This was occurring due to the -Bstatic and the reference was occuring in one of the C libraries. It was necessary to add a -f<float-option> switch to the CC command used for the link to avoid the problem. XC explicitly links all the right Fortran libraries for a given architecture, but it is still necessary to pass the -fxxx flag for the benefit of the C libraries. (2/8) bin.ffpa/S.e bin.f68881/S.e bin.sparc/S.e unix/boot/spp/xc.c Since shared image version support has been around for a year or so and V2.10 no longer uses the older shared images I deleted S.e and S4.e in the recent sysgens, leaving only the current (actually V2.9) shared image S5.e. It turns out however, that XC needs to have a file entry S.e in the directory containing the real shared image in order to permit runtime searching to find the file (runtime searching is necessary to provide architecture support, IRAFULIB support, etc.). XC could search for S<n>.e except that it is difficult to determine the shared image version number. The simple solution was to add a file entry S.e in each of the core system BIN directories. This is not an actual shared image, rather a zero length directory entry used to flag the directory containing the real shared image or images. If this marker file is not present the system will still run, but link time EDSYM symbol editing will be disabled. (2/10) unix/shlib/mkshlib.csh unix/os/zmain.c unix/os/zzstrt.c unix/os/zshlib.c It turned out that zmain/zzstrt were using the ushlib vector to pass the sh_debug flag, used to map the shared image text writable so that debug breakpoints can be set (as in :r -w in adb). This was a bit of a trick and doesn't work any more since I moved ushlib to the text segment, so I made sh_debug an explicit variable in data space. It is defined in the shared library (libshare.a) or in zshlib.o if linking unshared. (2/10) unix/hlib/install I added a rm -f preceeding each ln -s, since ln will not clobber any existing link. This could occur in certain cases when link /usr/include/iraf.h already existed but had the wrong value. (2/10) unix/as.sparc/oscmd.s + unix/hlib/mkpkg.sf.SUN4 After the sparc sysgen with the new compiler all OS escapes would fail with the error "cannot open `A'". This was traced to a host compiler error for file oscmd.x. The null string "" was being passed to a subroutine; in Fortran this is a short array of length 1 initialized to zero, but the compiler was initializing the value to random garbage, in this case A (in tests I ran other values were generated). Other identical cases of "" being passed to subroutines in the same file were compiled correctly. Compiling without optimization did not help, so I had to edit the assembler and place the file on the special file list. (2/10) --------------------------------- SunOS 4.1.1 / Sun Fortran 1.3.1 upgrades completed (except for full testing and further bug fixing). (2/10) iraf/dev/devices [Ursa only] Added mti to the devices file for libra's 9track tape drive. It was interesting that there was no entry in the devices file when libra was served by orion - but then the host names were the same for both orion and libra's mtas. sys/qpoe/qpioparse.x The event list filter syntax supports runtime specification of the event coordinate system to be used with the notation key=(xoff,yoff) where xoff,yoff are event field specifiers, e.g., (s0,s2). Fixed two problems with the code in this routine which parses the KEY keyword: 1) whitespace etc. was not being skipped properly, causing the key= expression to be rejected, and 2) the offset values were being used directly, which is incorrect, since at the user level event struct offsets are specified in bytes, whereas in the QPIO descriptor short integer offsets are used for efficiency reasons. With these problems fixed the key=(x,y) feature checks out, i.e., QPIO itself handles the key properly and it was only the parsing routine which had problems. (2/10) dev/devices [tucana] deleted mt device aliases no longer used in OS 4.1.1 (2/12 ShJ) sys/qpoe/qprenamef.x This routine renames a header parameter by creating a new one and setting the deleted bit in the old one. There was a subtle bug which could cause the old parameter to fail to be deleted. The routine was indeed setting the delete bit in the symstruct of the old parameter, but it was doing so *after* adding the new parameter to the SYMTAB symbol table. This was not correct because the symstruct of the first parameter was being referenced by an absolute pointer the value of which was computed before the new parameter was added. In SYMTAB adding a new parameter can cause the symbol table to be reallocated, invalidated any such pointer. (2/13) sys/qpoe/qpgnfn.x 1. The pattern string input by the user was being used almost directly, after only * -> ?* mapping. Any match was accepted. This is incorrect because we want to accept matches which only match the *entire* field name. It is necessary to constrain the match to begin at the beginning of the string being checked, and verify that the entire string is matched. 2. Sorting was not working correctly. The package was using zero indexed string buffer offsets internally, and calling STRSRT with this index array. This is incorrect because STRSRT expects a one indexed index array. The result was that the list would be sorted ignoring the first character of each string. (2/13) sys/qpoe/zzdebug.x Added a "sort" parameter to the HLIST task. (2/13) sys/imio/db/imgnfn.x sys/imfort/db/imgnfn.x pkg/images/doc/hedit.hlp Since the QPOE gnfn code was derived from IMIO I figured the IMIO code might have the same bug and indeed it did (the pattern matching bug, not the sort bug). Fixing this should fix the problem of HSELECT matching field names using a prefix-match rather than full match. The IMIO version was mapping * to ?* and was constraining the match to the beginning of the name, but was not checking for a full length match. This was not completely trivial as the name being matched is embedded in a FITS card, hence space or "=" terminates the name, rather than EOS. (2/13) sys/ki/ki.h sys/ki/kighost.x Added support for an optional environment variable "irafhostnametable". If defined, this specifies the host pathname of the hosts file to be used for iraf networking. The default is dev$hosts. (2/13) [Changed variable name to "irafhnt". The original name was too long, this could conceivably cause problems on some systems. (5/13)] unix/hlib/mkpkg.sf.SUN4 Evidently with the latest OS, the sparc register set is no longer saved with the version of SETJMP found on a Sun-4. This would cause a process executed on a Sun-4 to die in the iraf main during error recovery, upon return from the ZSVJMP call. Compiling without optimization so that the compiler does not cache values in registers seems to avoid the problem. I added etc$main.x to the special file list to be compiled without optimization, although this is probably going to be sufficiently common problem that we might want to consider some more machine independent way of always compiling without optimization routines that use ZSVJMP. (2/14) pkg/images/doc/hedit.hlp pkg/images/doc/hselect.hlp pkg/images/doc/imheader.hlp pkg/images/doc/imgets.hlp Added a reference to the imgets and imheader tasks in the SEE ALSO sections of the HEDIT and HSELECT tasks. Added a reference to the HSELECT and HEDIT tasks in the SEE ALSO sections of the IMHEADER and IMGETS tasks. (2/22/91 LED) pkg/images/imfit/imsurfit.x Fixed a bug in the deviant pixel rejection code in the IMSURFIT task. If the parameter upper > 0 and lower = 0.0 or vice versa the rejection limits were not being computed correctly. In the former case all point with negative residuals were rejected instead of none and in the latter case all points with positive residuals were rejected instead of none. (2/25/91 LED) sys/fio/getlline.x sys/fio/glongline.x Added some comments to the file headers noting that the size of the output buffer must be at least SZ_LINE characters larger than the length of the longest line to be read. (3/01) sys/mwcs/iwewcs.x The value of the (obsolete) FITS keyword CROTA2, which is input in decimal degrees, was being used without first converting to radians. There is no problem when the CD matrix notation is used instead. (3/12) pkg/images/tv/display/sigl2.x The routine si_blkavgs, which is used to block average an image (when scaling a large image to fit into a small display window) would accumulate the sum of several short integer image lines in a short integer buffer. This could lead to integer overflow in the case of images with large pixel values. The routine was modified to accumulate into a buffer of type long. (Note that the problem affected only block averaging in Y, X was being handled correctly by the vector operator ABAV.). (3/20) dev/hosts Updated grus from 68881 to sparc. (3/21/91 SRo) dev/hosts Added herbie, Stuart Jeffries' new workstation to table. (4/2/91 SRo) sys/fio/fstati.x sys/fio/fmkpbbuf.x 1. A fstati on F_UNREAD returns the number of unread characters in the file buffer. This was ignoring any pushback; the fstati routine was modified to count pushed back data as well as any data remaining to be read in the current buffer area. Zero will be returned only if the file buffer is empty and there is no pushed back data. 2. fmkppbuf (make pushback buffer) will now automatically create the normal file i/o buffer if any pushback occurs. Probably this is not necessary but we may as well make sure that pushback before any file i/o occurs is not different than after i/o has occurred and a buffer has been created. (4/2) sys/imio/iki/oif/mkpkg sys/imio/iki/oif/oifgpfn.x Added an "include <knet.h>" to oifgpfn.x. This is needed for the zfsubd call in the routine. (4/3) sys/ki/kfsubd.x Was not returning the length of the output string correctly in the case of a file on the local node, but with the node name prefix included. (4/3) dev$hosts Added khaki, lapis, taupe, scarlet, and elsol to dev$hosts on tucana, orion, gemini, and ursa. (4/5 jb) pkg/images/geometry/geofit.x pkg/images/geometry/geogmap.x pkg/images/doc/geomap.hlp Cross-term fitting will now work in the case where xxorder=2 and xyorder=2 (x fit) and in the case where yxorder=2 and yyorder=2 (y fit). (4/9/91) dev$hosts Added aliases to dev$hosts on tucana, orion, gemini, and ursa for machines on mountain (machine.kpno.noao.edu). (4/10 jb) hlib$extern.pkg Swapped RV0 for RV since this will be the new package. No tucana users are working w/ RV at present anyway. (4/16 MJF) pkg/images/geometry/t_blkavg.x pkg/images/geometry/blkavg.gx pkg/images/geometry/blkavg.x The blkavg task was partially modified to support complex image data. The full modifications cannot be made because of an error in abavx.x and the missing routine absux.x. (4/18/91 LED) pkg/images/imarith/t_imcombine.x Changed the order in which images are unmapped to unmap the output images last. Closing the input images frees file descriptors which are needed for the temporary file used when updating STF images. Previously IMCOMBINE would fail for STF images which used the full number of file descriptors, had a sigma output image, and a logfile. (4/22/91, Valdes) math/curfit/cv_b1eval.gx math/curfit/cv_beval.gx math/curfit/cv_feval.gx math/curfit/cvaccum.gx math/curfit/cvacpts.gx math/curfit/cvchomat.gx math/curfit/cvfree.gx math/curfit/cvinit.gx Did some cleaning up in the .gx files to make the code easier to read. (4/23/91, LED) sys/ki/ki.h Increased the maximum number of nodes from 64 to 128. This is only a stopgap measure; eventually the code should be rewritten to eliminate the fixed size static host name table. (4/29) dev/devices.hlp dev/graphcap dev/termcap Added "lw6" and removed "imagen" from these files on tucana, gemini, ursa, orion and irafx@draco. (4/30 ShJ) pkg/images/doc/imarith.hlp Fixed some formating problems in the IMARITH help page. (5/2/91 LED) math/curfit/cvpower.gx Changed the amovk$t (INDEFR,,,) call to amovk$t (INDEF,,,) to avoid the double precision version of the routine being called with INDEFR. This problem was caught with f2c on the Mac. (5/6/91 LED). math/gsurfit/gs_f1deval.gx Changed the amulk$t (,,,2.,,,) call to amulk$t (,,,2$f,,,) to remove a type dependency mismatch in the routine. This problem was caught with f2c on the Mac. (5/6/91 LED). math/curfit/cverrors.gx math/curfit/cvpower.gx math/curfit/cvrefit.gx math/curfit/cvrestore.gx Finished cleaning up the .gx files in the curfit directory. (5/6/91 LED) unix/hlib/login.cl The line if (access ("home$loginuser.cl") cl < "home$loginuser.cl" causes the following statement to be ignored if the IF is true. This is a CL bug, but for now the workaround is to add a null statement ; to the line following the IF. (5/6) unix/sun/imtoolrc Added a new config imt31|imtret for the Reticon CCD (1240x400_ at the request of CTIO. (5/8) lib/math/curfit.h lib/math/gsurfit.h lib/math/iminterp.h lib/math/interp.h lib/math/surfit.h Added dictionary string definitions for the interpolator types and weights. Use of these strings insures that strdic/clgwrd will return the correct type code. Currently one has to assume the code definitions will not change or put a lookup table with a data statement containing the macro definitions. The code would also have to be modified to add new types. The dates were restored to their original values to avoid recompilation. (5/9, Valdes) [I updated the dates on the above files and performed sysgen updates over the weekend. It is dangerous to modify files without modifing the file date, as this can break various automatic system maintenance procedures. (5/11DCT)] unix/hlib/login.cl The noao and proto packages are now loaded by default in the standard login.cl. This indirectly includes images, tv, and plot. (5/11) pkg/images/imarith/t_imarith.x There was a missing statement to set an error flag if the operand image dimensions do not agree. (5/14/91, Valdes/Schaller) pkg/images/minmax.par pkg/images/imutil/t_minmax.x pkg/images/imutil/minmax.x pkg/images/doc/minmax.hlp Modified the minmax task to compute the minimum and maximum pixel values with the correct precision if the input images are of type double precision or complex. Note that does not get around the fact that the minimum and maximum pixel values are stored in the image header as type real. (5/16/91 Davis) pkg/images/listpixels.par pkg/images/iminfo/listpixels.x pkg/images/doc/listpixels.hlp Modified the listpixels task to print the image pixel coordinates in logical, physical or world coordinates. The default is logical as before. (5/17/91 Davis) unix/boot/spp/xc.c unix/boot/mkpkg/main.c unix/boot/mkpkg/mkpkg.h These tasks have supported multiple -p pkg arguments for some time, but would only pass one such argument on to subprocesses. XC was modified to pass multiple -p pkg arguments on to XPP and MKPKG was modified to load the mkpkg.inc file for multiple enviroments (formerly it would load multiple environments, but would only read one mkpkg.inc in addition to the global core system one). The PKGENV environment variable was generalized; this can be now be a whitespace delimited list of packages, not just a single package name. It was not necessary to modify MKPKG to pass -p pkg stuff on to XC, since this is done explicitly in the package mkpkg.inc files (by redefining XFLAGS and LFLAGS). (5/21) sys/vops/asqr.gx Changed to test for <0 rather than <=0, since taking the square root of zero is a legal operation. (6/3) pkg/dataio/fits/fits_read.x pkg/dataio/fits/fits_write.x Modified the fits reader and writer to deal correctly with image sections in the IRAFNAME header parameter. (11/6 LED) pkg/images/iminfo/imhistogram.x The imhistogram task has been modified to print out the value at the middle of the histogram bin instead of the value of the left most edge if the output type is list. (11/6 LED) pkg/dataio/doc/wfits.hlp pkg/dataio/fits/wfits.h pkg/dataio/fits/t_wfits.x pkg/dataio/fits/fits_write.x pkg/dataio/fits/fits_wheader.x The wfits task has been modified to write IEEE format FITS files, fits bitpix = -32 and -64, instead of scaled integers if the input image pixel type is real or double respectively and if the wfits parameter bitpix is left at the default. If the user overrides the default and elects to scale the data, a warning message with an estimate of the maximum precision loss is provided. (11/6 LED) dev/termcap Fixed typo so that "stty wyse" works, not just "stty wyse75". (6/12/91 SRo) dev/devices [gemini only] Updated the devices file on gemini for Tom Duvall's two Exabytes on his workstation. They are called rst0 and rst1 so this causes duplicate entries in the devices file for different mt[devices]. (6/13/91 jb) sys/etc/mkpkg sys/etc/qsort.x sys/etc/xqsort.x + Added a new routine XQSORT, a variant on the old QSORT routine. This is identical to qsort except for an extra argument which is private to the compare routine and merely passed on to the compare routine by xqsort. The intent of this is to avoid the need for initialization routines and commons to pass context information on to the compare routine. The datatype of the "private data" argument is int but a pointer can be passed as well, as in C where an integer cast is used to pass pointer data in an integer. Since a pointer can be passed, if necessary any arbitrarily complex descriptor can be passed on to the compare routine. (6/15) !NOTE -- the name of this procedure had to be changed to "gqsort". !See note below. (6/27) lib/clio.h lib/clset.h sys/clio/README sys/clio/mkpkg sys/clio/clcache.x sys/clio/clstati.x sys/clio/clepset.x + sys/clio/clgpseta.x + sys/clio/clppseta.x + sys/clio/clgpset.x sys/clio/clppset.x 1. Added a full CLIO interface definition to the README file. 2. The pset routines cl[gp]pset, used to get/put the values of string valued parameters, where named to cl[gp]pseta as the old names were too misleading (what does it mean to get/put a pset). The old routines are retained for compatibility but are now considered obsolete. 3. The CLGFIL routines are also now considered obsolete. clgstr and fntgfn etc. should be used instead. It doesn't make any sense to have a system routine that arbitrarily combines two such different facilities as get-string and the file name template package (if this is justified then any number of other equally logical combinations are possible too). 4. Added a new routine CLEPSET to the pset package. This is called to "edit" a pset. So far as the application is concerned all this means is that the pset values can be changed by the operation. In the specific case of the current combination of CLIO and the CL, EPARAM is called to edit the pset and the edited values are updated in the parameter cache in the local process. This routine is still considered experimental. (6/22) pkg/cl/task.h pkg/cl/exec.c pkg/cl/opcodes.c Minor changes to the CL were required to support the CLEPSET routine. clepset uses dparam to efficiently obtain the edited pset and update the local parameter cache. A way was needed to redirect the output of a task like dparam back to CLIO in a subprocess. A hidden special file ("IPC$IPCIO-OUT" currently, but this could change at any time) was defined such that if a task is run with the output redirected as in "dparam > IPC$IPCIO-OUT" the stdout of the task is sent to t_out, the CLIN of the subprocess which issued the command. When the task terminates the message "# IPC$IPCIO-FINISHED\n" is sent to mark the end of the output from the task. These changes are considered internal to CLIO. The method used to implement this feature is a minimum-modification approach which only solves a part of a more general problem, hence this facility should not be used outside of CLIO. (6/22) sys/clio/README sys/clio/clcache.x sys/clio/clio.com sys/clio/clepset.x sys/etc/main.x 1. Added a new routine clc_compress() to the CLIO parameter cache code, with a call to this routine in clepset(). The caching mechanism handles parameter updates by simply redefining the parameter and its value in the symbol table; if there are many parameter updates significant wasted space can result. clc_compress rebuilds the cache symbol table, saving only the most recent entry for each parameter. 2. Modified clc_init() to permit it to be called repeatedly to reinitialize the parameter cache. Modified main.x to use clc_init instead of clc_mark/clc_free to reinitialize the cache before running a task. This was done to eliminate the external marker, which would be invalidated after rebuilding the cache symbol table in an operation such as clc_compress. (6/23) sys/gio/imdkern/idk.x The arguments "frame" and "color" to the idk_open procedure were being modified by the procedure, causing the external values to be preserved across open/close workstation calls. This was causing the automatic frame number detection logic to fail when displaying to multiple frames without restarting the kernel. (6/23) sys/clio/README sys/clio/mkpkg sys/clio/clcache.x sys/clio/cllpset.x + Added a new routine clc_list(fd,pset,format) to the parameter cache package, and a corresponding routine cllpset(pp,format) to the pset package. These are used to list the contents of a pset, or of the full parameter cache, to an output file using a caller specified format. (6/23) sys/fio/fseti.x Added a call to fcanpb() in the F_CANCEL code to cancel any pushed back input. (6/24) dev/hosts Added radix (Richard Green) to host table. (6/27/91 SRo) sys/etc/mkpkg sys/etc/qsort.x sys/etc/xqsort.x - sys/etc/gqsort.x + It was necessary to change the name of the recently added procedure "xqsort" to "gqsort" to avoid a library name conflict. The old qsort procedure is defined in hlib$iraf.h as "xqsort". The best thing to do would have been to change this definition to something more obscure, but this would have required recompiling all existing applications that use qsort, and worse, since there would be a new procedure xqsort with a different calling sequence, existing applications using the new shared image would get the new xqsort and would have died with a segvio when the program was executed. It is easier to pick a new name then force recompilation of the existing applications. (6/27) dev/termcap dev/graphcap Added new entry for pericomdg submitted by Skip Schaller. Modified existing termcap entry for vi501 as suggested by Alan Koski. (7/5 ShJ) dev$hosts Added aliases to dev$hosts on tucana, orion, gemini, ursa, and draco for downtown node "morrison". (CB, 7/5/91) ursa!hlib$extern.pkg Set ccdacq as a top level package to point to /u2/rooke/ice/ccdaqcq. (7/5/91 SRo) sys/pmio/miogl.x The activation code in this routine was not initializing the "ve" vector. The error was harmless in the typical case where the i/o range is the full image, but could lead to an error when mio_setrange was used to specify a subregion, becasuse the "ve" vector was only used in the latter case. (7/6) sys/pmio/zzdebug.x Added a "region" parameter to the MIO zzdebug task, to allow testing of mio_setrange. (7/6) sys/imio/db/imgnfn.x sys/imio/db/idbkwlu.x sys/imio/db/imgftype.x sys/imio/db/idbpstr.x sys/imio/db/idbgstr.x 1. The image keyword list (gnfn) stuff, which was modified earlier to require full keyword matches for header keywords, would still permit partial matches for the standard builtin keywords (there was a second call to patmatch, used to check the stadard keywords, which was missed earlier). 2. Tightened up the keyword matching performed on the naxisN keywords. Formerly there would have been a conflict if a user keyword happened to have a name such as "naxisNfoo". 3. In imgftype, there was some code in the procedure to check for "i_" and naxisN which was apparently redundant (idb_kwlookup already does this) so I deleted the code. (7/8) pkg/system/help/helpdb.x pkg/system/help/helpdir.x 1. Added a new routine hd_debug to helpdir.x. This dumps the descriptor of a compiled help directory to a file and is used for debugging purposes (it is not used in the runtime system). 2. The routine hdb_make_rhd, used to make the root help directory (directory of packages), contained a line HD_NMODULES(hd) = HDB_NENTRIES(db) which was incorrect; this could add extra, unitialized modules to the help directory just assembled, possibly leading to a segementation violation when later the unitialized entries were referenced. This was causing segmentation violations when many external packages were loaded (the bug would only come into effect with root help directories, and each external package has one). The bug has always been there, it is just more likely to cause a problem when there are many packages. (7/10) sys/qpoe/qpexmodfil.x A filter expresion such as "foo = expr" is supposed to be the same as "foo += expr", adding to any existing filter term, instead of replacing the existing filter as with "foo := expr". This code had it the other way around, i.e., = was the same as := (replace). (7/15) unix/hlib/login.cl Modified the template login.cl as follows: 1. Added code to check the environment variable TERM, if it exists, for the special cases "sun" and "xterm". This won't work in many cases but should make it easier for people to customize things if they want, without requiring a loginuser.cl. 2. If the file ".hushiraf" is seen during login the message of the day is not printed and cl.menus is set to no. This makes it possible to get a simple cl prompt without all the other verbiage being printed, which experienced users don't necessarily want to see during every login. 3. Deleted some old stuff that has been commented out for quite a while without causing problems. (7/15) pkg/system/doc/mkdir.hlp Fixed a typo. (7/18) dev/hosts Added enzo to the hosts table (Frank Hill's new machine). Did this on tucana and gemini. (7/19 jb) pkg/images/imarith/imc* - pkg/images/imarith/ic* + pkg/images/imarith/t_imcombine.x pkg/images/imarith/mkpkg pkg/images/imarith/generic/mkpkg pkg/images/imcombine.par pkg/images/doc/imcombine.hlp Replaced old version of IMCOMBINE with new version supporting masks, offsets, and new algorithms. (7/19 fv) lib/math/iminterp.h math/iminterp/arbpix.x math/iminterp/arider.x math/iminterp/arieval.x math/iminterp/asider.x math/iminterp/asieval.x math/iminterp/asifit.x math/iminterp/asiffree.x math/iminterp/asigrl.x math/iminterp/asiinit.x math/iminterp/asirestore.x math/iminterp/asisave.x math/iminterp/asivector.x math/iminterp/ii_1dinteg.x math/iminterp/ii_eval.x math/iminterp/ii_pc1deval.x math/iminterp/im1interpdef.h math/iminterp/doc/arbpix.hlp math/iminterp/doc/arider.hlp math/iminterp/doc/arieval.hlp math/iminterp/doc/asider.hlp math/iminterp/doc/asieval.hlp math/iminterp/doc/asifit.hlp math/iminterp/doc/asigrl.hlp math/iminterp/doc/asiinit.hlp math/iminterp/doc/asivector.hlp The 1D image interpolation routines were replaced with new versions modified by Frank Valdes to support sinc interpolation. (7/26/91 Davis) sys/qpoe/qprlmerge.gx + sys/qpoe/qpexattrl.gx sys/qpoe/qpexgetat.x sys/qpoe/README sys/qpoe/mkpkg sys/qpoe/gen/mkpkg sys/qpoe/zzdebug.x The qpex_attrl routine would fail for attribute expressions containing multiple eterms (filter subexpressions). Instead of AND-ing the successive filter terms, it was combining them (OR-ing them) to produce a single expression, and parsing the result to return the output range list. 1. Modified qpex_getattribute to return expressions containing multiple eterms with a semicolon rather than a comma delimiting each eterm, so that the eterms can be distinguished. 2. Added a new routine qp_rlmerge, used to merge (AND) two range lists of any datatype. 3. Modified qpex_attrl to parse each eterm separately and merge the resultant range list into the output range list. 4. Added a new debug task mergei and used this to test the new merge range list routine. (7/27) sys/imio/iki/stf/stfrgpb.x Added a check for a group index out of range. (7/28) sys/pmio/miopl.gx sys/pmio/miogl.gx sys/pmio/miostati.x sys/pmio/mioseti.x sys/pmio/miosrange.x sys/pmio/mio.h MIO_SETRANGE still wasn't working correctly so I had a more careful look at the mio_[gp]l routines. 1. The fix made earlier to initialize the "ve" vector was incorrect, as any data that wants to be saved between calls has to be saved in the i/o descriptor and "ve" is a local variable. Moved the "ve" initialization to immediately before the call to imggsc, where the variable is used. 2. Made extensive changes to the way the "V" vector is handled. This is passed back by the routines in each call to give the coordinates of the first pixel of the referenced line segment. Modified the routine to pass back a vector matching the image dimension rather than of length IM_MAXDIM, to lessen the chance of overrunning the client's buffer. Fixed a bug that was preventing the routine from returning correct vector coordinates when doing i/o on a subregion (mio_setrange) of the image. Fixed a bug that would cause the data pointer to be offset when accessing subregions. 3. By default the coordinates of the V vector returned by the mio_[gp]l routines will be relative to any subregion specified with a prior call to mio_setrange. This is convenient when using mio_setrange to randomly access subregions of the image. If this is not what is desired it is now possible to follow the mio_setrange call with a call to "mio_seti(mio,P_REGCOORDS,NO)" to cause the V vector to be returned in image rather than region relative coordinates. This is more convenient for applications that use mio_setrange only to optimize i/o and want this to be transparent to the rest of the code. (7/28) pkg/images/geometry/t_imshift.x The shifts file pointer was not being correctly initialized to NULL in the case where no shifts file was declared. When the task was invoked repeatedly from a script, this could result in an array being referenced, for which space not been previously allocated. (LED 7/29/91) unix/hlib/extern.pkg URSA ONLY Changed ccdacq from /u2/rooke/ice/ccdacq/ to /ursa/iraf/extern/ice/ccdacq. We now have "production" and development versions on ursa. (7/31/91 SRo) dev/hosts Added mira, Mike Merrill's machine - this had been added to gemini but not to tucana. (8/3/91 jb) mkpkg noao/mkpkg Added a new entry point "arch" as an alias for "showfloat". The command "mkpkg arch" will print the current architecture. (8/06) pkg/xtools/inlfit/ + pkg/xtools/doc/inlfit.hlp + pkg/xtools/mkpkg The interactive non-linear least squares fitting package inlfit developed by Pedro Gigoux and used by the photcal package has been added to xtools. (8/7/91 LED) dev/hosts [tucana, gemini, ursa] Changed lapis to /usr/iraf/iraf. Other mountain systems should be changed as Jim Davis gets around to them. (8/8/91 SRo) sys/libc/qsort.c Added the copyright notice from the BSD source. Berkeley finally made this source publically available without a unix source license, provided the copyright notice is retained. (8/11) sys/imio/iki/stf/stfaddpar.x Added a case for TY_BOOL (LOGICAL*4), and changed the abbreviated type names "INT*4" etc. to their full Fortran equivalents. (Bug fix contributed by B.Simon). (8/11) sys/mwcs/mwgsys.x + sys/mwcs/mkpkg Added source for the routine mw_gsystem. This was in the interface specification but was missing from the interface. (8/11) unix/sun/imtoolrc unix/sun/imtool.c Added several new entries to the imtoolrc file. Increased the maximum number of frame buffer configuration entries from 64 to 128, and added a comment to the file suggesting that users add their custom additions starting with config #64. (8/11) pkg/plot/phistogram.par pkg/plot/phistogram.x pkg/plot/phminmax.x pkg/plot/doc/phistogram.hlp Added a new task phistogram to the plot package. Phistogram takes input from either an image or a list and permits full control over the plotting parameters. The histogram computation is done in and identical manner to the imhistogram task. (8/14/91 LED) pkg/plot/pradprof.par pkg/plot/t_pradprof.x pkg/plot/doc/pradprof.hlp Added a new task pradprof to the plot package. (8/16/91 LED) unix/gdev/sgidev/mkpkg.sh unix/gdev/sgidev/sgi2ueps.c Installed new SGI to EPS (encapsulated postscript) graphics driver. (8/16) dev/graphcap 1. Installed a minor bug fix affecting the vhpl (VMS) entry. 2. Added entries for the EPS driver. Device "eps" is the default portrait mode output, "epsl" provides landscape mode. (8/16) dev/hosts [tucana, gemini, ursa] Changed khaki to /usr/iraf/iraf. (8/16 jb) pkg/cl/exec.c There was a bug in the oneof() function in how the "alldone" flag is set to cause termination of a background process. The flag would be set when attempting to pop (at task termination) a task that has the T_BATCH flag set. The problem is that this test would result in the continued execution of the task *after* execution of the background command completed. In the normal case of a background command submitted interactively on the command line this would be harmless as the task would be "cl", which would see EOF on the stdin and exit. In more complex cases, e.g., an executable task or a script reading from a file, this could result in an attempt to read from a stream that existed in the foreground CL but which was never opened in the background CL. The particular case in which this showed up was in the OBSERVE task in CCDACQ, when submitting the command "display <image> 1 &" to the CL from the subprocess, using clcmd. The display task would run normally, being left behind in the process cache as the first non-system process. The task descriptor for the observe task in the background cl would be set up to read from a connected subprocess, and after execution of the display command would resume waiting for commands from the subprocess. Meanwhile, the subprocess actually in the cache would be display rather than observe, and display would have already terminated, resulting in deadlock with both the CL (observe) and the display task executable waiting for a command. Due to the deadlock the background job would never terminate and after this sequence had repeated several times background job submission would fail in the foreground cl with "no more background job slots". (8/18) pkg/plot/phistogram.par pkg/plot/phistogram.x pkg/plot/phminmax.x pkg/plot/doc/phistogram.hlp The new phistogram task has been restored to the plot package after the disk crash. (8/26/91 LED) pkg/plot/pradprof.par pkg/plot/t_pradprof.x pkg/plot/doc/pradprof.hlp The new pradprof task has been restored to the plot package after the disk crash. (8/26/91 LED) dev/graphcap Added the six new ICE imtool frame buffer entries. (8/27/91 SRo) sys/qpoe/qpexmodfil.x There was a simple bug in the buffer reallocation code which would cause filter expansion to fail for expressions longer than 1024 characters. A "sz_expr = INC_SZEXPRBUF" should have been "sz_expr = sz_expr + INC_SZEXPRBUF". (9/04) unix/shlib/mkshlib.csh [not modified] After a sysgen all sparc executables would fail to run due to an access violation. This was due to a problem with the shared image; the data and text segments were overlapping by 8 bytes, evidently due to a linker bug in SunOS 4.1.1. I worked around the problem by manually relinking the shared image including a dummy object "foo.o" in the link to make the text segment slightly larger. Since the text size of the shared image will change as soon as any code is changed, it doesn't seem worthwhile to devise a more permanent workaround. It looks like the linker fails to align the data segment properly if etext is close to a page boundary. (9/07) unix/hlib/math.h Changed the name of the define "E" to "BASE_E", to decrease the chance of accidental name aliases. (9/17) pkg/images/doc/magnify.hlp Fixed a bug in the magnify task help page. (9/18/91 LED) pkg/images/filters/t_gauss.x The code which computes the gaussian kernel in the gauss task was producing a divide by zero error if ratio=0.0 and bilinear=yes (2.10 version only). (9/18/91 LED) sys/gio/gadraw.x It was possible for integer overflow to occur for case linear in the assignments mx=x,my=y. Added 0:MAXNDC pre-clipping for case linear. (9/20) pkg/system/help/helpdb.x There were still problems with the code in helpdb which reorders the package index help directory to depth-first order. A bug which would cause commands such as "help lists.*" to print each module twice was traced to this code. The help directory reordering code was rewritten (inverting the two main loops) to ensure that the reordered help directory does not have any holes in it, and that the number of modules is correct. (9/21) dev$hosts Changed aliases in dev$hosts on tucana, orion, gemini, ursa, and draco for downtown node "morrison" to "vegemite". (CB, 9/21/91) ----------------------------------------------------------------------- Merge changes (including many minor bug fixes) from A/UX IRAF port. This includes support for GCC and ANSI C, and limited SYSV support. (9/21) unix/hlib/install 1. Added a #!/bin/csh at the top of the script. 2. Added a "set path" so that explicit paths to executables can be avoided. Changed "/etc/chown" to "chown" (this utility is in different places on different systems). 3. I had trouble on A/UX with the $hbin/sgi2* $hlib/sgi2* stuff in MODEFILES. The second did not expand to anything and the string "$hlib/sgi2*" was left in MODEFILES with the * unexpanded, causing problems later when appended to a directory prefix. Since there are not supposed to be any executables in hlib anyhow I deleted the second reference. 4. In the code which checks the MODEFILES, I added a test to see if $file exists as named, before looking for it in each of the directories. Otherwise the $hbin/sgi2* entries, which are already fully resolved pathnames, expand to pathnames referencing nonexistent directories when a BINDIRS prefix is prepended. This could cause the install script to bomb on A/UX. 5. Changed all occurrences of constructs like `ls ...` to `$LS ...` with LS defined as /bin/ls at the top of the file. The problem is that a subshell is spawned to evaluate the command in the back ticks, and if "ls" is defined as an alias in a .cshrc file, as is typically necessary on SYSV systems (to get -C) the alias will be used, causing the output to be different than expected by the script. (9/21) unix/hlib/irafuser.csh Generalized somewhat - added some commented out GCC definitions, and new definitions for CC, F77, HSI_F77LIBS, and RANLIB. These are used in the mkpkg.sh files (used to bootstrap the HSI). (9/22) unix/hlib/mkfloat.csh Added a definition TARXFLGS, with BSD and SYSV versions. (9/22) unix/boot/bootlib/mkpkg.sh unix/boot/generic/mkpkg.sh unix/boot/mkpkg/mkpkg.sh unix/boot/rmbin/mkpkg.sh unix/boot/rmfiles/mkpkg.sh unix/boot/rtar/mkpkg.sh unix/boot/spp/mkpkg.sh unix/boot/spp/mkxc.sh unix/boot/spp/rpp/mkpkg.sh unix/boot/spp/rpp/ratlibc/mkpkg.sh unix/boot/spp/rpp/ratlibf/mkpkg.sh unix/boot/spp/rpp/rppfor/mkpkg.sh unix/boot/spp/xpp/mkpkg.sh unix/boot/wtar/mkpkg.sh unix/boot/xyacc/mkpkg.sh unix/gdev/sgidev/mkpkg.sh unix/os/mkpkg.sh unix/shlib/mkpkg.sh Changed all occurrences of "cc" to "$CC" and all occurrences of "f77" to "$F77". Changed all occurrences of "ranlib" to $RANLIB. (9/22) unix/setarch.sh The A/UX version of "test" does not have the -h flag to test for symbolic links, so the existing script did not work. Still trying to find a portable way to do this, I changed the script to use the construct: if [ "`ls -d as`" = "as" ]; then ... (9/22) unix/os/alloc.c 1. The file header comment section contained the sequence "for the /dev/* entries...". The "/*" would cause a warning from gcc that there might be a comment buried in another comment, which can cause a comment to terminate prematurely. In this case it was harmless and indeed there was no error, but I changed the text to eliminate the warning. 2. Moved the #include <sys/types.h> to before the #include <utmp.h>, as the A/UX version of the latter requires the former, and SunOS doesn't care. (9/22) unix/os/prwait.c In pr_getipc(), deleted unused variables error_code, error_status, waitpid. (9/22) unix/os/zalloc.c 1. In ZDVALL, deleted unused variable x_status. 2. Deleted unused variable i in loggedin(). (9/22) unix/os/zfioks.c unix/hlib/irafuser.csh 1. Deleted the old, commented out code for rcmd(), as variables defined for this were being reported as unused. Added a comment explaining that rcmd and friendly-host authentication cannot be used without making the process suid root. 2. Added #ifdef SYSV support for SYSV termio. Terminal driver ioctls are used in this routine to set raw mode for the password prompts. 3. GCC was complaining that the setjmp/longjmp used in zardks, zawrks could cause certain register variables to become undefined (op and nbytes in zardks, ofd in zawrks), so I changed the storage class from register to auto for these variables. 4. GCC would still warn that longjmp could clobber the values of several local variables in zardks. Evidently this is a feature of ANSI C. The values of automatic variables not declared "volatile" are not guaranteed to be preserved in a longjmp. Added a -DANSI to irafuser.csh and some #ifdef ANSI code to zfioks.c to provide the necessary (but not non-ANSI backwards compatible) definitions. (9/22) unix/os/zfiolp.c I had to change the declaration static PKCHAR xnullstr[1] = XEOS; to static PKCHAR xnullstr[1] = { XEOS }; (PKCHAR=short and XEOS=0) or GCC would complain about an invalid initializer. Must be a feature of the ANSI C syntax. (9/22) unix/os/zfiotx.c unix/hlib/libc/kernel.h 1. Modified to add #ifdef SYSV support for SysV terminal i/o. 2. GCC complained about some functions which were used (default storage class extern) and later declared static; added static declarations for these functions to the file header to eliminate these (harmless) warning messages. 3. Another longjmp warning, this time in zgettx. Variable "op" might not be saved over a longjmp. In this case I was able to avoid the problem merely by moving the op initialization statement to after the setjmp. (9/22) unix/os/zfxdir.c Deleted unused local variable "ch". (9/22) unix/os/zgcmdl.c Deleted unused local variable "ev". (9/22) unix/os/zgtime.c Had to #ifndef SYSV the #include <sys/timeb.h> as this file does not exist on SysV systems. (9/22) unix/os/zmain.c Deleted unused local variables "junk" and "wsetsize". (9/22) unix/os/zwmsec.c Added "static" to explicitly specify the storage class in the first declarations of "napmsx", which is declared static in the source given later in the file. (9/22) unix/os/zxwhen.c 1. GCC did not realize that the call to kernel_panic in zxwhen was an exit, and would warn that the value of variable "vex", used later in the procedure, could be unitialized. Added a statement to init this to null to avoid the warning message. 2. In zxgmes, the char pointer to the returned error message was not being initialized if no error had occurred. Modified to return the null string in this case. (9/22) unix/os/zzstrt.c Added #ifdef SUNOS4 conditionals around certain declarations which are used only the #ifdef SUNOS4 code which follows, to avoid unused variable warnings on non-Sun systems. (9/22) unix/boot/bootlib/envinit.c Deleted the unused variable "osfn" in loadpkgenv. (9/22) unix/boot/bootlib/bootlib.h Deleted the commented out #define NOVOS definition, which causes a /* in comment warning and doesn't need to be in this file anyhow. (9/22) unix/boot/bootlib/osfcopy.c 1. Deleted the unused variable "binary_file". 2. Added a return at the end of the function, to guarantee that a function value was returned. (9/22) unix/boot/bootlib/ostime.c Modified with #ifdef SYSV for SysV. This whole business needs to be redone sometime to provide rigorously correct time primitives for iraf. (9/22) unix/boot/bootlib/vfn2osfn.c Local variable "first_time" defined but never used. (9/22) unix/boot/generic/generic.c 1. In copy_comment(), added an entry time initializer for the local variable "flag". 2. GCC complained about the variable "ch" in evaluate_expr() possibly being used before being initialized. This looked harmless in this case, but I added a global initializer to eliminate the warning message. (9/22) unix/boot/mkpkg/host.c 1. Deleted a couple of unused "exit_status" variables. Changed some "return(exit_status=N)" constructs to separate assignment and return statements in cases where the function does not return a value. 2. Deleted unused variable "ip" in search_mkpkgfile(). 3. Added a #ifdef SYSV to the code which calls RANLIB, since this is not used on SYSV (COFF) systems. (9/22) unix/boot/mkpkg/mkpkg unix/boot/mkpkg/mkpkg.h unix/boot/mkpkg/scanlib.c 1. Added a #include "mkpkg.h" to scanlib.c. This file includes extern.h which references a structure defined in mkpkg.h. 2. Deleted unused local variable "key" in h_scanlibrary(). 3. Replaced the MAX_SYMBOLS definition in scanlib.c by MAX_LIBFILES, as there is also a MAX_SYMBOLS in mkpkg.h which means something quite different. (9/22) unix/boot/mkpkg/sflist.c In sf_scanlist, the GCC static analysis indicated that variable "tail" could possibly be used without being initialized. Added code to initialize tail=head before scanning the list. (9/22) unix/boot/mkpkg/tok.c 1. In do_if(), in the event of a syntax error the local variable "bval" could be used without being initialized. Once again probably harmless but it makes GCC complain. 2. Unused variable "ch" in do_call(). 3. Module do_include() was not returning an exit status in all cases. (9/22) unix/boot/rmfiles.c 1. Unused variable "i" in main(). 2. Another warning from GCC static analysis suggesting that local variable "fp" might be being used before being initialized (definitely not in this case, but I added an initializer to avoid the message). (9/22) unix/boot/wtar/wtar.c Unused variable "op" in putheader(). (9/22) unix/boot/spp/xc.c 1. Unused variable "cmdbuf" in main(). 2. Variable "append" in sys() could be used before being initialized. (9/22) unix/boot/spp/xpp/xppcode.c 1. Unused variable "irafdefs" in do_include(). 2. parse_task_statement() did not return a function value in all cases. 3. accum() did not return a function value in all cases. 4. Unused variable "digit" in charcon(). Function did not return a value in all cases. 5. Variable "value" not initialized in all cases (when an error occurs, but it causes a warning message). (9/22) unix/boot/spp/xpp/decl.c 1. Local variable "sp" was not being initialized in all cases (i.e., when an error occurred). 2. Added a new procedure d_declfunc which is called to output function declarations. Currently this doesn't do anything special, but it provides a single point of modification should it be necessary to do any special processing of function declarations in the future (for example intrinsic functions). (9/22) unix/boot/spp/rpp/ratlibc/getlin.c The local variable "c" was not being initialized in all cases. (9/22) unix/gdev/sgidev/sgidispatch.c Deleted unused local variables "maxch" and "status". (9/22) unix/os/gmttolst.c Added #ifdef SYSV support. SYSV uses a global variable "timezone" (a questionable construct - see below) while BSD uses a time_info structure returned in a function call. (9/23) unix/os/zzstrt.c This problem was indirect and hence difficult to track down. The time-task feature of iraf, e.g., "$imstat dev$pix", when run for the first time in a new process, would return a clock time such as "-416:+0" instead of "0:13" or whatever. Thereafter it would be ok, until the process was restarted. This turned out to be due to the clock time returned by the first call to ZGTIME being wrong. The eventual solution was to add a call to TZSET to zzstrt to initialize the SysV time stuff before any time calculations take place. What I suspect was happening is that in gmt_to_lst I was accessing "timezone", which is a global data variable in SysV, but the value was being changed sometime later in an indirect call to TZSET. Using a global variable for something like this that is evidently not constant is a very questionable feature of SVID (unless this was a bug in A/UX). (9/23) unix/os/mkpkg.sh Changed the "rm alloc.o" to "rm -f alloc.o", as the .o file is not being left behind on this system, using GCC. (9/23) unix/os/zfiopl.c In zclspl, another case of an array aggregate initializer "= val;" having to be changed to "= { val };" when initializing an array of length 1. (9/23) unix/os/zoscmd.c 1. Modified so that if SYSV is defined, "fork" is used instead of the BSD-ism "vfork". 2. On Sun systems <vfork.h> is included (disables the global optimizer on sparc systems due to nonstandard register usage). (9/23) unix/boot/spp/rpp/ratlibr/defs Replaced by the version rpprat/defs (they should be the same, although in this case the differences did not affect the ratlib code). (9/24) unix/boot/spp/rpp/ratlibr/Makefile unix/boot/spp/rpp/rpprat/Makefile These makefiles now use a .r.f rule using /usr/local/bin/ratfor to generate the .f files, rather than using f77 -F, which requires replacing the host version of ratfor. (9/24) unix/boot/spp/rpp/ratlibf/*.f unix/boot/spp/rpp/rppfor/*.f Regenerated all the preprocessor Fortran sources. The new files are lower case. Although upper case source is standard Fortran, all modern compilers I am aware of accept lower case source (SPP outputs lower case after all), and a case sensitive compiler may generate upper case externals for upper case procedure names, causing a case mismatch when linking with the C support library. (9/24) unix/boot/spp/rpp/ratlibc/r4tocstr.c Installed a minor bug fix which allows the routine to accept as input character arrays consisting of either one char per integer, or a char plus 3 blanks per integer. The old F66 convention of assigning one Hollerith character to a binary integer can generate either type of integer value. (9/24) sys/imfort/imemsg.x This file contained four Fortran escapes (error message strings) which ran over the 72 character line limit of Fortran. (9/24) sys/gio/nspp/portlib/gridal.f The equivalence on line 4 was incorrect (or at least ill-advised) due to a dimension error. The code "mfmtx(1),ifmt(1))" should have been "mfmtx(1),ifmt(1,1))". (9/24) sys/gio/nspp/portlib/z8zpbd.f sys/gio/nspp/portlib/z8zpii.f The z8zpbd.f file was using DATA statements to initialize variables in common (works on most systems but is technically illegal). I moved all the remaining DATA statements out of z8zpbd.f into run time initialization statements in z8zpbd.f (9/24) unix/boot/spp/xc.c The routine printargs() was attempting to print one more argument than it should, due to a <= that should have been a < in a FOR loop. (9/24) pkg/system/help/lroff/textout.x Modified to eliminate the ENTRY point. (9/24) sys/fmtio/ctotok.x Local variable numch never used (this is old code so I don't know why no other compiler has found this). (9/24) sys/fmtio/evexpr.y sys/fmtio/evexpr.x The second argument (a debug flag) to yyparse (xev_parse) is a boolean, but xev_parse was being called elsewhere with an integer argument. Changed to a boolean since the Y*cc code contains many if (yydebug) constructs. (9/24) sys/etc/main.x FREDIR is a subroutine but was being called as a function in one place in this file. (9/24) sys/tty/ttyputl.x This file contained a statement call putci (fd, "_") which was incorrect, since the argument "_" is type char but is supposed to be integer. (9/24) sys/gio/gopen.x 1. The pointer array graphcap_file was not being used. 2. Local string variable graphcap never used. (9/24) sys/pmio/pmplls.x The second call to pl_plls was missing the ll_depth argument. (9/24) sys/qpoe/qpppar.x The second call to qp_sizeof was missing an argument. (9/24) sys/imfort/bfio.x There was an extra "status" argument to one of the calls to zsttbf. (9/24) sys/gio/ncarutil/conran.f Local variable LNGTHS not used. (9/24) pkg/plot/crtpict/t_crtpict.x A call to gargwrd was missing the maxch argument. (9/24) pkg/plot/t_graph.x Variable window declared but not used. (9/24) pkg/plot/t_velvect.x Variable nset declared but not used. (9/24) sys/fmio/fmlfundel.x The two calls to fmio_bind and fmio_errck were both lacking the fm argument. (9/24) sys/ki/kireceive.x A call to strcpy was missing an argument. (9/24) sys/imio/imopsf.x The call to pl_ssize had an extra unused argument. (9/24) sys/etc/pagefiles.x ttyctrl, which is an integer function, was being called as a subroutine. (9/24) sys/imio/iki/oif/oifclose.x sys/imio/iki/oif/oifdelete.x The integer function protect() was being called as a subroutine. (9/24) sys/plio/plglr.gx The routine pl_rangerop was being called incorrectly. (9/24) sys/plio/plprop.gx The VOPS routine argt (replace if greater than) was being called incorrectly in three places. (9/24) sys/plio/plascii.x The subroutine pl_glpi() was being called as a function. (9/24) sys/plio/pldebug.x The integer function pl_l2ri() was being called as a subroutine. (9/24) sys/pmio/pmglp.gx The routine pl_pixrop was being called incorrectly. (9/24) sys/qpoe/qpioopen.x A call to syserr was being made where syserrs was intended. (9/24) sys/gio/cursor/grccmd.x External pr_psio() declared but never used. (9/24) sys/gio/stdgraph/stgclws.x External std_onerror() declared but never used. (9/24) sys/libc/qsort.c The static function qst() was being used before being declared, resulting in an extern/static declaration inconsistency. (9/24) sys/ki/irafks.x The "task irafks = onentry" was incorrect since ONENTRY is an integer function. This was harmless since the purpose of the task statement was merely to get an iraf main, but I set up a dummy t_irafks task to avoid the type clash. (9/24) pkg/cl/bkg.c Static function bkg_close() used before being declared static. Added a static function declaration to the file header. (9/24) pkg/cl/debug.c Same as above, function dd_f(). (9/24) pkg/cl/edcap.c Same as above, function map_escapes(). (9/24) pkg/cl/pfiles.c Same as above, function mapname(). (9/24) pkg/cl/cl.x Same problem as in irafks, above. ONENTRY is a function and should not be referenced as a subroutine in the task statement. Added a dummy t_cl procedure to avoid the type clash. (9/24) ------------------- End of revisions merge from A/UX GCC/ANSI-C/F2C work. dev/graphcap dev/devices.hlp Output can now be directed to the default UNIX `lpr' device using any of the aliases "lpr", "lp", or "lw". The actual device is defined by the value of PRINTER if defined in the user's environment, else is the "lp" device in /etc/printcap. (9/23) (lw is no longer an alias for the NOAO/Tucson device lw1) pkg/images/iminfo/t_imstat.x pkg/images/doc/imstat.hlp Corrected a bug in the mode computation in imstatistics. The parabolic interpolation correction for computing the histogram peak was being applied in the wrong direction. Note that for dev$pix the wrong answer is actually closer to the expected answer than the correct answer due to binning effects. (LED 9/24) unix/hlib/iraf.h unix/hlib/libc/xnames.h Added the following name redefinitions. On systems where Fortran and C share the same name space these can cause name collisions. (9/28) define fatal xfatal define fchdir xfchdr define fscan xfscan define getopt xgtopt define getpid xgtpid define getuid xgtuid define rename xfrnam define reset xreset define scan xxscan ------------------------------------------- Started a full bootstrap and recompile for the sparc architecture. (9/28) sys/fmtio/tokdata.inc Deleted the DATA statement for numch, which is no longer used by ctotok.x, the routine which includes this file. (9/29) lib/plset.h Added PL$T_LEN defines for type long, required for the generic expansion of plglr.gx in PLIO. (9/29) unix/boot/mkpkg/host.c Added a return(OK) to h_purge(), which is a no-op on unix systems. (9/29) pkg/images/imarith/mkpkg pkg/images/imarith/imsum.gx pkg/images/imarith/generic/mkpkg pkg/images/imarith/generic/imsum.h - Images failed to link, with all the imsum externals reported as undefined externals. 1. Edited imsum.gx and changed `include "imsum.h"' to `include "../imsum.h"'. 2. Deleted generic/imsum.h and the code in imarith/mkpkg which generates it. There should not be multiple copies of global header files. 3. Rebuilt the generic/mkpkg using mkmlist, to ensure that the library list is correct (all the imsum entries were missing). (9/29) noao/artdata/mkheader.x 1. Fixed a "local variable ua never used" warning, caused by some code being commented out. 2. I was also surprised to see the construct `fd = immap (fname, ...)' in this file. FD means file descriptor whereas immap returns an image descriptor. FNAME means file name but an image name is not a file name. FD is declared pointer in this file but is used later in the same routine to hold a file descriptor, which is an integer. This code is illegally accessing the user area of the image header. (9/29) noao/twodspec/longslit/illumination.x This file failed to compile, with the following errors: local variable "clgeti" never used attempt to use undefined variable "im" attempt to use untyped function "clgetr" 1. Changed the call to clgetr to a call to clgeti, since the parameter being fetched is integer. Added a declaration for im. 2. In the process of doing this I noticed that in the call iferr (axis = imgeti (im, "dispaxis")) { the variable IM was being used before being initialized (or declared). I changed the "im" to "in" but couldn't be certain this was correct since there are two input image pointers (I think; I couldn't be certain they were both input since there are no #[IOU] markers in the comments). (9/29) noao/twodspec/longslit/response.x noao/twodspec/longslit/fluxcalib.x Similar construct. Changed calls to clgetr to clgeti in both routines. (9/29) unix/hlib/extern.pkg All the digiphot packages failed to link, due to the cross link against the V2.9 versions of the TABLES libraries (due to the recent name changes in iraf.h all code has to be recompiled for V2.10). I temporarily created a local copy of TABLES in /u3/extra/tables and compiled this with V2.10. (9/29) bin.sparc/S5.e bin.sparc/S6.e + Installed the V2.9.3 version of S5.e (the V2.9 shared image) from ursa. S6.e is the V2.10 shared image. (9/29) unix/boot/xyacc/mkpkg.sh Added a rm -f *.o to delete the xyacc objects after a bootstrap. (9/29) --------------------------------------------- Begin f68881 bootstrap and full sysgen-recompile. (9/29) sys/ki/koscmd.x The output spool file on the local node was being opened with zopntx, but written to with kputtx with an invalid channel descriptor, causing the output to be lost when attempting to redirect the output. The fix was to change the call to kputtx to a call to zputtx. (9/30) dev/imtoolrc + unix/hlib/install Copied imtoolrc into dev so that the frame buffer entries in graphcap and imtoolrc can be more easily maintained together, and so that the user does not have to modify a source directory (unix/sun) in order to change a runtime configuration file (imtoolrc). Modified the install script to make /usr/local/lib/imtoolrc a link to the file in DEV, instead of a copy of the file. (9/30) noao$rv/ + noao$mkpkg noao$noao.hd noao$noao.cl noao$noao.men noao$lib/strip.noao noao$lib/zzsetenv.def noao$lib/scr/fxcor.key + noao$lib/scr/specmode.key + noao$lib/scr/fftmode.key + Installed the RV0 package as the NOAO.RV package and recompiled for the f68881. A sparc executable was built separately and installed in noao$bin.sparc. The noao helpdb was also recompiled to include the new rv help pages. (9/30 MJF) hlib$extern.pkg Removed the RV0 package definition from the V2.10 iraf. (9/30 MJF) hlib$extern.pkg Removed the testphot package definition from the V2.10 iraf. (9/30 LED) bin.f68881/S5.e Replaced by the V2.9.3 version. (9/30) unix/os/zfioks.c unix/os/zfiotx.c Fixed minor typos in the #ifdef SYSV code. (10/02) unix/boot/mkpkg.pkg.c Deleted declarations for a couple of unused variables. (10/02) unix/os/zawset.c Added SYSV support. (10/02) unix/os/zfiopr.c Added SYSV support (vfork is defined as fork). On Sun systems <vfork.h> is conditionally included. (10/02) unix/os/zgtenv.c Replaced a comment within a comment construct (example from <iraf.h>) by a version which substitutes @ for *, to avoid GCC warning messages about a possible problem with nested comments. (10/02) unix/os/zopdpr.c Added SYSV support for vfork/fork as above, plus nice() is used for SYSV instead of the BSD {get|set}priority. (10/02) unix/boot/spp/rpp/rpprat/gtok.r unix/boot/spp/rpp/rppfor/gtok.f Commented out the declaration for the unused variable "digits". (10/02) math/gsurfit/mkpkg Contained a statement $ifeq (USE_GENERIC, YES) which was incorrect, as a lower case "yes" is required since $ifeq uses a simple string comparison. I noticed this because a bug had been fixed in a .gx file, but was still present in the real/double files, which had not been modified since 1987. (10/02) math/nlfit/nlfitdefr.h math/nlfit/nlfitdefd.h math/nlfit/nlzero.gx Corrected several bugs in the way the aclr$t routines were being called in the nlzero(rd) routine. (10/3/91 LED) pkg/plot/phistogram.x Corrected some type mismatch problem in calls to gset. (10/3/91 LED) sys/gio/ncarutil/pwrity.f Unused variable LEN on line 335. (10/02) sys/gio/ncarutil/pwrzi.f sys/gio/ncarutil/pwrzs.f sys/gio/ncarutil/pwrzt.f Variables HIGH,WIDE,WHITE, and LNGTH not used (same problem in all three files). (10/02) sys/ki/koscmd.x In the call to zopntx to open the local spool file (when redirecting the output), the unpacked version of the filename was being used instead of the packed version required by the kernel routine. (10/05) pkg/plot/crtpict/calchgms.x Changed the declarations for the variables min_val and max_val in the procedure crt_user_hgram from int to short. (10/5/91 LED) dev$hosts Added felis to dev$hosts for Shopbell. On tucana only since irafks.e on felis seems quirky. (10/5/91 MJF) pkg/dataio/fits/fits_rpixels.x 1. The rfits task has been modified to accept a short last record, i.e. a last record that has not been padded out to 2880 bytes, without generating any warning messages. Short last records were only a problem for IRAF 2.9 when the blocking code was rewritten. (10/8/91 LED) unix/boot/generic/generic.c The -k (clobber) option would fail to clobber an existing file if account executing generic did not own the file. (10/09) pkg/images/iminfo/t_imstat.x Corrected a bug in the kurtosis computation, wherein a 4.0 was being subtracted from the sum instead of a 3.0 (10/11/91 LED) unix/boot/spp/xc.c Minor typo in run() code. (10/11) pkg/dataio/fits/fits_cards.x Changed the name of the IRAF-B/P keyword to IRAF-BPX to conform to the new FITS standard. (10/15/91 LED) unix/sun/README unix/sun/gterm.c unix/sun/halley.lut unix/sun/heat.lut unix/sun/imtool.c unix/sun/imtool.icon unix/sun/screendump.c I have been holding off on installing this for a couple of weeks in the hopes of finishing the planned work, but rather than delay longer I have installed this version, to be updated later. The main changes or new features are as follows. 1. Screendump parameters (R_DISPOSE etc.) are now in the setup panel. 2. A number of new builtin lookup table options (e.g. HEAT) have been added. 3. User defined lookup tables are now supported. 4. Updating of the global screen colortable is now a setup panel option. This allows it to be turned off, which makes imtool better behaved under openwindows. Features not yet in are EPS support, more flexibility in the use of FIFOs, and maybe socket support. (10/20) unix/os/zfiomt.c unix/os/zalloc.c unix/os/alloc.c sys/mkpkg sys/mtio/* sys/gty/* sys/libc/(some) sys/ki/(some) pkg/cl/builtin.c dev/tapecap Installed the new magtape i/o subsystem. I will document this more fully later. Usage is much as before. The key file controlling the configuration is dev$tapecap. A description of the tapecap parameters is given in os$zfiomt.c. Testing and configuration of the tapecap file is only rudimentary at this point. I have successfully tested thus far with the DC2000 cartridge tape and floppy disk on lepus, the DAT drive on coma, and the 1/2inch 6250 bpi tape on tucana. There is some confusion (dev$devices out of date) regarding the device entries for the 1/4inch cartridge drive on tucana so I did not complete the tapecap entry for this drive. The driver is new and MTIO has been extensively revised. The new GTY interface provides a general termcap style database facility which is used for tapecap. (10/20) dev/termcap Added a new entry for "xirafhelp". (11/10) dev/hosts Added sonoma to the hosts file on tucana and ursa. (11/13 jb) pkg/plot/t_graph.x plt/plot/doc/graph.hlp 1. Local variables overplot,append in t_graph were declared int but were used everywhere as bool. 2. Missing .le in help page entry for overplot. (11/20) lib/fio.h Added a comment for LEN_RAWCMD. (11/20) lib/fset.h sys/fio/fseti.x sys/fio/fstati.x unix/hlib/libc/fset.h Added a new fset option F_IOMODE. The value field is a bit flag consisting of either IO_NORMAL (normal line by line i/o with echo) or some combination of, currently, IO_RAW and IO_NDELAY. F_RAW is also still defined and if used in a fseti call will set F_IOMODE to IO_RAW with IO_NDELAY disabled. On a fstati query, F_RAW checks if IO_RAW mode is set, and F_IOMODE returns the i/o mode as a bit flag integer word. (11/20) [Note - the fset integer codes were modified. This will require [that all layered software which uses fset/fstat be recompiled.] sys/etc/prpsio.x Testing revealed that while both raw mode and NDELAY (nonblocking i/o) worked from a stand alone process, and raw mode worked from a subprocess, NDELAY would not work from a subprocess. This was due to the prpsio code, which must check for the i/o mode control strings and make a local fseti call if these are seen. The prpsio code would set raw mode but was ignoring NDELAY, hence setting IO_RAW+IO_NDELAY in a subprocess would result in only raw mode being set in the pseudofile i/o control process (the CL). (11/20) sys/tty/ttyread.x Modified to set F_IOMODE rather than F_RAW. Since this routine uses NDELAY it it worth updating to use the new bit flags. Most of the old VOS code still uses F_RAW=(YES|NO), which is fine so long as only raw mode is being set. (11/20) pkg/cl/mkpkg Added <libc/fset.h> to the header file dependency list for history.c. (11/20) sys/tty/mkpkg Entry in library dependency list for ttygsize.x was incorrect; rebuilt list with mkmlist. (11/21) dev/graphcap dev/imtoolrc Added imt13-16, imttall128 (128x1056), imttall256 (256x1056), imtwide128 (1056x128), and imtwide256 (1056x256) for use in spectroscopy at request of KPNO. Also added aliases for the new KPNO 1992 chip names to the six entries between imt32 and imt37. (11/22/91 SRo) unix/sun/imtoolrc Installed the above mentioned imtoolrc in the imtool source directory. (11/22) sys/fio/fstati.x Fixed a bug which could cause fstati(fd,F_UNREAD) to return an incorrect unread character count for pushed back data. (11/27) mwcs.h mwswtype.x Removed the compile time SZ_ATVAL restriction on the length of a WCS attribute value. The size of an attribute value string is now determined dynamically at run time and the buffers sized accordingly. (11/27) mwsaveim.x Deleted the call to mw_ssystem, which would force mw_saveim to save the default world system. mw_saveim will now save the current world system instead; the application should call mw_ssystem first if it wishes to save a particular system. This applies only to the use of mw_saveim with the current FITS-header images. In future image formats mw_saveim will save the entire MWCS and it will not be necessary to specify which WCS to save. (11/27) wfinit.x wfmspec.x + wfsin.x + wfgls.x + wfarc.x + iwewcs.x mkpkg Installed four new MWCS function drivers: sin sin projection arc arc projection gls global sinusoidal projection multispec multispec image format (ONEDSPEC etc.) (11/27) pkg/dataio/mtexamine/mkpkg The mkpkg was missing an entry for fseti.h (among other things). Rebuilt library module list with mkmlist. (11/27) sys/mtio/mtio.h Was getting truncation of tapecap entry string during tape testing on orion. This was traced to a buffer size being set too small in zopnmt.x (SZ_DEVCAP). Increased to 512 chars. (11/27) unix/os/zfiomt.c Fixed a bug in the new V2.10 zfiomt.c which affected appending to a tape after a rewind. (12/01) unix/os/zfiomt.c 1. RE now causes a read error to be ignored not only when positioning to EOT, but on a file read if recno=1 (a read a the beginning of a file is used by high level programs like mtexamine to detect EOT). 2. The tapeused counter was not being updated properly (the size of a filemark was not being counted) when EOF was seen on a read. (12/02) dev/tapecap Installed a new, better organized and more complete version of the tapecap file. This now includes support for the HP 88780 and Exabyte drives under SunOS. (12/02) unix/os/zfiomt.c 1. When passed a tapecap device entry containing multiple entries for the same capability, the driver was allowing later entries to override the first entry, whereas the termcap convention is that the first entry given overrides any later (tc=) entries. 2. Added support for negated entries, as in ":nb@:". (12/02) pkg/dataio/cardimage/mkpkg The mkpkg was missing several file dependencies including fset.h. (LED 12/03) pkg/dataio/fits/mkpkg The mkpkg was missing several some file dependencies. (LED 12/03) pkg/dataio/imtext/mkpkg The mkpkg was missing several some file dependencies. (LED 12/03) vms/gdev/zfiovi.c Installed a bug fix (actually workaround for an apparent VMS problem) reported by STScI. The lock enqueue code can receive the status SS$_VALNOTVALID even though the value block is apparently valid. The workaround is to issue a warning but otherwise ignore the condition. Hopefully this is correct. (12/03) dev/tapecap Replaced with new version with expanded support for QIC cartridge drives. Unfortunately not yet fully tested due to system problems with the QIC-11/24 drive I was using for testing. (12/05) sys/mwcs/wfsin.x The forward transform now checks for a negative value before taking a square root. (12/06) unix/os/zfiomt.c Installed a new version of the new magtape driver which adds support for status output to a TCP/IP socket. I also have a new program XTAPEMON (not currently installed in IRAF) which listens on a socket and accepts connections from the the new driver (or any similar client) displaying tape status messages in a window on any X server while the drive is being accessed. Status output may be directed to either a file or a socket, using the syntax ":so=foo:". If foo is an absolute pathname beginning with / then output is to a file (this field is interpreted by the unix driver so we are talking about unix pathnames). Otherwise, the field is assumed to refer to a socket of the form ":so=[host][,port]", e.g., ":so=lepus:", ":so=lepus,5138", ":so=,2345:", and so on. If no host is specified localhost is assumed. If no port is specified the default port is used. In practice, the minimal specification is ":so:". This will cause the drive to atempt to open a socket connection to the default port on the local host. If no server is registered the connection will fail harmlessly. If xtapemon is running on the local host it will accept the connection. Currently, xtapemon supports multiple concurrent servers (using consecutive port numbers) but the driver does not, unless the port number is given explicitly. Multiple clients are allowed to access the same server, e.g., multiple processes in the same process tree. Note that status output, if enabled, is output in an ascii text stream to either a socket or a file (including things like /dev/ttyX, /dev/tty, /dev/console etc. as well as disk files). Hence the xtapemon utility, while useful for workstations running X, is not required in any way to use the new magtape system or even to view status output. In the simplest case, "devstatus" may be used to print the drive status. (12/15) unix/os/zopdir.c The zopdir routines were modified to read the UNIX directory into a buffer and sort it, before returning filenames to the caller (some VOS routine). UNIX directories are not stored in sort order on disk, and previously, IRAF routines which read directories to produce file lists but which did not sort the list for some reason, could produce what appeared to be randomly ordered lists (for example, in image templates). A practical result of this revision is that dir sort- will produce a listing which is sorted across the columns rather than along the columns. This may be preferable when listing very large directories. (12/15) sys/etc/main.x sys/etc/onentry.x # INTERFACE CHANGE pkg/cl/cl.x sys/ki/irafks.x The calling sequence for ONENTRY was modified to add a third argument "command". This is used to pass any optional arguments given on the host command line when the process is executed at the host level. Since the purpose of the ONENTRY procedure is to provide an alternative to the normal iraf process level command interpreter, the procedure should get full access to the command line. (12/26) dev/irafhosts + unix/os/zfioks.c sys/ki/irafks.x Totally new networking driver. This version supports both RSH and REXEC connection protocols. The default RSH protocol avoids password prompts. In addition, a feature is provided to spawn a daemon process in.irafksd which makes it much faster to fork a new kernel server, once the first RSH connection to a server node has been made. The new kernel server is largely backwards compatible (although due to magtape i/o changes V2.10 networking cannot be used with older systems anyhow). The new driver still uses a .irafhosts file, but it need not contain passwords, and the file is automatically created and read protected. Details to follow. (12/26) Here is some more information on the new networking system (12/31). The new driver support three different connection protocols. The default protocol uses rsh|remsh to spawn a networking daemon which is used thereafter to start iraf kernel server processes on that node (more on the this later). This is the most efficient protocol, and does not require any passwords. A rsh only protocol is also supported which requires a rsh connection every time a connection is made. This is slightly more secure than the rsh/daemon protocol but considerably less efficient. Finally, the old rexec protocol is still supported. This is what is used if a password is given for a node in the .irafhosts file. It is also now possible to use iraf networking even if no rsh or rexec service is available, by manually starting the iraf networking daemon on a server node. The rsh/daemon protocol works as follows. The client calls the zfioks driver to open a connection. zfioks reads the irafhosts file and determines that the rsh/daemon protocol should be used for the named host. zfioks attempts to connect to the daemon process on the remote host. If the connection is made the client passes its port number and an authorization code to the daemon, the daemon forks to create a new irafks kernel server, which then connects to the client via the client supplied port number, and the connection is made. If the client cannot connect to the daemon, the client forks and execs the rsh task which is used to start up the daemon process on the remote host. The client can then connect to the daemon in the usual way. When the daemon is first started with rsh, the client passes a unique long integer authorization code. All subsequent connections to the daemon must supply the same code or the connection will be refused. The authorization code is given in the irafhosts file. Since this networking scheme avoids any suid root processes, the daemon process runs with the uid of the user whose client issued the original rsh request to start the daemon. Each user has their own daemon process on each server node. The daemon is started automatically when the first connection is made. After a certain period of inactivity (default 1 hour) the daemon process will exit. Once a daemon has been started with rsh (this takes several seconds) a network connection can be made very quickly, as all that is required is a connect to a remote socket, a fork of the daemon process, and a connect back to the client supplied socket. The irafks server and the client zfioks driver will then be directly connected via a socket. The daemon process is just the usual irafks.e running as a daemon, which is why it only needs to fork to spawn a new irafks server. Only one daemon process is required per user per server node, but there can be any number of irafks servers. Any number of client hosts can connect to a single server host via a single daemon process, provided the user has set up a .irafhosts with the same authorization code on each client node (if this is not done the connection will still be made, but will require an expensive rsh connect on each call). The new driver still uses the .irafhosts file, although most of the motivation for including passwords in the file is gone. The .irafhosts file is required and will be created automatically by the system if not present. If an old style .irafhosts file is present it will be replaced by the new version of the file. The system automatically read protects the file. The .irafhosts file contains three regions: some header comments, some keyword=value networking parameters, and the user supplied host list. The irafhosts keywords are as follows. port The TCP port number used by the daemon process. Normally set to "default", which tells the driver to assign a port for each user based on HIPORT and the user uid code. If PORT is set to "none" use of the daemon is disabled and rsh will be used for every connect (this is provided in case someone doesn't feel the authorization code scheme is secure enough). auth The user authorization code. Set to "default" in dev$irafhosts, but replaced by a unique authorization code when the user uses networking for the first time and the .irafhosts file is created. hiport Used to dynamically assign unique port numbers (see "port" above). hiport defines the top of the reserved port region used for the irafks daemon. Normally set to "default" (47000). timeout The idle time in seconds after which the daemon will exit. Normally set to "default". The builtin default timeout is 1 hour. The format of a host-list entry is as follows. host-name ":" login-name password The default host-list entry is the following. * : <user> <user> This enables the rsh/daemon protocol for all server nodes. The login-name field may be set to "none" to disable networking for a node, or to the actual user login name to cause the connection to a node to be made with different login name than that of the user on the local host. Setting the password field to an explicit password causes the rexec connect protocol to be used for that node. Setting the password to "?" causes the driver to prompt for the password, after which the rexec protocol is used to make the connection. In actual practice, all of this is automatic and the user never needs to look at or modify the .irafhosts file, unless they want to customize things. Once the .irafhosts file has been created by the system it should be copied to the user's login directory on other nodes in the local network. If this is not done iraf networking will still work, but will be less efficient if iraf clients running on different hosts try to connect to the same server (they will have different authorization codes and the driver will have to fall back on the rsh connect protocol for every connection). The system template irafhosts file is dev$irafhosts. The iraf system manager can set the default network parameters in this file if they don't like the builtin defaults. Note that the hostlogin file is no longer used. It was confusing for the files to have different names so dev$hostlogin was replaced by dev$irafhosts. COMPATIBILITY. By default the system will try to use one of the rsh protocols, hence the server as well as the client must be running v2.10 iraf. To connect to a pre-v2.10 server from a v2.10 client the rexec protocol must be enabled by setting the password field in the irafhosts file. A v2.9 client should be able to transparently connect to a v2.10 server. In all cases where v2.9 and v2.10 clients and servers are being mixed, remote magtape access cannot be used since the protocols have changed in v2.10. sys/ki/kzopmt.x The devcap string was not being passed at the correct offset. (12/29) sys/ki/irafks.x Fixed a couple of problem in the zfiomt server code which were preventing magtape i/o from working over the network. The server was missing an entry for the new zzstmt routine. (12/29) unix/os/zfioks.c Fixed a bug that was causing remote device allocation/deallocation to fail, when accessing a device over the network. SIGCLD was being received by the server when the alloc.e terminated and was executing a longjmp to a stack frame that no longer existed (the zfioks driver, with all its forks, has several parallel execution paths all in the same code). With this fix remote magtape access seems to be working again using the new magtape and networking drivers. (12/30) unix/os/zfiomt.c For a read (zzrdmt), the recsize output to the status output was changed from the requested read size to the actual read size, i.e., the actual size of the record read. (1/02/92) unix/hlib/iraf.h sys/mtio/mtio.h Moved the definition of EOT from mtio.h to iraf.h, so that applications can use it (required for mtparse/mtname). (1/02) sys/etc/xalloc.x Changed mt_allocate/mt_deallocate to mtallocate/mtdeallocate, to be consistent with the other extern MTIO routines. (1/02) sys/mtio/README sys/mtio/mkpkg sys/mtio/mtalloc.x sys/mtio/mtcap.x sys/mtio/mtdealloc.x sys/mtio/mtglock.x sys/mtio/mtgtyopen.x + sys/mtio/mtio.h sys/mtio/mtname.x + sys/mtio/mtneedf.x + sys/mtio/mtopen.x sys/mtio/mtparse.x sys/mtio/mtpos.x sys/mtio/mtrdlock.x sys/mtio/mtrewind.x sys/mtio/mtstatus.x 1. An interface summary was added to the README file. 2. Revised MTIO to add a number of new externally callable user routines. The following is excerpted from the README file. yes|no = mtfile (fname) # Is fname a magtape device? yes|no = mtneedfileno (mtname) # No file number given? gty = mtcap (mtname) mtfname (mtname, fileno, outstr, maxch) mtparse (mtname, device, fileno, recno, attrl, maxch) mtencode (mtname, maxch, device, fileno, recno, attrl) fd = mtopen (mtname, acmode, bufsize) mtrewind (mtname, initcache) mtposition (mtname, file, record) Use CLOSE to close a file descriptor opened with mtopen. Use GTYCLOSE to close a termcap descriptor opened with mtcap. MTNAME is the full magtape device specification, i.e, "mt[...]". The new routines are MTCAP, MTNEEDFILE, MTFNAME, MTPARSE, and MTENCODE. MTCAP opens the GTY descriptor for the device specified in mtname. MTNEEDFILE tells whether a file number is specified in the given mtname. MTFNAME constructs a magtape file name, given an existing mtname and a file number. The MTPARSE and MTENCODE routines are lower level and are provided in case a mtname needs to be edited or constructed which the simpler routines given above cannot deal with. MTPARSE parses an mtname into the device name, file and record numbers (set to ERR if not given) and tapecap attribute list, if any. MTNAME does the reverse, building a mtname from these pieces. (1/02) dev/tapecap unix/os/zfiomt.c Added a new capability "fb" to tapecap. This specifies the default FITS block factor for each type of device. (1/02) unix/os/zfioks.c 1. Tested the password prompting option (password = ?). Fixed a bug in the SysV version of the password prompting code. 2. Tested the in.irafksd idle-timeout feature, seems to work. 3. Added a timeout feature to the handshaking that goes on between client and server during a connect. The connect will now fail and shutdown automatically if there is no response for 45 seconds during a connect (e.g., because the guy on the other end is not what we expect it to be). (1/02) sys/qpoe/qpiosetrg.x Changed the dimension of the VS, VE input array arguments from "ndim" to "ARB". (1/07) sys/etc/xgdevlist.x Added a call to ki_xnode to propagate the network node prefix, if any, to the output resource string. (1/07) sys/ki/irafks.x The devpos struct (position information) was not being passed back properly when closing a magtape device opened for network access. (1/07) sys/mtio/mtparse.x When called with sz_attrl=0, could write to attrl[0] (write off the beginning of the array). Zero is of course not a legal index, but the routine should be able to accept it as a size, indicating that the attrl string is not desired. In cases like this the application must still allow space for 1 char of output, e.g., the EOS. (1/08) sys/mtio/mtrewind.x sys/mtio/mtposition.x These routines were constructing the magtape device name in order to position to a specific file, but were discarding the attrl field, preventing use of tapecap attributes on the command line in a rewind. Changed to use mtfname to construct the device name. (1/08) sys/ki/irafks.x Modified the debug output logging code to print more of the ARG array in the command packet. Modified the zfiomt interface debug logging code to include devcap in the diagnostic output. (1/08) sys/ki/kzrwmt.x sys/ki/kzopmt.x sys/ki/kopdpr.x sys/ki/kgfdir.x These routines were not computing the value of p_sbuflen correctly. This can affect optional string arguments passed in the networking packet header. (1/08) unix/hlib/irafuser.csh Changed the definition of mkz to link "-z -/Bstatic". Omitting the -Bstatic has caused too much trouble on SunOS, when linking on one version of SunOS and executing on a different version. (1/08) unix/hlib/login.cl Added a definition for the convenience alias "cls" (unix clear;ls) to the template login.cl. (1/08) sys/mtio/mtopen.x sys/mtio/mtcache.x sys/mtio/mtrdlock.x Modified to pass the mtname parameter though to mtallocate, which can be called by mtrdlock.x in some circumstances. (1/08) unix/os/zfiomt.c 1. Repeated calls to mtexamine on the same tape would result in the tapeused value incrementing slightly in each iteration. This was due to the space for the last (EOT) filemark being counted in each read of the tape. The problem would only show up on some drives; this was because the file mark size is only set to a nonzero value for some devices in tapecap. 2. Modified the driver to record the checksum of the status output device, and check to see if the device has changed when the driver is opened repeatedly. It will now automatically (witout flpr) detect any changes and close and reopen the status device. 3. Status output to a file is now enabled if there is a / anywhere in the filename, not just as the first character. Hence, :so=./file would write to a file in the current directory. (1/08) sys/mtio/mtgtyopen.x Modified to permit inclusion of device capabilities in the tapecap definition. The syntax of a tapecap environment definition is now <tapecap-file><device-capabilities>, e.g., "home$tapecap:so". Either field can be omitted. For example, set tapecap = ":so=host" would cause MTIO to use the default tapecap (dev$tapecap) but enable status output to the named host for all magtape operations. Device capabilities can now be specified in the tapecap device entries, in the tapecap environment variable, or on the command line (as in "mta[:so=host]"). The precedence is the command line, which overrides everything, the tapecap environment variable, which overrides the tapecap file entries, and the tapecap file entry (followed lastly by the builtin defaults where applicable). (1/09) unix/os/zfioks.c 1. Modified the rsh based connect code to add a fallback to rexec (with a password prompt) if the rsh fails for any reason. If the connect succeeds, the daemon process will still be started as with rsh, hence all further connects will suceed by direct connection to the daemon. In practice, what this means is that if an attempt is made to connect to a node to which rsh cannot connect (e.g., because there is no entry in hosts.equiv on the server node), the system will print "access denied", prompt for the user password, and then connect normally. Subsequent connects will succeed immediately, without any further password prompts, until the daemon process times out and shuts down. 2. If the integer variable "KSAUTH" is defined in the user environment, the value of "auth" in the user .irafhosts file is ignored and the environment value is used instead. This makes it possible to dynamically assign authorization codes in the user environment at login time, if someone doesn't like having their kernel server authorization code in the .irafhosts file. (1/10) dev/termcap dev/graphcap Modified and tested these entries for lw9 and lw10 on tucana, ursa, and gemini. (1/20 - jb) unix/hlib/zzsetenv.def unix/hlib/clpackage.men unix/hlib/clpackage.hd unix/hlib/clpackage.cl Added entries for the new core system PROTO and OBSOLETE packages. (1/23) sys/mwcs/mwcs.h Increased MAX_WATTR from 64 to 256, and resized the main MWCS descriptor accordingly. (1/30) pkg/proto/* + pkg/obsolete/* + unix/hlib/clpackage.cl unix/hlib/clpackage.hd unix/hlib/clpackage.men unix/hlib/zzsetenv.def Added the new core IRAF system packages PROTO and OBSOLETE (the old NOAO package PROTO is renamed NPROTO for noao-proto). PROTO is for prototype or adhoc (interim, not fully general) tasks. OBSOLETE is for obsoleted tasks that are one step away from disappearing. (Jan 92) pkg/images/tv/* The TV package was extensively revised, adding the new tasks IMEDIT, IMEXAMINE, TVMARK, and WCSLAB and moving all the IIS control tasks (which don't work with display servers such as imtool or saoimage) to a new subpackage IIS. The new tasks are from the old NOAO PROTO package, except for WCSLAB, which is contributed software from STScI written by Jonathan Eisenhamer. (Jan 92) unix/hlib/login.cl 1. All the major core system packages are now loaded automatically at login time (dataio, images, lists, plot, proto, tv, utilities). The NOAO package is present but is commented out. 2. The USER package was redone, adding many common unix tasks as foreign task aliases. 3. The CL parameter showtype is now initialized to yes, causing packages and psets to be marked in package lists. (2/08) pkg/images/tv/mkpkg unix/hlib/mkpkg.inc Added a USE_IIS conditional. This can be set to "no" in mkpkg.inc on systems where the IIS package will not be used, to avoid trying to build the package. (2/10) pkg/cl/cl.par Updated the value of the version parameter to V2.10BETA (should have done this a few months ago). (2/10) unix/hlib/login.cl pkg/cl/cl.par pkg/images/images/cl Set up a mechanism to automatically detect and warn about out of date login.cl files. A new parameter "logver", for login.cl file version, was added to cl.par, with the default value being the null string. The real value is set by an assignment in the login.cl. When the IMAGES package is loaded, images.cl compares the value of cl.logver with cl.version and complains (harmlessly) if there is a mismatch, suggesting that `mkiraf' be used. It is a bit of a kludge to use images.cl for this, but it is a simple technique and should work fine, since it is unlikely that anyone using IRAF will not be loading the IMAGES package at some point (clpackage.cl and system.cl cannot be used as they are read too early in the load cycle, and obviously login.cl cannot be used). If there is any question about the comparative dates of IRAF and the user's login.cl this can be determined by executing "lpar cl" after the CL starts up. (2/10) It is very important with V2.10 that the new login.cl be used. Magtape i/o depends upon this as does the new package loading scheme. imio/iki/oif/oifopix.x imio/iki/oif/oifupdhdr.x imio/iki/oif/oifopen.x A couple of changes were made to improve error recovery for OIF format images, in the event that a task aborts before an image creation operation completes. Previously this could leave a pixel file behind with no associated header file. 1. The header of a new image is now updated at open time and at pixel file create time, as well as when the image is closed. A legal image results even if the operation is aborted before the pixel file is created, or before writing the pixel file completes. 2. The header file is now closed after the immap for new images and read-write images, as has always been the case for read-only images. The header is reopened as necessary when updated. In the case of a new image, it is necessary to close the header or the header file will be deleted by FIO if the task aborts before the file is completed and closed. Closing the header of a new image also frees a file descriptor, and important consideration for applications that open many images. (2/11) unix/os/zfprot.c The protection code will now silently clobber any existing ..foo file entry when protecting file foo. There is a slight risk in this, but it should be miniscule as .. prefixed files are very rarely encountered (other than for IRAF image header file protection). Also, the clobber can only occur when a file is protected, a rare operation in itself except for OIF format images. (2/11) sys/gty/gtyopen.x Modified to allow a device entry input as a character string to be opened on a GTY descriptor. The routine already permitted a caplist to be input which would override selected fields of the named device entry, so the change was to allow the termcap file and device entry name to be omitted. This routine is a useful corollary to GTYCAPS; gtycaps takes an open GTY descriptor and returns the device capability list (caplist) as a string, and gtyopen can now be used to take the caplist and open another descriptor on it. This makes it possible to store device entries in any form, not just in termcap file form. (2/12) sys/mtio/mtcap.x Fixed a bug in this routine. MTCAP takes a magtape device specification as input and returns as output the GTY tapecap descriptor corresponding to the named magtape device. The problem was that it was calling mt_gtyopen and returning the gty descriptor returned by this routine directly to the client. The client subsequently calls gtyclose to free the descriptor, but mt_gtyopen is used within MTIO to cache the most recently referenced tapecap device entry. When the client closes the descriptor the cache is left pointing to a nonexistent descriptor. The routine was modified to call GTYCAPS to get the caplist of the cached descriptor, then open a new descriptor on this with GTYOPEN. (2/12) sys/imio/iki/oif/oifrename.x This routine calls immapz (what a kludge) to open the image header and read/edit the pixel file name. A minor modification was required to preserve the header file name in the descriptor to allow the subsequent header update to succeed, now that the header file is closed and reopened for updating. (2/13) pkg/dataio/wfits.par pkg/dataio/doc/wfits.hlp pkg/dataio/fits/wfits.h pkg/dataio/fits/t_wfits.x pkg/dataio/fits/fits_write.x pkg/dataio/fits/fits_wheader.x pkg/dataio/fits/fits_wimage.x pkg/dataio/fits/fits_wpixels.x Modified wfits to fetch the default fits blocking factor for a device from the dev$tapecap file. The user can still overrride this value (which is usually set to 10) for variable blocked devices, but is no longer required to know or set the block size for fixed block devices like cartridge tapes. (2/13 LED) unix/as.sparc/ieee.gx + unix/as.sparc/ieeer.x + unix/as.sparc/ieeed.x + unix/hlib/mkpkg.sf.SUN4 unix/as.mc68020/ieee.gx + unix/as.mc68020/ieeer.x + unix/as.mc68020/ieeed.x + unix/hlib/mkpkg.sf.SUN3 Installed a custom Sun version of the IEEE-floating to native-floating conversion routines. The code is actually fairly portable SPP code, but includes Sun Fortran escapes used for NaN mapping. The routines iee[sg]nan[rd], used to set|get the reserved (native) magic value used to replace or match NaNs, are now functional (formerly they were stubbed out for SunOS). On Sun-3s and Sun-4s, which are IEEE and unswapped, the only function of the IEEE conversion routines is to map NaNs to and from the reserved (ieesnan[rd]) value. ieemap[rd] (YES|NO) # enable/disable NaN mapping A new routine IEEMAP[RD] (YES|NO) is used to explicitly enable or disable NaN mapping. Note that NaN mapping occurs on both input and output, for both the scalar and vector conversion routines. NaN mapping is automatically enabled if IEESNAN[RD] is called. "call ieemap[rd](NO)" should be called before using the conversion routines, if NaN mapping is not desired. (2/14) pkg/dataio/fits/fits_rheader.x Modified rfits to replace control characters decimal 0 (00X) to 31 (1FX) and decimal 127 (7FX) in fits card images with the blank character. The new fits standard now explicitly defines these as illegal in fits headers. (LED 14/2/92) unix/gdev/sgidev/sgi2uapl.c unix/sun/screencopy.c The call to the Postscript "setmatrix" operator was replaced by a functionally equivalent series of calls to the operators "initmatrix", "scale", and "translate", in an attempt to make the Postscript output of these routines more device independent. (2/14) unix/as.sparc/ieee.gx unix/as.sparc/ieeed.x unix/as.sparc/ieeer.x unix/as.sparc/ieee.gx unix/as.sparc/ieeed.x unix/as.sparc/ieeer.x The SunOS IEEE conversion package was modified to add support for counting any NaN values encountered during input and output conversions (the portable vops$ieee.gx still remains to be updated). The new routines are as follows. ieestat[rd] (nin, nout) ieezstat[rd] () IEEZSTAT zeros the counters (since there is no "open" procedure in this package this must be done explicitly). IEESTAT returns the number of NaNs encountered in the IEEE input (nin) and the number of NaN values output (nout). (2/14) unix/as.sparc/ieee.gx unix/as.sparc/ieeed.x unix/as.sparc/ieeer.x unix/as.sparc/ieee.gx unix/as.sparc/ieeed.x unix/as.sparc/ieeer.x I made one change to the IEEE interface - the calling sequence for IEEMAP[RD] is now ieemap[rd] (mapin, mapout) i.e., mapping can be enabled independently for input and output. The semantics of the IEESNAN routine were also changed slightly. IEESNAN now has the side effect of enabling mapping for both input and output (it did this before) and zeroing the statistics counters (this is new). Hence, setting the native pseudo-NaN value will initialize the NaN mapping code. (2/15) sys/osb/ieee.gx Installed a new version of the "portable" IEEE conversions package. This is identical to the version developed for SunOS, with the code which initializes the IEEE NaN constant commented out (since the way this is done is system dependent). The new version of the portable ieee.gx includes the new IEEMAP and IEESTAT/IEEZSTAT routines, and if input mapping is enabled is capable of detecting and converting input NaN values to the local pseudo-NaN value. It will also attempt to convert pseudo-NaN to IEEE-NaN upon output (if mapout is enabled), but since the IEEE-NaN constant is not initialized the output NaN value will be something else, usually zero. An as$ieee.gx version of the file is required to set the true IEEE-NaN value. In principle this can be done portably using an integer equivalenced to a floating variable, but the current version does not bother with that (for output; a similar technique is used to recognize NaN values in the input). (2/15) pkg/images/tv/display/t_display.x Added a call to IMGIMAGE to strip any image section from the image name stored in the WCS passed to the display server. Since the WCS output by display refers to the full image matrix ignoring any section, defining the image as a section was incorrect. The WCS still does not deal correctly with dimensional reduction when displaying images greater than 2 dimensions. This was tested with both image raster and QPOE data using RIMCURSOR to generate coordinates and seems to work correctly. In particular, the correct physical coordinates are generated for QPOE data regardless of the QPOE block factor or image section. (2/16) sys/qpoe/qpioparse.x Fixed a bug that was preventing the key=(x,y) (alternate coordinate system) feature of QPIO from working properly. The code was setting the IO_EVXOFF field twice but was not setting IO_EVYOFF; hence, given a key such as key=(dx,dy), XOFF was being set to DY and YOFF would retain its old value, probably Y. A reasonable looking image would result but it was the wrong image (we were seeing key=(dy,y)). (2/16) sys/imio/iki/qpf/qpf.h sys/imio/iki/qpf/qpfwfilter.x Fixed a bug in the code which writes the QPIO filter to the QPF image header, which would cause it to omit all but the last card when writing filters longer than will fits on a single QPFILTxx header card. (2/16) sys/imio/imparse.x The routine was modified to make it a little more forgiving regarding variations on the standard image section syntax, and to improve error detection of invalid section specifications. (2/16) pkg/dataio/fits/fits_rimage.x pkg/dataio/fits/fits_wimage.x Modified rfits so that the ieee +/-NaNs, and +/-Infs are correctly mapped to a user specified native floating point number. Underflow values are automatically converted to 0.0. A warning message is printed on the terminal if any bad pixels were replaced. A warning message is also printed if valid floating point pixel values > MAX_REAL or < -MAX_REAL were detected which can happen for both fits bitpix -32 and -64 images. Imreplace can be used to replace these explicitly. (LED 2/17/92) pkg/dataio/fits/fits_wheader.x Modified the short_header=yes option in wfits so that the image pixel type, fits bitpix, and the scaling parameters are printed on the standard output, along with the image name, size, and number of records written. (LED 2/17/92) pkg/dataio/fits/fits_params.x Modified wfits so that string parameters that are 1) written explictly by wfits, and 2) <= 20 characters long including quotes, will have the / in column 33 instead of 2 spaces past the end of the string. The affected keywords are OBJECT, ORIGIN, DATE, IRAFNAME, IRAF-BPX, and IRAFTYPE. (LED 2/17/92) pkg/dataioo/fits/rfits.com pkg/dataio/fits/t_rfits.x pkg/dataio/fits/fits_read.x Implemented a scan mode in rfits so that devices which have a slow single-file file skip function (e.g. dat drives) can be used more efficiently with the rfits make_image=no option. (LED 2/18/92) dataio$fits/t_rfits.x dataio$fits/t_wfits.x Changed the maximum sequence number that can be appended to an output root image of fits file name from 999 to 9999. This is actually a format limitation %04d than a numerical limitation. (LED 2/18/92) sys/qpoe/qpiogetfil.x Modified to remove an unneeded trailing comma which was being returned in some circumstances in the reconstructed filter expression output by the routine. (2/18) sys/qpoe/zzdebug.x The zzdebug would not link any more due to a routine being referred to by a name which had since changed (qp_rlmerge). (2/18) sys/imio/iki/qpf/mkpkg sys/imio/iki/qpf/qpfwattr.x + Added a new routine qpf_wattr to QPF. This is called when an image descriptor is set up for a QPOE image. The routine checks for the existence of a series of QPOE header paramters "defattr1", "defattr2", etc. If present, these are string value parameters, the string value specifying the name of a parameter to be added to the output image header, and how to compute the value of the parameter. For example, defattr1 might have the value exptime = integral time:d meaning add a parameter "exptime" to the output image header, giving as the value of the parameter the integral of the range-list of attribute "time", type double, of the event attribute expression used to filter the event list used to create the output image. (In other words, compute EXPTIME, the total exposure time for the filtered image). Currently, the syntax of the DEFATTRn parameter is very limited and must be similar to that shown in the example, but the parameter and attribute names can be anything, and the datatype can be int, real, or double. Since the parameter is string valued it will be easy to generalize in the future should we need to do so. (2/18) sys/imio/iki/qpf/qpfcopypar.x Improved the error recovery. (2/18) pkg/cl/gram.c Constants such as 0:00:60 or even 0:00:59.999999999 could trigger an "illegal constant" error abort in CL scripts, due to round off errors in the CL code. Technically there is no reason one cannot have a number such as 0:00:60 (or 0:00:any-positive-number for that matter), since the result is well defined, so I relaxed the overly stringent error checking in the gram.c code. (2/19) sys/gio/cursor/grcwcs.x The code which computes the scale terms for an axis could die on a divide by zero error when presented with an axis that has no range. It will now detect the condition and set the scale term to 1.0; the value is arbitrary, since there is no range on the axis and deviations from the mean will always be zero. (2/19) sys/imio/iki/stf/stfrdhdr.x sys/imio/iki/stf/stfwfits.x The STF image kernel was modified slightly to support images with GROUPS=F. When the FITS image header is read, if GCOUNT=F the parameters GCOUNT, PCOUNT, and PSIZE are initialized as for an image with a single group and no GPB. The header update code was modified to omit these parameters when updating an image for which GROUPS=F, since the parameters should not be present in the FITS image header if the image unless GROUPS=T. (2/19) sys/imio/iki/oif/oifrename.x An image rename operation such as pix.0001.imh -> pix.imh would succeed for the header file but would fail to rename the pixel file. This would often pass unnoticed using a hidden imdir, but is very evident when using imdir=HDR$. The problem was due to the use of fnroot in oifrename, in a test to see if the root image name is the same for the rename operation. This would fails as fnroot cannot descriminate between image extensions and file extensions. I replaced the calls to fnroot by calls to zfnbrk, to get the root offset and hence strip off any logical directory prefix, which was the point of the original call to fnroot. (2/19) unix/os/zfiomt.c It turns out there was still one case where the new magtape driver did not emulate the simple unix model of open, write,write,write, close, open, write,write,write, close, open, etc. The exception was minor, but caused a problem with the TIB SI driver for the HP drive on a Sun (the only one of these we have seen so far is at STScI). The result was a double EOT between each file on the tape, when appending files with WFITS. What was happening is that when the driver was opened to append a file to the tape, it opened the drive read-only to position the tape, then closed it and reopened write-only for writing. This is done to avoid clobbering the tape if an abort occurs during the file positioning operation. What was happening was that when already positioned to EOT, the drive would be opened read-only, no positioning would occur since the tape was already at EOT, the drive would be closed, and reopened for writing. Hence there was an unnecessary open-read/close before writing each tape. This should be harmless - it does not move the tape or talk to the hardware - but it was triggering a bug in the host driver. Evidently (this is my theory at least), this host driver is pretty clever and delays writing the double file mark marking end of tape. So long as you just append files it never write the EOT, until the tape is rewound. A rewind or backspace should trigger writing of the EOT. What I think was happening was that the open-read would trigger writing of the delayed-EOT. The host driver would write two tapemarks and backspace over the second one. Only problem is, it had already written one (one is always written after every file even with delayed EOT), so you end up with a double file mark, or EOT, between every file on the tape. This is a blatant bug in the host driver. We were able to duplicate this using only using UNIX TAR by writing a small C program which did close(open(/dev/xxx,0)); and was called before using tar to append each file. As a workaround I have revised the iraf driver to avoid opening the tape read-only for positioning unless some positioning is actually necessary. If all one does is append files, the positioning open is avoided and the simple unix semantics are exactly duplicated, i.e., all the driver does is open for writing, write the file, and close. (2/19) pkg/dataio/fits/fits_write.x Replace a call to imgimage with one to imgcluster since the original purpose of the imgimage call was to extract the root image name. (have not yet rebuilt dataio) (2/20/92 LED) ------------------------ Beta system cut and installed on URSA (2/20). unix/os/zfiomt.c Fixed a bug having to do with error recovery in the event that the device cannot be opened (as when attempting to rewind or deallocate a device that is offline). (2/22) unix/hlib/login.cl Modified the template login.cl to allow V2.10 login.cl files to be used with V2.9 IRAF (available as "irafo" on our systems). It was necessary to add conditional references for LOGVER and PROTO. Also, the NOAO package is now loaded by default. (2/22) pkg/plot/crtpict.par Changed the default output device from "dicomed" to "film_recorder". The latter is a generic device alias set in graphcap to point to whatever the desired local device may be. (2/22) local/login.cl Updated to V2.10. Edited so that it is fairly generic and has a chance to work when the system is installed on a different host. (2/22) dev/tapecap 1. Added local entries for node ursa. 2. Added a SCSI 5 entry for the Sun HP drive. (2/22) dev/graphcap Additions for Solitaire film recorder. Set the default generic "film_recorder" entry to point to the solitaire. The Solitaire is currently interfaced via a custom graphics kernel (modified version of the SGI kernel) which resides outside the standard IRAF system, in the NLOCAL package. (2/22) pkg/system/rewind.par Changed the default for the "initcache" parameter from yes to no. initcache causes rewind to "forget" how many files there are on the tape, forcing a rescan the next time one seeks to EOT. It is arguable whether it is safer to init the tape status cache on a rewind or now, but it sure can be a lot faster on devices with many files to retain this information. (2/22) ------------------------- Beta distribution files regenerated to pick up these changes. (2/22) unix/bin.mc68020/gterm.e.403 unix/bin.mc68020/imtool.e.403 Added SunOS 4.0.3 versions of the GTERM and IMTOOL executables, for the convenience of those who have not updated to 4.1.x (as is the case with argo, locally). (2/23) unix/as.sparc/ieee.gx unix/as.mc68020/ieee.gx sys/osb/ieee.gx Fixed a typo in the generic code for ieevupk - an "amovr" should have been a "amov$t". This would cause type double vector unpack operations to fail for large numbers. (2/25) unix/os/zfiomt.c Added a new capability "fe" to tapecap. This stands for "file equivalent" and is the amount of tape in Kb which, in a file read, is equivalent to a file-skip-forward 1 file operation. This capability can be used by applications which scan large tapes containing many files to decide whether to read the rest of the file, or close the file immediately and open to the next file (which implies a FSF). On devices (like some DAT drives) where a FSF operation can be slower than a file read, it is faster to read small files than to FSF to the next file. If the fe parameter is missing the value is assumed to be zero, meaning that FSF is faster than reading the file. Note that "fe" is not used by the driver, it is an optional parameter provided for use by tape applications as a device-dependent optimization. (2/27) pkg/dataio/fits/fits_read.x Changed the interpreation of the fe parameter as read from dev$tapecap from MB to KB. (2/27 LED) dev$hosts Added spud and pantera to hosts file on tucana, orion, gemini and ursa (MJF 2/28) sys/etc/erract.x Replaced an explicit reference to the common "zjucom" by the symbol JUMPCOM defined in config.h. (This was a historical oddity, harmless, but would cause a problem if the name of the common was ever changed in config.h). (2/29) sys/etc/onexit.x sys/etc/onerror.x A procedure was added to both of these small packages, for removing previously posted onerror or onexit procedures. onerror_remove (procname) onexit_remove (procname) Previously there was no way to deactivate such procedures, other than during error recovery or task termination. (2/29) sys/mtio/mtupdlock.x This procedure calls FATAL if an error occurs while updating a lock file. This was causing problems with magtape error recovery, because mt_sync, which causes the lock files to be updated, is posted by MTIO as an ONERROR procedure. If an error occurred and the lock file could not be updated, FATAL would abort the task, error recovery would call mt_sync, which would try again to update the lock file, leading to error recursion or errors during error recovery, and various nasty scenarios. With this change magtape error recovery appears to be working correctly again. I tried several mtexamine runs, aborting each with a ctrl/c (but omitting the flpr) and the system recovered perfectly each time. (2/29) sys/mtio/mtdealloc.x Added calls to mtdeallocate to sync the MTIO cache (update the lock files with the current tape position) and then clear the cache, clearing the entry for the deallocated device as well as forcing all devices to reload their lock files. This was the source of the problem where allocating and deallocating device A and then allocating device B would cause devstatus B to fail. Following this fix various tests with two devices allocated and accessed together or alternately were performed without seeing any problems. (2/29) pkg/system/rewind.par Changed the default for the initcache parameter back to yes. It is essential that the cache be initialized when a tape is removed and a new tape mounted, and it more likely that the user will rewind the tape (in software) than that they will deallocate/reallocate. (3/01) rewind init[+|-] appears to be working correctly now, probably as a result of one of the bug fixes made during the period 2/29-3/01. unix/os/zfiomt.c The tapeused counter is now cleared when opening a tape and the tape position is undefined. This condition forces a rewind and clears all cached data. (3/01) sys/ki/kzopmt.x sys/mtio/mtcache.x sys/mtio/zclsmt.x sys/mtio/zopnmt.x A number of changes were made to these routines during two days of beating on the system with ctrl/c interrupts to improve error recovery. With these improvements the magtape i/o system again appears to be solid with respect to error recovery. A tape task can be interrupted either during positioning or during a read and the system should recover completely, without need to do a flpr (I didn't do any flprs during all this testing). Interrupting a write is ok too, but will leave a partial file on the tape. Any kind of interrupt will cause the tape position to be marked undefined, forcing a rewind the next time the tape is accessed, and clearing all cached information (clearing cached tape information when an interrupt occurs during a read is not necessary in all circumstances, but simplifies things and is probably safer). 1. The kzopmt routine (KI) had a serious bug in that it did not allocate a KI channel descriptor until after the device open. This is ok for most devices, but not for tapes since the device open implies a tape positioning operation which may take a very long time, and hence is suspectible to interrupts. FIO and MTIO error recovery has to be able to close a tape device which is "partially open", or open read-only for positioning, prior to the i/o operation. The close operation would fail as the kzclmt routine would be expecting a KI channel descriptor but would not get one, causing a bogus file descriptor to be closed. This would cause the tape close to fail and could in some cases result in a segmentation violation or process panic shutdown. 2. zopnmt was modified to update the cached file position after the driver open. This was necessary to mark the cached entry for updating, to allow an undefined position to be written in the event that an interrupt occurred during i/o. 3. zclsmt required minor changes for both the interrupt-while- positioning and interrupt-during-i/o cases. In the IWP case mt_sync is now called with a status of ERR to cause an undefined position to be written. In the IDIO case MT_FILNO = -1 in the internal MTIO descriptor is used to flag error recovery, but due to the calling sequence of the driver open having changed with the new driver, MT_FILNO was being overwritten with a valid tape position during the device close. This would cause a valid position to be written to the .lok file when a tape operation was interrupted while i/o was in progress. 4. The file position cache code underwent several subtle modifications. Probably these were not necessary but they bullet-proof the code a little bit. The result of all these changes is that, following an interrupt of a tape operation, 1) devstatus should always show file=-1, record=-1, and 2) the next tape operation should cause an automatic rewind followed by a space forward to the indicated file. It should not be necessary to flush the process cache. Any other behavior, even if harmless, is considered incorrect. (3/01) sys/etc/xalloc.x sys/mtio/mtalloc.x sys/mtio/mtstatus.x Modified the "devstatus" command to print the tape status file (.lok file) even if the device is not allocated, provided the file exists. This is desirable since taping is now permitted even on unallocated devices, and it is useful to be able to see the tape status file to see what file the tape is positioned to, how much tape has been used, etc. If the device has not been allocated devstatus will still issue a warning message to that effect, as it has always done, followed by the contents of the .lok file (tape status file), if such exists. Since existence of the tape status file no longer necessarily implies that the tape has been allocated, the header message in the file was changed from "Magtape device X allocated to ..." to "Magtape device X status ...". (3/01) sys/mwcs/mwshow.x + Added a new routine MW_SHOW to MWCS. This is used to print a representation of a MWCS to an output file (usually, for debugging purposes when writing an application). call mw_show (mw, out, what) The routine does not yet print all that it could about the MWCS. The argument "what" is not yet used. This routine was described in the original interface but had never been implemented. (2/25-3/01) sys/mwcs/mwcs.h sys/mwcs/mwsv.h + sys/mwcs/wfinit.x sys/mwcs/mwload.x sys/mwcs/mkpkg In IRAF v2.10 we increased the max number of WCS attributes, which affected the size of the MWCS descriptor. This caused the WCS stored in old QPOE files to be unreadable, since it turns out that while the MWCS interface (mw_save) encodes a MWCS descriptor in a machine independent form for external storage, this form is essentially just a copy of the internal MWCS binary descriptor. When the internal descriptor changed the old saved descriptors could not be read. Since QPOE is a runtime binary format there is no requirement that the files be readable from one version of iraf to the next, but it is desirable to minimize such incompatibilities, or at least detect them and issue an appropriate error message. Really fixing this problem in a general way is not easy given the complexity of the MWCS descriptor. What I did was define a separate MWSV save file descriptor in mwsv.h, deleting the old SV_ entries from mwcs.h. The old save structure had some extra space in it for just this sort of emergency, which is zeroed out in the old MWCS savefile descriptors. Fields giving the MWSV version number, number of WCS, and WCSLEN (WCS substructure length) were added to the save descriptor. Since these fields are zero in the old descriptors the "version number" of these old descriptors is zero. The mw_load code was modified to use a builtin MWSV version zero value for WCSLEN, and calculate NWCS, allowing it to read these old descriptors. New descriptors are written using the actual values for NWCS and WCSLEN and a version number of 1. Hence, the new mw_[save|load] code can both read old descriptors and write and read the new descriptor with its larger max number of WCS attributes. I also discovered and fixed a minor problem in the save code. The SV header (integer) was being read and written directly without use of the MII routines, hence the MWCS save/load code was not fully machine independent. The appropriate MII routines were added to pack and unpack (byte swap) the save header. This won't affect existing saved MWCS written on big-endian machines like Sun, since the MII routines merely copy the data on such machines. (2/25-3/01) sys/mwcs/mwsctran.x Fixed a typo in the error checking code. There was a "mw_system" reference which should have been "mw_ssystem". (3/04) plot/pltwcs.x plot/t_graph.x Modifications were made to produce a label appropriate for the wcs type selected rather than always use the world system label in the image; i.e. if plotting in logical wcs the label is "Logical pixel" rather than something like "Wavelength (Angstroms)". The change affects pcol(s), prow(s), and graph. (3/04 FV) dev$hosts Added solarium and taco to the hosts file on tucana and orion. Nigel added these to ursa and gemini. He also notes that lyra, carina and aquila can be deleted. (3/4/92 MJF) unix/bin.mc68020.403 + unix/bin.mc68020/gterm.e.403 - unix/bin.mc68020/imtool.e.403 - Added a complete bin.mc68020 directory compiled and linked for SunOS 4.0.3. Deleted the 4.0.3 versions of gterm.e and imtool.e from the SunOS 4.1.1 version of bin.mc68020. In case this problem occurs again here are the symptoms: ld.so: warning: /usr/lib/libc.so.0.12 has older revision than expected ld.so: call to undefined procedure _tolower from 0x20266 This occurs when executing any HSI executable on a 4.0.3 system. If this occurs the solution will be to install bin.mc68020.403 as bin.mc68020, i.e., % mv bin.mc68020 bin.mc68020.411; mv bin.mc68020.403 bin.mc68020 Currently there are no plans to ship V2.10 with the 4.0.3 binaries installed by default. Linking the HSI -Bstatic also avoids this problem but the executables are quite a bit larger and there may still be subtle problems which are dependent upon SunOS versions, e.g., with alloc.e. (3/05) sys/imio/iki/qpf/qpfwattr.x Modified to deal with the case where there is no filter expression and the QPEX descriptor is NULL. (3/05) pkg/images/iminfo/listpixels.x Modified the listpixels task to use the MWCS axis "format" attributes if they are present in the image header, and added support for dimensionally reduced images whose coordinate transformations are dependent on the reduced axis. (3/6/92 LED) pkg/lists/rimcursor.par pkg/lists/rimcursor.x pkg/lists/doc/rimcursor.hlp Added two new parameters wxformat and wyformat to the rimcursor task. These formats if defined take precedence over the formats stored in the WCS in the image header, and the internal default format for all values of the wcs parameter. (Davis 9/3/92) sys/mio/mtupdlock.x This, routine, which updates the magtape device status file (aka lockfile) was a bit too zealous about error checking and could fail to update the status file and cause a fatal exit of the task in circumstances where this was not really necessary, for example when the old status file did not exist or could not be read. This could result in the message "fatal error while closing magtape file". I modified the routine to recover if the old file could not be read and to take an error exit only if the new status file could not be written. The error message was changed to "Fatal error writing magtape device lockfile". (3/10) sys/imio/iki/stf/stfaddpar.x The stf_addpar routine is used for a new image or a new copy of a non-STF image to add parameters to the GPB. As each parameter is added a parameter is also added to the open image descriptor (image header). The imaddX calls for the image header would initialize the value of any existing header parameters, causing any existing WCS to be lost (since the standard GPB parameters are for the WCS). The fix was to omit the imaddX call if the named parameter already exists in the image header. (3/10) sys/imio/iki/stf/stfaddpar.x The value of STF_PSIZE was being computed incorrectly. There was an implicit assumption that the CTYPEn field was the same size as SZ_DOUBLE, evidently made in the original code to simplify the expression. Rewrote to use an explicit 8 bytes for the CTYPEn field, and also reordered and commented the expression for clarity. (3/10) pkg/images/iminfo/t_imstat.x Precision was being lost unnecessarily in the computation of the standard deviation, skew, and kurtosis because two of the intermediate variables in the computation were real instead of double precision. (3/10/92, Davis) dev$hosts Added 'elric' to hosts file on tucana, orion, and ursa. Previously added to gemini by Nigel. (3/11 MJF) pkg/images/imutil/t_imslice.x pkg/images/doc/imslice.hlp Added wcs support to the imslice task. (3/12 LED) unix/os/zfiomt.c Discovered and fixed another error recovery problem. During testing using WFITS to write a number of very small images, the program was spending most of the time doing the file close on the magtape device (which writes a tape mark and takes a finite time for such a device). An interrupt would therefore usually occur during the close, resulting in a half-completed file close; error recovery closes open files, and the driver was bombing as part of the descriptor had already been deallocated. The fix was to modify ZZCLMT to check for a partially deallocated descriptor before proceeding to close the file. (3/14) unix/os/zfiomt.c When appending files to a tape, the space for the file mark was not being counted, causing an incorrect tapeused value when writing to DAT or Exabyte. (3/14) unix/os/zfiomt.c Added two new tapecap device parameters "ro" and "rr". If "ro" (rewind-on-open) is set the tape is rewound on every open to get to a known position, after which the driver will space forward to the desired file. If "rr" (rewind-after-close-readonly) is set the tape is rewound when closed following a readonly operation. These options are rather drastic, but are provided to deal with drives that leave the tape in an unknown position after a file operation. (3/15) I also looked into the problem of fast techniques for finding the EOT of large tapes containing hundreds of files. This is important as seeking to the end of tape file by file where are hundreds of files can be very time consuming. At least in the case of a DAT with the ApUNIX driver there is no system and driver independent way to do this because the driver does not report an error if one attempts a fsf N where N is greater than the number of files on the tape. However, such an operation *does* leave the drive positioned to EOT, hence operations with large N can be used to position to EOT or append to a tape. This is perhaps most easily explained with some examples. Assume we have a tape mta with 100 files on it. wfits dev$pix mta[999] appends a file mtex mta[999] positions to EOT mtex mta[998] after the above, reads last file After one of the above operations the driver will report that there are 999 or 998 files on the tape. A mtex of the full tape would automatically correct this figure. Of course if the user knows that there are 100 files on the tape they could just write to mta[101] or read mta[100], and the driver would immediately position to the indicated file using a multifile space operation (if enabled in tapecap). Further studies will be needed to determine if there is any way to exploit this sort of drive behavior in the driver to make things transparent to the user. sys/fmtio/dtoc.x sys/fmtio/fprfmt.x sys/fmtio/parg.x sys/libc/printf.c Added two new format specifiers %H and %M to FMTIO. These are identical to %h and %m except that the value to be output is divided by 15.0 (to convert degrees to hours) before being printed. (3/15) pkg/lists/doc/rimcursor.hlp Added an explanation of the %H format and example of its use to the rimcursor help page. (3/16 LED) sys/fmtio/lexdata.inc sys/fmtio/doc/lexnum.hlp The action for the character B in the DHR production was incorrect; changed from d_d (reduce decimal) to HEX (go to the HEX production). (3/16) sys/fmtio/dtoc3.x The DTOC3 code had a very nasty problem which showed up on a specific machine (lepus, mc68882 fp). There is some code in this routine which goes as follows: do i = 1, no_digits { v = v * 10.0d0 j = v v = v - j (etc.) where V is double and J is integer. In the case where this failed the number being printed was 6 and upon entry to the above loop V was 0.6 (normalized to 0-1). The int operation J=V was setting J to 5, but the V=V-J was returning 1.0. In the next loop V was 1 and V * 10 was 10, causing digit conversion to fail, since the value being digitized must be a single digit. In mathematical terms the code was correct but evidently it was failing due to some sort of roundoff problem. I added some code to try to detect this condition and correct it. The statement J=V was also replaced by J=INT(V+EPSILOND) to round up numbers which are integral to within the machine epsilon (e.g., 5.99999999 with 16 or so 9s becomes 6). (3/22) This sounds similar to a problem which has been reported before, it may fix the older problem. sys/etc/oscmd.x unix/as.sparc/oscmd.s I encountered some sort of bizarre (i.e. very subtle) problem with a minilanguage which would send an OS escape to the CL to be executed, while there were already parameter set statements buffered in the CLOUT. The CL (actually prpsio code) would get both in the same read and it was causing some problem which I did not have time to investigate. Added a call to flush(CLOUT) to avoid the problem, is safer anyway. (3/22) [need to add as.mc68020 version or remove from special file list] pkg/images/tv/wlutil.x Wcslab was not working correctly if an image larger than the frame buffer was displayed with fill=no. (3/25/92 LED) dataio$fits/t_rfits.x: Davis, Mar 25, 1992 Rfits was using the value of the iraf_file parameter instead of the name of the first output image, if the value was an @file, e.g "@outlist" and the number of output files was 1. dev$hosts Added Rob Hubbard's machine 'deneb' to hosts file. Added to gemini and ursa by Ed Anderson (3/31/92 MJF) qpiogetfil.x qpexpand.x qpexgetfil.x qpexgetat.x These routines return the string length of the output string as the function value. If the output string overflows maxch characters are returned, however the function value in this case could be maxch-1, causing the calling routine to fail to detect string overflow. The code was modified to return maxch if string overflow occurs. (3/31) qpmacro.x Modified to permit QPDEFS statements such as "set nodeffilt", i.e., a SET statement with no value assignment. (3/31) qpex.h Doubled the default size of the program, data, and expression buffers. (3/31) qpexparse.gx Timing tests on filter expressions containing many floating range list terms (e.g. large time filters) revealed that this routine was very inefficient in its used of fp_equal[rd]. I optimized a couple of inner loops slightly and was able to speed up expression compilation by a factor of 10-15. (3/31) qpexdebug.x Modified to allow for output of the full expression string when used with very long range lists. (3/31) -------------------------- TUCANA upgraded from a 3/160 to a Sparcstation 2. SunOS 4.1.2, Sun Fortran 1.4, Sun C compiler. (4/03) unix/mkpkg + Added a mkpkg file providing a "mkpkg summary" facility for compressing reboot output. (4/04) unix/shlib/mkshlib.csh Added support for Sun Fortran 1.4, for sparc only so far. (4/04) unix/hlib/mkpkg.sf.SUN4 Commented out the special file list entry for oscmd.x, I doubt if it is needed any more. (4/04) -------------------------- Completed a full sparc bootstrap and sysgen-compile for SunOS 4.1.2, Sun Fortran 1.4, and the unbundled C compiler. (4/04) unix/hlib/irafuser.csh unix/bin.sparc Set up the HSI to link the HSI executables -Bstatic. I don't like doing this as the resulting bin is 3.6 Mb, but the libc.a shared library versions are too much of a headache. HSI executables linked shared under SunOS 4.1.2 will generate a shared library warning message when run under 4.1.1, and this is just a micro version difference. The mc68020 executables (and local nodes) are still at 4.1.1 so there is no problem there. (4/05) unix/boot/mkpkg/host.c The code used to check two iraf directory pathnames for equality could fail for pathnames such as /u3/iraf/iraf, containing more than one "iraf/". This caused the special file list to be ignored in the recent upgrades and full sysgen. (4/06) [all affected files recompiled] unix/hlib/install Modified the install script to choose /usr/local/bin over /local/bin if both are found. (4/06) noao/mkpkg noao/nobsolete/mkpkg + Added a stubbed-out mkpkg to nobsolete. Uncommented the commented-out entries for nobsolete in noao/mkpkg. Restore the original package build order, which builds all the main packages first followed by imred. (4/06) sys/etc/prpsio.x The code which intercepts raw mode control sequences would erroneously match any terminal output string of the same length as a raw mode control sequence and which begins with ESC (a full equality test was not being performed). (4/06) unix/os/zfiomt.c Due to a data structure change, tapecap parameter negation as in "mta[:xx@]" to negate parameter xx wasn't working. (4/07) pkg/images/iminfo/listpixels.x Added a formats parameter for formatting the output pixel coordinates to the listpixels task. These formats take precedence over the formats stored in the WCS in the image header and the previous default format. (4/7/92, Davis) unix/os/zfaloc.c unix/os/zfiobf.c unix/os/zoscmd.c Modified these routines to use the user's UMASK to compute the file mode for a new file. zfiotx.c already does this, although it isn't entirely correct (one can add more permissions with umask but one always gets at least 0644 for new text files). The other routines make full use of umask now. (4/07) unix/os/zfaloc.c Since I was already working on zfaloc I also added a feature to permit full preallocation of files on unix systems. The default behavior of zfaloc, for efficiency reasons, is to physically preallocate only the last block of the file, leaving the remainder of the file blocks to be allocated when data is written to the file. Now, if "ZFALOC" is defined in the user's host environment, full preallocation of the file is enabled. If the variable is defined but has no string value all zfaloc files are fully preallocated, otherwise, the string value is a comma delimited list of substrings, and a file will be fully preallocated only if one of those substrings matches a substring of the file name in the zfaloc call. This allows files in certain directories or of certain types to be fully preallocated while others are allocated in the normal fashion, so that the behavior of the routine can be customized for a given type of application. (4/07) dev/hosts Corrected the Loden entry on Gemini for Rich Reed. We should verify all these paths in the master system. (4/07 RLS) dev/pix.imh dev/pix.pix Replaced dev$pix by a version that has the header tweaked up a bit. (4/08) dev/termcap Added entries to allow two-up page printing on all printers. Change also made to gemini and ursa termcap files. (4/8 MJF) pkg/plot/t_pcol.x pkg/plot/t_implot.x pkg/plot/t_graph.x pkg/plot/t_pcols.x pkg/plot/t_prows.x pkg/plot/pltwcs.x pkg/plot/graph.par pkg/plot/prow.par pkg/plot/prows.par pkg/plot/pcol.par pkg/plot/pcols.par pkg/plot/doc/graph.hlp pkg/plot/doc/implot.hlp pkg/plot/doc/prow.hlp pkg/plot/doc/prows.hlp pkg/plot/doc/pcol.hlp pkg/plot/doc/pcols.hlp 1. Modified GRAPH, IMPLOT, PROW(S), and PCOL(S) to define and set a coordinate format in plots. This allows graphs to be made in DD:MM:SS and related formats. 2. Modified GRAPH, IMPLOT, PROW(S), and PCOL(S) to use any WCS attribute coordinate format found in the images. 3. Added xformat and yformat parameters to GRAPH, PROW(S), and PCOL(S) to define coordinate plot formats. This allows having a format when a format attribute in not found in the images, to override a format attribute, and to allow setting the format in simple text input. For example, GRAPH can plot formated RA and DEC from a list of input RA and DEC coordinates. 4. Added a ":f format" to IMPLOT to allow specifying/overriding the WCS attribute format. 5. Added <space> as a key in IMPLOT to print coordinate and pixel value information: line=256, column=142, coordinate=13:27:55.6, value=222. (4/9 Valdes) pkg/cl/exec.c The symptom of this bug was that if a package which has package parameters was loaded at login time and the package parameters were later edited, the edited values would not be used. This was traced to a problem with the pfile pointer in the package descriptor pointing to a discarded copy of the package pset. The PACKAGE command, executed in the package script task when the package was loaded, would quite correctly set up the package descriptor pointing to the runtime copy of the package pset for the package script task. When EOF of the login.cl was reached the package script task would terminate and the runtime pset would be copied back to the main package pset and the runtime pset freed - but the package descriptor was left pointing to the old, no longer used pset. The fix was to modify oneof() (that's "on-eof"), called when a task terminates, to check if the task is a package script task and if so fix the package descriptor to point to the main pset. (4/09) pkg/cl/builtin.c pkg/cl/pfiles.c "unlearn pkgname" will now unlearn the package parameters of package pkgname, as well as the parameters of each task in the package (but it does not descend into subpackages). (4/09) sys/libc/cprintf.c + sys/libc/scanf.c sys/libc/mkpkg Added an interface of the VOS printf routines to LIBC. These are the routines c_printf, c_fprintf, c_parg[bcsilrd], and c_pargstr. LIBC already has unix stdio-like print routines, but the VOS routines avoid the varargs stuff, and do automatic type conversion. (4/11) pkg/cl/gram.c pkg/cl/debug.c pkg/cl/y.output pkg/cl/ytab.c pkg/cl/ytab.h pkg/cl/grammar.y pkg/cl/opcodes.c pkg/cl/compile.c pkg/cl/opcodes.h pkg/cl/scan.c pkg/cl/builtin.c pkg/cl/mkpkg Added the long-awaited ability to scan from a pipe (or whatever the stdin is connected to). Also added the new formatted scan and print routines scanf, fscanf, and printf. These are like the unix/stdio versions but use FMTIO, supporting such FMTIO features as %h and %*.*. For example, cl> printf ("%d foo %g\n") | scanf ("%d foo %g", i, x) or while (fscanf (list, "%d %s", i, s1) != EOF) printf ("i=%d, s1=`%s'\n", i, s1) Don't forget the [f]scan routines, which may still be more convenient for simple unformatted scans. The new printf routine uses the VOS PARG routines to pass argument operands, hence provides automatic type conversion on output. If an incorrect number of arguments are passed an incomplete format error will result. The scanf routine is an interface to the LIBC scanf routine (actually, u_doscan). The CL scanf/fscanf routines call the LIBC scanf which parses the format string and writes the output values whose addresses are passed in a manually crafted varargs argument list. Since scanf writes directly into the value fields of the output parameter descriptors, no automatic type conversion is possible and there is no checking for string overflow when writing to a string valued parameter. Care should be taken to make sure the scanf format matches the datatypes of the output parameters. (4/11) pkg/cl/debug.c Fixed a minor problem with the uncompiled output, where non-string values output for pushconst would contain a trailing '. (4/11) unix/os/zfiobf.c unix/os/zfiotx.c unix/hlib/libc/kernel.h Tested the recently added umask support and made a few changes. The umask semantics for text files are now identical to those for binary files etc. (4/11) unix/hlib/zzsetenv.def Added an entry for the gty system source directory. (4/17) pkg/plot/doc/gdevices.hlp + pkg/plot/gdevices.par + pkg/plot/gdevices.x + pkg/plot/mkpkg pkg/plot/plot.cl pkg/plot/plot.hd pkg/plot/plot.men pkg/plot/x_plot.x Added a new task GDEVICES to PLOT. This task will scan the active graphcap database and print a table of the available devices in the given class of devices (by default the stdimage devices), giving for each device a list of the device aliases, the device resolution in X and Y, and a short descriptive string if one was given in the graphcap entry for the device. See the help file for examples. (4/18) sys/mwcs/imwcs.h sys/mwcs/iwctype.x sys/mwcs/iwsaxmap.x sys/mwcs/mwloadim.x sys/mwcs/mwsaveim.x Various changes were made to fix the MWCS "dimension mismatch" problem. This would happen during an image open (iw_saxmap) when the dimension of the WCS was different than that of the image and an image section was in use. The error was being detected in mw_saxmap and was correct, i.e., the routine was being called incorrectly by iw_saxmap, part of the image header interface code. Evidently axis mapping was not fully implemented; it worked for runtime read-only maps of an image, but failed when making a new image which was a reduced-dimension section of another image (e.g., imcopy dev$pix[*,10] pix1 would do it). The new image would retain the original WCSDIM which would not match the physical image dimension when the new image was later opened with a section and a new axis map created. The fix was to preserve the axis map in an mw_saveim/mw_loadim operation, and in iw_setaxmap, merge the new axis map for the reduced-dimension image into the axis map associated with the stored MWCS. A new image header parameter WAXMAPnn was added to store the axis map. iwsaxmap.x now reads the old axis map of dimension MI_NDIM, and merges it with the axis map for the new image of dimension IM_NPHYSDIM. (4/19) sys/mwcs/mwloadim.x sys/mwcs/mwopen.x The axis map, even if unused, is initialized to the unitary transformation when a new MWCS is created. (4/19) sys/mwcs/iwctype.x sys/mwcs/mwsaveim.x The FITS CD matrix as used in MWCS was transposed relative to what the draft FITS standard requires. Modified the iwctype.x code (input) and mwsaveim.x (output) to swap the I,J axes in the CDi_j keyword, in effect transposing the matrix as seen by MWCS. (4/19) sys/mwcs/iwewcs.x Deleted the comma in "axis 1: axtype=ra, axis 2: axtype=dec" (in the "ra,"). The attribute list syntax does not permit a comma in this context and it is included in the axtype string value. (4/19) sys/mwcs/iwewcs.x Modified the code which sets up the CD matrix in the case when no CD matrix is given in the image header (in which case CDELT/CROTA2 is normally used instead) to use a double DO-loop to initialize the CD matrix to the unitary matrix. The old code had two bugs: 1) the full WCSDIM dimensioned CD matrix was not being initialized when CDELT/CROTA2 were used instead of the CDi_j notation, and 2) mk_idmd was being used to initialize IW_CD to the unitary matrix of dimension ndim, but this was no good as IW_CD has a fixed dimension of MAX_DIM. It is necessary to use an explicit DO-loop instead. (4/19) sys/mwcs/iwpstr.x Added a statement "Memc[bigstr+nchars] = EOS" after the blank fill loop - the string was not explicitly EOS terminated. (4/19) sys/mwcs/mwgwtermr.x Changed the aclrr in the code used to initialize the CD matrix, to a call to mw_mkidmr, which makes the identity matrix. Formerly a zero matrix was being returned instead of the identity matrix. (4/19) sys/mwcs/mwmkidmr.x + sys/mwcs/mkpkg Added a new routine mw_mkidmr, used to create an identity matrix of type real. (4/19) pkg/images/imutil/imdelete.x A portion of the image title string is now included in the "delete image..." message when the verify option is enabled. (4/20) sys/gio/cursor/gtr.h Increased the default max graphics frame buffer from 64K to 128K. (4/20) unix/hlib/login.cl unix/hlib/zzsetenv.def Added a commented out entry for "imtype" to the template login.cl. Added values for imtype, cmbuflen, and min_lenuserarea to zzsetenv.def. The values for imtype and cmbuflen are the same as the builtin defaults. The value for min_lenuserarea is temporarily set to 20K, until the real problem of image header truncation can be in the IMIO code. (4/20) pkg/proto/proto.cl pkg/proto/proto.men pkg/proto/proto.hd pkg/proto/x_proto.x pkg/proto/mkpkg pkg/proto/wcsreset.par pkg/proto/t_wcsreset.x pkg/proto/doc/wcsreset.hlp A new task wcsreset has been added to the proto package. (4/21 LED) sys/gio/glabax/glbfind.x GLABAX now uses a different, hopefully better algorithm for determining the spacing of the minor ticks (formerly the tick spacing algorithm used was the same as used for the major ticks). As before, NMINOR is used as only a starting point for the automatic algorithm. It is now possible however to disable the automatic algorithm by giving a negative NMINOR, in which case exactly abs(nminor) ticks will be drawn. (4/21) sys/fio/vfntrans.x The code in the vfn_translate routine which recognizes subdirectories was not sufficiently discriminating about "." and "..", and would treat . prefixed files as subdirectories during translation. (4/21) sys/fio/fntgfn.x Modified the file template code to check for a leading "." in the pattern string and automatically enable listing of the hidden files in a directory in this case. (4/21) pkg/proto/proto.cl pkg/proto/proto.men pkg/proto/proto.hd pkg/proto/x_proto.x pkg/proto/mkpkg pkg/proto/wcsedit.par pkg/proto/t_wcsedit.x pkg/proto/doc/wcsedit.hlp lib/scr/wcsedit.key A new task wcsedit has been added to the proto package. (4/22 LED) unix/os/zfiotx.c In a normal raw mode read the terminal driver has interrupts enabled, but catches any interrupt occuring during a read and maps it into 003. This approach doesn't work for nonblocking raw mode reads because since reads don't block, the driver spends only a miniscule amount of time in the ZGETTX read code. This would cause interrupts to abort a task doing nonblocking raw mode reads. The fix was to have the driver put the terminal into true raw mode, with signals disabled, when nonblocking raw mode is in effect. This applies to suspend as well as interrupt. (4/22) sys/imfort/db/imputd.x sys/imfort/db/mkpkg The double precision value could be truncated in some cases when copying the formatted string into the 20 char value field. Modified (like imio/db/imputd.x) to use a loop, decreasing the formatted precision until the value fits. (4/22) -------------------------- "Final" V2.10.0 beta generated. After this only minor bug fix type changes will be made. pkg/images/register.par pkg/images/geotran.par pkg/images/doc/register.hlp pkg/images/doc/geotran.hlp Changed the default values of the parameters xscale and yscale in the register and geotran tasks from INDEF to 1.0 (4/23 Davis) pkg/images/geometry/t_imtrans.x Modified the imtranspose task to pick up the axis map and copy it to the wcs of the output image. (4/23 Davis) pkg/images/geometry/t_blkavg.x pkg/images/geometry/t_blkrep.x Modified the blkrep and blkavg tasks to set axbits explicitly in the calls to mw_shift and mw_scale. Axbits set to 0, meaning all axes, was producing a "singular matrix" error from mwcs. (4/23 Davis) unix/os/zgtenv.c A link of an IMFORT program using V2.10 IRAF, compiled on a 4.1.1 system, would fail with an ld: Undefined symbol _tolower on a 4.0.3 system. This is actually the second time I have run into this problem. It is caused by SunOS changing tolower from a macro to a library routine in 4.1. The problem was avoided by changing the iraf code to define a macro to_lower which is used instead. (4/23) dev/imtoolrc dev/graphcap Added new imt entries for Nigel's Solitaire formats. These are named imt17|imtssy and imt18|imtssn for resolutions of 1008x648 and 1024x680 respectively. Also added to gemini, ursa and orion. (4/23 MJF) pkg/images/geometry/t_imslice.x Modified the imslice task to read the old and write a new axis map. (4/23 LED) pkg/images/geometry/t_imstack.x Modified the imstack task to read the old and write a new axis map. (4/23 LED) pkg/cl/grammar.y When scan from a pipe was used in a procedure script the scan would not write into a parameter belonging to the procedure calling scan. This was happening because except for the call by reference arguments, scan is implemented as a CL task. The usual parameter search order would apply, i.e., task (scan), package, cl, hence the parameters for the task calling scan would not be seen. This could be gotten around by referencing the parameters as task.pname, but this should not be necessary. It was necessary to change the cl compiler to convert names such as "param" to "task.param" when compiling scan statements (scan as a task). This is only done if no task or package name is given and the current task's pset includes the named parameter. (4/26) dev/hosts Corrected the loden entry and updated the khaki entry (it's now a sparc) for Rich Reed on tucana, gemini, and ursa. I had fixed the loden entry previously (4/7). It must have been clobbered somehow in the last three weeks. (4/27 RLS) dev/termcap dev/graphcap Added contributed entries for the HP LaserJet III series printers. These entries are known to work but given the variety of PostScript cartridges available may need some adjusting. Included in 2.10 because the HP sgi translators are now distributed. (4/27 MJF) pkg/dataio/fits/fits_read.x Modified rfits to use the tapecap fe parameter if present and greater than 0 to skip to EOF. (4/27 LED) sys/mtio/mtio.h sys/mtio/mtcache.x sys/mtio/mtcache.com The symptoms of the bug fixed here were as follows: when testing the fixed block cartridge drive, mtexamine and rfits make+ would work fine, but rfits make- would fail with a read error. The failure would only occur the second time the task was run, on the tenth file, and only when diagnostic output was enabled. The read error was occurring because, for some reason, the read request being issued by IRAF was not a multiple of the device block size for this fixed block device. It took about 5 hours to track this one down as it took a while to find a repeatable test case (I used LOGIPC), and the actual bug was far removed from the read error seen during testing. What was happening was that the 1) the read error was due to a read request not a multiple of the device block size, 2) the bad read request was due to a device open with no tapecap information (the driver actually works in this case, using all the builtin defaults which are correct for most variable block UNIX devices), 3) the lack of tapecap information was due to an invalid string pointer passed to the zopnmt routine at open time, 4) the bad pointer was due to the real GTY pointer being clobbered by a bug in the mtcache code. The entire MTIO descriptor was being cached, including the runtime fields as well as the positional fields. When a cached entry was recalled the GTY pointer stored in the descriptor would be overwritten. Since the cache is updated in the first open following task invocation the cached values for the runtime fields would normally be valid and no error would be seen. (4/29) pkg/proto/doc/suntoiraf.hlp Replaced the suntoiraf help pages with an updated one. (4/30 LED) unix/boot/spp/xc.c If a library specified as -lname does not resolve to an iraf library (i.e. it is a host library) the library will now be searched after the iraf libraries are linked, rather than at the location of the -lname in the link line. This allows searching of special host libraries after the iraf externals have been generated and before the standard Sun libraries libc, libm, etc. are searched. If the old behavior is desired it can be achieved by using a reference of the form libname.a in place of the -lname. (4/30) unix/shlib/mkshlib.csh Modified to link against -lresolv, if such exists, when building the iraf shared image. This allows the statically linked iraf executables to use the name server. By default only SunOS executables which are dynamically linked use the name server. The -lresolv code will fall back on the /etc/hosts file if the name server does not respond, so this should be safe. (4/30) dev/hosts Added kingfisher (aliased as 'kingfishe') to hosts file on tucana, orion, gemini and ursa. (4/30 MJF) unix/hlib/mkiraf.csh Updated the terminal type prompt slightly. (4/30) unix/hlib/irafuser.csh Disabled the -Bstatic option for linking the HSI executables. This causes f68881_used undefined error messages from the linker on a Sun-3 (but it is ok on a sparc). (4/30) dev/wpix.imh + Added a second version of the test image dev$pix called dev$wpix. This is dev$pix with a WCS in the image header. To save space, both image headers point to the same pixel file. (4/30) unix/hlib/motd unix/hlib/login.cl unix/hlib/zzsetenv.def pkg/cl/cl.par Changed IRAF version to V2.10EXPORT. (4/30) -------------------------- Built initial V2.10EXPORT distribution files and began testing of same. V2.10EXPORT was installed from the network archive on ursa, orion, and several mountain nodes to check with problems having to do with how the distribution was built. (4/30) local/.login 1. Commented out the "setenv TERM sun". This was getting pretty annoying as I usually use an xterm. Better to let the login inherit the terminal type. 2. Added a set prompt statement for a "iraf@hostname% " type prompt. 3. Made the "setenv iraf" a bit smarter. iraf is still set to a constant value, but the file now checks to see if $iraf exists and if not sets $iraf to `(cd ..;cwd)`/. The constant value is still desirable to allow use of symbolic directory links. (5/02) unix/os/zzstrt.c Modified this routine to map the data and bss sections of the iraf shared image with execute permission. There are cases where the Sun compilers can generate executable code in the data segment. Old Sun hardware does not implement hardware checking for execute permission, but some of the new hardware does. This was causing a routine (iraf networking using the name server library, which is linked -pic) to fail on a new Sun multiprocessor system which would execute fine on older hardware. (5/02) unix/bin.sparc/gterm.e unix/bin.sparc/imtool.e Rebuilt these executables under SunOS 4.1.1. The versions built under 4.1.2 would cause shared library version older than expected warning messages when run on a 4.1.1 system. (5/02) (It is not necessary to do this for the bin.mc68020 versions since our Sun-3s are still all running 4.1.1). unix/hlib/install 1. Smartened up the code used to guess the iraf root directory. It now looks for /iraf/iraf before /iraf in the "pretty name" section (needed to support symbolic links). When all done, it checks to see if the directory actually exists and if not sets the value to (cd ../..;cwd) instead, assuming install is being run from $iraf/unix/hlib. This latter feature also has the effect of ignoring an incorrect value of $iraf set before running the install script. 2. Added a "set hlib = " to the "Set the BINDIRS" section. An old value of hlib set when install was run would otherwise be inherited ignoring the new value of $iraf set in the script. (5/02) sys/imfort/imflsh.x The integer function bfflsh was being called as a subroutine with the wrong number of arguments. (5/02) -------------------------- Performed a sysgen to pick up the zzstrt.c change above, and rebuilt the distribution files. (5/02) unix/hlib/install Added a $iraf relative definition of $host, since this is used in the MODEFILES definition but is not defined in the script, hence would be inherited from outside, possibly with the wrong value. (5/03) unix/os/zfioks.c Fixed a minor bug in the new zfioks code. If client authorization fails (as when one has different authorization codes in .irafhosts files on different nodes) the driver is supposed to shutdown the old in.irafksd daemon and start another one via rsh for the new authorization code. This was failing as a status value was not being cleared before doing the rsh. The rsh would succeed but then the client would see a bad status and give up (unnecessarily), falling back on a password prompt and rexec call to make the connection. It was actually working due to the redundancy in the driver, but due to the bug one would get the unnecessary password prompt for the rexec. (5/04) dev/tapecap Fixed a typo (wrong device entry) in the mtst1.qic-24 entry. (5/05) unix/os/zfmkdr.c This routine was missed a while back when the UMASK support was redone. (5/06) dev/tapecap The entries for the QIC drives were modified to fix a problem where, e.g., every other file on a tape would be read in an operation such as rfits. Currently the :se capability is only enabled for the QIC drive on ursa, since this appears to be needed only for the ST driver bug seen on this system. The fb#2000 capability (which avoids file skip operations which cause problems on the QIC drives due to (I think) buffered data being lost) is more generic and harmless so I moved that to the generic device entry. (5/07) sys/imio/iki/ikiopen.x sys/imio/iki/ikiinit.x sys/imio/iki/ikildd.x sys/imio/iki/iki.h IKI was modified to add a flag word for each driver which can be used to note IKI level characteristics of the different image kernels. This was used to flag that the QPF driver cannot write to or create QPOE images. In a new copy operation, iki_open will not automatically preserve the image type if the read-only flag is set for the input image type. Hence, in a new copy of a QPOE image, the type of the new image will be controlled by the imtype environment variable rather than trying to make a .qp image. For other images types a new-copy operation will preserve the image type as before. Explicitly giving the image extension for a new image always forces that type of image to attempt to be created, whether it can be created by the image kernel or not. (5/07) sys/imio/iki/stf/stfhextn.x This bug was unrelated to the above change but was found during testing (in fact it has been there for years). In v2.10, "imtype" is set by default, with value "imh". In an imcopy operation such as imcopy foo.hhh foo2 the output image preserves the image type of the input image, i.e., an STF image is created. What was happening was that an STF image was being created named "foo2.imh", since imtype was set to "imh" and this is a legal STF image extension. I hacked stfhextn.x to ignore imtype if set to "imh". (5/07) pkg/dataio/fits/fits_wheader.x pkg/dataio/fits/mkpkg Modified the wfits file format message to include a "blkfac=xxx" field. The xxx is the blocking factor for variable blocked devices, and the string "fixed" for fixed block devices. (5/07) -------------------------- Rebuilt distribution files. (5/07) dev/hosts Added 'dynamo' to orion, gemini, and ursa. Primary name is 'dynamo.kpno.noao.edu' since this is all it responds to, but made an alias named 'dynamo'. Not added to Tucana while release being worked on, I'll do it later. (5/8/92 MJF) dev/termcap Made an entry for the machine in Pat Osmer's office, lw8, on gemini, ursa, and orion. Added to Tucana by JB. (5/8/92 MJF) unix/os/zfiomt.c 1. Changed the builtin defaults for the maximum and optimum record sizes to 64512. This is a more conservative value, smaller than the original defaults (maxrec was previously 65535), hence less likely to cause a read error. The builtin defaults are overridden in most tapecap entries but will be used in user-written tapecap entries which do not set maxrec/optrec explicitly and are likely to rely heavily on the builtin defaults. The value 64512 is the largest multiple of 1024 less than 65536, and is the minphys value in SunOS. On some devices a read request larger than this value cannot be serviced and will result in an i/o error. 2. The maxrec value set in tapecap was not being used for file positioning where the driver searches for EOT by skipping a file and reading a record to check for EOT (a read after a fsf which returns zero signals EOT). On some devices the large read request could cause the read operation to return an error. 3. If a nonzero maxrec value is set, the driver now guarantees that optrec will not be greater than maxrec (this was not necessary since MTIO does this anyway, but it seems advisable to apply the constraint). (5/28) pkg/images/tv/wcslab.par pkg/images/tv/wcslab/doc/wcslab.hlp Changed the default value of the fill parameter from no to yes. (LED 5/29) pkg/xtools/doc/inlfit.hlp The xtools inlfit help was not hooked up due to a bug in the inlfit help page. (LED 5/29) pkg/images/doc/imstat.hlp Fixed a bug in the definition of variance in the imstatistics task help page. (LED 5/29) sys/mtio/mtio.h Changed the magtape lock file directory from uparm$ to tmp$. Storing the lok (magtape position) files in uparm causes problems if the user starts up two concurrent CLs with different uparms, and then tries to command the same device from both CLs. Since they would have different uparms they would have different copies of the lok file for the device, and MTIO could get confused about the tape position. Years ago, in the early days of MTIO the lok files were moved to uparm to avoid multi-user problems (see below), but the multi-user problem is tractable and less of a problem than the concurrent-CL problem dealt with here. (5/29) pkg/system/x_system.x pkg/system/mkpkg pkg/system/system.cl pkg/system/mtclean.x + pkg/system/mtclean.par + sys/mtio/mkpkg sys/mtio/README sys/mtio/mtclean.x + Added a new (hidden) system task called MTCLEAN. This is called at CL startup time to delete old magtape lok files. Previously the login.cl file would delete these files using "delete uparm$mt*.lok". This approach is no longer discriminating enough however, when the lok files are stored in tmp$ which is a public directory. The MTCLEAN task is like "delete uparm$mt*.lok" except that it leaves a lok file alone if it belongs to a different user who currently has the drive allocated. If the lok file is for a device which is not currently allocated it is unconditionally deleted. If the lok file belongs to the current user it is deleted only if it is "stale", i.e., older than a certain interval (currently one hour, and a parameter default). It is harmless to delete lok files in the sense that MTIO will automatically recover (by rewinding the tape) if the lok file is lost, so it is safest to err on the side of occasionally deleting a lok file which is current. However, this will only happen if the user has not allocated the drive and someone starts up a CL, or if someone using an allocated drive starts up a second CL and the lok file is older than the "stale" threshold. (5/29) unix/hlib/motd unix/hlib/login.cl pkg/cl/cl.par Changed the login.cl version string to force a mkiraf to pick up the "mtclean" addition. This was done by adding a "revision 1" to the logver string. (5/29) pkg/obsolete/doc/imtitle.hlp pkg/obsolete/doc/mkhistogram.hlp pkg/obsolete/doc/radplt.hlp pkg/obsolete/doc/oimcombine.hlp Added a "USE INSTEAD" section to the help pages for the obsolete tasks. (5/29 LED) pkg/system/doc/rewind.hlp Added some comments on the "initcache" parameter to the help page for the REWIND task. (5/29) dev/tapecap Added support for the HP DAT drive under the ApUNIX driver. (6/03) unix/hlib/clpackage.men At Bob Hanisch's request changed "obsoleted tasks" to "obsolete tasks" so that stickers for obsoleted grammar won't cringe when reading this menu. (6/19) unix/hlib/login.cl Several minor changes were made to the template login.cl over the past couple of weeks. 1. The "stty xterm" statement in if(envget("TERM")=="xterm") was changed to "stty xterm nl=44". Since xterm does not have a screen size sense query (like gterm) we can't set the screen size correctly, but it is better to set a small wrong value than a large wrong value like the termcap default of 65. 2. Added an if(deftask("mtclean")) to prevent mtclean from being called if it isn't defined, i.e., when running irafo=v2.9. 3. Moved the cl<loginuser.cl to after the user package task definitions, to allow the user to override these definitions in their loginuser.cl file. (6/20) pkg/plot/t_pradprof.x The new pradprof task was using the file name template expansion routines instead of the image name template expansion routines producing an error if the input image name was an image section. (6/23/92, Davis) pkg/images/imutil/imcopy.x Modified imcopy to write its verbose output to STDOUT instead of STDERR. (6/24/92, LED) sys/mwcs/wfmspec.x Fixed a logical error affecting computation of the inverse transformation. This could cause DISPCOR (resampling to linear coordinates) to fail in some cases. (6/24) dev/imtoolrc Updated the comments section slightly. (6/24) sys/gty/README Updated gtyopen entry. (7/3) doc/newsfile Added the V2.10 revisions summary to the newsfile. (7/4) doc/v210revs.ms + Archived the V2.10 revisions summary document source. (7/5) doc/suniraf.ms Installed an updated version of the Sun/IRAF installation guide. (7/5) doc/sunsmg.ms Installed an updated version of the Sun/IRAF site manager's guide. (7/7) -------------------------------- V2.10.0 (patch0) generated. (7/07) dev/hosts Added a new machine, piscis, to hosts file. Also added on Gemini, Ursa, and Orion. (7/9 MJF) local/login.cl Updated to V2.10.0 revision 1. The SOS4 distribution (patch0 and as.sos4) was updated to pick up this change. (7/09) unix/hlib/motd Updated version to 2.10.1DEVELOP. (7/15) doc/suniraf.ms Fixed a typo: "cat /path/nb.sos4.spc/[ib].*" (ib -> nb). (7/17) pkg/plot/t_implot.x Changed an incorrect real array index to an int. (FV 7/21) unix/shlib/mkshlib.csh Modified to not link the shared image with -lresolve on a 386i. (7/21) pkg/images/filters/t_gauss.x An incorrect convolution kernel was being computed in the case theta=90.0, 0. < ratio < 1.0, and bilinear=yes, because the sigma argument were not being correctly entered into the routine which computes the gaussian function in that case. (7/23 LED) pkg/math/nlfit/nlfit.gx pkg/math/nlfit/nliter.gx Due to precision problems the nlfit code can go into an infinite loop if convergence is slow and the tolerance is set low. Added some checks to trap this condition (7/24 LED). dev/hosts Added benhur (Ron Probst's Sun) to the hosts files on tucana, orion, gemini, and ursa - this is not a new machine but it must have slipped through the crack during the v2.10 upgrade. (7/24 jvb) -------------------------------- IRAF V2.10.1 (patch-1) released. Tucana system version number incremented to V2.10.2 (7/24) lib/finfo.h 1. This file contained a series of defines FI_[RW]OWNER etc. giving the bit *number* (1, 2, 3, etc.) for the file permissions bitflags. Bitflags are preferable and more conventional so I added a parallel set of statements FF_[RW]OWNER, FF_[RW]GROUP, etc., defining the bitflags. 2. Two new file permissions flags FF_RDLOCK and FF_WRLOCK were added. These are normally zero (as before) but can be set by the zfinfo kernel routine to indicate that a temporary read or write lock is in place on the file. (7/24) sys/fio/fwtacc.x The routine had a number of problems. It was rewritten to use the new FF_{RD|WR}LOCK flags returned by zfinfo to determine whether a temporary lock is preventing access to a file. The "wait for access" will occur only if "filewait" is enabled in the environment and a temporary lock is in place on the file. This should fix the bogus "waiting for access to file" messages we have been seeing occasionally. (7/24) sys/gty/gtyopen.x sys/tty/ttyopen.x The code which scans along looking for the `:' character when expanding ":tc=device:" fields could run off the end of the string if the : character was missing. Added checks for beginning of string and EOS. (7/28) pkg/images/imfit/t_imsurfit.x Fixed a bug in the section reading code. Imsurfit is supposed to switch the order of the section delimiters in x and y if x2 < x1 or y2 < 1. Unfortunately the y test in the code was if (y2 < x1) instead of if (y2 < y1). Whether or not the code actually works correctly depends on the value of x1 relative to x2. This bug was not present in 2.9.1 but is present in subsequent releases. (7/30 LED) mkpkg noao/mkpkg Added a means to set the spoolfile name to the "mkpkg summary" function of the package root mkpkg file. One can now generate the summary with a command such as mkpkg summary spool=filename to cause the sumary to be generated from file "filename". (8/03) sys/osb/ieee.gx sys/osb/ieeer.x sys/osb/ieeed.x unix/as.sparc/ieee.gx unix/as.sparc/ieeer.x unix/as.sparc/ieeed.x unix/as.mc68020/ieee.gx unix/as.mc68020/ieeer.x unix/as.mc68020/ieeed.x unix/as.i386/ieee.gx unix/as.i386/ieeer.x unix/as.i386/ieeed.x 1. There was a (normally) harmless bug here in that the real and double versions of the ieenan common had the same name, i.e. were shared. There are now separate ieenanr, ieenand commons. 2. The code which detects a NaN uses the technique of equivalencing an integer array of length 1 (real) or 2 (double) to the floating value so that a bitmask can be used to check for the NaN exponent (here NaN actually means any non-finite IEEE value). On most systems the exponent for a double will be in the first integer of the 2 element array, but on a 386i (Intel) the second longword is used. The code was modified to parameterize this offset and flag it as machine dependent. (8/15) unix/hlib/mkpkg.sf.I386 1. Added entries for the i386 versions of ieeer.x, ieeed.x. 2. Set up mwcs$wftan.x to be compiled with no optimization. The optimized version of this routine returns a garbage value for the declination (it calculates it correctly but the code which outputs the value to the w[] output array is incorrect). (8/16) pkg/cl/pfiles.c When pfileload is called to load the parmeters for a pset task the parameter file name assigned to the pset can come from the pset parameter of a running task which uses the pset. Hence, pfileload scans the task descriptors on the task to see if any reference the pset. The "newtask" pointer, set during task startup, was being used to start the scan of the control stack containing the task descriptors. This could fail in some circumstances as newtask is an invalid pointer except when a new task is being initialized. (8/17) This problem was an interesting case study in debugging techniques. I at first tried to use dbx on this problem; this is normally desirable with CL problems due to the lengthy procedures common in C code. This was on the Sun 386i where the problem was seen. I had a lot of trouble getting dbx on the 386i to use the source files, even though the files were compiled -g. Eventually it became clear that dbx will not permit source code debugging on the 386 if the iraf shared image is used (there is no such problem on the other Suns). Source code debugging would work if the process was linked -z. Of course, then the problem went way. The 386i is very slow so by the time I determined that I was wasting my time I had wasted 2 hours. Looking at the problem with adb, I found the problem within 20 minutes. pkg/images/filters/mkpkg pkg/images/filters/t_fmedian.x pkg/images/filters/fmedian.x pkg/images/filters/fmd_buf.x pkg/images/filters/fmd_maxmin.x The fmedian task could crash with a segmentation violation if image pixel to integer mapping was turned off (hmin = zmin and hmax = zmax) and the input image contained data outside the range defined by zmin and zmax. Added calls to amink and amaxk for integer images and a call to amapr for floating point data to protect against out of bounds data. (8/18/92, Davis) sys/imio/iki/qpf/qpfwattr.x Modified to return INDEF as the value of the integral over an attribute range list, if no range list is defined or either or both ends of the range are open. (8/18) sys/mwcs/mwsaveim.x The expression "if (ndim == 1 || (ndim == 2 && ...))" was incorrect as the ndim==2 case contained references to CD matrix elements that might not contain valid floating point values in the case of a 1 dim wcs. (8/18) pkg/images/imutil/imcopy.x Added a call to flush after the verbose status output so the the output will appear immediately on the terminal. (8/19 LED) unix/os/zxwhen.c Added some #ifdef i386 code to reenable the floating point exceptions following such an exception. On the other Sun systems this is automatic, but on the 386i it has to be done explicitly. (8/20) Note 8/21 - the above fix works fine under the debugger, but there are still problems trapping repeated floating exceptions when a 386i process executes normally. There are no such problems on any of the other Suns (the interface is the same) so this tends to indicate a problem with the 386i. dev/termcap dev/graphcap Added entries for Kermit terminal emulator supplied by Pat Seitzer. The termcap entry is for MS Kermit 3.0 in VT320 mode; graphcap for Kermit3.10 and CGA or VGA display. (8/20 ShJ) unix/os/zfiomt.c 1. The "ue" option (update-eot, or force search for EOT) was not working correctly - it had never been used until recently. 2. The "ow" option (overwrite EOF) was tested and optimized. (8/20) sys/fmtio/dtcscl.x This routine scales a double floating value to determine its mantissa and exponent when printing the number. For numbers smaller than .1 this is done as follows: while (v < 0.1d0) { v = v * 10.0d0 e = e - 1 The problem with this seemingly simple piece of code is that if V is an IEEE subnormal value and IEEE underflow-to-zero is enabled, any arithmetic operation on V will return a zero. Hence, even though V is nonzero to start with, V * 10 returns zero. If V underflows to zero the code segment above will enter an infinite loop. To fix this a test for v==0 was added to the loop to check for underflow. On machines which have good hardware support for IEEE floating computations involving subnormals the best thing to do is to NOT underflow to zero, but rather to retain the subnormal values. This increases the precision of floating point computations in small number arithmetic. On some systems however, underflow (or inexact) requires a trap and recomputation in a trap handler to produce the correct IEEE result, and this can be very inefficient. As an example, In the case of Sun/IRAF we currently have underflow to zero enabled due to the expense of recomputation for the ffpa and some early sparc systems. Suns with these processors will silently underflow to zero. Some other Sun systems do not employ recomputation of subnormals and these systems ignore the request to underflow to zero, returning a valid IEEE subnormal instead. This includes the 386i and some sparc based systems (different sparc systems have different floating point units). Hence, the behavior of systems even within the Sun product line will vary in the way subnormals are treated. (A subnormal is a number smaller than about 1.175e-38 for real and 2.225e-308 for double). (8/21) sys/gio/fpnormd.x sys/gio/fpnormr.x These routines (called by fp_equal[rd]) scale floating point numbers in a way similar to dtcscl.x, above. In principle they could be subject to the same problem with underflow to zero and infinite loops, so I added a check for underflow to these routines as well. (8/21) unix/os/zfioks.c 1. Fixed a byte swap bug in the server side code that was preventing it from constructing the network address properly to call back the client. This affected only the "little-endian" machines, such as the decstation and 386i. 2. Changed the default value of MAXCONN from 0 to 1, since that is probably what it should be anyway (I think I got the 0 out of someone else's code). (8/21) unix/os/tape.c Will now increment the file number at close time after writing a file to tape. (8/21) dev/hosts Added kale (Bruce Bohannan's d/t Sun) to the hosts files on gemini, ursa, orion, and tucana. (9/3 jb) unix/os/tape.c 1. Increased the maximum i/o buffer size to 262144 and changed the default read request size to 64512. 2. Added a "seek" command, for testing i/o to devices that respond to a seek request. "seek" to report the current offset, seek nnn[bkm]" to seek to the given block, kilobyte offset, or megabyte offset. The block size is whatever was used in the last read request, or 64512 at program entry. (9/07) sys/osb/zzeps2.f Added an alternate version of the machine epsilon computation program which may avoid problems seen on some systems with excess precision due to the epsilon value being accumulated in a register. (9/10) sys/imio/imaccess.x Was failing to strip off the ksection before calling iki_access. Modified to treat a ksection similarly to an image section, i.e., immap is called to test for the existence of the object specified by the full notation, if a section or ksection is given. (9/11) doc/unixsmg.ms Installed a new version of the UNIX/IRAF Site Manager's Guide, newly updated for V2.10. (9/13) doc/irixiraf.ms + doc/dsuxiraf.ms + doc/vxuxiraf.ms + Installed new SGI IRIX, Decstation Ultrix, and VAX Ultrix Installation Guides. (9/14) dev/hosts Updated the lapis entry on gemini, ursa, orion, and tucana. (9/14 RLS) unix/as.vax/ieeer.s unix/as.vax/ieeed.s Updated to the V2.10 versions. (9/21) unix/as.rs6000 + Added the rs/6000 version of this directory. (9/21) unix/os/zgtime.c The expression that converts the cpu time from clock ticks to msec could result in integer overflow for very large numbers. Restructured the code to avoid this problem, while preserving the maximum precision for small numbers. (9/22) unix/hlib/libc/knames.h Added a #define for zzstmt. This should be there, but though missing did not cause a problem as no C code currently uses ZZSTMT. (9/22) mkpkg Merged in changes for DSUX, AIX3. (9/23) lib/plio.h The definitions for I_DATA and I_OPCODEMASK were modified to coerce the macro argument to int, to avoid a short/int type clash when the macro is called with a short integer argument. (9/23) noao/lib/mkpkg.inc noao/lib/mkpkg.sf.DSUX - noao/lib/mkpkg.sf.DDEC + noao/lib/mkpkg.sf.DMIP + noao/lib/mkpkg.sf.AIX3 + Merged in mkpkg support for DSUX and AIX3. (9/23) pkg/images/tv/display/iisofm.x Added the int in "y[i] = max (int(y[i])," to fix a short/int type clash. (9/23) pkg/images/tv/iis/ids/idsinit.x pkg/images/tv/iis/iism70/iissplit.x pkg/plot/t_gkidir.x More fixes for short/int type clashes. (9/23) sys/gio/gki/gkiclose.x In "call zcall2 (epa, Mems[gki+GKI_CLOSEWS_D-1], n)", the gki pointer was missing. (9/23) sys/gio/ncarutil/autograph/agdash.f sys/gio/ncarutil/autograph/agdflt.f sys/gio/ncarutil/autograph/aglbls.f sys/gio/ncarutil/autograph/agsetp.f Several declarations of the form CHARACTER*504 in these files were changed to CHARACTER*500. The Fortran compiler on AIX does not allow character variables longer than 500. IRAF does not use any of the NCAR autograph code anyway. (9/23) sys/imio/imsetr.x In the two statements IM_PLFLAGS(im) = or (IM_PLFLAGS(im), PL_RLIO) IM_PLFLAGS(im) = and (IM_PLFLAGS(im), not(PL_RLIO)) the second "(im)" was missing. (9/23) sys/mwcs/mwtransd.x Changed the expression "* -ltv_1[i]" to "* (-ltv_1[i])". The AIX compiler did not like this expression. (9/23) sys/plio/pllrop.x sys/plio/pllsten.x sys/plio/plp2l.gx sys/plio/plr2l.gx Same thing, placed parens around the -dv in "M_DH + -dv". (9/23) sys/plio/plp2l.gx sys/plio/plr2l.gx Had to add an int to "and (int(pv), I_DATAMAX)" to avoid a short/int type clash. (9/23) sys/plio/plrrop.gx Added an "int" to fix three cases of short/int type clash. (9/23) sys/qpoe/qpiomkidx.x Added an int to fix a short/int type clash. (9/23) sys/vops/fftx.f This routine contained a declaration "x(2), y(2)" where the arrays X,Y are of arbitrary length. Later on in the code the third and fourth elements of each array were referenced and this caused a compiler message about an incorrect constant array subscript. Changed the declaration to "x(*), y(*)". (9/23) unix/gdev/iism75/zrdm75.x Added an int to fix a short/int type clash. (9/23) unix/hlib/libc/kernel.h unix/os/zgtime.c Changed the #define name "HZ" to "CLKFREQ" to reduce the probability of a name clash, as happened on the RS/6000. (9/23) math/bevington/legfit.f This file, unmodified since 1985, had the character ^? at the end of line 77, which is a comment line. Evidently most compilers ignore comment lines, but the VMS-5 Fortran compiler didn't like this one. (9/24) sys/osb/strupk.c This routine was calling the C strlen(), which was an inadvertent interface violation (VOS code bypassing the kernel and using host facilities. This caused a link failure on VMS/IRAF, after the str routines in the VMS/IRAF kernel were renamed to avoid name collisions with host library routines (hence strlen was no longer in libos.a). The routine was rewritten to use a for loop instead of strlen. (9/24) dev/hosts Added a stis1 entry on gemini,ursa & tucana for Rich Reed. (10/1 RLS) pkg/images/imarith/t_imcombine.x pkg/images/imarith/icaclip.gx pkg/images/imarith/iccclip.gx pkg/images/imarith/icgrow.gx pkg/images/imarith/iclog.x pkg/images/imarith/icombine.com pkg/images/imarith/icombine.gx pkg/images/imarith/icombine.h pkg/images/imarith/icpclip.gx pkg/images/imarith/icscale.x pkg/images/imarith/icsclip.gx pkg/images/imarith/icsetout.x pkg/images/imcombine.par pkg/images/doc/combine.hlp The weighting was changed from using the square root of the exposure time or image statistics to using the values directly. This corresponds to variance weighting. Other options for specifying the scaling and weighting factors were added; namely from a file or from a different image header keyword. The \fInkeep\fR parameter was added to allow controlling the maximum number of pixels to be rejected by the clipping algorithms. The \fIsnoise\fR parameter was added to include a sensitivity or scale noise component to the noise model. Errors will now delete the output image. (9/30/92, Valdes) unix/hlib/extern.pkg On Gemini, added definitions for the ccdacq package as mounted from Ursa. (10/5 RLS) dev/hosts Modified a number of these hosts files on different CCS Suns and IRAF development systems to establish and check IRAF networking to/from felis. (10/5 jb) unix/os/zfioks.c A new connect protocol has been added to iraf networking called rexec-callback. This is a variation on the rexec protocol. Rexec is used to start up the remote kernel server as before, but instead of communicating via the rexec stdio stream to the remote process, the server calls the client back on a private socket set up by the client. This ensures a direct socket connection, which is not always guaranteed when using the rexec stdio streams. For example when using rexec to start up a kernel server on a VMS host running Multinet, the stdio streams are routed through a VMS mailbox on the VMS side. This fails due to lost data resulting from the mailbox being too small, and would be inefficient even if it worked. The rexec-callback connect protocol is enabled in the .irafhosts file entry for a node (since this is where protocol selection currently occurs for rexec vs. rsh). To enable the rexec-callback protocol, one adds the string "rexec-callback" after the password field for a node, e.g., robur : <username> <password> rexec-callback A number of related changes were made to the VMS/IRAF networking driver, which is new for V2.10. These are documented in the VMS/IRAF upgrade notes file. (10/06) [NOTE - the way the rexec-connect protocol is enabled was changed; see the entry for zfioks below. 10/11] sys/mtio/mtlocknam.x The magtape lock file name is now constructed as "node!tmp$mtxx.lok" rather than "tmp$mtxx_node.lok", causing the lock file to be maintained on the same node as the drive itself. (10/07) sys/ki/kienvreset.x This routine is called to propagate runtime changes of environment variables to remote iraf kernel servers. It was passing all variables, but was modified to filter out redefinitions of the host-specific variables "iraf", "host", and "tmp". This is necessary as these variables may have different values on different hosts. It is also needed to be consistent with kiopenks.x. (10/07) unix/boot/bootlib/tape.c unix/boot/rtar/rtar.hlp unix/boot/wtar/wtar.hlp Replaced RTAR and WTAR by new versions updated for V2.10 magtape i/o. The old versions read the dev$devices file to map iraf device names like "mta" to the corresponding host device names. In V2.10 the tapecap file replaces the devices file, and the tapecap file format is too complex to be worth parsing in a HSI utility, so in V2.10 host magtape device names such as "/dev/nrmt8", "MSA0" etc. must be used with RTAR and WTAR. The VMS/IRAF versions of these utilities now restore file dates properly, provided the VMS logical name IRAFGMTOFF is defined correctly (see the VMS notes file for the details). (10/10) sys/ki/ki.h sys/ki/kiconnect.x The dev$hosts file now supports two types of host entries, "connect" entries and "route" entries. A connect entry is what we have always had, e.g. ursa u : ursa!/iraf/iraf/bin.sparc/irafks.e A route entry is an entry such as that for node "draco" below: robur : robur!irafks draco : @robur!draco another use is for logical node names, e.g., lpnode : @ursa A route entry is denoted by the character `@' as the first character in the server command field. In a reference to a network object such as "node!foo", if node is defined as "@bar", the string "node" is replaced by "bar", i.e., by whatever follows the @, after which the network object name is rescanned. For example, given the definitions for node robur and draco above, "draco!foo" and "robur!draco!foo" are equivalent references. IRAF networking will automatically map the former reference to the latter internally. This facility provides a simple static routing capability for IRAF networking, allowing connects to specific nodes to be routed through another node. This can be used, for example, to use a certain node as a gateway between different types of networks, such as tcp/ip and decnet. (10/11) unix/os/zfioks.c A number of features were added to the unix/iraf network driver. o The connect protocol may now be specified in the hosts file entry for a node. For example, robur : -rcb robur!irafks causes the rexec-callback connect protocol to be used to connect to node robur. The possible protocols are -rsh (rsh), -rex (rexec) and -rcb (rexec-callback), with the default being -rsh. (The "irafks" in the above example is a VMS symbol defined in the VMS/IRAF irafuser.com file, used to start the kernel server on a VMS node). o A new argument "-log <file>" is now supported on the irafks command line. Since the irafks command line is taken from the dev$hosts file in a normal client connect, the hosts file can be edited to turn on zfioks level debug logging. For example, tucana t : -log ks.out tucana!/usr/iraf/bin.sparc/... Any file can be specified, for example /dev/tty. If the -log argument is given before the node!cmd as in the example above, logging is enabled on the local node. If the -log argument follows the node!cmd, it is processed by the kernel server on the remote node and enables logging on that node. This is related to irafks level logging. irafks level logging is a feature that irafks has supported for some time. It is enabled by including "-d <file>" on the irafks command line. o The networking daemon for the in.irafksd daemon may now be started manually (normally it is started via a rsh command from a client during a rsh connect). For example, irafks.e in.irafksd <port> <auth> [timeout] would start the daemon on the specified port. Clients would have to specify the given auth code to connect to the port. The daemon executes with the UID of the calling process. Care should be taken to avoid security problems, e.g., this should be used only with "safe" accounts. Currently, commands such as sps, ps, etc. will show the full command line including the auth code so there is little security. When the daemon is started in this way the irafks.e will exit immediately, leaving the daemon running as a forked process. The daemon runs forever until killed, unless a timeout is specified. o Arguments such as "rexec-callback" are no longer supported in the .irafhoss file. Instead, this scheme has been generalized to permit any network parameter to be overridden for a particular node in the user's .iraf hosts file. The parameters that can be set are "port", "auth", "hiport", "timeout", and "protocol". These are all numeric parameters except "protocol" which should be specified as "rsh", "rex", or "rcb". For example, corvus : none none port=20000 auth=12345 would cause connects to node corvus to be directed to socket 20000 using the auth code 12345. The login name and password are not used when connecting to a running daemon, so they are given as "none" in the example. These changes should be backwards compatible with the V2.10.1 version of IRAF networking. In case it isn't obvious, the above changes combined with the enhancements to VMS/IRAF networking support (tcp/ip servers, runtime selection of either tcp/ip or decnet transport) allow connections to be made transparently to any VMS node running decnet, using a node running both tcp/ip and decnet (e.g. a VMS node running Multinet) as a gateway between SPAN and the Internet. For example, "type draco!login.com", where draco is a decnet node, given the hosts file configuration showed in the examples, would result in 1) "draco" being replaced by "robur!draco" causing the reference to be routed to node robur via rexec-connect, 2) robur passes the request to node draco via decnet. This requires a .irafhosts file on the gateway node (robur) since there is no way to respond to a password prompt from a kernel server running as a network process on a remote node. (10/11) unix/os/zmain.c Problems were encountered passing irafks commands such as -log or -rcmd to the irafks task when called as a standalone host process. This was because the IRAF zmain for unix/iraf was intercepting all `-' prefixed command arguments. The zmain was changed to filter out only those arguments it uses, e.g., -c, -C, -d <file>, and -w. For completeness a new flag -h (host process) was added. This is the same as calling the process with no arguments, i.e., it is the default. Unknown flags will no longer cause a usage message to be printed, instead they are just passed on to the iraf task. (10/11) pkg/cl/builtin.c The internal name clscan(), used to implement the CL scan() function, was changed to clscans() to avoid a name clash with the FMTIO routine clscan. This only happens on systems where Fortran and C externals share the same name space, and shared libraries are used. (10/12) pkg/system/references.cl Changed a couple of "uniq"s to "unique", which is the full name of the LISTS task used in the script. (10/12) pkg/cl/grammar.y The CL grammar was changed to give a higher precedence to the exponentiation operator than to unary minus. The former precedence was inconsistent with the Fortran expression syntax that the CL is supposed to emulate. (10/12) sys/ki/kbzstt.x This routine was calling zsttks (the status routine for the networking driver) with a fixed channel code of zero. This worked up until now as most iraf network drivers ignore the channel code in zsttks, but this is not the case with the new VMS/IRAF driver. (10/13) dev/graphcap Added entries for em4010vg (em4010 for VGA) and vwsregis (regis emulator for VWS 3.3 and later). (10/14) sys/gio/fpequalr.x sys/gio/fpequald.x These routines could fail when comparing small numbers to zero. For example, fp_equalr (1.0e-10, 0.0) would return false even though the numbers are equivalent to within the machine epsilon. This is incorrect given the definition of fp_equal, even though the numbers are in fact not equal. The routine would fail because zero is a special case: it cannot be normalized with fp_norm. It was necessary to add code to handle the special case of either input operand being exactly zero. (10/18) unix/os/zfiomt.c 1. Two new device capability switches were added. ":ce" means ignore the status of the close() system call when closing a device opened read-only. ":eo", used only in the VMS version of the driver, disables writing of the double tape mark at EOT when a tape opened for writing is closed. 2. The ":nf" parameter was modified to allow an integer value to be given. Without a parameter, ":nf" means rewind and space forward to backspace files on a tape, e.g., because this is faster than BSF. An entry such as ":nf#5" means do a BSF if the file is 5 files or less back, but if more files must be skipped do a rewind and space forward. This parameter is intended mainly to help optimize file seeks on slow devices like cartridge tapes. 3. The ":fc" parameter (device does a FSF on CLRO [close read-only]) was put in when the driver was written to accomodate some SysV systems but had never been tested. As it turns out, AIX is such a system and it was necessary to make minor changes. In particular, the OS does not always do a FSF - it only does this when the file is partly read. If EOF has been reached on the file (hence the tape is positioned to the first record of the next file) then the FSF is skipped. 4. I added a couple of zmtdbg calls during multifile skips to cause the file number to be updated more frequently, when using the status output feature. (10/18) pkg/proto/t_imcntr.x Modified the imcntr task to use image templates and to check for constant data. (10/27/92 LED) dev/termcap dev/graphcap Added "lwg", an HP IIIp LaserJet on Canopus, to these files on Ursa and Gemini at Frank Bull's request. (10/27/92 MJF) dev/termcap dev/graphcap Added entries for xgterm. (10/27) sys/libc/cenvget.c Changed envgets() to use ENVFIND rather than ENVGETS, so that the routine will detect the environment variable not found condition and return NULL in that case. (10/27) sys/gio/gks/gschup.x Changed the character up vector to be calculated as the nearest integer instead of just being truncated to an integer. (ShJ 10/29/92) dev/hosts Added BigX to the hosts files on tucana, BigX, ursa, gemini, and orion to establish IRAF networking for our new server. (11/12 jb) dev/hosts Added claret to the hosts files on tucana. (11/13 RLS) sys/symtab/stalloc.x sys/symtab/stsqueeze.x sys/symtab/stpstr.x sys/symtab/symtab.h The symtab package could fail with an "out of memory" error during symbol table or string buffer reallocation in applications which call stsqueeze to free unused storage (as when doing an stsave to save to a file). This was caused by the buffer increment being increased by a factor of two during overflow, combined with stsqueeze returning the unused space. Two changes were made, either of which will avoid the problem: 1) stsqueeze now reinitializes the buffer increment when the buffer length is reset, and 2) the buffer increment is now allowed to grow larger than a fixed value (32K) defined in symtab.h. (11/16) sys/qpoe/qpmacro.x 1. The code which scans a file and decodes macros was using a large, but fixed size, string buffer to store the macro value. This was overflowing when extremely large time filters were stored in QPDEFS as macros. The routine was rewritten to use a dynamically reallocated buffer. 2. The variables nodeffilt and nodefmask, which are false by default, could only be set true since the "set nodeffilt" type statement does not have a value and there is no unset. For the moment, this was fixed as a special case by initializing the values of these parameters to the default before scanning the QPOE macro file. (11/17) sys/qpoe/zzdebug.x In the expand debug routine, used to test macro expansion, increased the size of the output buffer to 128k to accomodate extremely large macros. (11/17) sys/qpoe/qpioparse.x A bug which would cause "filter=..." terms in expressions to be discarded was fixed. (11/17) sys/qpoe/README Added optbufsize to the list of QPDEFS parameters. (11/17) sys/mwcs/imwcs.h Increased the size of the string buffer used in the FITS read code from 20480 chars to 102400 chars. This fixed size buffer is not (easily) reallocatable because the card descriptors use pointers to point to the FITS card data in the buffer. The buffer is only allocated while a header is being read so the size isn't really an issue. (11/17) sys/mwcs/mwsctran.x The internal variable pdim, the dimensionality of the linear portion of the transform, used to size the vector and matrix buffers for the linear algebra, was not being computed correctly. This could cause problems when the dimension of a WCS in the transform was less than the dimension of the full MWCS system. The problem was a typo in the statement pdim = min (WCS_NDIM(w1), WCS_NDIM(w1)) the second w1 was changed to w2. (11/17) unix/os/zfioks.c Fixed a typo affecting stderr debug out to /dev/console. (11/18) ------------------------ Patch 2.10.2 built; tucana irafx version incremented to v2.10.3. (11/18) pkg/cl/scan.c Removed several calls to "makelower". These were forcing parameter name operands to lower case. (11/20) sys/imio/iki/qpf/qpfwfilter.x The QPF interface uses a sequence of QPFILTxx cards to record in the image header the QPOE filter used to generate an image. To avoid overfilling the header, excessively long filter strings are truncated. The truncation limit was increased from 1024 chars to 4096, increasing the number of output cards from a maximum of 16 to 64. In addition, if truncation occurs the string "..." is now written to the end of the last card to indicate that the filter string has been truncated. (11/20) sys/mwcs/wfmspec.x Installed a new version of the multispec function driver. (11/20) mkpkg Added an entry for the f2c architecture. (11/21) dev/devices - dev/hostlogin - Deleted these obsolete files, no longer used. (11/21) unix/os/zopdpr.c Added #ifdef SYSV support. (11/21) unix/boot/mkpkg/sflist.c A call to strcpy had an extra argument. (11/21) unix/boot/spp/rpp/rpprat/gtok.r unix/boot/spp/rpp/rppfor/gtok.f Due to some commented out code, the external variable index was not used and was causing a warning message. (11/21) sys/mwcs/iwrfits.x Added a call to idb_close, to return the descriptor allocated by idb_open. (11/23) unix/hlib/login.cl Added lprm to the unix foreign task definitions. (11/24) dev/hosts Fixed the pathname to irafks.e for cephus (11/27 MJF) dev/hosts Updated pathname to irafks.e for pegasus on tucana, ursa, gemini, and bigx. (11/30 jb) iraf/doc/aixiraf.ms + Installed the IBM AIX/IRAF installation guide. (11/30) pkg/plot/crtpict/calchgms.x Fixed an argument type mismatch (int->short) in a call to amaps on line 158. This was causing a floating divide by zero in the case of a user supplied lookup table when calculating the transformed histogram. (12/05 ShJ) pkg/cl/unop.c On some systems (sparc) CL expressions such as -(big-floating) would abort with a floating operand error. This was the result of integer overflow occuring when the floating value was assigned to an int. The CL was checking for this case, but would fail for negative values. (12/10) unix/boot/wtar/wtar.hlp Updated a couple of paragraphs to document the recent changes to the utility. (12/23) dev/termcap dev/graphcap Added entries for Kermit terminal emulator supplied by Pat Seitzer. The termcap entry is for MS Kermit 3.0 in VT320 mode; graphcap for Kermit3.12 and CGA or VGA display. (1/7 MJF) unix/boot/bootlib/tape.c Replaced a call to ACLRB by functionally equivalent C code. The ACLRB works under normal circumstances, but fails in a NOVOS bootstrap. (1/08 1992) sys/imio/db/imgnfn.x pkg/images/doc/hedit.hlp The header keyword template package had a builtin limit of 128 on the maximum number of keywords matching a pattern (e.g. *). This builtin limit was increased to 1024. (1/11) dev/hosts Added Dick Joyce's machine "charfman" to the file on Gemini (i.e., where Dick's IRAF comes from - networking was totally down). (1/13 RLS) ./math/iminterp/arbpix.x ./math/interp/arbpix.x ./noao/astutil/t_setairmass.x ./noao/digiphot/photcal/evaluate/phprint.x ./noao/mtlocal/cyber/cykeywords.x ./noao/mtlocal/cyber/t_ridsfile.x ./noao/onedspec/ecidentify/ecline.x ./noao/onedspec/irsiids/t_bswitch.x ./noao/onedspec/irsiids/t_flatdiv.x ./noao/onedspec/irsiids/t_flatfit.x ./noao/onedspec/irsiids/t_sums.x ./noao/twodspec/apextract/peaks.x ./noao/twodspec/multispec/fitclean.x ./noao/twodspec/multispec/fitsmooth.x ./noao/twodspec/multispec/intgauss5.x ./noao/twodspec/multispec/peaks.x ./noao/twodspec/multispec/solve.x ./noao/twodspec/multispec/t_fitfunc.x ./pkg/bench/xctest/lintran.x ./pkg/images/lib/sigl2.x ./pkg/images/tv/display/sigl2.x ./pkg/images/tv/iis/src/sigl2.x ./pkg/lists/lintran.x ./pkg/plot/crtpict/sigl2.x ./pkg/proto/t_imscale.x ./sys/clio/clgeti.x ./sys/clio/clgetl.x ./sys/clio/clgetr.x ./sys/clio/clgets.x ./sys/clio/clglpi.x ./sys/clio/clglpl.x ./sys/clio/clglpr.x ./sys/clio/clglps.x ./sys/clio/clputi.x ./sys/gio/calcomp/t_calcomp.x These files were modified to replace equals-INDEF type constructs by IS_INDEF type constructs. (1/15). unix/mkpkg Modified the "mkpkg summary" feature to work for either cc or gcc. (1/15) unix/os/zfiotx.c Modified to use the TCSETAW ioctl instead of TCSETAF in some cases (SysV systems only). (1/15) pkg/dataio/reblock/t_reblock.x pkg/dataio/doc/reblock.hlp Added support for multiple disk file input and output to the reblock task. (1/20/93 LED) dev/hosts Added Daryl Willmarth's machine "jannu" on Tucana. (1/20 FV) dev/hosts At Ed Anderson's request, added nodes anasazi and prometheus to dev$hosts on tucana, ursa and gemini. The lacerta pathname was updated in these files as well. (1/21/93 ShJ) dev/termcap dev/graphcap Cleaned up the VMS specific entries for lw6-10 so all are available now from VMS/IRAF. Graphcap needed a vapl6 entry; termcap needed entries for vapple[6,8-10]. (1/20/93 ShJ) dev/devices.hlp Updated the first section of this file to have accurate locations for the various printers and to include the device names for generating PostScript output files. (1/21/93 ShJ) pkg/images/filters/fmedian.x The fmedian task was printing a lot of garbage debugging information under iraf 2.10.2. Removed the eprintf statements. (1/25/93 LED) pkg/system/phelp.cl Changed the default value for the parameter "all" to "yes". This causes phelp to print help for all modules matching the given template, rather than just the first one. (1/26) pkg/system/doc/help.hlp Added a description of the "all" parameter. (1/26) sys/etc/xerstmt.x The code which modifies the `error (ddd, "message")' command sent to the CL when a task aborts was modified to eliminate characters such as newline or double quote which could cause the syntax of the generated command to be invalid. (There are 31 cases of "call error" statements in the core distribution which contain unwanted newline characters in the message string). (1/27) pkg/images/tv/wcslab/wcslab.x Fixed a bug in the axis mapping code in wcslab which was causing the task to fail in some circumstances if the input image was a section of a higher dimensioned parent image. (1/28/93, Davis) vms/gdev/sgidev/sgi2veps.for + vms/gdev/sgidev/mkpkg.com vms/hlib/sgiqueue.com dev/graphcap Added an SGI translator for Encapsulated PostScript to VMS/IRAF. As with the Unix version of the translator, the device names are eps, epsl and epsh. The output file is named sgixxxxx.eps and is left in the users home$ directory. (2/1/93 ShJ) unix/hlib/install Added a number of statements such as "rm -f $TEMP >& /dev/null" to ensure that any existing temp files are deleted before trying to create new ones (file creation can fail due to permissions problems). (2/01) vms/gdev/sgidev/sgi2vapl.for Modified to close the output file before sending it to the printer queue with sndjbcw. Without this, the file wouldn't be closed until the program finished, possibily resulting in an intermittent error: %RMS-E-FLK, file currently locked by another user. This was more likely to be seen on a [relatively] fast machine such as Robur, when the queue processing could turn on before the translator completed. In this case, the output file would still be open [and locked] by the executing sgi2vapl program. (2/2/93 ShJ) dev/hosts Modified this file on all hosts for Fred Gillett's new Sun called turkey. (2/2/93 jb) dev/hosts Added the GONG machines soi and mdi to hosts files on tucana, orion and ursa. Added on gemini by Nigel. (2/2/93 MJF) pkg/images/tv/wcslab/wcslab.h pkg/images/tv/wcslab/wcs_desc.h pkg/images/tv/wcslab/wcslab.x pkg/images/tv/wcslab/wlwcslab.x Removed a dependency on the file gio.h from the wcslab task. (2/11/93 LED) pkg/images/imutil/t_imslice.x Removed an error check in imslice, that was preventing the task from being used to reduce the dimensionality of images where IM_LEN(im,slice_dimension) = 1. (2/16/93 LED) dev/imtoolrc dev/graphcap Added a new frame buffer, imt37, at Skip Schaller's request for the Loral 1200x800 CCDs. (2/17/93 MJF) Modified imt37 and imt26 (cryocam) to suit KPNO nomenclature. (2/18/93 RLS) pkg/images/tv/imexamine/ierimexam.x pkg/images/tv/doc/imexamine.hlp The simple gaussian fitting was inadequate and gave biased answers. Replaced this algorithm with NLFIT version. It is still just a two parameter fit with the center and sky being determined and then fixed as before. (3/2/93, Valdes) dev/hosts Merged all differences on ursa, gemini, orion, and bigx back into tucana's hosts file. (3/5/93 jb) pkg/images/tv/imexamine/iestatistics.x The statistics computation was done in real precision, using aavgr, which gives an incorrect standard deviation, presumable because of precision truncation, when the mean is large and the actual data noise is small. The routine was changed to use the double precision version, aavgd, which gives the correct results. (3/10/93, Valdes) noao/mkpkg Added support for HPUX. (3/14) pkg/cl/main.c Modified memneed(), used to allocate space at the end of the dictionary, to quad align the allocated storage. (3/14) pkg/cl/pfiles.c Modified this code to remove an assumption about the amount of space allocated by memneed. (3/14) sys/imfort/tasks/mkpkg - sys/imfort/tasks/README Deleted the mkpkg, which is system dependent. (3/14) unix/os/alloc.c Modified alloc to allow the drive in it unallocated state to be owned by any system uid (any uid < 10), rather than insisting that the drive be owned by root. If the drive is owned by any system uid and has world rw permission it can be allocated under this new scheme. This avoids requiring that the system manager set the device ownership to root on systems where the device is owned by bin or some other system uid. (3/15) mkpkg Added irix and hpux support. (3/15) dev/hosts Added otter to hosts file on tucana, ursa, gemini, orion, and bigx. (3/24 jb) dev/graphcap dev/termcap Added entries for lw15|lwcloset to tucana, ursa, gemini, orion, and bigX. (3/26 ShJ) sys/libc/cread.c The case of EOF on a text file was not being handled correctly. (3/31) sys/fio/ffilsz.x The file size was not being computed correctly in the case of a file opened for writing and positioned to EOF, with some unwritten data in the file buffer. (4/05) pkg/cl/exec.c The LT_STDINB, LT_STDOUTB flags were not being propagated into the task descriptor correctly (they were being treated as additional cases of mutually exclusive task types). (4/07) pkg/images/doc/gauss.hlp Fixed two sign error in the equations in the documentation for the gauss task. (4/13 LED) unix/hlib/libc/stdio.h Added a declaration for gets(). (4/16) pkg/images/imarith/imcombine.gx There was no error checking when writing to the output image. If an error occurred (the example being when an imaccessible imdir was set) obscure messages would result. Errchks were added. (4/16/93, Valdes) pkg/images/doc/rotate.hlp Fixed a bug in the rotate task help page which implied that automatic image size computation would occur if ncols or nlines were set to 0 instead of ncols and nlines. (4/17/93, LED) sys/imio/iki/stf/stfrgpb.x This code was directly referencing fields of the GPB in calls to imaddX routines to build the image header. Since fields in STF group parameter blocks are often not aligned, this could fail for type double on machines that require that double values be double aligned. The code was modified to copy the values out to temporary variables (which the compiler will automatically align), passing the aligned temporary values in the imaddX calls. (5/04) dev/graphcap Merged in latest xgterm entries (these are not compatible with early prerelease versions). (5/05) ./lib/gescape.h ./lib/gim.h + ./lib/gio.h ./lib/gki.h ./lib/gset.h ./lib/scr/cursor.key ./lib/scr/xgterm.gui + ./pkg/language/doc/cursors.hlp ./pkg/plot/t_implot.x ./sys/etc/prpsio.x ./sys/gio/cursor/giotr.x ./sys/gio/cursor/grcaxes.x ./sys/gio/cursor/grccmd.x ./sys/gio/cursor/grcredraw.x ./sys/gio/cursor/grcwcs.x ./sys/gio/cursor/gtrctrl.x ./sys/gio/cursor/gtrdelete.x ./sys/gio/cursor/gtropenws.x ./sys/gio/cursor/gtrrcur.x ./sys/gio/cursor/gtrwsclip.x + ./sys/gio/cursor/gtrwstran.x ./sys/gio/cursor/mkpkg ./sys/gio/cursor/rcursor.x ./sys/gio/gactivate.x ./sys/gio/ggcur.x ./sys/gio/gim/mkpkg + ./sys/gio/gim/README + ./sys/gio/gim/gimrasini.x + ./sys/gio/gim/gimcrras.x + ./sys/gio/gim/gimderas.x + ./sys/gio/gim/gimwpix.x + ./sys/gio/gim/gimrpix.x + ./sys/gio/gim/gimqras.x + ./sys/gio/gim/gimsetmap.x + ./sys/gio/gim/gimrcmap.x + ./sys/gio/gim/gimwcmap.x + ./sys/gio/gim/gimimap.x + ./sys/gio/gim/gimcpras.x + ./sys/gio/gim/gimgetmap.x + ./sys/gio/gim/gimenmap.x + ./sys/gio/gim/gimref.x + ./sys/gio/gim/gimsetras.x + ./sys/gio/gim/gimrefpix.x + ./sys/gio/gki/gkifaset.x ./sys/gio/gki/gkigcur.x ./sys/gio/gki/gkiprint.x ./sys/gio/gki/gkircval.x ./sys/gio/gki/gkiwesc.x + ./sys/gio/gki/mkpkg ./sys/gio/gmprintf.x + ./sys/gio/gmsg.x + ./sys/gio/gopen.x ./sys/gio/gplcache.x ./sys/gio/greset.x ./sys/gio/gsetr.x ./sys/gio/gstatr.x ./sys/gio/gsview.x ./sys/gio/gswind.x ./sys/gio/mkpkg ./sys/gio/sgikern/sgifa.x ./sys/gio/stdgraph/mkpkg ./sys/gio/stdgraph/stdgraph.com ./sys/gio/stdgraph/stdgraph.h ./sys/gio/stdgraph/stgescape.x ./sys/gio/stdgraph/stgfaset.x ./sys/gio/stdgraph/stggcur.x ./sys/gio/stdgraph/stggim.x + ./sys/gio/stdgraph/stginit.x ./sys/gio/stdgraph/stgopen.x ./sys/gio/stdgraph/stgopenws.x ./sys/gio/stdgraph/stgrcur.x ./sys/gio/stdgraph/stgreset.x ./sys/gio/stdgraph/stgscur.x ./sys/gio/stdgraph/stgwtty.x ./sys/tty/tty.h ./sys/tty/ttyopen.x Merged in a number of changes made to add IRAF-side support for the prototype widget server. These will be documented in detail later. The changes should be backwards compatible; any compatibility problems should be reported. (5/05) pkg/images/geometry/t_imshift.x Added support for type ushort images to the imshift task in the case that the pixel shifts are integral not fractional. (5/8/93 Davis) pkg/images/imarith/icmedian.gx The median calculation is now done so that the original input data is not lost. This slightly greater inefficiency is required so that an output sigma image may be computed if desired. (5/10/93, Valdes) images/doc/imshift.hlp Fixed a typo in the name of the "interp_type" param. (5/13/92 MJF) dev/tapecap Added support (mto*) for the new Exabyte 8500 drive on Argo. Added lo/hi/comp aliases for the ST driver entries. (5/17) dev/hosts Added aldebaran to all hosts files - needed temporarily until this machine becomes argo. (5/19 jb) pkg/images/tv/display/t_display.x The code for the fill+ option did not handle the case of a non-square display frame buffer correctly. (5/19) pkg/plot/phistogram.x Fixed a bug in the way the phistogram task was reading in data redirected from the standard input. (5/20 LED) /dev/hosts Added lemming to all hosts files. (5/25 jb) images/imarith/icgdata.gx There was an indexing error in setting up the ID array when using the grow option. This caused the CRREJECT/CCDCLIP algorithm to fail with a floating divide by zero error when there were non-zero shifts. (5/26/93, Valdes) sys/ki/kixnode.x This routine used a fixed length intermediate buffer which could result in truncation of a resource name. Modified to base the buffer size on the size of the resource string being edited. (5/29) doc/iraf92.tex doc/iraf92f3.eps Installed ADASS-93 IRAF paper sources. (6/02) doc/ports/aux_port.doc Installed AUX/IRAF port notes. (6/02) lib/gescape.h lib/gim.h sys/gio/cursor/giotr.x sys/gio/cursor/gtropenws.x sys/gio/cursor/rcursor.x sys/gio/gim/README sys/gio/gim/gimlcmap.x sys/gio/gim/gimwcmap.x sys/gio/gim/mkpkg sys/gio/sgikern/sgifa.x sys/gio/stdgraph/mkpkg sys/gio/stdgraph/stggcur.x sys/gio/stdgraph/stggim.x sys/gio/stdgraph/stgopenws.x sys/gio/stdgraph/stgrcur.x sys/gio/stdgraph/stgscur.x Various files updated as part of display interfaces enhancements; notes to be added later. (6/02) dev/hosts Added odysseus to tucana/orion. Nigel added it to ursa/gemini. (6/15MF) sys/vops/arav.gx Changed the termination condition to cause loop termination if an interation results in fewer pixels being rejected. This shouldn't happen, but is possible due to arithmetic errors when the algorithm is near convergence. (6/19) sys/imio/iki/oif/oifopix.x Improved the error handling for the case where there is no pixel storage file. (6/21) gio/ncarutil/conbd.f gio/ncarutil/conrec.f Dimension of array IR in subroutine STLINE was increased from 20k to 80k. This array, in common block CONRE2, holds the starting location of all contours at a given level. Larger data arrays, and users wanting to contour each pixel rather than subsampling or block averaging, have necessitated the gradual increase of this array over the years from its original value of 500 to 80000. (ShJ 6/21) pkg/plot/phistogram.x Fixed a bug in the way phistogram was binning real data read in from a list or image that was causing to create one less bin than required to hold the data. (26/6/93, Davis) dev/hosts Added sandalwood to all hosts files, ie tucana, bigx, ursa, gemini, and orion. (jb 7/1/93) doc/vmsiraf.ms + doc/vmsiraf.ms.v29 + Installed the new, extensively revised VMS/IRAF manual. (7/01) unix/hlib/buglog.csh Modified to also append a new buglog entry to the bugs.log file in the network archive (~ftp/iraf/v210/bugs.log). (7/02) pkg/utilities/t_surfit.x + pkg/utilities/surfit.par + pkg/utilities/doc/surfit.hlp + pkg/utilities/x_utilities.x pkg/utilities/mkpkg pkg/utilities/utilities.cl pkg/utilities/utilities.men pkg/utilities/utilities.hd A task for fitting a 2D function or "surface" to an irregularly sampled set of x, y, and z points has been added to the utilities package. (fv 7/6) pkg/images/geometry/geomap.par pkg/images/geometry/t_geomap.x pkg/images/geometry/geogmap.x pkg/images/geometry/geofit.x Fixed a bug in the error handling code in geomap which was producing a segmentation violation on exit if the user's coordinate list had fewer than 3 data points. Also improved the error messages presented to the user in both interactive and non-interactive mode. (7/7/93, LED) unix/os/zfmkcp.c This routine makes a zero-length copy of a file, preserving the file mode bits so that the application need not know about the host system's view of file types, permissions, etc. The routine was modified to preserve the file mode bits EXCEPT that the new file has read and write permission enabled for the owner (it is likely that an IRAF application creating a new, zero length copy of a file or file template will want to write to the file). (7/07) dev/hosts Added pandora. (7/10/93 jb) sys/mwcs/mwsave.x Added a missing call to sfree. (7/13) pkg/system/doc/help.hlp Deleted a comment about using device=text with the help task and added another example showing how to use help | type dev=text to get a text file copy of a help page. (7/23) pkg/images/filters/t_median.x pnkg/images/filters/t_mode.x Removed an extraneous invalid argument from the call to eprintf inside an iferr block. (7/28/93) ------------------- V2.10.3 BETA, first release. (7/29) mkpkg unix/hlib/strip.iraf Minor updates to strip a few things that were being missed. mkpkg strip at the iraf root now prints some helpful messages. (8/01) unix/hlib/login.cl Added dbx and gdb to the default user package. (8/01) pkg/images/imarith/t_imcombine.x The algorithm for making sure there are enough file descriptors failed to account for the need to reopen the output image header for an update. Thus when the number of input images + output images + logfile was exactly 60 the task would fail. The update occurs when the output image is unmapped so the solution was to close the input images first except for the first image whose pointer is used in the new copy of the output image. (8/4/93 fv) pkg/images/imfit/fit1d.x When the input and output images are the same there was an typo error such that the output was opened separately but then never unmapped resulting in the end of the image not being updated. Fixing the typo means that only one I/O pointer is used in READ_WRITE mode as intended. (8/6/93 fv) sys/mkpkg sys/memdbg/ + lib/libmemdbg.a + unix/hlib/mkpkg.sf.SUN4 + unix/as.sparc/zrtadr.s + Added a new system library -lmemdbg. This is a debug version of MEMIO, used to log calls to the MEMIO routines and check programs for memory leaks (unfreed buffers). See the README file in the memdbg directory for details on usage. (8/08) pkg/softools/memchk.par + pkg/softools/memchk.x + pkg/softools/mkpkg pkg/softools/softools.cl pkg/softools/softools.men pkg/softools/x_softools.x Added a new task MEMCHK to the softools package. This is used in conjunction with the memdbg facility. (8/08) pkg/system/sort.x This very old program had some pretty small buffer sizes and hence was slow sorting large files. The buffer sizes were increased by about a factor of 10. (8/08) sys/clio/clclose.x sys/clio/mkpkg sys/etc/main.x Made a minor modification to the IRAF main to close the stdio streams during process shutdown. This makes memdbg output a little less confusing, although the system still allocates a number of buffers that exist for the lifetime of the process and are never freed. (8/08) sys/fio/stropen.x Added a call to strclose to free the file pushback buffer if any. This is only necessary when pushback is used on a string buffer opened as a file, as in parsers. (8/08) sys/fio/vfnmap.x Added a missing sfree. (8/08) sys/vops/aselk.gx sys/vops/lz/mkpkg sys/vops/mkpkg sys/vops/vops.calls sys/vops/vops.men sys/vops/vops.syn Added a missing VOPS routine aselk, the vector/scalar version of the existing asel routine. (8/08) lib/evvexpr.h + sys/fmtio/evvexpr.x + sys/fmtio/evvexpr.y + sys/fmtio/evvexpr.gy + sys/fmtio/evvexpr.com + sys/fmtio/mkpkg Installed a new FMTIO routine evvexpr, a vector version of the old evexpr with many other enhancements (expanded datatypes, intrinsic functions, etc.). Refer to the imexpr help page and the comments at the top of evvepxr.gy for details. (8/08) pkg/images/images.hd pkg/images/images.men pkg/images/images.cl pkg/images/x_images.x pkg/images/imarith/mkpkg pkg/images/imarith/imexpr.x + pkg/images/imarith/imexpr.gx + pkg/images/imarith/gettok.x + pkg/images/imarith/gettok.h + pkg/images/doc/imexpr.hlp + Installed a new task IMEXPR, used to evaluate general image expressions. Refer to the help page for details. (8/08) unix/boot/mkpkg/host.c The routine h_direq in this file is supposed to be smart enough to be able to match up directories even when symbolic links are used. It was being fooled by a case where the name of the iraf root directory is not a simple "iraf" - for example on tucana the root directory is currently called "iraf/iraf.develop". When h_direq fails it can cause mkpkg special file list entries to be ignored. (8/11) sys/fmtio/evvexpr.gy Swapped the precedence of the unary minus and exponentiation operators (the latter should have higher precedence). (8/12) sys/fmtio/evvexpr.gy 1. The input arguments to the intrinsic functions INT and NINT were being coerced to floating before performing the operation (harmless but unnecessary, and inefficient). 2. The code for the intrinsic functions "short" and "long" was missing and was added. (9/04) unix/hlib/mkpkg.sf.SUN3 unix/hlib/mkpkg.sf.SUN4 Added the compiler switch "-Ns2048" for fmtio$evvexpr.x. This routine (which is computer generated from evvexpr.gy and which is enormous) was overflowing the Fortran compiler symbol table. Interestingly, I got the same error message and had to add exactly the same switch, using the Sun Fortran compiler on the Sun and F2C on A/UX! (9/04) dev/termcap dev/graphcap Added HP LaserJet 4M 600dpi printer 'lw16' to graphcap/termcap file on tucana, orion, gemini, ursa, and bigx. (9/17/93 MJF) dev/hosts Modified herbie entry on all hosts. Herbie now feeds off of gemini. (jb 9/23/93) sys/mwcs/mwgctran.gx Fixed a typo that was preventing LTV from being output correctly. (9/24) pkg/images/imarith/icscale.x pkg/images/doc/imcombine.hlp The help indicated that user input scale or zero level factors by an @file or keyword are multiplicative and additive while the task was using then as divisive and subtractive. This was corrected to agree with the intend of the documentation. Also the factors are no longer normalized. (9/24/93, Valdes) pkg/images/imarith/icsetout.x The case in which absolute offsets are specified but the offsets are all the same did not work correctly. (9/24/93, Valdes) sys/gio/gmsg.x sys/gio/gmprintf.x 1. gmsg (and indirectly gmsg[bcsilrdx]) was modified to format a message as required to the set the value of an OBM parameter object. Previously it was working, but it would send any message to any UI object and this would have required that applications format messages specially for UI parameters. 2. Reviewing gmprintf.x it appeared that the routine was never finished and won't work - I added a comment to that effect. The gmsg routines should prove more useful anyway. (9/26) sys/gio/stdgraph/stgopenws.x When reactivating a device in certain circumstances a flag was not being set to tell the kernel that the device was activated. A symptom of this was that in a cursor read, colon commands would not be echoed or the 'C' key would appear to do nothing (the characters were actually being output but since the dialog box was never activated they were not being printed). (10/01) dev/graphcap The xgterm entry was modified to add a new field to the cursor return struct. (10/7) sys/gio/stdgraph/stgopen.x sys/gio/stdgraph/stgopenws.x sys/gio/stdgraph/stgclose.x sys/gio/stdgraph/stgreset.x sys/gio/stdgraph/stgrcur.x sys/gio/stdgraph/stgrtty.x sys/gio/stdgraph/stdgraph.com sys/gio/stdgraph/stdgraph.h The stdgraph kernel was modified to allow a message to be returned as part of a cursor read. The cursor value struct for devices such as xgterm contains a field "nchars" defining the number of chars, default zero, following the fixed size cursor value struct. If this data is present it is read as part of the cursor read, and played in a dynamically reallocatable message buffer in the stdgraph kernel. The next stg_readtty call (as used in CL cursor reads or when reading from STDIN when graphics is activated) returns data from this message buffer rather than reading from the terminal. A new routine stg_msglen was added to allow the kernel to be queried to see how much message data is buffered. The message buffer is emptied in each cursor read or after the first stg_readtty call. (10/7) sys/gio/cursor/rcursor.x In a colon cursor read, the rcursor code (=gcur, clgcur) now calls stg_msglen and echoes the ":" only if there is no buffered message data. (10/7) sys/gio/gmsg.x The messaging routine gmsg now automatically disables and renables F_FLUSHNL if this is set on STDOUT, as this interferes with the operation of gmsg. (10/7) pkg/images/imarith/icsetout.x Added MWCS calls to update the axis mapping when using the project option in IMCOMBINE. (10/8, Valdes) dev/hosts Added node sol to tucana at Ed Anderson's request. (10/8 ShJ) pkg/dataio/imtext/t_rtextimage.x pkg/dataio/imtext/t_wtextimage.x pkg/dataio/imtext/rt_cvtpix.x pkg/dataio/rtextimage.par pkg/dataio/wtextimage.par pkg/dataio/doc/rtextimage.hlp pkg/dataio/doc/wtextimage.hlp A parameter was added to select whether to read or write the pixel values. This is complementary to rfits/wfits and allows use of these tasks to store and restore image headers. (10/22 FV) dev/hosts Updated argo entry now that it has been updated to a sparc - on all servers. (10/27 jb) pkg/images/icgrow.gx pkg/images/icpclip.gx pkg/images/icsclip.gx pkg/images/icaclip.gx pkg/images/iccclip.gx pkg/images/t_imcombine.x pkg/images/doc/imcombine.hlp If there were fewer initial pixels than specified by nkeep then the task would attempt to add garbage data to achieve nkeep pixels. This could occur when using offsets, bad pixel masks, or thresholds. The code was changed to check against the initial number of pixels rather than the number of images. Also a negative nkeep is no longer converted to a positive value based on the number of images. Instead it specifies the maximum number of pixels to reject from the initial set of pixels. (11/8, Valdes) sys/fio/stropen.x There was an off by one problem with marking the end of the string buffer, making it possible to run off the end of the buffer by one char before overflow would occur. (11/10) pkg/images/tv/display/t_display.x Changed the format of the z1=,z2= message to produce something that can be cut and pasted into another CL display command to use the same scaling. (11/12) pkg/images/imarith/t_imarith.x pkg/images/doc/imarith.hlp If no calculation type is specified then it will be at least real for a division. Since the output pixel type defaults to the calculation type if not specified this will also result in a real output if dividing two integer images. (11/12/93, Valdes) sys/ki/irafks.x 1. Modified the code which handles ZFSTT optbufsize,maxbufsize requests for the binary file drivers to also query the maxbufsize for ZFIOKS and return the minimum of this value and the device value. This prevents the size of a binary file data transfer from exceeding the max size network transfer. 2. The irafks.exe executable was updated in our VMS/IRAF system. (11/17) sys/ki/kbzstt.x While looking at this code I noticed that the internal variable kb_maxbufsize could be used before being initalized. Although I am not aware of this having caused any problems, I modified the code to properly initialize the variable. (11/17) sys/vops/arav.gx The change made on 6/19 (to avoid an infinite loop condition that could arise due to roundoff errors) introduced a bug that would cause the routine to return after one iteration, without rejecting any data. (11/18) sys/fmtio/gargs.x Was not properly checking for indefinite or overflow in the double to short conversion. (11/22) sys/gio/gmsg.x The gmsg routines now do an automatic gflush before sending the message. The gflush and a flush of STDOUT are always done regardless of whether the output device supports messaging, to ensure that the flush semantics are not device dependent. (11/24) pkg/proto/t_bscale.x Added a call to flush after the status printout so that the output will appear after each image is processed. (11/29 LED) dev/hosts Modified deneb entry at Ed Anderson's request. (12/1 ShJ) sys/imio/iki/stf/stfcopyf.x Added errchk declarations for getline and putline. (12/10) doc/ports/notes.aix + It appears that we never installed the notes file from the AIX/IRAF port so I went ahead and did this. (12/13) sys/imio/iki/stf/stfcopyf.x Increased the size of the internal arrays to MAX_PCOUNT+NKW, and added a constraint on a loop index to ensure that images with large GPBs would not exceed this limit. (12/20) dev/hosts Modified herbie entry at Lisa Wells' request. (12/22 ShJ) pkg/images/geometry/t_geomap.x pkg/images/geometry/geofit.x pkg/images/geometry/geograph.x Fixed a bug in the geomap code which caused the linear portion of the transformation to be computed incorrectly if the x and y fits had a different functional form. (12/29/93 LED) unix/hlib/buglog.csh The buglog will now log the bug to adass.iraf.bugs in addition to all the usual places. (01/06 1994) noao/lib/zzsetenv.def Added a definition of "noao$bin(arch)/" to 'pkglibs' so that the smw and asttools libraries would be picked up by other packages using '-p noao' when the package is configured generically. (1/10/94 MJF) math/gsurfit/gssub.gx math/gsurfit/gssubd.x The gsurfit double precision routine gssubd was incorrectly calling the real precision routine gsgeti instead of the double precision routine dgsgeti due to an error in the gssub.gx file. This bug results in the wrong value of the parameter GSNSAVE being returned to the calling routine gssubd in the double precision case. (1/17/94 Davis) unix/hlib/buglog.csh Changed the default version to V2.10. (1/21) sys/gio/stdgraph/stgwtty.x Due to a too-nonspecific test for the termination of a graphics message, a newline occuring at just the right position in a text message could cause termination of a message. This was causing large messages to be prematurely terminated (actually this could occur in any message but it was more likely to be seen in a large message). (1/24) dev/termcap Added an entry for xgterm called "oldgterm". This is for using xgterm with old versions of IRAF. It makes the text window look like an xterm but the graphics is gterm. (1/27) sys/memdbg/README Fixed a couple of typos. (1/28) pkg/plot/t_implot.x pkg/plot/implot.par pkg/plot/doc/implot.hlp The step for the j/k keys may now be set by a task parameter. (2/02 fv) sys/gio/gmsg.x 1. The dtoc and xtoc functions were being called incorrectly in the gmsg[rdx] routines. 2. Corrected a minor typo in a procedure header. (2/04) pkg/dataio/doc/bintxt.hlp pkg/dataio/doc/mtexamine.hlp pkg/dataio/doc/rcardimage.hlp pkg/dataio/doc/reblock.hlp pkg/dataio/doc/rfits.hlp pkg/dataio/doc/rtextimage.hlp pkg/dataio/doc/txtbin.hlp pkg/dataio/doc/wcardimage.hlp pkg/dataio/doc/wfits.hlp pkg/dataio/doc/wtextimage.hlp Added a "SEE ALSO" section to most of the help pages, and fixed a number of other minor formatting errors. (2/13) pkg/cl/login.cl Updated this file. (2/14) pkg/cl/lexicon.c When skipping leading whitespace before a token, will now recognize an escaped newline and skip the newline as well. (2/14) sys/memdbg/README Added a couple more minor comments. (2/18) unix/as.sparc/zrtadr.s MEMDBG was not returning valid values for the RETADR (return address) field. This was traced to a problem with as$zrtadr.s. Evidently the real zrtadr.s was lost back when MEMDBG was written, probably due to an accidental cc -S after the package had already been debugged. The version in as.sparc was the assembler for the dummy version (zrtadr.c) in sys/memdbg. I had to rewrite the real assembler version of this routine from scratch (ouch). (2/18) dev/graphcap gio/stdgraph/stggim.x The refresh pixels function was broken due to the graphcap entry for this function being aliased to that for read pixels (RP). This would cause an "incomplete or reentrant format" error when trying to do a gim_refreshpix from an IRAF imaging application. (2/24) gio/gim/gimrefpix.x Edited the procedure header description to reflect a change in the definition of the GtRefreshPixels routine in the gterm widget. (2/25) dev/graphcap sys/gio/stdgraph/stggim.x The name for the ME capability (refresh mapping) used in the xgterm graphcap entry was a redefinition of the marker-end capability used for drawing polymarkers. Changed the name to MN. We need a more rigorous way to register device capability names to avoid this sort of problem. I usually search the graphcap file, but in this case the named was used in the stdgraph kernel but was not actually defined for any existing device. (3/03) sys/imio/imwrpx.x This code assumed that IM_PIXTYPE was int, the same as the type of the pixel masks. Modified to convert the pixel values if necessary when writing to the output mask. (Note that this is not necessary when *reading* a mask, as IM_PIXTYPE will always be int in that case). (3/07) sys/plio/plp2l.gx sys/plio/plp2r.gx Modified this code to apply a max(0,value) to the input pixel values, i.e. to clip at zero. Masks permit only nonnegative pixel values. Negative input values could cause the data to be improperly encoded. (3/07) pkg/math/gsurfit/gs_eval.gx The sfree statement was commented out in the routines gs_evpoly and dgs_evpoly. This results in over-utilization of memory and occasionally in out of memory errors for tasks which make many successive calls to gsvector or dgsvector if the surface type is polynomial. (3/08/94 LED) dev/graphcap dev/termcap Added entries for lw14 as requested by Ed Anderson. (3/28/94 ShJ) pkg/images/tv/imexamine/ierimexam.x Changed the gaussian fitting code to use a fraction of the fitting radius as the initial value for the full-width half-maximum in cases where the moment analysis failed, thus avoiding an occasional floating overflow error. (4/15/94 LED) dev/graphcap Updated the VMS solitaire entries for the new location of the qsoli.com file, usr3\072[irafext.nlocal.lib]qsoli.com. (ShJ 4/19/94) unix/os/mkpkg unix/os/zfiond.c + unix/hlib/libc/kernel.h unix/hlib/libc/knames.h sys/fio/mkpkg sys/fio/ndopen.x sys/fio/zzdebug.x Installed a new FIO driver, the ND or network device driver. This driver can potentially support any connection oriented, streaming type network or IPC communications domain. The initial set of supported communications domains are Internet sockets, UNIX domain sockets, and FIFO pipes. The type of connection is specified by the "filename" argument to the driver at open time. Both client and server connections are supported. A client or a server opens a network device connection as follows: fd = ndopen (filename, mode) The mode is NEW_FILE for a server, anything else for a client. The file descriptor is bidirectional. The "filename" string syntax is determined by the ND driver and is transparent to IRAF system and applications code. For the UNIX/IRAF ND driver, here are some examples: inet:5177 # Internet socket, server inet:5177:foo.bar.edu # Internet socket, client unix:/tmp/.IMT%d # UNIX domain socket fifo:/dev/imt1i:/dev/imt1o # FIFO (named pipe) Refer to the comments in fio$ndopen.x and os$zfiond.c for further information. The file fio$zzdebug.x contains sample client and server tasks. (5/01) sys/fio/zzdebug.x Added two tasks "client" and "server" for testing the ND driver. These also demonstrate how to do bidirectional i/o on a streaming file descriptor. (5/01) dev/graphcap unix/gdev/zfiogd.x Modified the display server interface to use the ND driver. These changes allow use of socket connections to talk to the display server, but are backwards compatible and will work with older display server that only support fifos. 1. The "/dev/imt1" was deleted from the imtool graphcap entries and replaced by the null string. This causes the GD (not ND) driver to use a default network address for the connection: the default is 1) personal (per-user) unix domain socket at /tmp/.IMT<uid>, 2) standard imtool fifo pair at /dev/imt1[io], 3) fail. 2. The GD driver was modified to use the ND driver instead of the BF driver for generic device "imtool". The user may define IMTDEV in their host environment to override the ND "pathname" given in the graphcap entry for the device. The new image display server ximtool also supports all three ND protocols (tcp/ip sockets, UNIX domain sockets, fifos) and will simultaneously listen for connections on all three. Multiple connections are supported, e.g. the user can be running imexamine on one frame while client applications load images into 1 or more other frames. Problems can still result if multiple clients try to simultaneously access the same frame buffer, or if different clients have different notions of the frame buffer configuration. (5/01) unix/hlib/mkpkg.sf.SUN3 Set the compile flags for evvexpr.x to "$xc -c -/Ns2048 -/Nx2048" for the Sun-3 (larger compiler tables). (5/07) sys/gio/cursor/gtrctrl.x Modified to set the SKIPOPEN flag on openws only for interactive (inline) graphics kernels. A F_CANCEL on the graphics spool buffer in the prpsio code was cancelling the openws for a subkernel and preventing it from being passed to the kernel. The SKIPOPEN is used to keep the giotr code from sending the openws again when the grahics data is processed. A better solution might be to just omit the gki_write in gtrctrl but the current approch appears to work. This fixes several bugs seen recently with graphics subkernels (SGI, IMD, etc.) where e.g. a gflush was necessary to make a plot appear, or to keep separate plots from being overplotted. (5/07) sys/fio/putline.x Putline would flush the output buffer after the last character written if the number of characters written exactly filled the buffer. This was harmless in most cases, but would prevent using putline to write the last character in a stropen file. This behavior was not quite correct, as FIO normally flushes the buffer only when one tries to write to the next character after the end of the buffer. This bug was causing the STF image kernel to fail to read STF images, due to the use of stropen in the kernel. The bug was seen only recently due to a recent fix to stropen which caused the top of the buffer to be changed by one character. The routine was changed to flush only when writing beyond the end of the current buffer. (5/07) sys/fmtio/evvexpr.gy The code for the || operator was incorrect, it was computing the and instead. (5/07) pkg/images/imarith/imexpr.x This code is supposed to generate an integer image for a boolean operand when automatic determination of the output image type is enabled, but this was incompletely implemented. Modified to generate a TY_SHORT image if the operant type is boolean and automatic determination of the output image type is enabled. (5/07) sys/fmtio/evvexpr.gy Changed MAX_ARGS from 16 to 17 in the arglist structure to double align the storage for the operand structs. (5/08) sys/mwcs/wfmspec.x Modified wf_msp_init to fix a problem in the computation of the inverse transformation which could occur when the first physical pixel in an image was greatly different from the first logical pixel. (5/08) --------------------------------- Another 2.10.3 beta released and installed on all the downtown tucana sysems. (5/08/94) pkg/utilities/curfit.gx Removed the explicit x axis limits to allow the GTOOLS default buffer to be applied so that the end points don't fall on the vertical axes. (5/10/94 FV) lib/evvexpr.h sys/fmtio/evvexpr.gy Added padding to the operand struct to cause arrays of operand structures to be double aligned. (5/10) sys/gio/cursor/giotr.x This file was evidently not updated when the change to gtrctrl.x was made on 5/07, but both were modified to fix the gflush or overlaid plots problem. (5/10) sys/fmtio/mkpkg Restructured the mkpkg so that the code which calls the generic preprocessor is called both when mkpkg is run in the source directory, and during a sysgen update. (5/10) sys/vops/mkpkg Minor cosmetic edit. (5/10) pkg/images/geometry/t_geotran.x In cases where the geomap database was undefined and the geometric transformation was linear, geotran was unnecessarily overiding the size of the output image specified by the user, if this size was bigger than the default output size (the size of the output image which would include all the input image pixels if no user shifts were applied). (5/10/94, Davis) pkg/images/imarith/icaclip.gx pkg/images/imarith/iccclip.gx pkg/images/imarith/icpclip.gx pkg/images/imarith/icsclip.gx The reordering step when a central median is used during rejection but the final combining is average was incorrect if the number of rejected low pixels was greater than the number of pixels not rejected. See bug #244. (5/25/94, Valdes) dev/hosts Modified irafks.e path to deneb on all the servers, added dynamo. (6/3/94 MJF) pkg/images/imarith/icaclip.gx pkg/images/imarith/iccclip.gx pkg/images/imarith/icpclip.gx pkg/images/imarith/icsclip.gx The restoration of deleted pixels to satisfy the nkeep parameter was being done inside the iteration loop causing the possiblity of a non-terminating loop; i.e. pixels are rejected, they are restored, and the number left then does not statisfy the termination condition. The restoration step was moved following the iterative rejection. (6/6/94, Valdes) pkg/images/geometry/xregister/rgxicorr.x The path names to the xregister task interactive help files was incorrect. (6/13/94, Davis) math/nlfit/nlfit.gx math/nlfit/nlfitr.x math/nlfit/nlfitd.x Fixed a divide by zero error in the nlscatter routine which occurs if the fit has no degrees of freedom and the weighting type is WTS_SCATTER. (6/13/94 Davis) math/nlfit/nlchomat.gx math/nlfit/nlchomatr.x math/nlfit/nlchomatd.x Changed the singular matrix test to avoid problems with matrices whose diagonal elements have values in the same dynamic ranges as the machines epsilon. (6/15/94 Davis) pkg/utilities$t_polyfit.x pkg/utilities$pfregres.f Added a trap for rmul values < 0.0 and > 1.0 to the polyfit routine to avoid floating operand errors caused by trying to take the square route of a negative number. (6/20/94 LED) pkg/images/geometry/geofit.x A routine expecting two char arrays was being passed two real arrays instead resulting in a segmentation violation if calctype=real and reject > 0. (6/21/94, Davis) pkg/plot/t_surface.x The surface task no longer calls error when the input array is unsuitable for plotting (constant valued, entirely below floor or above ceiling). The surf_limits procedure was modified to call eprintf and then return an error value to the calling program, which terminates the task quietly. This less drastic error exit will allow [e.g., IRAF test] scripts to continue after calling SURFACE with an invalid input image. (ShJ 6/23/94) unix/os/zfiond.c Fixed a typo, fd2 was being used where fd1 was intended, in an fcntl call after an open for a client fifo. (6/24) unix/os/zshlib.c Fixed a syntax error on the last line, an extra ';' following a stubbed out function declaration. (6/24) pkg/images/tv/imexaine/ierimexam.x The Gaussian fitting can return a negative sigma**2 which would cause an FPE when the square root is taken. This will only occur when there is no reasonable signal. The results of the gaussian fitting are now set to INDEF if this unphysical result occurs. (7/7, Valdes) unix/gdev/sgidev/sgi2uapl.c unix/gdev/sgidev/sgi2ueps.c Merged in changes from Solaris port having to do with the declaration of a file descriptor as (FILE *) rather than int, added some #idefs to sgi2uapl.c needed by Solaris. Also modified the header ID string produced by sgi2uapl to be "%!PS", this is required by certain HP LaserJet 4M printers. (7/8/94 MJF) pkg/utilities$t_polyfit.x Revoved the dependent variable normalization which was not doing anything to improve the numerical statbility of the routine and which was causing problems in the computation of the reduced chi-squared and standard deviation statistics. (7/11/94 LED) sys/fio/zfiott.x Modified the ttyio logging code to flush the output after each log message. (7/23) pkg/images/tv/wcslab/wcslab.x Fixed an initialization bug in wcslab that was causing the axis labels of the plot to be drawn incorrectly the first time wcslab was run. This was only a bug under 2.10.3 (26/7/94 Davis) pkg/images/geometry/xregister/rgxregions.x The routine strncmp was being called (with a missing number of characters argument) instead of strcmp. This was causing a bus error under solaris but not under sun os whenever the user set the regions parameter to "grid ...". (7/27/94 LED) unix/hlib/libc/kernel.h Replaced this file with the version from the Solaris port, which replaces the overused PFI definition by definitions of PFI, PFV, and SIGFUNC. (7/30) pkg/images/geometry/xregister/rgxcorr.x A procedure was being incorrectly declared as an integer function. (8/02 LED) unix/os/zfiotx.c unix/os/zzstrt.c The terminal driver (zfioty i.e. zfiotx) has long had a weakness in that it had no protection against confusion over the terminal state if the terminal was accessed by two or more different file descriptors. This was the chief cause of the cursor hang problem seen with xgterm occasionally. The ehist/eparam code in the CL was using two different file descriptors to set the terminal modes, and when the second when in and out of raw mode it would leave the first descriptor thinking the terminal was in raw mode while it was not, causing the cursor to be read in "cooked" mode. This would cause the \r (CR) delimiter in a cursor read to be mapped to \n hence making it impossible to read the cursor. The terminal driver was rewritten to maintain an internal array of descriptors of open terminal devices. When a file descriptor is used to access a terminal device the driver maps the file descriptor to its internal terminal device descriptor, which is used to uniquely maintain state information for the device. This ensures that the device is handled consistently regardless of what file descriptor is used to set the device mode. The zzstrt code had to be modified to call ZOPNTY on each of the three stdio streams, to initialize the terminal device descriptor for the user terminal. The driver looks for a special filename ("unix-stdin" etc.) and uses the already open stream (stdin, stdout, or stderr) if one of the standard streams is specified. (8/02) dev/graphcap Changed the xgterm graphcap entry to recognize either \r or \n as the trailer code for a cursor read. This is a safeguard to permit terminating a cursor read should the tty port somehow get raw mode cleared, e.g. by some third party process. (8/02) pkg/images/tv/imexamine/ierimexam.x World coordinates printed in the 'r' profile graph are now formated. (8/02, Valdes) unix/hlib/login.cl Modified to eliminate the stty xterm case. This causes problem when TERM is set to xterm in the host environment, but the terminal is an xgterm. Now, if the user sets the terminal type to xgterm in their mkiraf, this is the value which will be used. (8/10) unix/hlib/mkiraf.csh Added "xgterm" to the list of suggested terminal types. (8/10) ------------------------------- 2.10.3 beta-3 release cut (Solaris). (8/10) pkg/images/iminfo/imheader.x Changed the way this task tests whether a valid pixel file exists. This fixes the bug where [NO PIXEL FILE] is printed when the pixel file field in the header is something other than a filename. (8/15) ------------------------------- 2.10.3 beta-3 release updated (Solaris). (8/17) doc/ports/notes.solaris + Installed notes file from Solaris/IRAF port. (8/17) unix/boot/spp/xc.c Modified XC to support PKGENV values listing multiple packages. Formerly XC supported multiple package environments (-p pkgenv) on the command line, but permitted only a single package to be given in PKGENV. MKPKG has long supported both options. (8/18) unix/os/zfiotx.c The terminal driver had a bug affecting nonblocking raw mode (IO_RAW+IO_NDELAY). IO_NDELAY was implementing using fcntl O_NDELAY on the file descriptor, which sets asynchronous mode on the device with which the file descriptor is associated, i.e., the tty port for a terminal device. This will fail if some other process, e.g. the unix wall/rwall task, opens and writes to the tty device, clearing asynchronous mode and causing the next read of the tty by the IRAF process to block. It was necessary to modify ZGETTX to handle a nonblocking raw mode read as a special case. Select() is used to poll the device to see if there is any data to be read, and the read is performed only if there is data to be read. (8/18) ------------------------------- 2.10.3 beta-3 release updated (Solaris). (8/18) local/login.cl Modified as per login.cl revision of 8/10. (8/22) sys/fmtio/dtoc3.x Fixed a bug that would prevent numbers from being rounded correctly in special cases. The bug affected only fixed format where the number being printed was smaller than the number of decimal places. For example, 0.09 printed with %.1f would be printed as 0.0 as rounding was not being done properly. (9/10) sys/etc/prchdir.x sys/etc/prenvset.x sys/etc/prupdate.x Modified prupdate to add an argument "flushout", used to force flushing of the command output to the specified subprocess. Modified prchdir and prenvset to use the new calling sequence for prupdate. prchdir calls prupdate with flushout=YES, prenvset uses flushout=NO. This should fix a problem where chdir requests could be buffered and later flushed after one of the referenced directories had been deleted, causing the chdir sequence to fail. (9/14) sys/mwcs/mwrotate.x When rotating about a nonzero center this code was failing to shift back to the original center after the rotate. (9/16) sys/mwcs/mwtransd.x The matrix multiplication in mw_axtran was not being done properly. The code would work in the most common cases but would fail when rotation (non-diagonal matrix) was combined was an axis flip. (9/16) unix/os/zfiotx.c tty_reset was being called incorrectly in zclstx(). (9/17) sys/clio/clgcur.x Removed the limitation imposed by this routine on the maximum length of the string which can be returned. (9/20) pkg/images/tv/tvmark/mkmark.x Replaced a seek to EOF call with a flush call in the the tvmark task "add object" procedure. On SunOS systems the seek to EOF was apparently forcing the flush while on Solaris systems it was not, resulting in the added objects never being written to the coordinate file. (10/3 LED) dev/hosts added entry for hohokam at Ed Anderson's request. (ShJ 10/5/94) sys/vops/awvg.gx Modified to always use double precision for the loop variables sum, sumsq, etc., even if the data is single precision. (10/06) sys/mwcs/wfmspec.x Code was added to perform a direct search if the default, faster inversion algorithm fails. (10/07) pkg/dataio/doc/rfits.hlp Removed a confusing reference to difficulties reading images with very long lines from the bugs section of the help page. (10/10/94 LED) pkg/images/imfit/fit1d.x A Memc in the ratio output option was incorrectly used instead of Memr when the bug fix of 11/16/93 was made. (10/14/94, Valdes) dev/termcap Added a two-up termcap entry for lw16 called "lw16p2" (10/20/94 MJF) pkg/images/iminfo/imheader.x Restructured the code which tests for the pixel file to avoid a potential reentrant printf. (10/24) sys/fmtio/ctod.x Fixed a typo in the comment specifying the lexical form of a sexagesimal number. (10/24) pkg/images/imarith/imexpr.gx The @file form of the expression parameter was failing due to the newline at the end of the expression as read from the text file. Modified to convert all newlines to spaces when the file is read in. This should work as when invoked this way the included file can only contain a single expression, and no expression syntax requires a newline to be entered. (10/25) dev/termcap dev/graphcap Added a new HP LJ 4 600dpi laserwriter to all servers (10/26/94 MJF) sys/gio/gim/gimlcmap.x Fixed a case of an intrinsic function called with mixed type arguments. (10/28) sys/gio/glabax/glabax.x Modified to use the graphcap capability "fa" instead of "FS" to test whether the output device has a fill area capability. (11/04) unix/boot/mkpkg/mkpkg Changed a "cc" to a "$(CC)". (11/04) pkg/images/tv/imexamine/iecolon.x pkg/images/tv/doc/imexamine.imh lib/src/imexamine.key 1. The "label" parameter was incorrectly attributed to the surface plot instead of the contour plot. 2. The "axes" parameter for the surface plot was missing in the code though noted in the help. 3. Updated the help and key file to show the label parameter belongs to the e plot and to show the axes parameter. (11/08) pkg/images/xregister.par pkg/images/doc/xregister.hlp pkg/images/geometry/xregister/t_xregister.x pkg/images/geometry/xregister/rgxcorr.x pkg/images/geometry/xregister/rgxicorr.x pkg/images/geometry/xregister/rgxcolon.x pkg/images/geometry/xregister/rgxdbio.x The xregister task was modified to to write the output shifts file in either text database format (the current default) or in simple text format. The change was made so that the output of xregister could both be edited more easily by the user and be used directly with the imshifts task. (11/11 LED) pkg/images/geometry/xregister/rgxbckgrd.x In several places the construct array[1++nx-wborder] was being used instead of array[1+nx-wborder]. The Sun compilers did not catch this, but the IBM/RISC6000 compilers did. (11/16/94, LED) dev/hosts At eanderson's request, added entry for dyevushka and deleted helios. (11/17/94 ShJ) dev/hosts At eanderson's request, added entry for mimbres and changed equuleus. (11/18/94 MJF) pkg/images/geometry/t_imshift.x pkg/images/geometry/t_magnify.x pkg/images/geometry/geotran.x pkg/images/geometry/xregister/xrgximshift.x The buffering margins set for the bicubic spline interpolants were increased to improve the flux conservation properties of the interpolant in cases where the data is undersampled. (12/6/94, Davis) unix/boot/spp/xpp/xppcode.c Increased MAX_STRINGS from 100 to 256. (12/14) pkg/cl/param.c pkg/cl/modes.c pkg/cl/operand.c Made minor changes to improve handling of INDEF. 1) When scanning into a string parameter the string "INDEF" is no longer converted to an indefinite operand, it is left as string data (the INDEF test was being performed unconditionally for all operand types, which was incorrect). 2) Fixed bugs in a couple of places were indefinite was being confused with undefined, or where indefinite was being treated as an invalid operand. (12/23) ------------ The following changes are being merged back in following the DEC Alpha/OSF port. (12/30) unix/hlib/libc/spp.h Set XLONG to int (32 bits) instead of long. This should work for both 32 and 64 bit platforms. (12/30) unix/os/zdojmp.c This code assumed that jmpbuf was an int array and that a pointer could be stored in the first integer element. This fails on 64 bit machines where pointers are 64 bits and ints are 32. Modified to coerce the jmpbuf array to long so that both 32 and 64 bit machines will be supported. (12/30) unix/boot/wtar/wtar.c Fixed a bug in WTAR involving coercion of a pointer to an integer (line 536, bp = ...). (12/30) sys/gio/gks/gcas.x Changed the procedure name from "gca" to "gcas". There is already another procedure in the same library called "gca". "gcas" is supposed to be the type short version. (12/30) sys/gio/ncarutil/autograph/agrstr.f Commented out statements number 901, 902: "no path to this statement". These statements are never called as the code that calls them is also commented out. (12/29) sys/gio/ncarutil/autograph/agsave.f Same thing, statement 901. (12/29) sys/gio/ncarutil/conlib/consld.f Commented out statement functions SCRTCH and IARVL. These are never called and result in a warning message. (12/29) sys/gio/ncarutil/conrec.f Commented out three lines around line 1226. These lines were no longer used because other code had been commented out, and were resulting in a "Variable XX is used before it value has been defined" warnings. (12/29) sys/gio/nspp/sysint/encd.f Commented out several lines that were no longer used and were causing a "no path to this statement" warning. (12/29) math/deboor/setdat2.f math/deboor/setdat3.f This library contains three files setdat.f, setdat2.f, setdat3.f all of which contain a procedure "setdat", causing library conflicts. These routines are not really part of the library anyway and are only used to generate data for examples in DeBoor's book, but to avoid the library conflicts I changed the names of the second and third procedures to setdt2, setdt3. (12/29) pkg/cl/bkg.c pkg/cl/builtin.c pkg/cl/compile.c pkg/cl/config.h pkg/cl/debug.c pkg/cl/decl.c pkg/cl/errs.c pkg/cl/exec.c pkg/cl/gram.c pkg/cl/main.c pkg/cl/mem.h pkg/cl/modes.c pkg/cl/opcodes.c pkg/cl/opcodes.h pkg/cl/operand.c pkg/cl/param.c pkg/cl/prcache.c pkg/cl/scan.c pkg/cl/stack.c pkg/cl/task.c The CL has long defined the dictionary and stack as arrays of unsigned integer. This causes problems on a 64 bit machine like the Alpha where integer and pointer are not the same size. To avoid this problem a new type "memel" was defined in a typedef in config.h. The CL code was modified as necessary to declare all dictionary and stack storage and references using this new type. (12/29) pkg/cl/scan.c The varargs code in this routine failed to compile on the Alpha, which defines va_list as a structure rather than a variable. This caused a (va_list) cast to fail. After studying this for a while I couldn't find any way to safely and portably use varargs to fake an argument list as an array. The solution adopted was to just make a normal call to sscanf, putting the variable number of arguments on the argument list in the normal fashion as v[0], v[1], v[2], and so on. The current implementation imposes a limit of at most 32 arguments for a CL scan operation. (12/29-30) mkpkg noao/mkpkg Added an entry for the "alpha" architecture. (12/29) unix/hlib/mkfloat.csh 1. Modified to look for .E files as well as .e files. 2. The script was failing because tar -tf would output file names with a trailing space after the filename (surely a bug in OSF1 tar). Had to add a filter to trim the whitespace. 3. Modified the script to treat the "generic" architecture specially, avoiding any attempt to restore any binaries etc. (12/29) sys/libc/zzdebug.c -> zztest.c Renamed zzdebug.c zztest.c to avoid a name conflict with the zzdebug.x in the same directory. (12/29) unix/hlib/libc/stdio.h In struct _iobuf, changed the type declarations from long and int to XLONG and XINT. (12/29) dev/hosts Added an entry for "lyra" to the hosts table. (12/29) unix/os/zopdir.c 1. Modified to use (conditionally) the newer versions of opendir/readdir. 2. Testing revealed a bug in this file. This was preventing commands such as "dir /" from working on Solaris, due to a bug in the code which strips trailing slashes from directory names. 3. zopdir would pass back a pointer coerced to an int as the "file descriptor" but this would fail on 64 bit systems where pointers don't fit in 32 bits. Modified the routine to allocate a kernel file descriptor for the directory and pass back a normal fd instead. Items 1 and 2 above were actually made in the Solaris port. (12/30) pkg/dataio/fits/t_wfits.x Wfits was using the name of the @file instead of the first file as the root output fits file name if the number of output files was 1. (1/18/94 LED) unix/os/alloc.c Fixed a bug in alloc.e which could allow some files in /dev/ to be allocated even though the file permissions didn't permit this. (1/18) tags Edited this old tags file to change absolute pathnames such as "/usr/iraf/sys/..." to "sys/...". (1/19) dev/hosts Added lyra to this file on ursa. (01/20 jb) unix/os/zfiond.c Added a check for the status returned by getstr() to avoid attempting undefined operations on a null return value. (1/27) sys/fio/zzdebug.x Added a task "daytime" to the FIO zzdebug. This demonstrates use of the zfiond driver to connect to the TCP/IP "daytime" service to print out the date and time. (1/27) hlib/extern.pkg Added the ccdacq package from ursa to permit help to be accessed via the irafhelp web page per Jeannette's request. (2/1 RLS) iraf/dev/hosts Added katmai to the hosts files on tucana, ursa, gemini, bigx and orion. (2/7/95 jb) pkg/math/curfit/doc/curfit.spc Fixed a bug in the specification of the Legendre polynomials. (2/15 LED) pkg/images/tv/imexamine/iejimexam.x Fixed a pointer addressing error found by Zarate. (2/16 FV) pkg/plot/t_implot.x pkg/plot/pltwcs.x When trying to plot a column of a 1D image the physical axis was being set to zero and then used inapproprriately as a pointer offset causing an error on the Dec Alpha port. The axis now defaults to 1 and also the task now beeps when attempting a column plot rather than plotting a point point line. (2/16 FV) sys/imio/iki/stf/stfopix.x The pointer o_im (old image header) was being used in an expression even for new (non new-copy) images. Whether or not the pointer was actually referenced would depend on the Fortran compiler and how it evaluated the expression. (2/18 1995) sys/gio/cursor/grcread.x A call to grc_message was missing the "stream" argument. (2/23) pkg/system/help/helpdb.x The final call to error() was missing the errcode argument. (2/23) sys/gio/gki/gkiexe.x The code for GETCELLARRAY was incorrectly using zcall7 instead of zcall6. (2/23) sys/gio/stdgraph/stgreset.x Not all polyline and fillarea attributes were being reset when a open or close workstation (stg_reset) occurred. Added initializations for PLTYPE, FASTYLE, PLWIDTH. (2/25) unix/hlib/extern.pkg Installed IMCNV for use on tucana. (3/2 MJF) pkg/images/geometry/xregister/rgxtools.x Changed some incorrect amovr and amovi calls to the correct amovkr and amovki calls. (3/15 LED) pkg/dataio/fits/fits_cards.x Added some wfits code to filter any "END " keywords out of the image header userarea. (3/17 LED) pkg/images/tv/doc/display.hlp Clarified the explanation of the 'zrange' parameter to indicate that if min/max values are defined they will be used, otherwise the image is subsampled using nsample_lines to approximate the min/max when determining the mapping. (3/22 MJF) pkg/plot/t_gkixt.x pkg/plot/doc/gkiextract.hlp Increased the size of the index array from 2048 to 8192 to accomodate very large metacode files. Added a note to the help page mentioning the limit. (3/22 MJF) pkg/images/geometry/xregister/t_xregister.x Added a test on the status code returned from the fitting routine to prevent the xregister task from writing an output image when the user quits the task in in interactive mode. (3/31/95, Davis) dev/hosts Added 'vanilla' to the mountain sites on all servers. (4/5/95 MJF) sys/imio/iki/stf/stfrfits.x Added an errchk for open. (4/03 1995) sys/fio/open.x Added errchks for fgetfd, filopn, seek. (4/03) pkg/images/tv/mkpkg pkg/images/tv/wcslab/mkpkg The general purpose routines in WCSLAB were moved into libds.a. (4/10) pkg/images/tv/doc/imexamine.hlp Fixed a typo in the equation for ellipticity. (4/10) pkg/images/tv/imedit/t_imedit.x pkg/images/doc/imedit.hlp The 'j', 'k', 'n', and 'u' keys were added to those recorded in the logfile. (4/11, FV) sys/gio/imdkern/t_imdkern.x The IMD kernel was modified to add a new debug option that will work even when the kernel is run as a generic subkernel of the CL. For example if we do a "set idkdebug = /tmp/idk.out" then the kernel will log GKI input to the file ikd.out. In debug mode output is flushed after every output line, hence one can do a "tail -f" on the file to monitor the kernel during execution, to see what the CL is sending it. Currently this feature is only available in the IMD kernel but it would be easy to add it to other graphics kernels if needed. (4/13) sys/etc/prpsio.x The pseudofile i/o controller was modified to fix what has been referred to as the "imdkern bug", where the IMD kernel would not flush its output to the image display as it used to prior to 2.10.3. What happened was that the addition of GUI support in 2.10.3 included support for bidirectional GIO, where the application sends a request to the graphics server and reads back the response. The pseudofile i/o system buffers messages in the graphics streams in the CL and in order to support bidirectional transfers it is necessary to cancel the i/o buffer for the graphics stream to prepare for a possible response. No bug was found in this code, but what was happening was that when a control message was sent to PSIOCTRL a request such as close-workstation would write the GKI request to the graphics stream; this stream is just a file buffer in the CL and any data written there is not passed to the graphics subkernel until the subkernel reads from its input stream. In most circumstances subsequent graphics output would cause the buffered control request to be passed on to the subkernel and this is what was happening in versions of IRAF prior to 2.10.3. The addition of the cancel-stream statements in 2.10.3 would cause these buffered control requests to be discarded. In the case of imdkern the kernel would never see the close-workstation request, and the output would not be flushed until an event occurred such as shutting down the kernel with gflush. The fix was to modify the PSIOCTRL handling in prpsio.x to push an XMIT request on the psio control stack, to cause the buffered control requests to be passed on to the subkernel in the next iteration of the pseudofile i/o controller. (4/13) kifndnode.x kignode.x kilnode.x kimapname.x + kishownet.x mkpkg KI was modified to change the way logical node names are handled. A logical node name is an environment variable which maps to a node name from the dev$hosts table. Logical node names are used to create symbolic links to physical node names, providing physical node name independence, or to otherwise alias node names without having to modify the hosts table. The initial implementation of this feature was dangerous as logical node names and other environment variables share the same name space and inadvertent name collisions could occur. The fix was to require a special syntax to define a logical node name: an environment variable is treated as a logical node name only if the node delimiter character "!" is appended to the value string. For example, "set alpha = foo.bar.edu!" would define logical node alpha to be the same as foo.bar.edu. (4/13) unix/hlib/motd Version number incremented to V2.10.4BETA. (4/13) sys/fmtio/evvexpr.gy This routine was modified as follows to fix bugs seen in IMEXPR. 1. There was a bug affecting binary scalar/vector boolean operations where the vector operand was the second operand: the type conversion would fail if the vector operand was of type boolean. The routine xvv_boolop was modified to treat any input boolean operands as integer (they are stored in expressions operands as integers anyway), this avoids the special case and is a bit more general. The test case used was the expression "(J <= 5 && I <= 10) ? 0 : a". 2. xvv_quest was modified to permit int as well as bool for the input conditional. A bug was fixed where the routine would fail if the input conditional was a scalar but the data operands were vectors; the code was assuming a vector conditional in this case. For example, "(J <= 5) ? 0 : a" would fail, as (J <= 5) is a scalar (J is a constant when evaluating the expression for a line). (4/14) sys/gio/gascale.x sys/gio/grscale.x These routines can modify or set a WCS but they were not setting the WF_MODIFIED flag, a recent addition with the GUI support. This fixes a problem first seen with IMPLOT where cursor reads would in some cases print NDC coordinates instead of pixel coordinates. (4/15) sys/osb/miinelem.x The miinelem routine was incorrectly rounding up to the next full mii_type when computing the number of mii_type items that can fit in a char array of a given length. (Bug reported by Phil Hodge May94). (4/17) pkg/images/doc/fit1d.hlp Added a description of the interactive parameter to the fit1d help page (4/17 LED). sys/mwcs/mkpkg sys/mwcs/mwsave.x sys/mwcs/mwload.x 1. The mw_save/mw_load routines are supposed to encode a MWCS in a machine independent form and later restore it, but due to a bug the encoded MWCS was not fully machine independent. mw_save uses pl_p2li to compress the integer part of the MWCS descriptor, but mw_save was using miipak32 to encode this for external storage. This is incorrect since pl_p2li produces a type short rather than integer array. The bug was harmless on big-endian machines like a Sun or on any machine when the saved MWCS was read back on the same machine, but would cause the saved MWCS to fail to load when tranferred to a machine with a different architecture. The fixed code now uses mii{pak,upk}16 to transform the data. mw_load can still read old saved MWCS provided they were written on a machine of the same architecture. 2. mw_load now initializes the axis map to a 1 to 1 mapping as in a call to mw_open to create a new MWCS (formerly the axis map storage was zeroed following a mw_load). The axis map is not saved and restored over a mw_save/mw_load sequence. (4/18) sys/mwcs/zzdebug.x Added two new debug tasks "save" and "load". SAVE creates a dummy MWCS, calls mw_save to encode it , and then saves it to a file "mwcs.sav" in the current directory. LOAD calls mw_load to load the named MWCS save file. Both routines call mw_show to display the MWCS so that one can easily verify that it has been saved and restored correctly. (4/18) sys/mwcs/iwewcs.x The routine iw_enterwcs could set the RA axis incorrectly for a ra/dec projection where the ra/dec axes were not axes 1/2 or 2/1 and the CDELT keywords were used rather than the CD matrix. (4/18) sys/mwcs/imwcs.h sys/mwcs/iwctype.x sys/mwcs/iwpstr.x sys/mwcs/mwcs.h sys/mwcs/mwsaveim.x The maximum number of WCS attributes was increased from 256 to 512. The WAT and WSV keyword handling code was modified to permit more than 999 keywords to be output; the format changes to omit the underscore if the index value exceeds 999. These changes should be backwards compatible while allowing more complex WCS to be stored. (4/19) pkg/system/rename.x pkg/system/rename.par pkg/system/doc/rename.hlp Modified the task to allow a destination directory to be specified without changing the filename. A new "field" parameter option "all" was added and made the default so the entire filename is changed (or moved in the case of a destination directory). When field is set to "extn" filenames without an extension will not have the new extension appended so a filename isn't generated which can get overwritten. (3/14/95 MJF 4/19 DCT) pkg/cl/builtin.c Appending the output of a foreign task now works correctly; previously it would overwrite any existing output file. For example, "ls >> foo" will append the output of ls to file foo. The bug addressed here affected only explicit redirection of the output of a foreign task. Previous version of the CL would correctly redirect the output of a foreign task so long as the task was called indirectly, e.g. from within a CL script. (4/19) sys/etc/oscmd.x Added clobber checking for the output redirection files if any. (4/19) unix/shlib/mkshlib.csh We had another one of those nasty occurrences where the iraf shared library is rebuilt and suddenly nothing runs anymore (this happened after the trivial modifications to oscmd.x above). The problem was traced to the setting of the "environ" pointer in low shared image memory by vlibinit when the shared image is mapped by zzstrt. The environ variable is part of the Sun startup code and is one of the first objects linked into the shared library image. The problem was that the data for this variable was located in the end of the last page of text, but since the text was mapped readonly a segvio would occur when attempting to write to this variable. The fix, at least for the moment, was to add a ".align 4096" to the end of V.s to force the data segment to be aligned to a page boundary. (4/20) sys/imio/iki/stf/stfdelete.x stfdelete now checks to see if the pixel file exists before trying to delete it. It is not considered an error if there is no pixel file. (4/20) pkg/cl/config.h Doubled the size of the stack and dictionary. (4/21) unix/hlib/zzsetenv.def The default printer and stdplot devices were changed to "lp", which on unix systems is the default line printer device. If the user has PRINTER set in their host environment IRAF printer output will be directed to the user specified device. The default printer device may still be overridden from within IRAF by setting an environment variable or via a parameter override. (4/28) unix/hlib/libc/kernel.h unix/os/zawset.c A number of changes were made to ZAWSET (called by BEGMEM) to improve memory utilization for IRAF tasks that request and use very large amounts of memory. These changes should be backwards compatible and the usages of ZAWSET and BEGMEM were not changed. 1. Modified to make it easier to determine whether the setrlimit code is used on different platforms. 2. Removed the setrlimit that was being performed at process initialization time to set the soft limit on a processes memory. It is questionable whether this should be limited by default on modern systems which are mostly personal workstations, and it is better to use the "limit" command in the CSH (or equivalent) to do this outside of IRAF, under user control. 3. In kernel.h, increased the default WSS to 8 Mb and the builtin max WSS to 256 Mb. These values are used only on platforms where ZAWSET can't determine the value from the UNIX kernel, e.g. using getrlimit. Assuming MAXWORKSET is not defined (see below) the max WSS value compiled into the IRAF kernel, e.g. 256 Mb, will however serve as an upper limit on the amount of memory reported as available to an IRAF task. 4. Added support for an environment variable "MAXWORKSET". This value if defined sets an upper limit on the working set reported to a task via ZAWSET (or BEGMEM). This can be used to override the builtin upper limit. If the platform supports getrlimit and a memoryuse limit is defined which is less than MAXWORKSET, the getrlimit value will be used instead: this the current limit, as opposed to the maximum limit. The units of MAXWORKSET are Mb, e.g. "setenv MAXWORKSET 32" sets the maximum working set to 32 Mb. Since MAXWORKSET is used by the host-level kernel code it must be set in the host environment, not in IRAF. A quick survey of SunOS, Solaris, and OSF/1 shows that the system default getrlimit returns the amount of available physical memory (57 Mb) on OSF/1, but an "unlimited" value (2 Gb) on the Sun systems. The OSF/1 value is what zawset ideally wants to return, i.e. the maximum amount of physical memory available to the process before paging occurs. This can be difficult to determine on many unix platforms and currently the builtin kernel limit of 256 Mb will be what is returned on platforms like SunOS/Solaris that don't report the physical memory value. With further research we may be able to find a way to do reliably return the correct value on platforms like Sun, however this can be a very system dependent feature to implement. In the meantime the MAXWORKSET environment variable, or "limit" in the cshell (etc.) can be used to fine tune ZAWSET on platforms that can't determine the max physical memory. (5/02) unix/hlib/zzsetenv.def Changed "gterm" to "xgterm" for the default values of stdgraph and terminal. (5/03) sys/gio/fpequald.x sys/gio/fpequalr.x The comparison could fail if either operand was zero and the other was a very small nonzero number. (5/10) ------------------------------ V2.10.4 distribution (beta test for the NOAO servers) prepared. (5/10/95) unix/hlib/login.cl Added a note about the trailing "!" needed for "set node =" in V2.10.4. (5/11) sys/etc/xerpop.x unix/hlib/libc/libc.h Changed the C construct {XERPSH();stmt;}if(XERPOP()) to {XERPSH();stmt;}if(XERPOPI()), and added a new routine XERPOPI to xerpop.x. The original construct was incorrect as it was treating the result of the boolean function xerpop() as an integer. (5/12) ------------------------------ V2.10.4 distribution upgrade prepared. (5/14) pkg/cl/scan.c Fixed a nasty bug in the scan code affecting scans into a string parameter; the string buffer was being improperly referenced. This bug has been in place since the scan code was modified on 12/29/94 but evidently was never seen as IRAF is not exercised enough on tucana. Showed up right away when V2.10.4 moved to the user nodes. (5/15) unix/os/zawset.c On Solaris it turns out that setrlimit, when used to set the soft memory limit, sets a hard limit on memory allocation for the process, causing malloc requests to fail if the set limit is exceeded. This is not really the point of begmem/zawset, so the code was modified to only call setrlimit if one attempts to increase the current "soft" memory limit. Requests for less working set than the soft limit do not result in a call to setrlimit, and the routine merely indicates that the requested space is available. (5/15) unix/hlib/zzsetenv.def Updated "version" to 2.10.4EXPORT. (5/19) unix/hlib/spy.cl Rewrote spy.cl to work on both BSD and SYSV systems (SunOS and Solaris in the case of Solaris/IRAF). (5/19) ------------------------------ V2.10.4 distribution upgrade prepared. (5/21) dev/hosts Added Tod Lauer's machine seurat to hosts file on all servers (5/25 MJF) sys/imio/db/imgnfn.x This code supported, for keyword selection, only naxis[1-3]. Added support for axes up to 7. (5/26) sys/fmtio/evvexpr.gy 1. Modified the conditional expression code (xvv_quest) to consider the dimension of the condition operand as well as that of the two data operands when computing the dimension of the expression result. For example, if the condition is a vector but the two data operands are scalars, the expression result should be a vector (formerly it was a scalar). The datatype of the expression is still determined solely by the datatypes of the two data operands. 2. The condition operand for a conditional expression may now be any integer type, i.e. short or long as well as int, in addition to bool. If int is permitted it doesn't make much sense to exclude short and long. 3. The logical not code (e.g. "!a") was modified to permit integer class operands (short, int, long) as well as boolean. (5/27) ------------------------------ V2.10.4 distribution upgrade prepared. (5/29) dev/hosts Corrected path name to irafks.e for pyxis on all servers (5/31 MJF) dev/hosts Added lonestar and tribble to all downtown servers (6/6 MJF) ------------------------------ IRAF V2.10.4 system copied to iraf.export and V2.11 development begun. (6/12) unix/hlib/motd unix/hlib/zzsetenv.def Develop system version number incremented to V2.11. (6/12) pkg/images/geometry/t_geotran.x pkg/images/geometry/geotran.x pkg/images/geometry/geotimtran.x Fixed a bug in the buffering of the x and y coordinate surface interpolants which can cause a memory corruption error if, the nxsample or nysample parameters are > 1, and the nxblock or nyblock parameters are less than the x and y dimensions of the input image. Took the opportunity to clean up the code. (6/13/95, LED) pkg/math/curfit/cvpower.gx pkg/math/curfit/cvpowerr.x pkg/math/curfit/cvpowerd.x pkg/math/curfit/doc/curfit.hd pkg/math/curfit/doc/curfit.men pkg/math/curfit/doc/cvepower.hlp Added the new routine cvepower to the curfit math library. Cvepower computes the errors in the power series coefficients equivalent to the fitted Legendre and Chebyshev coefficients. Cvepower is available in both real and double precision versions. (6/13/95, LED) pkg/images/fmedian.hlp pkg/images/fmode.hlp pkg/images/median.hlp pkg/images/mode.hlp pkg/images/fmedian.par pkg/images/fmode.par pkg/images/median.par pkg/images/mode.par pkg/images/filters/fmedian.h pkg/images/filters/fmode.h pkg/images/filters/median.h pkg/images/filters/mode.h pkg/images/filters/t_fmedian.x pkg/images/filters/t_fmode.x pkg/images/filters/t_median.x pkg/images/filters/t_mode.x pkg/images/filters/fmedian.x pkg/images/filters/fmode.x pkg/images/filters/median.x pkg/images/filters/mode.x pkg/images/filters/fmd_buf.x pkg/images/filters/fmd_hist.x pkg/images/filters/fmd_maxmin.x pkg/images/filters/med_buf.x pkg/images/filters/med_sort.x Added minimum and maximum good data parameters to the fmedian, fmode, median, and mode filtering tasks. Removed the 64X64 kernel size limit in the median and mode tasks. Replaced the common blocks with structures and .h files. (6/20/95, LED) pkg/images/frmedian.hlp pkg/images/frmode.hlp pkg/images/rmedian.hlp pkg/images/rmode.hlp pkg/images/frmedian.par pkg/images/frmode.par pkg/images/rmedian.par pkg/images/rmode.par pkg/images/filters/frmedian.h pkg/images/filters/frmode.h pkg/images/filters/rmedian.h pkg/images/filters/rmode.h pkg/images/filters/t_frmedian.x pkg/images/filters/t_frmode.x pkg/images/filters/t_rmedian.x pkg/images/filters/t_rmode.x pkg/images/filters/frmedian.x pkg/images/filters/frmode.x pkg/images/filters/rmedian.x pkg/images/filters/rmode.x pkg/images/filters/med_utils.x Added new ring median and modal filtering tasks frmedian, rmedian, frmode, and rmode to the images package. (6/20/95, LED) doc/ports/notes.osf1 + Added notes file from DEC Alpha OSF/1 port. (6/21) sys/fio/fioclean.x sys/fio/stropen.x Two new internal routines str{set,get}mode were added to stropen.x. These are used to set or query the file access mode as stored for the string file, which represents these in a file-dependent way. fio_cleanup was modified to force the access mode of a string file to READ_ONLY before closing it during file cleanup, to prevent the writing of the trailing EOS when closing a string file opened for writing. The latter could cause a segmentation violation if the string buffer was no longer in a mapped region of memory, as is possible if the string file is still open (i.e. not closed normally) following task termination when fio_cleanup is called. This problem was found when testing the OSF/1 version of IRAF. (6/21, merged from OSF1 revision of 6/06) dev/termcap Added "lp" as an alias for "lpr". (6/26) dev/hosts Added solstice to the downtown servers (tucana,ursa,gemini,orion,bigx) at Ed Anderson's request (6/26 RLS) unix/hlib/mkpkg Changed "mkshlib.csh" references to "./mkshlib.csh" to make the script more robust in cases where the user has the path screwed up. (7/03) dev/tapecap Added support for device mtc|mtcc for BIGX, an HPDAT drive using the ST driver. Also generic device st-hpdat, the HPDAT on ST. (7/18) dev/hosts Added aten, volans, & musca to all servers, deleted vegemite (7/18 MJF) dev/hosts Added soleil to all downtown server at Ed Anderson's request. (7/27 MJF) sys/fmtio/strdic.x Was not ignoring leading whitespace on the string to be tested, when computing the length "len" of the string. (7/31) pkg/proto/t_wcsreset.x Added an error check to the mw_openim command so wcsreset can erase the world coordinate systems of images with wcss that it cannot read correctly. (1/8/95, Davis) pkg/xtools/inlfit/incopy.gx pkg/xtools/inlfit/incopyr.x pkg/xtools/inlfit/incopyd.x Changed 4 MEMP (Memi) references to Mem$t references. (02/8/95, Davis) dev/tapecap Modified gemini entry to change WangDat to an HP drive. (8/10) sys/fio/zzdebug.x Replaced the t_ndopen debug task by a more recent version. (8/28) lib/gio.h sys/gio/gplcache.x sys/gio/gctran.x The WCS transformation caching mechanism used in gctran was not reliable and could fail in some cases where the WCS was changed more frequently than gctran was called. To make caching of WCS related information more robust a new field GP_WCSORD was added to the GIO descriptor. This is set to a unique integer ordinal when a WCS is fixed. If the ordinal changes any routines that cache WCS information should invalidate their cache (unless they cache it on the basis of WCSORD). WCSORD will differ for WCS stored in different graphics descriptors, so testing WCSORD also does an implicit test that the GP has changed. (8/28) sys/mwcs/iwewcs.x Modified so that if an image contains a partial Lterm consisiting of an LTV but no LTM, the missing LTM will default to the identity matrix instead of the zero matrix (the latter causes a segvio if you try to invert it). An image with a zero LTM is illegal but MWCS should not die with a segvio in this case. (8/29) sys/imio/immaky.x sys/imio/mkpkg When copying an image section IMIO will call MWCS to update the Lterm of the output image. This requires that it load any existing WCS so that it can be modified and written out to the output image. IMIO was modified to put the mw_open in an iferr block, printing a warning message if the WCS cannot be loaded, rather than aborting the immap. Aborting means that all IRAF imaging tasks fails to access the image if it contains a WCS of a type not supported by IMIO. (8/29) sys/mwcs/iwgbfits.x The code which reads in multiline FITS strings (WATi_j etc.) would always read 68 characters per card. This was changed to read at most 68 characters, terminating if newline, EOS, or a single closing quote is seen in the input data. This allows the string on a line to be less than 68 characters. It also avoids a bug seen with non-blocked headers where the cards may contain less than 80 characters. (8/29) sys/mwcs/iwpstr.x The final card of a multi-card string is no longer blank filled, i.e. the closing quote will appear at the end of the string instead of in column 80. (8/30) sys/mwcs/mwsaveim.x The code which puts spaces between a sequence of attribute=value keywords in a WCS attribute list was improved to avoid an unnecessary space at the end of the list (spaces are now only used between the members of the list). (8/30) sys/imio/db/impstr.x When writing a string valued parameter the code checks for a trailing quote and tries to add one if it is missing. The closing quote is omitted if it would overwrite a data character - it isn't required when reading cards unless the string ends before column 80. (8/30) sys/mwcs/mwsave.x The DBUF offset in the save header was not being aligned to double. (8/30) ------------------------------------- V2.10.4 patch 1 generated. (8/30) doc/rev2.hlp Renamed this file to rev2.txt, it is not a help file. (9/03) unix/boot/bootlib/osfiletype.c Added ".gz" to the list of "source" file types. Also added ".fit" as an alias for ".fits". (9/03) mkpkg noao/mkpkg Added entries for linux and linuz architectures. (9/06) unix/hlib/strip.iraf noao/lib/strip.noao Replaced by updated versions, some files moved around and others have been added. (9/06) local/.cshrc Added "." and moved /usr/lang up in the hierarchy. (9/21) hlib/extern.pkg Added the helpdb for the finder package on gemini and ursa. The package is still loaded through the nlocal package. (10/12 RLS) sys/mwcs/imwcs.h CROTA was being stored internally as an integer, causing small truncation errors of non-integral rotational angles. (10/18) dev/graphcap dev/imtoolrc Added a new 8192x8192 frame buffer (imt7|imt8192). Redefined the old imt7 (imt4x1) as imt19. (11/01) pkg/images/tv/imexamine/ierimexam.x pkg/images/tv/imexamine/stfmeasure.x + pkg/images/tv/imexamine/starfocus.h + pkg/images/tv/imexamine/mkpkg pkg/images/tv/doc/imexamine.hlp lib/src/imexamine.key New FWHM estimates based on the enclosed flux and a direct measurement were added to the 'a' and 'r' keys. The weights for the Gaussian fit were modified to reduce the influence of pixels outside the half-maximum radius. The ? help and help page were revised to described the new output and algorithms. (11/09) dev/hosts Added 'inti' to all downtown servers. (11/20 MJF) pkg/images/median.par pkg/images/rmedian.par pkg/images/mode.par pkg/images/rmode.par pkg/images/fmedian.par pkg/images/frmedian.par pkg/images/fmode.par pkg/images/frmode.par pkg/images/doc/median.hlp pkg/images/doc/rmedian.hlp pkg/images/doc/mode.hlp pkg/images/doc/rmode.hlp pkg/images/doc/fmedian.hlp pkg/images/doc/frmedian.hlp pkg/images/doc/fmode.hlp pkg/images/doc/frmode.hlp pkg/images/filters/t_median.x pkg/images/filters/t_rmedian.x pkg/images/filters/t_mode.x pkg/images/filters/t_rmode.x pkg/images/filters/t_fmedian.x pkg/images/filters/t_frmedian.x pkg/images/filters/t_fmode.x pkg/images/filters/t_frmode.x Added a verbose parameter to the median, rmedian, mode, rmode, fmedian, frmedian, fmode, and frmode tasks. (11/27/95, Davis) dev/hosts Corrected path to irafks.e for cephus on all servers (11/30 MJF) unix/boot/spp/xpp/xppcode.c Modified XPP to make keyword recognition case sensitive. Keywords such as "int", "char", "procedure", etc. must be lower case to be recognized. This permits macros to use the upper case versions of these keywords. (12/05) pkg/cl/debug.c Added INDXINCR and PUSHINDEX to the debug code. (12/14) pkg/cl/builtin.c pkg/cl/compile.c pkg/cl/debug.c pkg/cl/exec.c pkg/cl/grammar.y pkg/cl/main.c pkg/cl/opcodes.c pkg/cl/opcodes.h pkg/cl/prcache.c 1. Fixed minor bugs in the CL array code which showed up on the 64bit DEC Alpha. The array code had builtin assumptions about the size of structures stored in CL memory, but on 64 bit systems the CL stack and dictionary have a 64 bit memel size, rather than 32 bit. 2. Added a new builtin "d_trace" which permits instruction and process tracing during execution. Typing d_trace without any arguments toggles this feature. An optional argument 0 or 1 may be used to disable or enable instruction tracing. A source line trace feature might have been nicer, but instruction tracing should still be of use for tracking down bugs in scripts, or otherwise revealing what is going on when the CL executes a task. (12/16) sys/fmio/zzdebug.x Added a parameter to the create datafile task to allow specification of FM_MAXPTPAGES (max page table pages), for testing large datafiles. (12/18) dev/hosts Added new solaris machine oso to all servers. (1/29/96 MJF) pkg/images/imarith/imexpr.gx Modified imexpr so that it will accept an image name that looks like a number in the first few characters, but which is really an image name. For example, "123.imh" or "../foo.imh". The previous version of imexpr was treating any string which looked like a number in the first few characters as a numeric constant. (2/8/96 LED 2/14 DCT). dev/hosts Eliminated all references to /gemini and /ursa since all machines have been updated such that /iraf is the correct path. Merged all changes from other servers to tucana so all hosts files are now identical, new machines added include ozzie, verdi, corondito and pearl.kpno. Backups of previous files will be maintained. (2/14 MJF) pkg/images/geometry/t_geotran.x pkg/images/geometry/geograph.x pkg/images/doc/geomap.hlp Corrected the definition of skew in the routines which, compute the geometric interpretation of the 6-coefficient fit, compute the coefficients from the geometric parameters, and in the relevant help pages. (2/19/96, LED) sys/fio/zzdebug.x Spiffed up the "daytime" debug/test task to permit entry of a host name, so that one can use this to find out what time it is at some site halfway around the world. (2/23) pkg/images/tv/imexamine/iejimexam.x pkg/images/tv/jimexam.par pkg/images/tv/doc/imexamine.hlp There were several errors in this which only showed up when using a world WCS. The parameter prompt and help now indicate the initial sigma value is in pixels even when fitting in world coordinates. (2/27/96, FV) pkg/images/tv/imexamine/iemw.x The inverse WCS function was incorrect and is fixed. (2/27/96, FV) pkg/dataio/doc/rfits.hlp Added a note about support for unsigned short integers to the rfits help page. (2/27/96, LED) pkg/xtools/icfit/icvshow.gx pkg/xtools/icfit/icshow.x pkg/xtools/icfit/icerrors.gx All output except the tabular part of :xyshow now begins with the comment character. (2/29, Valdes) pkg/utilities/curfit.gx Removed repeated output and added a comment character to the table header line. (2/29, Valdes) dev/hosts Changed GONG machines soi/mdi to use bin.ssun after solaris upgrades. (3/8/96 MJF) sys/fmio/fmio.h sys/fmio/fmlfopen.x sys/fmio/fmlfbwr.x sys/fmio/fmlfbrd.x sys/fmio/fmioextnd.x sys/fmio/fmclose.x 1. Changed the lfile pagemap (LF_PAGEMAP) from type short to int. This is entirely an internal array, created at lfile open time from the global pagemap, and never written out, so there should be no problem changing the datatype of the array. A type short lfile pagemap limits the maximum datafile size by limiting the max file offset to 32K datafile pages. This is not a problem for the global page table as the global table stores the lfile number in each PTE, with the offset of the PTE entry giving the associated file offset (page number). 2. Increased the default lfile pagemap size and increment on overflow. (3/11) lib/qpset.h sys/qpoe/qpoe.h sys/qpoe/qpstati.x sys/qpoe/qpseti.x sys/qpoe/qpopen.x sys/qpoe/qpmacro.x sys/qpoe/qpbind.x Added a new parameter "maxptpages" (QPOE_MAXPTPAGES) to QPOE. This is a datafile control parameter similar to "maxlfiles" or "pagesize". The pagesize and matptpages together determine the maximum datafile size. In the past we have had to increase the pagesize to accomodate very large datafiles, but beyond a certain point it is better to increase the maximum page table size (maxptpages). Since QPOE files can be very large it is necessary to allow control of this parameter from within QPOE. (3/11) dev/hosts Added Doug Geisler's machine kukita to all servers. (3/11/96 MJF) sys/fmtio/dtoc.x Added some rounding to avoid printing numbers such as 12:29:60.0 when formatting sexagesimal (HMS or MS) numbers. (3/12) sys/mwcs/iwewcs.x Modified the code which computes the CD matrix from CDELT/CROTA. The old code computed the diagonal (scale) terms correctly but the rotation terms were evidently incorrect. The old code was based on the 1988 Hanisch and Wells WCS paper and the new code is based on a more recent paper by Mark Calabretta et. al. which supercedes the 1988 representation. The affect of this change should be limited as it only affects rotated images for which CDELT is given but no CD matrix is defined. (3/13) pkg/images/tv/src/iecolon.x pkg/images/tv/src/starfocus.h pkg/images/tv/src/stfmeasure.x pkg/images/tv/src/ierimexam.x pkg/images/tv/rimexam.par pkg/images/doc/imexamine.hlp lib/scr/imexamine.key The radial profile fitting and width measurements now have an option to use a Gaussian or Moffat profile model. The model is selected by a new "fittype" parameter. A new "beta" parameter may be specified as INDEF to be determined from the fit or have a fixed value. The Moffat profile model does better in producing consistent FWHM values so this is the default. (3/16, Valdes) math/gsurfit/gsrestore.gx math/gsurfit/gsrestorer.x math/gsurfit/gsrestored.x Changed the type declaration of the xmin, xmax, ymin, ymax variables from real to PIXEL to avoid machine precision problems. (3/21 Davis) pkg/cl/builtin.c Modified the clprintf code to support INDEF operands. (3/23) pkg/images/tv/imedit/epsearch.x pkg/images/tv/imedit/epgcur.x 1. The search algorithm produced incorrect results if part of the aperture was off the edge (negative image coordinates). 2. The rounding was incorrect when part of the aperture was off the edge (negative image coordinates). 3. A floating operand error occurs when a key is given without coordinates. (3/26, Valdes) pkg/plot/t_implot.x When the vector being plotted was constant the 'l' and 'c' keys selecting lines/columns from the right plot axis did not work. The code was fixed for this case. (3/27, Valdes) pkg/images/geometry/xregister/rgxfit.x Changed several Memr[] references to Memi[] in the rg_fit routine. This type conversion bug was causing a floating point error in the xregister task on the Dec Alpha machines if the coords file was defined, and could potentially cause problems on other machines. (Davis, April 3, 1996) unix/os/gmttolst.c unix/boot/bootlib/ostime.c Removed the type long variables gmtl, lstl and modified all calls to localtime() so that the argument is of type time_t. This is standard for all modern systems. Some older systems still require that the argument be type long, but as this is nonstandard it should be ifdef-ed in the source for these older systems. (4/04 1996) unix/hlib/libc/libc.h The macros Memcptr and Memiptr included a "+ 1" which shouldn't have been there. The one indexing correction was already being done in the Memc/Memi macros and Memcptr/Memiptr take a zero indexed C pointer as input. This was causing a bug in LIBC version of realloc, which is not used anywhere in the IRAF system code. (4/05) pkg/images/tv/imexamine/ierimexam.x pkg/images/tv/imexamine/stfmeasure.x Fixed incorrect datatype declaration "real np" -> "int np" in various related places. (4/9/96, Valdes) unix/os/zmain.c Added a #ifdef SYSV conditional to change the calling sequence for setpgrp() for SYSV and BSD systems. (4/24) sys/imio/iki/plf/plfopen.x Fixed an imerr() call which had the wrong argument type. (5/06) sys/libc/realloc.c Modified to work when called with a null pointer. (5/06) sys/gio/stdgraph/stgdrawch.x The text drawing routines were not controlling the polyline width when drawing characters in software mode using polylines. There is no line width attribute for graphics text and we probably don't want one, so the code was modified to force the line width to 1 when drawing software characters. (5/10) unix/boot/bootlib/osgetenv.c The envinit code calls _os_getenv to fetch the value of "pkglibs". This code assumes that _os_getenv returns the string argument, but nothing was being returned if the named environment variable was not found. Changed it to return a NULL-terminated empty string in this case. (5/10) sys/etc/mkpkg sys/etc/onentry.x sys/etc/main.x unix/os/zmain.c 1. The IRAF main (irafmn) was changed to an integer function and modified to return an exit status. If a task aborts and the main exits without running any more tasks (as when executing a task at the host level where only a single task is run) then the error status of the task is returned. In normal use as a connected process this condition never occurs and the main always returns XOK as the status. 2. Several calls to sys_panic in various etc$ routines were modified to ensure that a zero error code is not returned. sys_panic returns the error code as the exit status of the process. 3. The process main (zmain.c) was modified to call IRAF_MAIN as an integer function and to return its exit status. 4. The call to exit() in zmain.c was changed to _exit(). (5/11) pkg/plot/t_graph.x pkg/plot/graph.par pkg/plot/doc/graph.hlp Added parameters "ltypes" and "colors" to specify a list of line types and colors when doing multiple data sets. (5/13, Valdes) ---------------------------------------- V2.10.4 patch 2 release. (5/22 1996) unix/boot/bootlib/envinit.c Fixed a typo in some code that went "printf (stderr, ...)" (should be fprintf), also changed following fflush to flush stderr. (5/27) unix/boot/bootlib/vfn2osfn.c Deleted some unneeded semicolons from some stub routines, e.g. in "KI_SEND(){};" the ; should not be there. (5/27) unix/boot/generic/mkpkg.sh unix/boot/mkpkg/mkpkg.sh unix/boot/rmbin/mkpkg.sh unix/boot/rmfiles/mkpkg.sh unix/boot/rtar/mkpkg.sh unix/boot/wtar/mkpkg.sh unix/boot/spp/mkpkg.sh unix/boot/spp/mkxc.sh unix/boot/rpp/mkpkg.sh unix/boot/xpp/mkpkg.sh unix/boot/xyacc/mkpkg.sh Replaced HSI_CF by HSI_LF in the link line (5/28) unix/hlib/irafuser.csh Added a dummy definition of HSI_LF (not used in SunOS/IRAF but is needed on other platforms). (5/28) unix/boot/rmfiles/mkpkg.sh Added a (char *) declaration for vfn2osfn(). (5/28) pkg/cl/grammar.h pkg/cl/globals.c Added global definitions for parse_state, proc_script, and parse_pfile to globals.c and modified grammar.h to define these as extern (found with the IRIX 5.3 port). (6/03) pkg/obsolete/<imcombine> - The old (V2.9) IMCOMBINE task was removed. (6/14 FV) pkg/obsolete/t_fixpix.x + pkg/obsolete/fixcol.gx + pkg/obsolete/t_fixline.gx + pkg/obsolete/ofixpix.par + pkg/obsolete/doc/ofixpix.hlp + pkg/obsolete/mkpkg pkg/obsolete/x_obsolete.x pkg/obsolete/obsolete.cl pkg/obsolete/obsolete.hd pkg/obsolete/obsolete.men Moved the V2.10.4 version of PROTO.FIXPIX to OBSOLETE and renamed it to OFIXPIX. (6/14 FV) pkg/proto/generic/ + pkg/proto/imfunc.x -> generic/ pkg/proto/imrep.x -> generic/ Added a generic directory for generic files. The generic procedures imfunc.x and imrep.x are now in this directory. (6/14 FV) pkg/proto/t_fixpix.x pkg/proto/fpfixpix.gx pkg/proto/fixpix.par pkg/proto/text2mask.par + pkg/proto/t_text2mask.x + pkg/proto/t_mask2text.x + pkg/proto/doc/fixpix.hlp pkg/proto/doc/text2mask.hlp + pkg/proto/mkpkg pkg/proto/x_proto.x pkg/proto/proto.cl pkg/proto/proto.hd pkg/proto/proto.men Replaced the old version of FIXPIX by a new version that works with mask images. Two new tasks were also added, TEXT2MASK and MASK2TEXT, that convert from the old text file description to mask images and back. The MASK2TEXT task is hidden to discourage continued use of the text file description. (6/14 FV) unix/boot/spp/xc.c Fixed a couple bugs in the PKGENV processing code. (7/05) doc/ports/notes.irix + Installed the notes file from the IRIX 5.3 port. (7/07) unix/os/irafpath.c Added entries for Solaris, Linux, FreeBSD. (7/17) unix/os/zfaloc.c unix/os/zfiobf.c Changed type of lseek() to off_f. (7/17) unix/boot/spp/xpp/xppcode.c Changed warn() to a static function. (7/17) mkpkg noao/mkpkg Added an entry for the "freebsd" architecture. (7/17) pkg/images/filters/median.x The routine mde_yefilter was being called with too many arguments. (7/18 LED) pkg/xtools/inlfit/ingresults.gx Changed several INDEFR references to INDEF references so that INDEF as the correct data type (real or double) in the output .x files. (7/18 LED) sys/gio/fpequald.x sys/gio/fpequalr.x Backed off the tolerance slightly, from 10*EPSILON to 32*EPSILON. (7/25) sys/imfort/bfio.x In zfaloc, the first arg to strpak was changed from fname (a Fortran character variable which was incorrect) to sppname. (7/17(26)) pkg/images/imarith/icsort.gx There was an error in the ic_2sort routine when there are exactly three images that one of the explicit cases did not properly keep the image identifications. See buglog 344. (8/1 FV) dev/hosts Revised the list of Kitt Peak hosts. (8/7 RLS) pkg/proto/fields.par pkg/proto/doc/fields.hlp Changed the default lines in FIELDS to an open upper limit. (8/22 FV) pkg/images/tv/imexamine/stfmeasure.x Fixed bug in evaluation of enclosed flux profile in which the scaled radius was used for the gaussian subtraction stage instead of pixels. This does not currently affect IMEXAM because the scale is fixed at 1. (8/29, FV) unix/os/zfnbrk.c Modified this routine to ignore file or directory characters other than those it considers to be file or directory name delimiters. On platforms that permit it, the effect is to permit characters (such as + and -) in filenames other than simple identifier characters. There is no expectation at this point however that all IRAF code will permit this. (9/03) dev/hosts Updated the hosts file on all Tucson servers for rainbow, Jim Deveny's new Sun. (9/10/96 jb) pkg/system/phelp.cl Modified to copy the "template" argument into a local variable since it is referenced twice in the script. (10/10) sys/fio/fioclean.x The file descriptor was being accessed after the file had been closed. (10/11) unix/os/zfiond.c Added a ":<flag>" field to the ND network driver. The only protocol flags currently supported are "text" and "binary". If "text" is specified then the datastream is assumed to consist of byte packed ascii text, and the driver will automatically convert to and from SPP chars during i/o. (10/29) sys/fio/zzdebug.x Added a new debug task "http". Given a hostname and a HTTPD-root relative file path the task will connect to the HTTP server on the given host and fetch the file at the given path. The output consists of the HTTP/1.0 protocol header followed by a blank line and the contents of the requested file. (10/29) pkg/images/tv/wcslab/t_wcslab.x pkg/images/tv/doc/wcslab.hlp Added an "overplot" option to append to a plot but with a different viewport. (11/06/96 Valdes) pkg/images/imarith/t_imcombine.x pkg/images/imarith/icombine.gx Changed the error checking to catch additional errors relating to too many files. (11/12/96, Valdes) dev/hosts Added driftwood to all downtown servers. (11/18/96 MJF) dev/hosts Updated block of KPNO hosts on solaris tree on Gemini. This was up to date on development system. (11/19/96 RLS) sys/fmtio/sscan.x sys/fmtio/fscan.x sys/fmtio/clscan.x sys/fmtio/scan.com Modified scan.com to dimension scanbuf locally as SZ_SCANBUF instead of SZ_COMMAND, in the process increasing the size from 1024 to 4096. Modified sscan to check for overflow of the scan buffer. (11/19) sys/ki/ki.h Increased maximum network hosts in the in-core host table from 128 to 256. (11/21) pkg/images/tv/imedit/epgsfit.x pkg/images/tv/imedit/epcolon.x pkg/images/tv/doc/imedit.hlp pkg/images/tv/imedit/imedit.par Added a median background if the xorder or yorder is zero. (11/22/96 Valdes) dev/hosts Cleaned up the hosts table: Deleted adonis aldebaran auriga columba crater irafdemo libra noctua octans omega serpens suntest verdi vela Fixed path names for mytoy and scorpius (11/21/96 MJF) pkg/images/imarith/icsetout.x pkg/images/doc/imcombine.hlp A new option for computing offsets from the image WCS has been added. (11/30/96 Valdes) pkg/images/tv/display/sigm2.x + Added a version of the spatial interpolation routines that allows masks to interpolate the input across bad pixels. (12/5/96, Valdes) pkg/images/tv/display/t_display.x 1. Fixed numerous problems with the coordinate system. 2. Fixed a bug in how ztrans=log was done. (12/5/96, Valdes) pkg/images/tv/display/iishdr.x pkg/images/tv/display/iisers.x Replaces SPP int -> short assignments by calls to achtiu because of overflow problems with some VMS fortran compilers. (12/6/96, Valdes as reported by Zarate) pkg/images/tv/display/imdmapfr.x pkg/images/tv/display/imdputwcs.x + Added two routines to hide knowledge of the channel structure and other details from the calling routines. (12/11/96, Valdes) dev/hosts Changed hohokam to ssun, updated all servers w/ master copy from tucana to remove hosts and fix /gemini path names. (1/7/97 MJF) dev/hosts Changed the following SWN machines to bin.ssun: aquarius aten bokchoy carina (new) hedgehog herbie inti mdi potosi soi soleil Updated all servers. (1/15/97 MJF) pkg/xtools/dttext.x Added the routine dtgetd to the text database package. (1/16/97 LED) dev/hosts Changed norma to a solaris box. (1/24/97 MJF) unix/boot/bootlib/osfiletype.c Added several entries for files considered to be "source" files. These include .pl, .gif, .jpeg, and .tiff (.fits is already present). There are cases where it may make sense to include these files in the machine indendent source tree, e.g. for small test data files or for online help. (1/11) 1997 dev/hosts Added George's linux box aloe to all servers. (2/13/97 MJF) unix/boot/spp/xpp/decl.c unix/boot/spp/xpp/xppcode.c The recent change of warn() to static in xppcode.c caused a problem as warn is also used in decl.c. Changed warn() back to an external function but changed the name to xpp_warn to avoid whatever the platform-specific problem was that resulted in the original fix (probably warn was an internal function in some platform system library). (3/03) sys/mwcs/wfmspec.x On line 327, changed din=log10(in[1]) to din=log10(din). (3/04) -------------------------------- Did a diff/merge of recent tucana HSI changes into the Solaris/IRAF HSI. Replaced the "unix" directory on tucana SunOS/IRAF by the version from Solaris/IRAF. This HSI is supposed to work for both SunOS and Solaris (SunOS compatibility was preserved but never tested during the Solaris/IRAF port). Did a bootstrap and sysgen under both SunOS and Solaris. Mounted tucana iraf.develop as iraf.develop on Data. tucana iraf (irafx) is now solaris/iraf as well as sunos/iraf, they are the same thing. One benefit of this is that irafx is now available on solaris systems in the building (although we do have to update the ssun binaries periodically or it does no one any good). A complication is that since we have to update the ssun binaries, it is now more likely that the architecture may be set to something other than sparc. (3/19 1997) local/.cshrc local/.login Modified to work for both SunOS and Solaris. (3/19) unix/as.sparc/enbint.s This file from Solaris/IRAF isn't used by SunOS/IRAF, but it is probably better to provide it in the library than to add conditionals to the build files in OS. (3/19) unix/boot/bootlib/osfiletype.c unix/boot/bootlib/vfn2osfn.c unix/boot/spp/xpp/decl.c unix/boot/spp/xpp/xppcode.c unix/hlib/libc/kernel.h unix/os/irafpath.c unix/os/zfaloc.c unix/os/zfiobf.c unix/os/zfiomt.c unix/os/zfiond.c unix/os/zlocpr.c unix/os/zzstrt.c Assorted minor changes to make these files work for both SunOS and Solaris. (3/19) unix/shlib/medit.c unix/shlib/mkpkg unix/shlib/mkpkg.sh unix/shlib/mkshlib.sos4 unix/shlib/mkshlib.ssol unix/shlib/mkshlib.ssol-sc34 Various file modifications and file name changes to make shlib build for both SunOS and Solaris. (3/19) pkg/math/curfit/cvacpts.gx pkg/math/curfit/cvacptsr.x pkg/math/curfit/cvacptsd.x pkg/math/curfit/doc/cvpower.hlp pkg/math/curfit/cvpower.gx pkg/math/curfit/cvpowerr.x pkg/math/curfit/cvpowerd.x The weights computed by the WTS_CHISQ option in the routines cvacpts[rd] were not being forced to be positive as intended. (3/20) There was an inconsistency in the way the ncoeff argument to the cvpower[rd] routines was being used internally. Ncoeff was intended to be an output argument but was being used as an input argument by one of the routines called by cvpower. (3/20) sys/mtio/mtgtyopen.x MTIO was modified to add support for server-specific tapecap files. When opening the tapecap file MTIO will now look for "tapecap.<node>" followed by the default "tapecap". <node> should be the hostname (as used by IRAF networking) of the server hosting the tape drives described by the tapecap file. For example if host "gemini" serves up some tape drives it's tapecap file is named "tapecap.gemini". If a server-specific tapecap file is not found the default "tapecap" (on the possibly remote server node) is used. This feature allows a single IRAF installation to be shared by multiple servers. (3/21) dev/README dev/tapecap.sunos + dev/tapecap.solaris + Since the Sun/IRAF DEV is now shared by both SunOS and Solaris it now contains the template tapecap files for both systems. The README in DEV contains some pointers on configuring tapecap and other device files. (3/21) pkg/images/tv/display.par pkg/images/tv/display/t_display.x pkg/images/tv/display/zscale.x pkg/images/tv/display/sigm2.x + pkg/images/tv/display/maskcolor.x + pkg/images/tv/display/dspmmap.x + pkg/images/tv/display/display.h pkg/images/tv/display/gwindow.h pkg/images/tv/display/mkpkg pkg/images/tv/doc/display.hlp 1. Improved the structure of DISPLAY. 2. Fixed coordinate system errors. 3. Added parameters to display bad pixel masks and overlay masks. 4. The z scaling sampling may use a pixel mask or image section. 5. The z scaling excludes bad pixels. (3/20, Valdes) -------------------------------- The following series of revisions were made to increase the size of various system buffers. This included a full system reboot and recompile. (3/24) lib/fio.h sys/fio/vfnmap.x sys/fio/vfntrans.x Various buffer sizes affecting filename mapping were increased. SZ_VFNFN (max length of the root field of a VFN) went from 32 -> 127. SZ_OSDIR (max length of the osdir field of a VFN) from 79 -> 255. SZ_FFNAME, an internal filename buffer, went from 127 -> 255. In an unrelated change SZ_SPOOLBUF, the intial size of a spool buffer, was increased from 1024 to 4096. (3/23) unix/hlib/config.h 1. MAX_ROOTLEN was increased from 32 to 128. This is supposed to be the limit the host system places on the root portion of a filename (that is, only the root name, not the pathname). Anything in the range 128-256 is typical for unix systems today. 2. The maximum number of open VOS files was increased from 128 -> 256. (3/23) sys/fio/fntgfn.x SZ_PATTERN, SZ_TEMPLATE, SZ_LDIR, SZ_PATSTR were all increased, although so far as I know there has never been a case of pattern buffers overflowing. The new limit for a pattern string is about 1024. (3/23) unix/hlib/iraf.h SZ_FNAME went from 63 -> 255. SZ_PATHNAME went from 127 -> 511. SZ_LINE went from 161 -> 1023. SZ_COMMAND went from 1024 -> 2047. (3/23) unix/hlib/iraf.h unix/hlib/mach.h MAX_EXPONENTD went from 38 (same as real) to 308, the value for IEEE double. MAX_DOUBLE increased from 0.99d37 to 0.99d307. INDEFD was changed from 1.6d38 to 1.6d308 for IEEE systems. (3/23) unix/hlib/libc/libc.h unix/hlib/libc/spp.h FIO_MAXFD, INDEFD, SZ_LINE, SZ_FNAME, SZ_PATHNAME, SZ_COMMAND were updated to agree with the SPP values. (3/23) sys/imio/iki/stf/stfrdhdr.x Unrelated STF bug fix. stfrdhdr.x was modified to handle the case where datamin/datamax were not defined in the GPB, but were defined in the main image header. (3/24) unix/boot/spp/xpp/xppmain.c Removed a redundant SZ_PATHNAME. (3/24) unix/shlib/mkpkg unix/shlib/mkshlib.sos4 Changed the address of the shared library from 0xa000000 to 0x10000000. This increases the maximum available per-process dynamic memory from 167 MB to 268 MB (much more is possible if the process is statically linked). (3/24) unix/os/zzstrt.c Changed some address-related ints to unsigned just to be safe. (3/24) sys/etc/pagefiles.x Increased SZ_LONGLINE from 1024 to 4096. At 1024 it was the same as the new SZ_LINE, causing a loop test to fail. (3/25) pkg/images/tv/rimexam.par pkg/images/tv/doc/rimexam.par Changed the zero point of the magnitude scale from 30.0 to 25.0 for the sake of consistency with other photometry tasks. (3/31, LED) pkg/images/tv/imexamine/ierimexam.x The log output for 'a' or 'r' has one line per measurement as in previous versions. The standard output, however, uses two lines to print nicely on 80 column windows. (3/31, FV) pkg/dataio/mkpkg pkg/dataio/dataio.cl pkg/dataio/dataio.hd pkg/dataio/dataio.men pkg/dataio/x_dataio.x pkg/dataio/import/ + pkg/dataio/import.par + pkg/dataio/export/ + pkg/dataio/export.par + pkg/dataio/doc/import.hlp + pkg/dataio/doc/export.hlp + Installed the IMPORT/EXPORT task for general use. The images database used by the IMPORT task is currently defined to be stored in dataio$import/images.dat. (3/31/97 MJF) pkg/proto/proto.cl pkg/proto/proto.men pkg/proto/proto.hd pkg/proto/x_proto.x pkg/proto/mkpkg The tasks imalign, imcentroid, imfunction, imreplace, wcsedit, and wcsreset have been deleted from the proto package and moved to the reorganized images package. (3/31/97 LED) lib/imhdr.h lib/imio.h The sizes of the pixel file, header file, title and imhistory strings were increased. Defines were added for the image header file and pixel file "magic' strings. A couple fields were added relating to byte swapping. IM_SWAPPED, in the image header, tells whether the pixels in the disk image are byte swapped. (3/31) sys/imio/iki/oif/imhv1.h sys/imio/iki/oif/imhv2.h sys/imio/iki/oif/mkpkg sys/imio/iki/oif/oif.h sys/imio/iki/oif/oifmkpfn.x sys/imio/iki/oif/oifopen.x sys/imio/iki/oif/oifopix.x sys/imio/iki/oif/oifrdhdr.x + sys/imio/iki/oif/oifupdhdr.x sys/imio/iki/oif/oifwrhdr.x + sys/imio/iki/oif/oifwphdr.x - It was necessary to change the OIF kernel to increase the maximum path length for header and pixel files. This made it necessary to change the disk image format, since the old format only allowed 80 characters for the pixel file pathname. In the process reading and writing the disk header was separated out from the in-memory header. Support for two versions of the image and pixel file headers were added. The "magic" string in the image or pixel file header identifies the version. Old (version 1) image headers have "imhdr" at the head of the file, with the string in SPP chars. The new (version 2) headers have "imhv2" as the magic string. V2 headers are byte packed and machine independent. The path limit is 255. (3/31) sys/imio/immaky.x sys/imio/imrdpx.x sys/imio/imwrpx.x 1. Support was added for byte swapping pixels. With the machine independent V2 image header, this allows .imh images to be read on any node (integer) or any IEEE-compatible node (floating). The pixels are written in the native swap order of the creating host, but the order is recorded in the IM_SWAPPED field of the image header, and IMIO uses this to determine whether or not the pixels need to be byte swapped during i/o. 2. Minor changes to trim junk data after EOS delimited strings. Since the V2 headers are byte packed the string data in these headers can be viewed with Unix tools such as "less" and "strings". (3/31) Some pointers: "strings foo.imh" (or other tools like less) can be used at the Unix level to look at V2 image headers. New images are always written with host-native binary format pixels, so there is no byte swapping involved for images read and written on the same host. Images can any other (IEEE) host can be read or written but there may be some slight overhead for byteswapping. If the image is rewritten however using imcopy, the bytes will be swapped to the native ordering of the new host. pkg/images/imutil/src/imheader.x The only change so far was to eliminate some histogram dependence, since this unused feature was removed from the standard IMIO in-memory image header. (3/31) dev/pix.imh dev/pix.pix dev/wpix.imh Regenerated using the V2 image format. (3/31) lib/imio.h sys/imio/immapz.x sys/imio/immaky.x unix/hlib/zzsetenv.def unix/hlib/login.cl Increased the default size of the user area (min_lenuserarea) to 64000 (about 800 80 char cards). There was some ambiguity about units for min_lenuserarea; it should be consistently chars now. Also increased the "padding" added to the header when creating a new copy of an existing image which has a large header. (4/01) sys/imio/immaky.x When the header of an old image is copied during an open-new-copy, IMIO now recomputes the length of the user area of the input header. Formerly if the header had grown since the image was opened, the added data could be lost in a subsquent new-copy operation. (4/01) sys/etc/oscmd.x Changed an fclobber(outfile) to fclobber(errfile). (4/02) sys/imfort/bfio.x The little Fortran-callable file i/o package BFIO used in IMFORT was enhanced to support writing and reading of fractional file blocks so that files can be any size. The default random and sequential buffer sizes were increased. In addition to the old random access i/o routines bfread/bfwrite there are now sequential i/o routines bfseek/bfrseq/bfwseq. (4/02) sys/imfort/mkpkg sys/imfort/imfort.h sys/imfort/imhv1.h + sys/imfort/imhv2.h + sys/imfort/oif.h sys/imfort/imcrex.x sys/imfort/imfgpfn.x sys/imfort/imfupdhdr.x sys/imfort/imgl1r.x sys/imfort/imgl1s.x sys/imfort/imgl2r.x sys/imfort/imgl2s.x sys/imfort/imgl3r.x sys/imfort/imgl3s.x sys/imfort/imgs1r.x sys/imfort/imgs1s.x sys/imfort/imgs2r.x sys/imfort/imgs2s.x sys/imfort/imgs3r.x sys/imfort/imgs3s.x sys/imfort/imopnx.x sys/imfort/impl1r.x sys/imfort/impl1s.x sys/imfort/impl2r.x sys/imfort/impl2s.x sys/imfort/impl3r.x sys/imfort/impl3s.x sys/imfort/imps1r.x sys/imfort/imps1s.x sys/imfort/imps2r.x sys/imfort/imps2s.x sys/imfort/imps3r.x sys/imfort/imps3s.x sys/imfort/imrdhdr.x + sys/imfort/imswap.x + sys/imfort/imwpix.x + sys/imfort/imwrhdr.x + 1. IMFORT was brought up to date with IMIO to read and write the new version 2 ".imh" images. As with IMIO, the old V1 format is still supported but new images are written using the new machine independent V2 format. 2. Image headers can now be any size (the old IMFORT had a very strict limit on the image header size). Since BFIO now writes partial blocks, headers are no longer blocked out to 32768 bytes. 3. "min_lenuserarea" is now supported as for IMIO (since IMFORT is host level it must be defined in the host environment). The builtin default header buffer is 64000 chars, which is about 800 card images. (4/02) sys/imfort/mii.x + A version of the MII routines mii{read,write}[silrc] modified to use BFIO was added to IMFORT. These are used to read and write the machine independent headers. (4/02) dev/hosts Aliased 'kf' for kingfisher at Al Fowler's request (4/3 MJF) lib/qpioset.h lib/syserrmsg sys/qpoe/qpio.h sys/qpoe/qpoe.h sys/qpoe/qpiogetev.x sys/qpoe/qpiogetfil.x sys/qpoe/qpiomkidx.x sys/qpoe/qpioopen.x sys/qpoe/qpioparse.x sys/qpoe/qpiorpix.gx sys/qpoe/qpioseti.x sys/qpoe/qpiostati.x sys/qpoe/qpiosync.x QPOE was modified to allow event coordinate (X,Y) key fields to be of type int as well as short. All event handling code will now accept either type. Keys may be specified using "i" as the field type as well as "s", e.g. "key=(i10,s14)". X and Y do not have to be the same type. There should be no significant CPU runtime penalty, although obviously events with integer coordinate fields will mean larger event files (file i/o times will be affected accordingly). (4/03) lib/qpioset.h lib/qpset.h sys/qpoe/QPOE.hlp sys/qpoe/README sys/qpoe/qpcopyf.x sys/qpoe/qpio.h sys/qpoe/qpiogetfil.x sys/qpoe/qpiolwcs.x sys/qpoe/qpioopen.x sys/qpoe/qpioparse.x sys/qpoe/qpioseti.x sys/qpoe/qpiostati.x sys/qpoe/qpmacro.x sys/qpoe/qpoe.h sys/qpoe/qpopen.x sys/qpoe/qpqueryf.x sys/qpoe/qpseti.x sys/qpoe/qpstati.x sys/qpoe/zzdebug.x Added support for separate X and Y blocking factors. The "block" parameter is still recognized as before and will set both the X and Y blocking factors, or "xblock" and "yblock" can be used to set only one or the other. All occurrences have been updated, including expressions, the QPDEFS environment, and qp_set qpio_set. (4/04) sys/qpoe/qpiorpix.gx [INTERFACE CHANGE] The calling sequence for qpio_readpix was modified to replace the "block" argument by the two arguments xblock and yblock. A scan indicates that none of the layered packages we have installed at NOAO (including xray) currently uses this routine. (4/04) sys/plio/plrio.x The plrio package provides an efficient lookup-table-based means of randomly sampling 2D pixel masks. The code which recursively divides a region into 4 quadrants could fail if the region being subdivided was 1 pixel wide in either axis. If this happens 2 of the "quadrants" will be valid and 2 will be degenerate. Added a test to detect and discard these degenerate subregions. (4/04) sys/plio/plsectne.x sys/plio/plsectnc.x Both of these routines had a bug that could prevent them from examining the full region requested (the routines check for section not empty and section not constant). Line lists are segmented in segments of at most I_DATAMAX (4095) pixels. If the mask is large and has large regions of constant value, the list will consist of successive segments all at the same value. The routines were only checking the first such segment. The corrected code reads successive segments until all the pixels in the region have been examined. (4/04) sys/plio/zzdebug.x Fixed a couple of bugs and added several new routines to test the above fixes. SECNE and SECNC test pl_sectnotempty and pl_sectnotconst. RIO tests plrio random mask access. INVERT inverts a mask. (4/04) sys/imio/implhdr.x These routines, which copy an image header to and from an encoded title string in a PLIO save file, were modified to save the ctime, mtime, limtime, minpixval, and maxpixval static fields of the image header in addition to the title string. (4/04) sys/qpoe/qpexeval.x The value of "pass" was not being initialized before starting subprogram execution when evaluating a complex LUT bin. Added the initialization and also some comments giving an overview of how the evaluation is performed (since it took me several hours to figure this out again). (4/04) sys/imio/iki/qpf/qpfcopypar.x sys/imio/iki/qpf/zfioqp.x sys/imio/iki/qpf/qpfopen.x sys/imio/iki/qpf/qpf.h Modified to support separate x and y blocking factors. (4/05) sys/plio/plupdate.x This routine contains code which collapses successive mask lines in Y to a single encoded mask line if the mask lines are equal, thereby compressing the encoded mask in Y. The encoded mask lines are encoded in short integer arrays and a multiply referenced line has a reference count which is stored in a short integer field. The code was modified to stop when this counter reaches MAX_SHORT, adding a new line to the encoded mask and starting over. Combined with the X segmentation of lines into blocks of at most 4095 pixels, this should allow masks to be nearly any size despite the use of short integers for the encoding. (4/05) sys/qpoe/qpiolwcs.x Modified the LTV_2 term of the logical transformation to set the fractional pixel zero point resulting from blocking the input data. If for example 2 input pixels map to 1 on output, the range of the output pixel (e.g. 0.5 to 1.5) maps to the range covered by the two input pixels (e.g. 0.5 to 2.5), and the center of the output pixel (e.g. x = 1.0) maps to the center of the range spanned by the input pixels (e.g. 1.5). For 3 to 1, 1.0 maps back to 2.0 in the input, for 4 to 1, 1.0 maps back to 2.5, and so on as (block+1)/2. (4/05)