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