diff options
Diffstat (limited to 'doc/notes.v23')
-rw-r--r-- | doc/notes.v23 | 4955 |
1 files changed, 4955 insertions, 0 deletions
diff --git a/doc/notes.v23 b/doc/notes.v23 new file mode 100644 index 00000000..cfc63af4 --- /dev/null +++ b/doc/notes.v23 @@ -0,0 +1,4955 @@ +UNIX/IRAF, starting 11/30/85 + +Goals: Restructure the system to better isolate machine dependence, make + installation and updating easier (there are many subtleties at + present). Merge in many revisions from VMS/IRAF, SUN/IRAF, + and AOS/IRAF. +-------------------------------------------------------------------------- + +Major Problems at present: + + Root Directory dependencies + CL, XC, Mklib, etc. must be recompiled whenever the root + directory is changed. The root directory name must be changed + in all the Makefiles, and eventually in all the zzsetenv.def + files. + + Installed Tasks + A number of tasks must be installed in UNIX directories outside + of IRAF; these tend to get lost whenever someone works on UNIX. + + Links + Links are used for libraries, executables, and include files. + These can get lost when a file is altered, or when the system + is moved in pieces on a tar tape. At present someone must know + where all the links are and go through and remake them by hand. + + Scattered machine dependencies + There are a number of assembler files scattered about the system + and referenced in the Makelib files. When installing the system + on a new host one must search out all these files, and either write + new assembler modules or comment out the optimized versions in + the Makelib files. + + Automatic System Creation Procedure + The "sysgen" capability for the VOS is good, but other than that + the autogeneration facilities are rudimentary. There is no + automated full system generation capability. There is no easy + way to relink all the packages when important kernel changes are + made. The UNIX/IRAF development system (other than the VOS) has + never been fully recompiled due to the lack of these faciltities, + hence there is old code that will no longer compile hidden in the + system. + + Makefiles + UNIX/IRAF currently uses the UNIX Make facility for package + generation. The result is many UNIX dependent Makefiles scattered + about the system. When moving IRAF to a non-UNIX system some other + facility must be developed to make the packages. This prevents + automated installation of new versions of IRAF, since all of the + make files must be translated for the new system. + + Awkward Machine Dependencies + The magtape device table is currently wired into the kernel; should + be table driven at runtime. The ALLOCATE stuff is awful, and + depends upon an external, non-standard UNIX program. The graphics + system requires NCAR metacode translators which are not part of + the IRAF system. + +These problems are awkward enough to require the assistance of an IRAF guru +for system installation and updating; installations and updates consume limited +manpower resources; maintenance starts to take so much time that new software +initiatives suffer. A more easily maintained system is required, now that we +have versions of IRAF running so many host machines. + +Strategies: + + [1] Collect ALL machine dependent files together in one place, so that + the major parts of the system can be updated by merely reading in a + TAR tape. + [2] Develop an automated full system generation procedure so that the + system can be automatically regenerated after an update. This requires + doing away with the Makefiles and the use of Make (and of DCL and + mkpkg.com files on VMS). + [3] Do away with the links. + [4] Do away with the remaining root directory dependence. + +The major new developments are the creation of the HOST directory system, and +the replacement of Make, Mklib, DCL/mkpkg.com etc. by a new portable IRAF +bootstrap utility called MKPKG. +------------------------------------------------------------------------------ + +iraf$unix/* [VAX/UNIX version of IRAF] +iraf$vms/* [VAX/VMS version of IRAF] (to be added) +iraf$sun/* [SUN/UNIX version of IRAF] (to be added) +iraf$aos/* [AOS/VS version of IRAF] (to be added) + + Created a new directory tree off the iraf root, to be used to hold ALL + machine dependent code in IRAF. This will make it possible to update + entire directory trees automatically, without need for an expensive + merge operation in those directories (the system dependent directories + will still require occasional merges). The name "unix" reflects the + host dependence of this directory system. Other systems have a + different root directory name. The logical name for the active host + interface directory is "host$". (12/1) + + Subdirectories of host$: + + as assembler stuff (optimized operators) + boot bootstrap utilities (XC, Mkpkg, etc.) + hlib text files (include files, etc.) + os the iraf kernel + + The DEV directory is to be retained and will contain the device tables + for the local system. These are site dependent, unlike the HOST files, + which are machine/os dependent. OSB remains in the VOS because it is + part of LIBVOPS.A, and is mostly portable anyhow. + +host/boot +host/boot/bootlib + Moved the softools$boot directory to host$boot, since it contains much + machine dependent stuff. Moved the RTAR host interface routines out + into the "bootlib" directory, as the start of a host interface library + for the boot utilities. Started on a complete rewrite of MKLIB, to + be replaced by a more comprehensive utility called MKPKG. (12/1) + +unix/os/zgtenv.c + Modified to get the values of certain well known environment variables + at run time from the <iraf.h> file, after first searching the UNIX + environment. This eliminates the need to recompile the bootstrap C + programs (including the CL) when the value of a fundamental variable + like "iraf$" is changed. (12/3) + +sys/ki/kignode.x + There were problems when installing a binary version of IRAF on a + new system, when the binary version was configured with networking + turned on. If the installer, thinking that they would not be using + networking, did not update the dev$hosts table, then the networking + software would not find an entry for the local host (i.e., we would + be running with the host name table for a different site). + Not surprisingly this would cause problems, but to avoid the trap + I modified kignode.x to effectively disable networking if no entry + for the local host (as named by ZGHOST) is found in the host name + table. When this situation occurs, all node names are assumed to + be aliases for the local node, causing all file references to be + resolved locally. This also makes it easy to turn off networking + temporarily, by simply commenting out the entry for the local host + in the dev$hosts file. (12/3) + +sys/fmtio/ctol.x + Would interpret "-" as a number, value zero, length one char. + This was causing image sections to fail, e.g., "[*,-*]". Fixed to + treat a lone minus sign as not a number. (12/3) + +unix/os/zfpath.x +unix/os/str.c + ZFPATH was making calls to the VOS procedures GSTRCPY and STRUPK. + Added the equivalent local services to the kernel. (12/5) + +pkg/gio/gumark.x + The call to GGSCALE was using unit square marker polyline point coords + X,Y instead of the center coords of the marker XCEN,YCEN. (12/5) + +unix/os/zfchdr.c + When called with the name of a subdirectory, would cache the subdir + name rather than the pathname of the new directory, causing a + subsequent call to ZFGCWD to fail. This has not been a problem + because ZFCHDR is not supposed to be called that way, but it seemed + safer to change it to handle this case. (12/6) + +unix/os/prwait.c + The subprocess exit code (argument to exit()) was not being returned + properly (wrong byte of exit longword). (12/8) + +unix/os/zoscmd.c KERNEL CHANGE +------------------------------------------------------------------------------- + When a host system command is interrupted the exit status returned + by the subprocess is now ignored, with ZOSCMD returning a special + code indicating interrupt instead. This is the only reliable way + of signalling interrupt to the parent process, because the exit status + returned by foreign tasks is not defined. (12/8) + + The ZOSCMD for all kernels should return the INTERRUPT exit code + (SYS_XINT=503) when the OS command is interrupted, e.g., due to a + <ctrl/c>. +------------------------------------------------------------------------------- + +host/boot/mkpkg/* + The new MKPKG task is now tested and installed. MKPKG replaces both + MKLIB and MAKE (and the mkpkg.com files in VMS/IRAF. The task is + upwards compatible with MKLIB but is much more powerful; see the task + documentation for details. This is a bootstrap utility, hence it is + written in C and makes calls only to LIBBOOT.A (a new library for the + bootstrap utilities) and LIBOS.A. + + Unlike MKLIB, which was originally written as an experiment and which + was never a very good program (it was closely tied to UNIX), MKPKG was + carefully written. In particular, the machine dependent parts were + isolated (as far as possible) to make it relatively easy to port the + utility to new systems, and extensive diagnostics are built in. When + used to update libraries, MKPKG is several times as fast as the original + MKLIB since it uses a file date cache. (12/8) + +host/bootlib/* + A new directory and library (lib$libboot.a). The concept here is to + isolate the machine interface for the C language bootstrap utilities. + As functions are needed by these utilities, new modules are added + to this library. Some of the modules talk directly to the host system, + others to LIBOS, others to both, etc. To bootstrap the utility tasks + (XC, MKPKG, etc.) one must first make the libraries libboot.a and + libos.a. Once these are up the bootstrap utilities can be linked + and used to make the VOS. Once the VOS is up the bootstrap utilities + can be relinked with LIBSYS and LIBVOPS to get full filename mapping. + On a UNIX host the bootstrap version of VFN2OSFN is all that is needed. + (12/8) + +sys/etc/main.x + When a task is run standalone, will now look for the ZZSETENV.DEF in + the system library hlib$ if not found in the current directory. + This will get rid of the (partially system dependent) ZZSETENV.DEF + files scattered about the system, but still make it possible to have + a special version of the file in the local directory for debugging. + (12/8) + +lib/* +hlib/* + Moved the following files to unix/hlib (= host$hlib). The new MKPKG + facility will find the header files in either directory; all files + are still referenced as <file.h> in source file includes. (12/8) + + cllogout.cl (standard iraf stuff) + clpackage.cl + config.h + iraf.h + libc/ + login.cl + mach.h + math.h + zzsetenv.def + + generic.e (bootstrap utilities) + mkpkg.e + rpp.e + xc.e + xpp.e + + cidir.sh (real UNIX dependent stuff) + dgrep.sh + dupdir.c + dupdir.e + irafuser.csh + mkiraf.csh + nightly.sh + + Now that all these things are out of lib$, a new version of lib$ from + the UNIX development system can be installed on another system by a + simple copy operation, without a time consuming and error prone merge + operation. + +host/boot/spp/xc.c + Removed the IRAFDIR pathname, -r irafdir, etc. stuff. Added references + to the libraries libboot.a and libos.a in the Makefile. Got rid of the + link on the executable and replaced it by a "make install". + The utiltity now makes VFN's of the form "iraf$..." or "host$..." and + calls vfn2osfn() to get a pathname. The latter calls ZGTENV which + references either the environment or the <iraf.h> file (as discussed + earlier), hence XC no longer needs to be recompiled when the root + directory is changed. Since vfn2osfn is used references to include + files in subdirectories of a system library (e.g., lib$pkg or lib$math) + are now fully supported. (12/8) + +host/boot/spp/xpp/xppmain.c +host/boot/spp/xpp/xppcode.c + All the same changes as in XC, above. Also added a call to os_sysfile() + to go searching for system include files, which can now be in either + lib$ or hlib$. (12/8) + +host/boot/generic/* + The GENERIC utility was moved into its own subdirectory. Added a + makefile. Got rid of the link to the executable in lib$. Added a + make install to move the .e instead. (12/8) + +host/boot/xyacc + Changed SPP-Yacc subdirectory name to xyacc. Brought Makefile up to + date; added make install to move executable into hlib$. This utility + is really only supported in the UNIX version of IRAF for system software + development, hence did not make it fully autogenerating. (12/8) + +unix/os/* + Made a mkpkg file to maintain LIBOS. Deleted the linked copies of the + kernel.h and kname.h include files, so that now there is only the one + copy in libc. Added an "mkpkg.csh" to bootstrap the library before + the mkpkg utility is up. (12/8) + +host/hlib/clpackage.cl + Added defines for as$ and hlib$. Deleted the define for tmp$ since + this is now a system dependent definition (like iraf$ and host$). + Added a define for imdir$ since this now defaults to tmp$. Added + comments pointing out what is system dependent and what isn't. (12/8) + +sys/vops/apowk.x + Case **0 was setting the output vector to zero rather than one. (12/9) + +sys/etc/sysid.x + If the value of the "userid" environment variable is "USER" (the + default login.cl value), SYSID will now call getuid() to get the + user's host system login name, and use that in the output string + rather than having labels come out as "USER@lyra". (12/9) + +host/boot/generic/* + Cleaned up the code somewhat and added a new $FOR preprocessor + directive for expanding generic sections of code inline. Formerly + the expanded code sections where always written to separate files; + this led to use of UNIX tasks in the Makefiles to generate the files + and concatenate them into a single file. Also added a mkpkg.csh + for bootstrapping the task. (12/9) + +sys/clio/* +sys/etc/* +sys/fio/* +sys/fmtio/* +sys/gio/* +sys/imio/* +sys/ki/* +sys/memio/* +sys/mtio/* +sys/osb/* +sys/tty/* +sys/vops/* + The following were done for each source directory in the VOS: + + o Added a mkpkg file, deleted the Makelib file. In each case + the library module list with include file dependencies was + generated fresh to make sure that all include file depenencies + were noted (these tend to get left out as code is modified). + + o Deleted the local copy of a global files, leaving only the + lib$ version, to avoid problems with links. Converted all + "file" references to local copies of global files to <file> + references. Note that include files which are only referenced + locally do not appear in the system library and are referenced + as "file" in the source and mkpkg files. + + o Deleted all zzsetenv.def files (no longer needed). + + o Deleted any junk files found. + + The mkpkg files are set up in such a way that the library can be + updated either locally, by simply typing "mkpkg", or by running mkpkg + from a higher level in the directory system, e.g., sys$. This + obsoletes the "update" utility. (12/9) + +sys/gio/cursor/keys.hlp +lib/scr/cursor.key + Create a new library directory lib$scr to hold files required at + runtime for output on a terminal screen. Moved the cursor mode keys + file there. This makes it possible to get cursor mode help after + the sources for the VOS have been deleted to save space. (12/9) + +sys/gio/ncarutil/sysint/ishift.s +sys/gio/ncarutil/sysint/i1mach.f + Moved ishift.s to as$. Moved i1mach.f to hlib$. Set up the mkpkg + file to conditionally compile as$ishift.s if found, else it uses the + local ishift.x (which is much slower). (12/9) + +sys/gio/ncarutil/tests + Changed the filenames *.t.f to *t.f for portability reasons. Changed + the names of the files containing tasks from x_file.x to file.x; only + the file x_ncartest.x should have an x_ prefix since it is the only + executable. There was an old version of "strmln" in the directory + which is not used and should probably be deleted (or moved somewhere + else), but I left it in for Suzanne to decide what to do with it. + Set up a mkpkg to make the test package, got rid of the Makefile. + (12/9) + +sys/gio/nspp/* + These directories formerly contained the graphics library used by the + original GRAPH, CONTOUR, SURFACE, etc. programs. These programs have + since been converted to use the new NCAR/GKS/GIO stuff, so most of the + code in these directories was no longer used. The only program in the + system still using the LIBNSPP.A library is the GIO/NCAR graphics + kernel, which talks directly to the NCAR system plot package (nspp) + (I think there may be other package which reference the library, but + they do not need too). + + Accordingly, the gio$nspp directories were pared down to just the + system plot package and associated interface routines. Extensions to + the system plot package used by the NSPP kernel (cell array, etc.) + remain in the gio$nsppkern directory. The system interface code for + LIBNSPP uses some of the same code as ncarutil/sysint; both share the + same machine dependent files off in hlib$ and as$. (12/9) + +host/boot/spp/xc.c +lib/libboot.a +lib/libos.a + Added calls to os_sysfile to generate the library names in XC, allowing + libraries to reside in either lib$ or hlib$. Moved LIBBOOT and LIBOS + to hlib$. (12/10) + +host/boot/spp/xc.c + When linking an executable "file.e", the unix version of XC will now + generate a executable called "T_file.e" in the current directory. + If the link completes successfully the target executable is deleted + and the temp is renamed. This achieves the following: + + [1] If the link fails, the old exectable is not affected and is + still available (particularly useful on the development system + when people may be using the package someone is working on). + + [2] The link will not fail if someone is using the installed + executable, since the linker is not being asked to replace the + installed executable. For similar reasons, the link will not + fail if the installed executable was created by someone else. + + The temporary executable is not deleted if the link fails, since one + might want to examine its symbol table. (12/10) + +sys/imio/imfort* + Move the imfort stuff (Fortran callable image interface) to the + pkg$local directory, since it is only a prototype local interface. + (12/10) + +sys/gio/ncarutil/sysint + Deleted the reference to i1mach.f, since this module is already + present in the VOPS library. (12/11) + +sys/osb/* + Moved the machine dependent files into as$ and hlib$ and set up the + mkpkg to automatically reference these. (12/11) + +sys/tty/* + Moved the "cacheg.dat" and "cachet.dat" files to dev$ and changed the + names to "dev$cacheg.inc" and "dev$cachet.inc" (inc = include file). + This is permissible now since XC calls vfn2osfn() to map the names of + include files, and is desirable since this is a site dependent file. + Combined files zzmktty.x and ttycomp.x and changed the name to + x_mkttydata.x. Set up the mkpkg to install the x_mkttydata.e in lib$ + like all the other system executables. (12/11) + +unix/os/zsvjmp.s + Moved zsvjmp.s to as$. On a UNIX host this was the only machine + dependent file in the kernel. (12/12) + +unix/os/zfpath.x +unix/os/zfsubd.x +unix/os/zfxdir.x +unix/os/zfnbrk.x + Replaced the above files by equivalent C language procedures. This + results in an all-C kernel and eliminates the chicken before the egg + problem on a new system. The C procedures work directly on the XCHAR + strings just like the SPP procedures did, hence their is no + computational penalty (although the use of unpacked strings in the + four procedures is certainly inconsistent with the rest of the kernel, + and I question whether the gain in efficiency is worth it). Deleted + the str.c file introduced a couple of days ago to get a local strcpy. + (12/12) + +unix/os/zfioks.c + Changed a reference to the old symbol IRAFDIR to a call to ZGTENV + to get the pathname of "iraf". (12/14) + +host/boot/spp/rpprat/baderr.r +host/boot/spp/rpprat/synerr.r + The "% character" escapes to pass character*(*) declarations on to the + Fortran did not have the 6 leading spaces required by good ole Fortran, + causing a syntax error. (12/14) + +host/boot/spp/rpp/rppfor +host/boot/spp/rpp/ratlibf + Did a "make fortran" to update the Fortran sources. Several + modifications were made in recent months without updating the Fortran + and testing the software. (12/14) + +(Have completed testing of the automatic bootstrap procedure for the HOST +(directories, and the sysgen procedure for the SYS direcories. The former +(uses "mkpkg.csh" files to bootstrap the bootstrap utilities, and the latter +(of course used MKPKG.) +... + +pkg/system/allocate.cl +pkg/system/deallocate.cl +pkg/system/devstatus.cl +pkg/system/diskspace.cl +pkg/system/gripes.cl +pkg/system/spy.cl + Moved the above machine dependent CL scripts and their associated + parameter files to the HLIB directory, and changed system.cl to + reference the tasks there. (12/14) + +pkg/system/_magtape.x +pkg/system/x_systest.x + Deleted the mtdevlist task which referenced a procedure which has + been dropped from MTIO. (12/15) + +pkg/cl/cldate.c +pkg/cl/builtin.c + Deleted the task version() and the C file cldate.c. This feature + has not been very useful (the date the CL itself was last compiled + or linked is not very interesting) and some machine dependent + machinations are required to generate the date string. (12/15) + +pkg/cl/Makefile +pkg/cl/Makelib +pkg/cl/mkpkg + Deleted the Makefile and Makelib and added a "mkpkg" file. This calls + Yacc and Lex to translate the .l and .y files, but this does not make + the package machine dependent since the translated .c files are all + that is required on machines other than the software development VAX. + The CL should now be 100% portable (except for C bugs). (12/15) + +pkg/cl/tests/ + Deleted the tests subdirectory since the contents were just a bunch + of junk tasks that the authors (including myself) have long since + forgotten about. This stuff should be made to order during testing + by the tester in their own directories, outside of the production + system. (12/15) + +pkg/cl/login.cl + Cleaned up somewhat so that is should work on other systems; removed + all unix pathnames. (12/15) + +pkg/cl/binop.c + Deleted reference "import_mach" to nonexistent include file. (12/15) + +pkg/cl/edcap.c + Deleted reference "import_fio" to nonexistent include file. (12/15) + +pkg/cl/main.c + Deleted the envinit() procedure since we now assume that the essential + environment variables (e.g., iraf, host, tmp, hostid) are provided + somehow by ZGTENV. Changed the library references for the CL login + and logout files (clpackage.cl, cllogout.cl) to reference HLIB rather + than LIB, since these files are site dependent. (12/15) + +pkg/cl/sizes.c + Discovered and deleted this junk (nonfunctional) file. (12/15) + +lib/clpackage.men + Deleted this junk file (the real one is in pkg$clpackage/). (12/15) + +lib/gvset.h +lib/gwindow.h + Deleted these header files as the code which used them (in gio$nspp) + has since been deleted. (12/15) + +lib/xstdgraph.e +lib/xstdimage.e +lib/xstdplot.e +dev/graphcap + The names of these tasks were changed back to x_*.e for consistency + with the rest of IRAF; both UNIX and VMS permit underscores in file + names. (12/15) + +dev/*.tbi + Deleted all the .tbi files (part of termcap, used to initialize tab + stops on terminals). We will probably never use these and they can + be regenerated if ever needed. (12/15) + +sys/vops/acht.x + Added a generic $ifdef to conditionally declare the loop variable I, + so that it is not declared if the loop is not used (else the compiler + generates a warning message). (12/15) + +sys/gio/nspp/portlib/flushb.f + Variable idummy not used; commented out. (12/15) + +pkg/cl/debug.c + Changed the reference to "lib$iraf.h" in d_f() to "hlib$iraf.h". + (12/16) + +pkg/cl/edcap.c + The get_editor() function was opening but not closing the edcap file, + eventually causing the CL to run out of file descriptors and crash. + Also, get_editor() was not saving the name of the editor in the + field "command[EDITOR_ID].keystroke" (not my choice for a name), + hence get_editor was being called every time EHIST or EPARAM was + called. (12/16) + +host/hlib/mkpkg.inc +host/hlib/libc/iraf.h +unix/os/zgtenv.c +host/boot/mkpkg/* + Deleted the logical name "hostid" from ZGTENV and the <iraf.h> file. + Only "iraf", "host", and "tmp" are left now at the lowest level. + It turns out that "hostid" is used only in the MKPKG files. Rather + than use a predefined host environment variable I set up MKPKG to + read the system include file "hlib$mkpkg.inc" at startup time. + This makes it easy to set up the system with all sorts of machine + dependent MKPKG configuration parameters and switches, if necessary. + The current list includes HOSTID, XFLAGS (compile), LFLAGS (link), + USE_CCOMPILER, and USE_GENERIC. I anticipate adding switches to + conditionally build various graphics kernels and the like, as these + may reference libraries not present on all systems, and it is a waste + of time to keep a graphics kernel up to date if it will never be + used. (12/16) + +sys/vops/asel.x + The "$t" suffix was missing from the procedure name. (12/16) + +host/boot/generic/generic.c + We have been naming generic SPP and C files with ".x" and ".c" + extensions. This is misleading; the extensions should be ".gx" and + ".gc". Modified the generic preprocessor to generate a file with + a ".X" extension when a generic file with a ".gX" extension is input. + (12/16) + +sys/osb/* +sys/vops/* + Changed the names of all generic sources in OSB and VOPS to use the + extensions ".gc" and ".gx". (12/16) + + +(The following is a copy of some mail sent to the IRAF group) +------------------------- +Anyone calling the generic preprocessor via the new MKPKG facility should look +at OSB or VOPS for an example of how to set it up. The major points are the +following: + + [1] Generic SPP files should have the extension ".gx". The GENERIC + preprocessor has been modified to make ".x" output files when fed + ".gx" input files (in general, ".gX" -> ".X"). + + [2] The generic preprocessor is not a required bootstrap utility except + on our software development VAX; that is why we always keep the + preprocessed output files around. The MKPKG files should be set + up as follows: + + tfiles: + $ifolder (fi.x, f.gx) $generic ... f.gx $endif + (etc) + ; + + libpkg.a: + $ifeq (USE_GENERIC, yes) $call tfiles $endif + @subdir + file.x + (etc) + ; + + Note that the USE_GENERIC symbol is available to test if the local + system has a generic preprocessing capability. This symbol and a + few others are defined in the MKPKG include file hlib$mkpkg.inc, + which is automatically included whenever MKPKG is run. This file + should be very useful for machine dependent conditional compilation, + e.g., we will only build the calcomp graphics kernel (etc) on a system + that sets a switch saying it wants the kernel (if the system does + not have a -lcalcomp library, the package would not even link). + + [3] A new preprocessor directive $FOR (types) ... $ENDFOR has been added + to the generic preprocessor for expanding generic sections of code + inline. This should be used in conjunction with the -o switch to set + the output filename, e.g.: + + $generic file.gx -o file.x + + And inside the file "file.gx", e.g.: + + <type specific code> + + $for (silrdx) + <generic code> + $endfor + + <type specific code> + ... + +sys/gio/calcomp/mkpkg +sys/gio/nsppkern/mkpkg +sys/gio/mkpkg +sys/mkpkg +host/hlib/mkpkg.inc + Modified the NSPP and Calcomp graphics kernels to keep the kernel + library in lib$, like the stdgraph kernel already does. This is + necessary if an external task is to be able to use the kernel as an + inline kernel. Added switch symbols to the MKPKG include file to + conditionally compile the NSPP and Calcomp kernels, as these will + not be used on some systems. (12/17) + +math/*/mkpkg +pkg/*/mkpkg + The IRAF group members started writing mkpkg files for these + directories, and we began testing. (12/17) + +host/boot/rmbin/ + Added a new utility RMBIN for descending directory trees and deleting + binary files. This is needed to strip the system down to only sources + for a complete rebuild. (12/19) + +unix/os/zfacss.c + The test for a directory file was not correct. (12/19) + +-------------------------- +Numerous changes to the MATH and PKG software were made in the process of +getting the MKPKG based full system generation facilities to work. In the +process many awkward things were fixed, e.g., all the assembler files were +moved to AS, local .x or stubbed out versions were added with MKPKG +conditionals to use them if the AS versions are not found, all old code was +made to use the new lib$pkg and lib$math subdirectories, most of the library +member lists were regenerated, many dead files were deleted, old code that +had not been recompiled in years was recompiled and bugs fixed, etc. The first +error-free full system rebuild (rmbin followed by mkpkg at the root) took place +on the UNIX/750 on 12/21, taking 20 hours single user. +-------------------------- + +unix/boot/wtar/* +unix/boot/rtar/* +unix/boot/bootlib/tape.c (etc.) + Added WTAR to the suite of portable bootstrap utilities. Fixed RTAR + so that it can read from tape as well as disk on non-UNIX systems, + and shares bootlib library procedures with WTAR (and also RMBIN, which + is a lot like WTAR). Only a little of the VMS version of WTAR could + be used due to VMS dependencies spread throughout the code (even if + under #ifdefs). The new version also fixes a number of problems with + the VMS version: IRAF file and magtape names are now used consistently, + case is preserved when transferring filenames to the tape, etc. + + Most importantly, the new RTAR and WTAR are portable above LIBBOOT and + LIBOS (the ZFIOMT driver is used), hence they can be used on systems + like AOS as well as on UNIX and VMS. WTAR is useful even on UNIX + systems due to its ability to omit binary files, e.g., when making + source tapes on the UNIX/VAX for the SUN (not having to remember what + /dev/rmtXX to use is also nice). The old VMS version of WTAR, by the + way, uses a nonstandard VMS/C printf format (e.g., %6.8o) for encoding + the file headers. (12/23) + +unix/os/ufstat.c +unix/os/zfacss.c +unix/os/zfinfo.c +unix/os/zfiobf.c +unix/os/zfiotx.c [UNIX] + Added cacheing of the "stat" information from the last call to the + UNIX system service STAT. This can significantly reduce the number + of system calls in applications that access a lot of files. (12/24) + +host/boot/rtar/rtar.c + Added a switch "-s" to RTAR to strip the extra whitespace added to the + end of text files by WTAR (on VMS). This causes compiles to fail on + UNIX, causes diffs to fail, and in any event the tape utilities should + not modify files. (12/24) + +images/tv/* + Installed the entire TV package from VMS/IRAF, since all the recent + development work has been done there. Reorganized CV with the task + at the top and the libraries in subdirectories, so that it can have + a standard mkpkg. Set up mkpkg to conditionally compile either the + UNIX or VMS device i/o interface. (12/24) + +unix/os/zfiotx.c [UNIX] + Discovered that the unix text file driver will append to any existing + file when called to open a file in NEW_FILE mode. This was never + discovered before because the VOS will always delete any existing file + before opening a new file, but the bootstrap utilities (RTAR) are not + so careful. (12/24) + +images/tv/* + Discovered many declared but not used variables. Also found one used + but not declared variable ("frame" in display/t_display.x). Evidently + these are not found by the VMS compiler. File zsnap.x in CV/iism70 + was referencing ASEL when ASELS was intended. (12/26) + +images/tv/* +host/gdev + The "m70unix" and "m70vms" subdirectories in DISPLAY and CV were + bothersome due to the duplication of code, protrusion of system + dependence into the pkg sources, and limited networking support + for the VMS version of the IIS interface (which was bypassing the + IRAF kernel). To address these problems I added a new device driver + ZFIOGD for binary graphics devices, e.g., image displays, versatec + plotters, and the like. + + This driver is the i/o interface to binary graphics devices; it isolates + the host system dependence of the interface but does nothing about the + device dependence. The GIO driver, on the other hand, deals with the + device dependence but should not be host system dependent. The ZFIOGD + interface is a streaming binary file interface, hence provides a + data driven interface even if the host system device driver is control + driven. The data driven nature of ZFIOGD and its ZFIOBF semantics + make it trivial to support network access via the kernel interface. + + The ZFIOGD driver is logically part of the kernel, but is programmed + in SPP, may share header files with the GIO kernel, and wants to use + high level functions (e.g., memory allocation, string ops), hence is + maintained in LIBSYS rather than LIBOS. The sources are in HOST$GDEV + since this is partially system dependent code. ZFIOGD can support + any number or set of actual graphics devices without change to the KI. + Currently only the IIS M70/M75 is supported. The new interface for + UNIX has the advantage of permitting an IOCTL call to master clear + the IIS at device open time (since we no longer assume that it is a + simple binary file, we can do anything we want). (12/26) + +sys/imio/imdmap.x +pkg/images/tv/display/* +dev/*.imh + Setup up IMDMAP to open the image header in memory (as a NEW_IMAGE) + without accessing the .imh file in DEV. Deleted the .imh files; + once the MTIO lock file is gone we can remove world write permission + and quota on DEV$. IMDMAP now uses graphcap to get the device + parameters and initializes the in-core image header structure + accordingly. (12/27) + +sys/fio/delete.x + DELETE will now ignore attempts to delete "dev$null". (12/27) + +unix/as/*.s [UNIX] + It turns out that the UNIX assembler makes branch labels global unless + they begin with an "L". Renamed a number of branch labels with + cryptic LXX names so that they will not be kept in the symbol table + (they would come out looking like functions in profiles) (12/28) + +unix/as/aclr.s + Added a fast assembler version of ACLR. (12/28) + +pkg/images/tv/display + Tested, debugged, optimized. (12/28) + +pkg/images/tv/cv/* + Brought up to date, now uses same bottom end as display. (12/28) + +------------------------- +[Begin diff/merge of revisions from VMS/IRAF] + +sys/etc/maideh.x + Message buffer size increased from 64 to SZ_LINE. (12/28) + +sys/etc/propdpr.x + New version with support for queueing of bkg jobs installed. (12/28) + +sys/etc/tsleep.x + ztslee -> zwmsec. (12/28) + +sys/fio/fgetfd.x + Added "int or()". (12/28) + +sys/fio/fwtacc.x + Modified to return not accessible for directory files; such files + cannot be read as ordinary files on some systems. (12/28) + +sys/fio/osfnlock.x + Modified to temporarily override ONECASE_OUT; no longer does any + case conversion at all. This is necessary for the kernel interface + and is fairly safe since few systems with case insensitive filenames + permit only single case names as input (if such is the case, the + kernel will probably do the case mapping in any case). (12/28) + +sys/fio/vfnmap.x +sys/fio/vfntrans.x + Installed vms/iraf versions without change. Numerous minor bug + fixes, ztslee -> zwmsec, bug fix in initialization of extn map, + etc. (12/28) + +sys/fmtio/ctol.x + Modified to permit + as well as - (but much more than that is req'd + before IRAF permits + in numbers everywhere). (12/28) + +sys/fmtio/dtoc.x + IS_INDEF -> IS_INDEFD. (12/28) + +sys/fmtio/parg.x + The int(dval) would cause integer overflow when DVAL was a floating + point number with a very large exponent. (12/28) + +sys/fmtio/strtbl.x + Array argument declaration buf[nstr] changed to buf[ARB] to avoid + VMS/Fortran runtime error if nstr==0. (12/28) + +sys/gio/glabax/glbfind.x + Two bug fixes: invalid tick calculation causing floating point + overflow; inability to turn tick drawing off with GSET option. (12/28) + +[[[[ I am finding a lot of revs and bug fixes in unix/iraf that have not yet +[[[[ made it into vms/iraf; we need to update vms/iraf as soon as the merge +[[[[ is completed and mkpkg, etc. is working in vms/iraf.... + +sys/gio/nsppkern/pixels.f + Arguments to ISHIFT were not both of the same type. (12/28) + +sys/imio/imsetr.x + Min/max argument type mismatch. (12/28) + +sys/imio/imwrite.x + When extending the pixel file at EOF, would write one too many chars, + causing pixels to be written and then read back at different file + offsets (never happened on UNIX/IRAF because pixel files are always + preallocated). (12/28) + +sys/ki/kbzstt.x + Now returns the min of the max network transfer size and the max + device transfer size, rather than the value of the device parameter, + which can be larger than the network interface can handle. (12/28) + +sys/ki/kopdpr.x + Added support for queued bkg jobs. (12/28) + +sys/libc/cfmapfn.c + Argument maxch passed by value rather than reference. (12/28) + +sys/libc/cprdet.c + Added support for queued bkg jobs. (12/28) + +sys/libc/ctype.c [TEMPORARY] + Added #ifdef vms globalvalue junk for the VMS linker. (12/28) + +sys/libc/cxwhen.c + Deleted the code for c_xgmes, since it has been moved out into a + separate file. (12/28) + +sys/libc/isatty.c + + New operator added to LIBC. Used by the CL to test if the process + stdin is a terminal. (12/28) + +sys/libc/cfnames.c + + New operator added to LIBC. Used to parse filenames. (12/28) + +sys/fio/vfntrans.x + The filename extension map common was still not portable, since the + map string itself was being initialized in the common with a data + statement. Also, the compiler would give a harmless but annoying + warning message about mismatched lengths for the common. The code + was modified to fix both of these problems. (12/29) + +sys/ki/kbzstt.x + Local variable status never used. (12/29) + +sys/osb/f77pak.f + The exit test in the last loop (for blank fill) would do a "next" + rather than a "break", causing the loop to needlessly run on until + the top index was reached. (12/29) + +sys/osb/xor.x + The expression for the exclusive-or in terms of AND and OR was + incorrect. (12/29) + +sys/vops/aiftrx.x + Replaced the amovr(a,b,npix) by amovx(a,b,npix/2+1), since the input + vector is the complex transform. (12/29) + +sys/vops/acnv.x +sys/vops/acnvr.x + In the npix=5 case, K4 was being assigned into instead of K5. (12/29) + +hlib/libc/knames.h +lib/knet.h +sys/ki/irafks.x +sys/ki/kfiogd.x +sys/ki/mkpkg +sys/ki/ki.h + Added network support for the ZFIOGD driver. (12/29) + +os/alloc.c + [UNIX] +os/zalloc.c + [UNIX] +hlib/alloc.e + [UNIX] +hlib/libc/alloc.h + +hlib/libc/iraf.h +hlib/libc/knames.h +hlib/knet.h +ki/kdvall.x +ki/kdvown.x +ki/ki.h +ki/irafks.x +dev/devices KERNEL CHANGES +----------------------------------------------------------------------------- + Added two new routines ZDVALL and ZDVOWN to the kernel. These are + used to allocate and deallocate (and mount) devices, and to query + device allocation. Allocation over the network is implemented but + will not currently work for a VMS host due to the process structure + (it will work for UNIX, as usual). + + zdvall (device, status) + zdvown (device, owner, maxch, status) + + A device table DEV$DEVICES was also added to runtime parameterize the + allocatable devices. This table is read by the VOS, passing only + host system device names to the kernel. The table will also be used + to get the host device name to open a magtape. + +sys/zfiomt.c + The logical drive argument to ZZOPMT and ZZRWMT is now the physical + drive name as the VOS does the mapping using the dev$devices table. + +hlib/libc/kernel.h + Deleted magtape device table. With this change the last of the + compile time device tables are gone from IRAF. (12/31) +----------------------------------------------------------------------------- + +dev/termcap + Added an entry for the Visual 500 terminal (contributed by Skip + Schaller, Steward Obs.) (12/31) + +sys/fio/getlline.x + Added a new utility procedure to the FIO package. GETLONGLINE is + like GETLINE except that it knows about comments, blank lines, help + sections, and backslash newline continuation. Comments, blank + lines, and help text are ignored and long lines are joined, returning + long lines of a user specified maximum length to the caller. (12/31) + +lib/xalloc.h +sys/etc/xalloc.x +sys/etc/xgdevlist.x + Added a device allocation package to the VOS. + + xallocate - allocate device + xdeallocate - deallocate device + xdevowner - determine if device is allocated + xgdevlist - get device list from dev$devices + + status = xallocate (device) + status = xdeallocate (device, rewind) + status = xdevowner (device, owner, maxch) + status = xgdevlist (device, devlist, maxch) + + status: + OK operation succeeded + ERR cannot allocate device + error i/o failure, e.g., dev$devices file not found + + DV_DEVFREE device is free and can be allocated + DV_DEVALLOC device is already allocated + DV_DEVINUSE device is in use by someone else + DV_DEVNOTFOUND device not in device table + + If the device is a magtape, xallocate will call mt_allocate to create + the "lock" file (not actually used as a lock anymore, just to record + the position), and xdeallocate will call mt_deallocate. (12/31) + +sys/mtio/* +unix/os/zfiomt.c [UNIX] + The following changes were made to MTIO. + + [1] The "lock" file is still used to keep track of the tape + position after task termination, but it is no longer used + to lock the device (the XALLOC code performs that function). + Any existing lock file will be overwritten at allocate time. + The lock file can be deleted while the drive is in use without + harm; MTIO will merely rewind the tape to get to a known + position. + + [2] The lock file is now written into UPARM rather than DEV, and + world write permission has been removed from DEV forever. + With this change, the only place world write permission is + still required is for the gripesfile. + + [3] The lock file is no longer read and written every time the + drive is opened and closed. Instead, MTIO caches the position + between opens and only updates the lock file at task + termination time (or if error recovery takes place). Hence, + a DEVSTATUS after reading a tape will work as before, but + accessing multiple files in a single call to a task should + be speeded up considerably. (12/31) + +sys/etc/onerror.x +sys/etc/main.x + Procedures posted with ONERROR during task execution are now called + at task termination, whether the task terminates normally or abnormally. + The task termination code will be OK if the task terminates normally, + else it is the error code passed to ERROR, FATAL, SYSERR, etc. This + feature is used by MTIO to update the lock file at task termination + time. It appears that there was also a bug in the old implementation, + i.e., the posted error handlers were not getting cleared following + normal task termination. (12/31) + +sys/etc/error.x + The system will now quietly do a max(errcode,1) to guarantee that an + error exit will not be confused with normal task termination, in case + the lazy programmer is calling ERROR with errcode=0. (12/31) + +pkg/dataio/fits/read_fits.x + When just reading the fits headers (make_image=no) will now immap + DEV$NULL rather than a real disk file, to eliminate the overhead + associated with writing and then deleting a scratch image header. + (1/2) + +unix/os/zfiomt.c [UNIX] + The unix MTIO driver will now backspace over the first tape mark when + writing at EOT, to save one interrecord gap between files. The skip + record forward primitive was changed to do a READ rather than an IOCTL + since all drivers do not return EOF when an IOCTL skip record passes + a tape mark. (1/2) + +(new MTIO tested and debugged, 1/2) + +sys/fio/diropen.x +unix/os/zopdir.c [UNIX] + Changed the VOS to skip "." prefixed files (as well as the normal + hidden files with reserved extensions) if a directory is opened with + skipping of hidden files enabled. Change ZOPDIR to NOT filter out + .xxx files. This makes it possible for the VOS to access .xxx files, + and eliminates a difference between the UNIX and VMS versions of the + system. (1/3) + +hlib/libc/xnames.h +sys/libc/callocate.c + Added C language bindings for the VOS device allocation facilities. + (1/3) + +pkg/cl/builtin.c + Revised the device allocation stuff to use the new VOS facilities. + (1/3) + +hlib/allocate.cl +hlib/deallocate.cl + Modified these scripts to call the hidden CL tasks _allocate and + _deallocate, which do the real work. The new scripts are actually + machine independent and do not really need to be scripts, but have + been kept as scripts to avoid changing the user interface and to + provide scope for adding machine dependence if necessary. (1/3) + +unix/os/zfiotx.c [UNIX] + I had thought that the unix fseek returned the new file position in + the case of a successful seek (like lseek), but evidently it returns + zero instead. This would cause the file position to be lost if there + were more than one seek on a text file. This explains part of the + problems we have been having with PROCEDURE scripts in the UNIX/IRAF + CL. (1/3) + +pkg/cl/grammar.l + In the process of fixing the above bug, I thought I had found a problem + with comments in the command mode lexical analyzer. I changed the + comment eater to fix what turned out not to be a problem, but left the + revision in because it should process comments more efficiently than + the previous code (which used .* to match the comment). (1/3) + +sys/mtio/mtstatus.x + +etc/xalloc.x + Added a new procedure XDEVSTATUS to ETC to print the status for a + device; if the device is an allocated magtape, this calls MTSTATUS + to print the contents of the lockfile. (1/3) + +pkg/cl/builtin.c +hlib/devstatus.cl + Added a new hidden task _devstatus to the CL; modified the DEVSTATUS + script in the SYSTEM package to call this. (1/3) + +(MTIO revision completed and tested) +-------------- +Begin merge VMS/IRAF CL revisions into UNIX CL (1/4) + +pkg/cl/bkg.c + Installed vms version; contains modifications for bkg job queues. + +pkg/cl/builtin.c + Minor revs from vms version merged in (documented in vms notesfile), + plus of course the all-new device allocation stuff from unix/iraf. + +pkg/cl/cmain.c + Deleted this obsolete junk file. + +pkg/cl/decl.c +pkg/cl/eparam.c +pkg/cl/exec.c +pkg/cl/grammar.y +pkg/cl/lexicon.c +pkg/cl/modes.c +pkg/cl/prcache.c + Replaced by vms versions. + +pkg/cl/grammar.l + Merged in &queue modifications. + +pkg/cl/lex.sed + Added sed command to increase YYLMAX allocation from 200 to 2048. + +pkg/cl/main.c + Merged minor revs in both versions. + +(end merge) (1/4) +---------------- + +pkg/cl/eparam.c + Replaced a STRCHR by INDEX; would not compile on UNIX as there is no + STRCHR function. (1/4) + +pkg/cl/modes.c + There was an unmatched { and the file would not compile; went and + looked at the vms version and the same bug was found there. Probably + the VMS Mklib failed to recompile the file, so I never found the + bug. (1/4) + +pkg/cl/builtin.c + Deleted unused variable buf in clsleep(). (1/4) + +pkg/cl/system.c + Deleted unused variable stat. (1/4) + +pkg/cl/edcap.c + Function what_cmd would return an undefined function value if the + match loop terminated at nchars. Added a return(0) at end of + function. (1/4) + +pkg/cl/eparam.c + eparam.c(139): warning: op unused in function ep_setoptions + eparam.c(590): warning: out unused in function e_check_vals + eparam.c(744): warning: argument maxch unused in function e_getfield + eparam.c(1012): warning: op unused in function eh_setoptions (1/4) + +pkg/cl/exec.c + Variable ip unused in execnewtask(). (1/4) + +pkg/system/_magtape.x - +pkg/system/x_system.x +pkg/system/system.cl + Deleted tasks mtallocate and mtdeallocate, and file _magtape.x (1/4) + +pkg/system/directory.x + Now calls strtbl only if nfiles > 0. (1/4) + +pkg/system/system.hd + Various changes to bring it up to date. Added a couple of new manual + pages to system/doc. (1/4) + +pkg/language/doc + Updated from vms/iraf. We plan to edit these at some point to more + closely approximate our standard manual page format. (1/4) + +host/boot/bootlib/tape.c + Now knows about DEV$DEVICES. Accepts either logical drive names + such as "mta" or "mta.1600", or host names such as "mt.MUA0:" or + "mt.mua0.1600" (e.g., if dev$devices is not up yet). (1/4) + +sys/gio/cursor/grcpage.x +sys/gio/cursor/grcwaitp.x + + Moved grc_waitpage out of grcpage.x into a separate file to fix a + circular library reference preventing topological sorting of the + library LIBCUR. Circular library references such as this have + not been a problem on UNIX or VMS since the libraries are randomly + accessed at link time, but some systems (e.g., AOS) access libraries + sequentially, and in any event linking from a topologically sorted + library is faster, and circular references are probably dangerous. + (1/4) + +(sys/gio/cursor/prpsio.x) +pkg/cl/main.c +hlib/libc/xnames.h +sys/gio/cursor/gtr.com +sys/gio/cursor/psioinit.x + +sys/gio/cursor/psioxfer.x + +sys/gio/cursor/psioisxt.x + + PRPSIO is the traffic controller for pseudofile i/o. There is a + circular library referencing problem with this routine, wherein + prpsio might call gtrctrl which might call gtropenws which references + the entry point address of prpsio in a call to LOCPR if the GKI + kernel is a subkernel (gtropenws does not actually call prpsio, + however, so the reference is not reentrant). + + This can be fixed by computing the EPA of prpsio at a higher level + and letting the lower level code use the value as data. This will + fix the topological ordering problem, but the fact that the problem + occurred at all makes one wonder if reentrancy is really ruled out. + Investigation of GKI reveals that it is indeed possible for PRPSIO + to call itself indirectly by calling GIOTR which calls GKI (but only + if certain graphics instructions are encountered at run time when + a subprocess is talking to a subkernel). + + This problem can be resolved by some restructuring of PRPSIO, and + will probably have to be resolved before we have fully functional + i/o to graphics subkernels. The problem is however too complex + and too risky of solution to be dealt with at the present time, + and aside from the library ordering problem we have not had any + problems with the present code. + + The temporary solution is for the CL to put the EPA of the PRPSIO + procedure in the GTR common at startup time. This gets around the + circular library reference problem for the moment, but does nothing + about the reentrancy problems. The two PRPSIO subprocedures were + also moved out into separate files. (1/4) + +sys/gio/gadraw.x +sys/gio/wcstogki.x + +sys/gio/gplflush.x + + Moved the gpl_wcstogki and gpl_flush procedures out of gadraw.x into + separate files to fix a library ordering problem. Deleted the + gpl_gviewport procedure at the tail of the gadraw.x file, since it + is an internal procedure which is apparently no longer used anywhere. + (1/4) + +sys/gio/ncarutil/concom.f - +sys/gio/ncarutil/conterp.f - +sys/gio/ncarutil/conlib/ + + Unpacked the two NCAR files concom.f and conterp.f in the subdirectory + conlib, one subroutine per file, to permit topological ordering of the + libncar library. (1/4) + +sys/fio/fstati.x +sys/fio/ffilsz.x + Removed the syserr() calls from FSTATI (which calls FFILSZ) due to + library ordering problems, and probably reentrant code problems too. + FSTATI is too low level to be calling higher level code, e.g., + it is called by ENVGETS, by the ZFIOCL driver, and other low level + codes. (1/4) + +sys/etc/environ.x +sys/etc/envinit.x + +sys/etc/envgets.x + + Moved the ENVINIT and ENVGETS procedures out into a separate files + since they call high level functions. (1/4) + +sys/fio/xerputc.x + Changed this routine to use a local array to buffer the output line, + rather than the FIO pathname buffer, just to make sure no conflict + ever occurs. (1/4) + +sys/etc/erract.x + Replaced the call to PUTLINE to output the warning message to STDERR + by a call to ZAWRPS, for obvious reasons. (1/4) + +sys/memio/malloc.x +sys/memio/realloc.x + Replaced all ERROR, SYSERR, FATAL, etc. calls by calls to SYS_PANIC. + Dynamic memory allocation is fundamental, and is used even in the KI. + The error handling code calls the kernel zroutines to talk to files + and the CL, the zroutines use the KI, which calls MEMIO, which used + to call the error handling code causing circular library references + and possible error recursion. (1/4) + +sys/ki/kigchan.x + FATAL replaced by call to sys_panic. (1/4) + +sys/ki/ktzopn.x + Had an IFERR, which calls XERPOP, which calls .... (1/4) + +--------------------- +Begin merge of AOS revs. + +pkg/cl/bkg.c + Added declaration: extern long c_clktime(); (1/5) + +pkg/cl/task.h +pkg/cl/mem.h + The macros NEXT_TASK and DEREFERENCE coerce a pointer to unsigned + and add a byte offset. This does not work on byte addressed machines + since we are then adding a byte offset to a word pointer. Replaced + the "(unsigned)ptr" references by "(unsigned)(char *)ptr". (1/5) + +pkg/system/help/nomore.x +pkg/system/delete.x +pkg/system/match.x +pkg/system/page.x +sys/fio/fclobber.x [IMPORTANT PORTABILTY NOTE] +sys/fio/vfnmap.x +sys/fmtio/evexpr.y +sys/fmtio/evexpr.x +sys/gio/stdgraph/stgrcur.x +sys/tty/ttyopen.x + It turns out that the Fortran standard does not permit expressions + of the form BOOL.EQ.BOOL, although most real compilers are not so + stupid. Fortran requires that such expressions be written as + BOOL.EQV.BOOL, i.e., the .EQV. and .NEQV. operators must be used + to compare booleans for equality. The current preprocessor is not + capabable of fixing such expressions, hence all occurrences of such + equivalences must be fixed in the code; fortunately the construct + is rare. (1/5) + +host/boot/spp/rpp/rpprat/gtok.r +host/boot/spp/rpp/rppfor/gtok.f + The B = 10 * B + C - 48 would cause fixed point overflow for large + numbers. Radix conversion is not needed in RPP (since it is done + in XPP) hence the code was changed to simply accumulate the numeric + token. The Fortran translation file was updated. (1/5) + +sys/fmtio/dtoc3.x + For the AOS compiler, had to convert + + v = v + 0.5 * 10. ** -no_digits + to + v = v + 0.5 * 10. ** (-no_digits) + + This is a bug in the AOS compiler, but we loose nothing by changing + the SPP code to workaround it. (1/5) + +sys/os/*.c + Changed all occurrences such as "return (*status = XERR);" to the 2 + statement form which does not return a function value, since the Z + routines are Fortran callable subroutines not functions (this caused + a problem with the AOS Fortran optimizer, i.e., not saving a register + or something - AOS uses part of the UNIX kernel as is). (1/5) + +------------------ +End of AOS bug merge. + +------------------ +(begin SUN merge) + +host/boot/spp/xpp/decl.c + Modified to break output declaration lines when they exceed 80 columns. + Formerly lines were broken arbitrarily after 8 arguments; this would + fail, of course, when the argument names or the procedure name were + large. (1/5) + +[IMPORTANT PORTABILITY NOTE] + The SUN version of 4.2BSD buffers the C stderr output when redirected + just like stdout. Output to stderr is not automatically flushed when + a newline is seen. If the output from a program which writes to both + stdout and stderr is redirected, output will come out mixed up unless + fflush(stderr) is called after every write to stderr. 4.3BSD UNIX + also buffers stderr for efficiency reasons, hence this change in the + semantics of C stdio may be permanent. + + (all of the new bootstrap utilities call fflush, but some of the old + (ones probably don't, yet). + +host/boot/spp/*.c + Added fflush(stderr) after all writes to stderr in C files in these + directories. (1/5) + +------------------- +End of SUN revisions (so far). + +host/hlib/iraf.h +host/hlib/libc/iraf.h +host/hlib/libc/libc.h +host/hlib/libc/knames.h +host/hlib/libc/names.h +host/hlib/libc/knames.no_ +host/hlib/libc/names.no_ + Added a new define F77_NO_ to <iraf.h>. This is defined to tell LIBC + that Fortran external names do not use the trailing underscore. If so, + <iraf.h> loads the .no_ files instead of the .h files. This does not + solve the problem of machine dependent external names, but should help + quite a bit since it works for our major systems. I also change the + names of all the VOS procedures with names likely to collide with host + or C library names if the underscores are removed. The names are also + redefined in the SPP iraf.h, and the redefined names are used whether + they are needed or not (i.e., they are used on UNIX, too). This should + simplify debugging as one need only learn one set of funny names. (1/5) + +sys/libc/fseek.c + Changed the LIBC unix emulation FSEEK to return OK or ERR to conform + to UNIX. It formerly was a long function returning the new position, + which is not the way UNIX does it (see ZFIOTX bug above). No existing + C code was affected by this semantic change. (1/6) + +pkg/cl/builtin.c + GFLUSH was flushing only STDPLOT; modified to flush all three std + graphics streams. (1/6) + +sys/gio/gopen.x + Changed argument one of gexfls_set from FD to OUTFD. (1/6) + +sys/gio/gclose.x + The test for a pseudofile output stream was based on READ permission + on the output file. That seems like a poor criterion, so I changed it + to a simple numerical test (regular file if fd > STDPLOT). Also, if + GOPEN opens the stdvdm file then GCLOSE had better close it, so I + added a test for that case. Note that GCLOSE does not normally close + the output file, since the user would normally open it before calling + GOPEN. (1/6) + +sys/fio/fdebug.x + Added pargstr for APPEND mode. (1/6) + +sys/tty/ttyopen.x + Formerly used a construct "while (IS_WHITE (getc (fd, ch)))" which + is illegal because the IS_WHITE macro makes multiple calls to the getc + function. (1/6) + +sys/etc/lpopen.x + Now recognizes the special device "text", which has a termcap entry + and is used to get ascii LPRINT output on the standard output. (1/7) + +sys/tty/tty.h +sys/tty/ttyputl.x + Optimized TTYPUTLINE for the common case where the output line of text + contains no special control characters. This routine was probably the + main contributor to the inefficiency of LPRINT. (1/7) + +dev/termcap + Changed the number of lines per page from 66 to 64 for the Versatec + entries, as otherwise formfeed sometimes causes entire blank pages to + be output. Also, overstrike does not appear to work for the Versatec, + so the OS capability was removed from the termcap entries for these + devices. This will cause standout mode text to be printed in upper + case. (1/7) + +pkg/system/lprint.x + Lprint moves pages of text one tab to the right if the output device + is a printer with a wide page. This would cause problems if the + first char on a line was a formfeed, since formfeed breaks a line. + The remainder of the line following the formfeed would come out one + tab to the left; this was causing manual page headers to be misaligned + when printed on the Versatec. Added a test for a formfeed at the + beginning of a line to fix the problem (not a very general solution). + (1/7) + +sys/etc/main.x +sys/etc/onerror.x +sys/etc/onexit.x + Added runtime initialization of the commons of the ONEXIT and ONERROR + procedures. Formerly we were depending upon the linker to initialize + the commons to zeros; this is the case on most systems, but cannot be + assumed in portable code. (1/10) + +hlib/libc/error.h + Added defines for the SYS_XXXX error codes, as in <error.h>. (1/10) + +unix/os/zoscmd.c +host/boot/mkpkg/* + Modified ZOSCMD to return SYS_XINT in the event of an interrupt, and + to guarantee that it is not returned if an interrupt does not occur. + Changed the value of the INTERRUPT status code in MKPKG to SYS_XINT. + The ordinary value in use at first was getting returned on occasion + when an interrupt did not occur, causing MKPKG to terminate when it + should not. (1/10) + +host/boot/spp/xpp/xppcode.c + Modified to output the SAVE statement before any DATA statements. + We discovered this violation of the F77 standard in a recent experiment + trying to compile IRAF code on a beta release of 4.3BSD UNIX, which + is evidently more strict about the F77 standard than 4.2BSD. (1/11) + +sys/imio/imopsf.x + Moved the call to function FDEVBLK in the argument list of IMIOFF + out into a separate statement and added an ERRCHK for it, so that + IMIOFF is not called if an error occurs in FDEVBLK, causing it to + return a zero block size. (1/11) + +sys/imio/imioff.x + Replaced the BLKSIZE variable in the call to the MOD function in + IMALIGN by max(1,blksize), to avoid integer divide by zero if the + block size is zero. (1/11) + +host/as/zsvjmp.s [UNIX] [IMPORTANT KERNEL NOTE] + It turns out that UNIX only aligns commons on longword boundaries + by default (as does VMS). This can lead to pointer misalignment + problems when accessing data of type DOUBLE or COMPLEX in a buffer + with page alignment, e.g., a FIO or IMIO data buffer. In other + words, forcing page alignment on a dynamically allocated buffer + will result in the buffer not being aligned for SPP pointer references + of type DOUBLE and COMPLEX, if the MEM common is not also page aligned. + This has turned out to be a problem on both UNIX and VMS, although + in both cases there has been a simple solution. + + In the case of UNIX I have arranged for the MEM common to be located + at location zero at link time. This has the following results: + + [1] Since MEM is at virtual address zero, it is aligned for all + machine datatypes as well as page aligned. + + [2] Debugging is easier since MEM is not at some arbitrary offset. + SPP pointers become almost equivalent to real pointers. To + convert an SPP pointer into a virtual address, subtract one + and multiply by the number of bytes (2, 4, or 8) per element. + For example, if X is a pointer to INT, the ADB address of + the integer pointed to by X is given by + + byte_address = (x - 1) * 4 + + [3] Having MEM located at zero has the significant benefit that + uninitialized pointer references are likely to cause a memory + fault, rather than causing some arbitrary region of memory to + be overwritten. In particular, dereferencing a NULL pointer + will cause a reference to location -2, -4, or -8, causing a + memory violation. Also, address 0 is in the read protected + text segment, so small pointer values should also cause a + memory fault when writing to the referenced location. + + The assembler directives required to locate MEM at location zero have + been placed in ZSVJMP.S for Berkeley UNIX, for the simple reason that + it is the only assembler module in the kernel, and it is linked into + every process. This is obviously a very machine dependent solution to + the problem. (1/11) + +dev/vi.ed + I'm not sure how, but ^P and ^N were being used for MOVE_START and + MOVE_END, rather than the more logical PREV_PAGE and NEXT_PAGE. + The latter commands were not even in the menu. Added NEXT_PAGE and + PREV_PAGE as ^N and ^P, and changed the escape sequences for the + MOVE commands to something more obscure (in the process of tracing + this down I found an obscure bug in the new ttyputline; EPARAM is + great for finding bugs, as the i/o is so complicated). (1/11) + +pkg/cl/grammar.y +pkg/cl/gram.c + In grammar.y, changed posit and inarglist variables from static to + global. In gram.c, modified crackident() to treat keywords as ordinary + identifiers in argument lists and expressions. Formerly the CL would + abort on a syntax error upon entry of commands such as + + help xxx.hlp file+ + or + wcardimage alpha,beta for=i5 + + The point is that it is easy to accidentlayy enter a keyword name when + abbreviating a parameter name or entering an unquoted string; when this + happens the user has no idea what they did wrong. A syntax error is + easily avoided by making crackident() context sensitive. I could also + have turned keywords off in declaration lists, but did not do so to + minimize future merge problems with the ST version of the CL. (1/12) + +sys/gio/stdgraph/stginit.x + The device name string was being saved by stg_init(), but the pointer + to the string was not being set in SG_DEVNAME(g_sg). The bug was + harmless but would cause the stdgraph kernel to reinitialize itself + from the graphcap on every call to open workstation. (1/12) + + This is the first uninitialized pointer bug caught by the loc(mem)=0 + revision noted above! + +sys/gio/cursor/rcursor.x + Another uninitialized pointer problem. In rcursor, grc_open() was + being called before the descriptor pointed to by RC was allocated + and initialized by grc_init(). (1/12) + +pkg/cl/exec.c + Replaced call to prparamval() in printcall() by lower level procedures + which do not call cl_error(). Printcall() is called by killtask() + during CL error recovery, and error recursion followed by panic + shutdown will result if cl_error is called during killtask. (1/12) + +pkg/cl/builtin.c + Fixed a bug in clflprcache() so that everything is not flushed if + the named task is not found in the cache. (1/12) + +sys/fmtio/lexdata.inc + This was a fix to lexnum for a bug reported by ST. The fix made at + ST was not correct. The entry for cc=ED in state 10=RFR was QRX + but should have been RFX. The routine is almost impossible to figure + out by just studying the code; you need to look at the state diagram + in fmtio/doc/lexnum.hlp. A more serious problem is that the routine + is not very efficient. While in the neighborhood I made a couple + of simple optimizations which should speed it up significantly, + although it is still not very efficient. A simple brute force, + special case recognizer would probably have been fastest, but the + current code is reasonably compact and correctly handles a lot of + special cases. (1/12) + +pkg/system/help/help.hlp + Fixed a typo. (1/12) + +pkg/system/help.par +pkg/system/help/help.h +pkg/system/help/help.hlp +pkg/system/help/modtemp.x +pkg/system/help/t_help.x + Modified the default action of HELP to print help only for the first + module matched by the template, rather than all modules matching the + template. Since the current package is searched first, the first + module matched is likely to be what the user expects. If user wants + help for a task for which there is no help file in the current + package searching will continue elsewhere, but this is not considered + a bug since there should be help for every task in a package. + A package does not have to be loaded to get help on a module therein. + A new boolean parameter ALL was added to the help parameters with + default value NO. If the value is set to YES, HELP will behave as + before, i.e., it will print help for all modules in the help database + matching the given template. The value of ALL automatically defaults + to YES if a pattern matching metacharacter is present in the module + template entered by the user. (1/12) + +pkg/local/mkpkg +pkg/local/local.cl +pkg/local/x_local.x +pkg/local/t_mpc.x + +pkg/local/imcntr.par + +pkg/local/radplt.par + + Installed the interim MPC-like image centering and radial profile + plotting tasks (contr. by G. Jacoby) in the LOCAL package. (1/12) + +pkg/local/peritek/* + Cleaned up the package. Fixed it to get OS channel codes correctly + whether or not the KI is in use. Move the UNIX peritek IOCTL defs + file into the directory so that it will compile on all hosts. Set + up LOCAL mkpkg so that the Peritek stuff will not be compiled at all + except at NOAO. (1/12) + +pkg/vops/*.x +pkg/vops/*.gx + Replaced all "a[npix]" type variable array dimension declarations + by "a[ARB]". The former declaration would cause a runtime abort + on VMS if the procedure were called with NPIX=0. (1/13) + +lib/gio.h +sys/gio/gopen.x +sys/gio/gclose.x + GCLOSE would close the output file if GOPEN opened device "stdvdm", + but did not open the output file (i.e., if the user opened the output + file before calling GOPEN). Added a new flag word GP_GFLAGS to the + GIO descriptor and allocated one of the bits for a flag to tell + GCLOSE whether or not to close the output file. This removes all + ambiguity and should rule out any more bugs. (1/13) + +unix/os/zfiobf.c [IMPORTANT KERNEL NOTE] +sys/fio/fgetfd.x + When opening a binary file in APPEND mode, FIO has to read the partial + block at the end of the file in order to append data to it. Read + permission is therefore required on a binary file opened in APPEND mode. + The read perm bit was restored in FGETFD, and ZOPNBF was modified to + open the binary file with read-write permission. Note that this + requires that ZOPNBF create the file if it does not already exist, + since the UNIX open() will abort when trying to open an nonexistent + binary file for read-write access. (1/14) + + NOTE -- Appending to an odd size binary file did not work at all prior + to this bug fix (except back when FIO was first written). + +pkg/cl/exec.c + The following command would cause a syntax error: + + cl> printf ("!cat junk") | cl + + The lexmodes=yes lexical analyzer was not recognizing beginning of + line, causing the ! operator to be interpreted as YOP_NOT instead + of YOP_OSESC. Added a lexinit() when a new cl() is pushed in + execnewtask(). (1/14) + +host/os/zoscmd.c [UNIX] + Fixed a bug that was calling bkg MKPKG jobs to see interrupts. The + special zoscmd interrupt handler was being posted even when interrupts + were already disabled in the parent process. (1/15) + +sys/vops/amap.gx + Was using integer arithmetic to calculate the mapping coefficients. + (1/15) + +sys/gio/glabax/glbsview.x + Increased the amount of space at the left of the plot to avoid + truncation of numbers printed in scientific notation (unfortunately, + the plot will also be smaller as a result). There was also an error + in the computation, the presence of the x label and ticks was being + used to compute the xwidth, whereas it is the y label and ticks which + affects the x width of the plot. (1/15) + +pkg/system/beep.x +pkg/system/clear.x +pkg/system/sleep.x +pkg/system/time.x +pkg/system/revisions.cl +pkg/system/revisions.par +pkg/system/doc/... + Deleted the above files and their manual pages (these tasks were moved + to the language pkg some time ago). The REVISIONS task will come back + later in a more useful and efficient form. (1/15) + +sys/imio/imunmap.x +sys/imio/imdelete.x + IMIO has been modified to set file protection on image header files + at imunmap time on a new image or new copy image. This will prevent + creation of zombie pixel files by accidental use of DELETE rather than + IMDELETE to delete images. Unfortunately, this also prevents use of + file protection to protect an image from deletion by IMDELETE, but + at least at NOAO, few if any users ever explicitly protect images. + (1/15) + +host/os/zfrnam.c [UNIX] + In testing out the rename operation on the new protected image header + files, I discovered that the original protect link is not being + deleted because ZFPROT cannot find the named file, which has been + renamed at the host level by the time ZFPROT is called to unprotect + the original file. Modified ZFRNAM to remove protection from the + original file before renaming it, and to restore protection if the + rename fails. (1/15) + +host/boot/rtar.c + Added explicit initialization statements for all the switches, and + made the default action to strip trailing whitespace and blank lines + at the end of a text file (necessary when unpacking a tar archive + written on VMS). Switch -n defeats stripping. Also increased size + of pad buffer from 1024 to 8196, for very large text files. (1/16) + +host/os/zxwhen.c [UNIX] + Added a new debugging tool to the exception handler. If the external + variable debug_sig is set nonzero with the debugger before running + a process, then the action SIG_DFL will be set for all UNIX signals. + This will cause the process to core dump and die when the first + signal occurs. One can then go in after the fact with the debugger + and figure out what the process was doing when the exception occurred. + This is very useful when the exception only occurs when the process + is being run from the CL, in which case ADB cannot be used during + process execution. + + Example: + cl> adb -w x_pkg.e + debug_sig?w1 + $q + cl> (enter command; process runs and core dumps) + cl> adb x_pkg.e core + $c + (get stack trace showing where exception occurred) + + Note: adb -w works only if the process is not currently executing. + (1/16) + +host/boot/spp/xpp/xppcode.c +sys/tty/ttyopen.x + The above mentioned diagnostic, in concert with the MEM=0 revision made + earlier, enabled me to find the following subtle bug in the SPP + compiler. In TTYOPEN, the load device entry routine was taking an + error action due to a bad device name, causing the error handler to + be entered. The error handler was doing an MFREE on the tty + descriptor and then calling ERRACT(EA_ERROR). The problem was that + the ERRACT was not error checked, hence processing would continue. + The MFREE sets the input pointer to NULL, hence a couple statements + down we were assigning to a structure pointed to by a null pointer, + causing a segmentation violation (fun, huh?). + + I spot checked other parts of the VOS and found that RETURN was + called only occasionally after ERRACT, hence the same type of bug + could occur in other parts of the system. The language specifies + that one is supposed to explicitly ERRCHK the ERRACT subroutine, + but it is harmless (and safer) to have the system do so automatically, + so I changed the compiler to automatically ERRCHK all calls to ERRACT. + This involved modifications to only 2 lines of code in xppcode.c. + (1/16) + +sys/tty/ttygdes.x +sys/tty/ttyodes.x +sys/etc/envindir.x + + The graphcap search failure leading to the bug mentioned above was + caused by ttyopen being called for the device "@terminal". Obviously, + the higher level code could have resolved the indirection, but for + reasons of defensive programming I added the capability to ttyodes + and ttygdes. The new procedure ENVINDIR was added to ETC to resolve + any indirection in the name (not value) of an environment variable. + (1/16) + +host/hlib/mkiraf.csh + Modified to reference hlib$login.cl, rather than lib$login.cl. (1/16) + +sys/osb/mkpkg + The mkpkg file would pass bytmov.c to the library module list even + though it had already passed bytmov.s. (1/17) + +sys/osb/bytmov.c + Was not using AOFF and BOFF; would work only provided the offsets were + 1 (which is usually the case). (1/17) + +general + The @terminal syntax for specifying the stdgraph device is causing so + many problems thoughout the system that I think we should just drop it, + if its that hard to do, its probably not a good idea anyway. (1/17) + + +Begin simultaneous port to SUN and VMS!! +(Document here only notes which affect the master system; SUN or VMS specific +(revisions are docmented in their respective notes files). +----------------------------------------------------------- + +host/boot/bootlib/_bytmov.c +host/boot/bootlib/osamovb.c +host/boot/bootlib/mkpkg +host/boot/bootlib/mkpkg.csh + Changed the bootlib procedure os_amovb() to use BYTMOV instead of AMOVC. + Added a local C version of BYTMOV so that the assembler version can be + optional. Added conditionals to mkpkg.csh and mkpkg to use the local + C version if the assembler version cannot be found. All assembler + modules are now optional except ZSVJMP.S. (1/18) + +host/mc6800/README +host/mc6800/ishift.s +host/mc6800/zsvjmp.s + Documented the host$* changes required for a MC68000 based machine + (e.g., the SUN workstation). Put a couple of SUN/UNIX assembler sources + in the directory so that they can be moved into place during + installation. Note that these will not work on an ISI/UNIX due to + differences in the two assemblers. (1/18) + +host/hlib/mkiraf.csh [UNIX] + Extracted the machine dependent pathnames into SET definitions at the + head of the file, and eliminated all site dependence from the remainder + of the script. (1/18) + +host/boot/boot/mkpkg.csh +host/boot/boot/bootlib/mkpkg.csh [UNIX] + The bootlib mkpkg.csh file has a multiline if then else, hence was + made into an executable .csh and called directly as a task in the + boot bootstrap-mkpgk.csh, rather than with sh -x. (1/18) + +host/boot/mkpkg/pkg.c + In push_context(), should not call ftell() if cx->fp is NULL, i.e., + when executing do_include from the main at startup time. (1/18) + +host/boot/bootlib/gmttolst.c - + Deleted this file, it is not used anywhere and got forgotten about. + (1/18) + +sys/fio/delete.x +sys/fio/falloc.x +sys/fio/frename.x +sys/fio/protect.x + These routines now recognize and ignore attempts to delete, rename, + protect, etc. the null file "dev$null". (1/19) + +host/hlib/zzsetenv.def + When a task is run from the host it initializes its environment from + the zzsetenv.def file in hlib$; the CL is such a task. I removed the + definition of UPARM from the default zzsetenv.def, because it is + referenced by the CL during startup when looking for cl.par, and the + uparm definition referenced home$, causing a "env.home: " query during + process startup. (1/19) + +lib/syserrmsg + Replaced SYS_FUNPROTECT by a more informative message. (1/19) + +host/hlib/libc.h + Added a libc style u_ definition for ISATTY. Without this, the CL + crashed badly on the SUN because the UNIX stdio code was calling the + LIBC version of isatty(). (1/19) + +sys/ki/kdvall.x +sys/ki/irafks.x + All references to ZDVALL and KDVALL in this directory were missing the + second argument. (1/20) + +host/os/zalloc.c + Was calling ZGTENV to get the path to hlib$. Changed to get the path + to host$, and construct the pathname to hlib$, since hlib$ is not + defined in <iraf.h>. (1/20) + +host/boot/mkpkg/host.c + The UNIX version of mkpkg used to do nothing when asked to check out + a file, if a local copy of the file already existed. This would cause + problems when the system was moved to a new root directory, as the + already checked out version, a symbolic link on unix, would contain + a pathname which was no longer correct. Changed to delete the local + copy and always check out a new version. (1/20) + +host/boot/bootlib/tape.c + In the decoding of the density number, changed "*ip + '0'" to + "*ip - '0'". Also, in the call to sprintf, replaced "density" by + "*density". (1/20) + +pkg/cl/eparam.c + Paramget() was being used to fetch the parameter value string. This + would cause eparam to lock up the CL in terminal raw mode when one + of the parameters in the parameter file was indirect. Replaced the + call to paramget() by a call to the lower level routine sprop(). + (1/21) + +host/boot/mkpkg.c/scanlib.c + In working on the VMS version of MKPKG, I coded a hash table package + for the scanlib() library module list database. I had to test this + anyway, so I merged it into the UNIX version of scanlib, in place of + the old linear search scheme used formerly. Performance improved + significantly for large libraries, as one would expect, e.g., for + a null mkpkg on vops$: + + make .files + 1:02 (old make + mklib) + 20.2u 16.6s 0:49 (new mkpkg, linear search) + 7.9u 16.6s 0:32 (new mkpkg, hash table) + + An entire null sysgen on the VOS (from directory sys$) now takes + 1:26 (86 clock seconds, 13 libraries) on my unix 750, when running + single user. + + Given the name translation and fdate caches already in use, and now + the library module hash table, MKPKG probably isn't going to get + much faster; it is probably 4-8 times faster than the original + combination of Make plus MKLIB. The VMS version, which actually + physically reads each file, is much slower still. (1/21) + +host/boot/xyacc/Makefile [UNIX] + Replaced machine dependent pathnames with offsets. (1/22) + +host/boot/mkpkg/host.c + add_objects() was being called with one too few arguments. (1/22) + +host/hlib/login.cl + Added a default USER package to the default login.cl. (1/22) + +host/boot/spp/xpp/xppcode.c +host/boot/spp/xpp/xppmain.c + Changed include "iraf.h" to include <iraf.h>. (1/22) + +host/boot/spp/xpp/xpp.h +host/boot/spp/xpp/xppmain.c + Parameterized the success code returned by XPP in xpp.h, to avoid + having xppmain.c be different in unix and vms (success=1 in vms, + 0 in unix). (1/22) + +sys/fmtio/lexnum.x + Changed stk_ip[] from short to int. (1/29) + +pkg/cl/builtin.c + Two instances of + + flags != LT_PFILE; + + were changed to + + flags &= ~LT_PFILE; (1/29) + +pkg/system/help/t_help.x + Added , to the list of pattern metacharacters, so that help will not + stop after printing only the first help page when given a command + such as "help taska,taskb". (1/29) + +sys/ki/irafks.x + Changed all the "call ki_error()" to "call ks_error()"; a typo. Added + KI_FIOGD (the graphics binary file device driver) to the case list in + the main routine. (1/29) + +sys/gio/cursor/gtropenws.x + Moved the strcpy to set TR_DEVNAME until after the new kernel has been + successfully opened. Before, if the open failed (e.g., because no + x_*.e kernel executable was found), then the second attempt to open the + kernel would result in a misleading "bad file descriptor" error + message. (2/5) + +sys/fio/rename.x + RENAME will copy a file if the zfrnam fails. Added code to transfer + file protection to the new file, and remove it from the old file + before deletion so that the delete will not abort. (2/7) + +pkg/system/help/lroff/lroff.h +pkg/system/help/lroff/lroff.x +pkg/system/help/lroff/do_ls.x -> dols.x +pkg/system/help/lroff/section.x + (etc.) + LROFF would learn new values for the .ls indent, .sh nlines to skip, + etc., which would remain in effect after task termination, causing + subsequent text to be formatted incorrectly if that text used the + default values. The offending static variables were moved into the + lroff common, and code was added to lroff() to initialize these when + lroff() is called. In the process I eliminated the ENTRY constructs + in section.x. (2/7) + +pkg/system/help/lroff/dols.x + Fixed a bug that was causing 2 ".ls" directives in a row to output + two blank lines, rather than one. (2/7) + +pkg/system/help/help.hlp + This manual page was moved to system$doc/help.hlp. (2/7) + +pkg/system/doc/*.hlp + Went through all these manual pages, fixing grammatical and other + errors, clarifying the discussions, improving the examples, checking + the examples to make sure they work, adding entries for parameters + not mentioned, correcting the names of misnamed parameters, and so + on. This led to the lroff and help bug fixes noted here, most of + which have been known for some time in any case. (2/7) + +pkg/system/help/t_help.x + When called to process a file_template (text process an ordinary file, + rather than a module in the help database), will no longer query for + the name of the help database and all the parameters associated with + formatting manual pages. Formerly the task would abort if there were + no help database, even when called as a simple text formatter. (2/7) + +sys/etc/main.x + Fixed a bug that I admit I have known about for years but never got + motivated to track down until now. The bug showed up when PAGEing + help output in a pipe; if one quit early in PAGE, and then ran page + again in a pipe, the first output seen would sometimes be from the + whatever was previously being paged. This was traced to a problem + with task termination. The IRAF main was changed to not only flush + the STDOUT when a task terminates, but to also F_CANCEL any unread + input on STDIN. (2/7) + +iraf$bin + +pkg/cl/exec.c add call to findexe +pkg/cl/main.c IRAFLIB->IRAFBIN +pkg/cl/builtin.c add call to findexe in clprcache +unix/hlib/zzsetenv.def add set bin = iraf$bin/ +unix/hlib/clpackage.cl add set bin = iraf$bin/ +unix/hlib/irafuser.csh lib/cl.e -> bin/cl.e +dev/graphcap all lib$ -> bin$ +dev/hosts all lib$ -> bin$ + + Created a new directory iraf$bin, logical bin$, to hold "installed" + exececutables. A new function findexe() was added to exec.c, and + a reference to it was added to the call to pr_connect(). The CL will + first look in BIN for the executable when connecting a subprocess, + and if it is not found there, use the pathname given in the TASK + statement. This allows us to install the executables all in a single + directory without need to change the TASK statement or move the + parameter files (which still must be in the directory referenced in + the TASK statement). Note that there need be no executable file in + the package directory; a "mkpkg install" or "mkpkg update" will $move + it to bin$. + + In addition to permitting installed executables, this revision also + allows multiple tasks, each with its own parameter file, to share the + same executable. For example, we currently copy the ONEDSPEC + executable to the IMRED directories for the IIDS and IRS, since while + these packages can share the executable they need independent parameter + files. By installing the executable all packages can share the same + executable and still have separate parameter files. + +sys/libc/cfnroot.c +sys/libc/cfnextn.c + Changed the FNLDIR references to calls to FNROOT and FNEXTN. (2/10) + +sys/libc/cfnames.c + Deleted this file, since c_fnldir, c_fnroot, and c_fnextn are already + present in the library in separate files. (2/10) + +pkg/cl/main.c + Changed several debugger eprintf calls to printf calls, to avoid + use of eprintf until the CL has finished starting up. (2/10) + +lib/cl.par -> pkg/cl/cl.par + Since the CL is now installed just like any other executable, its + parameter file is kept in the source directory rather than lib$. (2/10) + +all mkpkg files + The "update:" entries now do a "$move x_pkg.e bin$". (2/10) + +dev/pix +dev/pix.pix + Installed the "standard test image" and its associated pixel file (for + testing software and new installations) in dev$. (2/10) + +-------------------- +Begin merge of V2.2 VMS/IRAF changes into UNIX/IRAF. +See the VMS notes for additional details. + + +unix/os/zfnbrk.c + Can now handle \X in filenames, without interpreting the \ as a + directory delimiter. (2/10) + +unix/hlib/libc/xnames.h +unix/hlib/libc/xnames.no_ + Added a define for VFNUNMAP. (2/10) + +unix/os/zzinit.c - +unix/os/zzstrt.c + +unix/hlib/libc/knames.h +unix/hlib/libc/knames.no_ + Added the (no-op) procedures ZZSTRT and ZZSTOP to the UNIX kernel. + These are called by the bootstrap utilities, or any other program + which does not have a ZMAIN but which uses LIBOS, to perform any + necessary kernel initialization. (2/10) + +unix/boot/... + Changed all the _zstartup, _zshutdown references to ZZSTRT, ZZSTOP. + Added references to a couple programs that did not have them yet. + (2/10) + +unix/boot/bootlib/osfpathname.c + Added a call to vfn2osfn before the call to ZFPATH. (2/10) + +unix/boot/bootlib/oschdir.c + Replaced call to os_fpathname by call to ZFSUBD. (2/10) + +unix/hlib/libc/spp.h + Added #define for OSOK. (2/10) + +unix/hlib/libc/libc.h + Added #ifdef for NOLIBCNAMES. (2/10) + +sys/mkpkg + Replaced with VMS version. (2/10) + +unix/boot/mkpkg/* + Replaced all the "portable" files with the VMS versions, which will + work on either system. (2/10) + +unix/boot/bootlib/* + Updated with code from VMS version where appropriate. (2/10) + +vms/boot/bootlib/osgetenv.c + Added code for bin$. (2/10) + +unix/boot/generic/* + Numerous changes to enhance the portability of this code. (2/10) + +unix/boot/rmbin/rmbin.c +unix/boot/rtar/rtar.c +unix/boot/rtar/wtar.c + Replaced by the VMS versions. (2/10) + +unix/boot/spp/xpp/lex.sed + +unix/boot/spp/xpp/Makefile + Now postprocesses the lexyy.c file to convert certain nonportable + constructs into a more portable form. (2/10) + +pkg/mkpkg + Added a conditional purge [...] for VMS, and a $purge bin$ for + all systems. (2/10) + +pkg/cl/scan.c +pkg/cl/opcodes.c +pkg/cl/main.c +pkg/cl/globals.c + Merged VMS changes into these files. Scan: tab as well as blank in + whitespace; the rest, #ifdef globalgarbage for VMS linker. (2/10) + +unix/hlib/devstatus.cl + Added a verbose option like that for VMS; isn't worth much, but it + make the task parameters match on both systems. (2/10) + +sys/etc/syserr.x + In syserrs, added a check for overflow on the error message string. + (2/10) + +sys/ki/kiconnect.x + Added a call to ki_gethosts() to read the host name table if it has + not yet been read. (2/10) + +sys/clio/zfiocl.x + In zardps, repaired some code that was confused about bytes and chars + and was overwriting memory as a result. (2/10) + +dev/graphcap + Merged in changes from VMS version. (2/10) + +sys/tty/* + Replaced the entire directory by the VMS version, which adds TTYWRITE + to permit null padding in control strings. (2/10) + +sys/gio/stdgraph/stdgraph.h +sys/gio/stdgraph/stgencode.x +sys/gio/stdgraph/t_showcap.x + Replaced by the VMS versions. Adds !! operator for generating + millisecond delays in graphcap control strings, etc. (2/10) + +pkg/images/tv/* + Replaced all of the TV code by the VMS version, except the tv/doc + directory and tv/cv/ids/iis.doc, which had been modified recently + in the UNIX version. (2/10) + +(did a full reboot of UNIX/IRAF) + +unix/boot/mkpkg/pkg.c +vms/boot/mkpkg/pkg.c + Open_mkpkgfile() would die on a bus error if the mkpkgfile did not + exist. Made the call to k_fseek conditional upon the successful + open of the mkpkgfile. (2/10) + +unix/os/zfsubd.c + If the input directory is null, will now immediately fetch the current + directory and fold the subdirectory into that. (2/10) + +sys/gio/calcomp/mkpkg +sys/gio/nsppkern/mkpkg +sys/gio/stdgraph/mkpkg +sys/tty/mkpkg + Changed to move exe to bin$ instead of lib$. (2/10) + +pkg/cl/builtin.c +pkg/cl/edcap.c +pkg/cl/eparam.h +pkg/cl/globals.h + Added a new attribute EDITOR_CMD to EDCAP. This defines the command + sent to the host to run the editor (not necessarily equivalent to the + logical name of the editor). The commands are defined in the dev$*.ed + files, and are host system dependent but not site dependent. (2/11) + +dev/*.ed + Added an EDITOR_CMD entry to each file for UNIX. (2/11) + +doc/* + This directory contained a lot of internal memos, etc., of value only + for iraf management. These were moved out of the system, leaving only + the sources for those documents which might be of general interest. + (2/12) + +local/* [UNIX] + Added a new subdirectory LOCAL to to the UNIX version of IRAF. This + serves the same purpose that it does in VMS/IRAF. Sites installing + IRAF for the first time should create a new account "iraf" for the + IRAF system, with login directory $iraf/local. The UNIX distribution + tape will contain a default .login etc. for the IRAF account (this is + needed to bootstrap the system, should it be necessary to do so). + Mail to IRAF will accumulate in the "mbox" in local, the "notes" file + will be stored in local, and so on. This directory will not be + modified when an update of the system is installed. (2/12) + +pkg/cl/builtin.c + Added a call to findexe() whereever _pname is used. If this not done, + tasks like prcache and flprcache may fail to find the process in the + cache. (2/12) + +unix/hlib/clpackage.cl +unix/hlib/zzsetenv.def + Since the zzsetenv.def file is always loaded now when the CL starts + up (because the CL is run from the host), and since a lot of the set + environment defs in clpackage.cl redefine those in zzsetenv.def, + I moved the remaining non CL-specific SET defs from clpackage.cl to + zzsetenv.def. The file clpackage.cl is now machine and site + independent and can safely be forgotten about. Also, since the system + package is now loaded at login time, I replaced the fscan stuff, + used to print the message of the day, by a call to PAGE. (2/12) + +iraf$mkpkg + Added an "update" entry point, to avoid having to run separate mkpkg's + in sys and pkg to relink all the system executables. (2/12) + +sys/ki/kishownet.x + +pkg/system/netstatus.x +pkg/system/x_system.x,system.cl,etc. + Added a new function ki_shownet to KI to print the network status. + Added a new task NETSTATUS to the system package to bring this to + the user level. NETSTATUS tells if the network is active, lists + the nodes on the local net, and lists the aliases for each node. (2/12) + +dev/edt.ed +dev/emacs.ed + Updated with the VMS versions, which now include the PREV_PAGE and + NEXT_PAGE entries. (2/12) + +dev/hosts +dev/uhosts + Brought these up to date; added a bunch of new hosts. (2/12) + +unix/os/zgtenv.c + An optimization; <iraf.h> is not read unless the named environment + variable is a known one. (2/12) + +sys/sys.hd +host/os/doc/os.hd + Replaced the references to sys$ by host$ so that HELP can find the + manual pages. (2/13) + +pkg/images/tv/cv/ids/idsfont.x +pkg/images/tv/cv/iism70/idsoptn.x - + There was a name collision of the procedures ids_open and ids_optn. + The second was a no-op anyhow, so I deleted it, and commented out + the call in ids_font. (2/13) + +sys/gio/cursor/grcwaitp.x + Modified to display another "wait" message after the user responds + to the first wait with the space bar, causing the system help + to be printed. (2/13) + +unix/os/zopdpr.c +unix/os/zmain.c + Fixed a bug in zopdpr that was preventing KILL from killing bkg jobs + on UNIX. Also added the ability to use an &NN argument to set the + priority at which the bkg job is to run. (2/13) + +dev/termcap +dev/graphcap + Several new entries were added to each file (contributed by our early + release sites). (2/13) + +pkg/language/ + The manual pages for the language package were extensively revised, + corrected, and extended. (2/12-13) + +pkg/softools/ + Manual pages were added for all the softools tasks, including all + the bootstrap utilities. (2/13) + +host/spp/xpp/xppcode.c + The size of the output buffer was increased by a large factor to + avoid overflow when compiling large procedures, e.g., procedures + with a lot of data statements. (2/13) + +pkg/lists/* + The names of the tasks GCURSOR and IMCURSOR were changed to RGCURSOR + and RIMCURSOR. The manual pages for these and all other tasks in + the package were revised and printed. (2/13) + +host/boot/rmfiles/ + +iraf/mkpkg + Added a new bootstrap utility RMFILES. This is similar to RMBIN, + but is driven by a script and is not limited to deleting binary + files. Two new entries "strip" and "stripall" were added to the + root mkpkg file for stripping production versions of the system. + The results: + + full system 41.493 Mb + mkpkg strip 19.838 + mkpkg stripall 17.062 + + Stripall differs from strip in that it deletes the libraries as + well, preventing software development but still permitting full + use of the standard system. (2/16) + +doc/* + Renamed some files with .doc extensions to make it easier to + delete them with the stripper. (2/16) + +doc/gripesfile +doc/newsfile +lib/motd + These files were moved to HLIB, since they are system dependent, + and should not be clobbered when a new version of the system is + installed. (2/16) + +(Skip made tape for AOS/VS) + +hlib/zzsetenv.def + Changed host$osb/ to sys$osb/. (2/17) + +unix/os/zfmkcp.c + An argument was being passed to ZFPROT by value rather than by + reference. (2/28) + +sys/imio/imfort + Tested the Fortran/IMIO interface for UNIX. One of the Fortran + test programs had to be modified before it would compile on UNIX, + and another had a bug (misplaced continue in do loop). The only + serious problem was the linker conflict (see below). (3/5) + +unix/os/mkpkg + Added an $ifeq (USE_LIBMAIN to the mkpkg to not put zmain.o in the + library if libmain.o is used. The library version is not used + anyhow, as XC explicitly references lib$libmain.o during linking. + The unix zmain.o contains the external "main"; when using libos.a + in a Fortran program, the linker would use the iraf zmain instead + of the Fortran main, causing the Fortran program to fail to link. + (3/5) + +unix/hlib/newsfile +unix/hlib/gripes.cl + Installed the vms/iraf versions. (3/5) + +unix/os/zgcmdl.c + Added this new kernel primitive; used to get the host system command + used to invoke the process, e.g., in a foreign task. This is used + by the IMFORT interface to allow host Fortran programs to get the + CL foreign task command line. (3/5) + +unix/os/zmaloc.c +unix/hlib/kernel.h + Added a #ifdef DEBUGMEM to zmaloc.c and a #define DEBUGMEM to + kernel.h so that compilation of the special version of MALLOC can + be easily defeated. The debug version is useful on the VAX, but + should be disabled on the SUN to permit use of the standard UNIX + version when using the SUN graphics libraries. (3/5) + +------------------------- +(V2.2 was sent out sometime near here) + +unix/mc68000/ishift.SUN + Would not right shift properly. (3/14) + +sys/osb/miiupk16.x +sys/osb/miiupk32.x + These subroutines were modifying (byte swapping) the input array. + (3/14) + +sys/ki/kireceive.x + Modified to deal with out of band data by checking to see if the out + of band data is a character string (usually an error message), printing + the message on STDERR if so, and then returning ERR on the channel. + (3/14) + +dev/graphcap + Modified DD entries for the versatecs and the dicomed to queue the + print jobs to these devices. (3/15) + +pkg/cl/lexicon.c + Modified to permit inclusion of {} inside unqoted strings. The change + was made in a way which does not interfere with the use of {} to + delimit compound statements. (3/18) + +sys/imio/imrename.x + + Added a new operator IMRENAME to IMIO, so that people won't have to + use the FIO rename to operate upon images, which is a violation of + the IMIO interface. (3/18) + +pkg/cl/lexicon.c +pkg/cl/debug.c +pkg/cl/opcodes.c +pkg/cl/compile.c +pkg/cl/main.c +pkg/cl/builtin.c +pkg/cl/prcache.c +pkg/cl/exec.c +sys/gio/cursor/gtropenws.x + Added redirection for the standard graphics streams. The syntax is + as follows: + + >(G|I|P)+ file # (create file) + or + >>(G|I|P)+ file # (append to file) + + e.g., ">G file" to redirect STDGRAPH to "file", or ">GI file" to + redirect both STDGRAPH and STDIMAGE to file. Note that multiple + redirection arguments may be given on the command line. The >GI, + etc., is lexically a token, hence there must be no space after the >, + and the GIP must be upper case. (3/24) + +pkg/cl/config.h + Increased the size of the stack and dictionary. (4/13) + +pkg/cl/main.c + Fixed a bug in the calls to FDOPEN, dating back to the installation of + the graphics redirection code, above. (4/13) + +unix/hlib/[dir]1mach.f + Added (commented-out) lines for the IEEE machine constants, determined + on the Sun-2. (4/15) + +sys/osb/miiupk16.x +sys/osb/miiupk32.x + Would not write into output array if byte swapping was not used on the + host machine (not found until code was run on 68000 series machine). + (4/23) + +------------------- +Package reorganization (add package tree NOAO) 26-27 Apr) +Detailed notes were not kept for this as hundreds of files were edited. + +pkg/* +noao/* + Added a new directory NOAO off the root. Moved all the optical + astronomy packages from PKG to NOAO. (4/26) + +lib/pkg/ +lib/scr/ +noao/lib/scr/ +noao/lib/scr/stdlines/ + Created a library noao/lib for the NOAO package. Moved all NOAO + related files from lib/pkg and lib/scr to the new library. All the + XTOOLS library global includes remain in lib/pkg. (4/26) + +pkg/utilities +noao/astutil + Created a new package ASTUTIL in NOAO. Moved all the astronomy tasks + from the UTILITIES package to the new ASTUTIL package. (4/26) + +pkg/dataio +noao/mtntape + Created a new package MTNTAPE in NOAO. Moved all the mountain tape + readers from DATAIO to the new MTNTAPE package. (4/26) + +pkg/local -> noao/proto, iraf$local + Broke the old LOCAL package up into two packages PROTO (in NOAO) and + LOCAL. The PROTO package is essentially the old LOCAL package, but + the concept of the package has been changed to reflect its usage. + The new LOCAL package is in the directory iraf$local/tasks, i.e., in + the local (site dependent) directories. This is all set up as a + package in the root, ready for the individual sites to add their own + collection of packages. (4/26) + +pkg/clpackage +lib/clpackage.hd +lib/root.hd +unix/hlib/clpackage.hd + The help directories were restructured to make it easier to tie + local or add-on packages into the help database. The old pkg$clpackage + directories were deleted and the files moved into hlib$. Entries for + the LOCAL and NOAO packages were added to hlib$clpackage.hd. To add + a new help tree to the help database, all the user need do is make an + entry in this file to for the root .hd of the new help tree, and run + mkhelpdb. (4/26) + +unix/hlib/clpackage.men +unix/hlib/clpackage.cl + Removed the entries for all the NOAO packages. The 'page motd' entry + was moved to hlib$login.cl since the terminal type may not have been + set properly until after the user login.cl has been processed. This + also makes it possible for the user to omit the message of the day if + they wish. (4/27) + +unix/hlib/mkiraf.csh + Changed all the USER, HOME, etc. entries to U_USER, U_HOME, etc., + to avoid unintended editor script substitutions. Added an unalias + command to protect the user from their own folly if they have + aliased rm, etc. (4/27) + +unix/hlib/zzsetenv.def + Moved all the NOAO logical directory definitions to noao$noao.cl. + Added SET defines for the NOAO, LOCAL, and SDAS directories. (4/27) + +unix/hlib/login.cl + Changed all the USER, HOME, etc. entries to U_USER, U_HOME, etc., to + avoid unintended editor script substitutions. Moved the page motd + code in from clpackage.cl. (4/27) + +pkg///*.hlp +noao///*.hlp + All manual pages were modified to give the package path in the + manual page header. (4/27) + +pkg///*.men +noao///*.men + All "Revisions" entries were removed from the menu files, since this + is a temporary thing and it prevents the long form menu from matching + the multicolumn menu. In the future, any non-task manual pages should + be listed separately from the task list. (4/27) + +sys/mkpkg +sys/imio/mkpkg + Added entries for libfort.a; must have forgotten to put these in when + the IMFORT package was added. (4/28) + +unix/hlib/mkmlist.csh + Changed the bgrep to fgrep for increased portability. This utility is + not used often enough to make the use of bgrep worth the loss of + portability. (4/28) + +pkg/images/tv/display/iisers.x +pkg/images/tv/cv/iism70/zclear.x +pkg/images/tv/cv/iism70/iiscursor.x + There were several cases of a 32 bit signed integer containing a 16 bit + unsigned integer value being assigned into a 16 bit signed integer + variable. This works on machines that do the assignment at runtime, + truncating the value in the process. It would cause a compile time + error on the SUN-3, which carries out the initialization at compile + time. Changed to [short = andi (intval, 177777B)], which forces a + runtime assignment. (4/28) + +sys/gio/nspp/portlib/flush.f +sys/gio/nspp/portlib/flash[13].f +sys/gio/nsppkern/gktcancel.x +sys/gio/nsppkern/gktclear.x +sys/gio/nsppkern/gktclose.x +sys/gio/ncarutil/sysint/spps.f + Changed the name of the NSPP routine "flush" to "mcflsh" to avoid + library conflicts with the Fortran FLUSH. (4/28) + +unix/hlib/libc/finfo.h + The fi_owner field of the finfo structure was not dimensioned + properly, causing the storage allocated for the structure to be + overrun. This was found in a call to pfileopen/filetime in the + CL; the finfo structure is allocated space on the stack, hence the + stack was being corrupted (found on the SUN). This is a fairly + serious bug which has been in the system for a long time. (4/28) + +sys/gio/stdgraph/stgdrawch.x + The sgch_flush procedure was being called with a short argument (op/2) + when an integer argument was expected. (4/29) + +sys/gio/stdgraph/stgrcur.x + The cursor read algorithm was enhanced by the addition of a general + pattern matching capability, used to improve the detection of botched + cursor reads, permitting automatic retries. The old algorithm was + fine for fixed size cursor strings, but did not work well for + variable length cursor value strings such as returned by Regis. (4/29) + +pkg/cl/* + Starting with the new version of the CL from ST, did a diff of the + local changes to the CL since V2.2 (graphics redirection, {} in command + mode) and merged these into the ST version of the CL, which has been + worked on extensively since last fall, adding improved error handling, + a better logfile capability, eparam enhancements, parser improvements, + and so on. (5/2) + +pkg/cl/gquery.c + Added (char *) declarations for strcpy() and index(). (5/2) + +pkg/cl/cl.par + Moved the mode parameter to the end of the CL parameter list, where it + is for most parameter sets. Eparam does not print the query mode + params before the hidden ones (it should, like lparam, to indicate the + calling sequence), but since most pfiles are already ordered that way, + this is good enough for now. + + Also changed the default values for EPINIT and EHINIT. Not using + standout mode in ehistory is simply a matter of preference; neither + the Cshell nor DCL uses standout mode either, and I find it distracting. + I never have understood what the noshowall option in eparam is good + for; I suspect this has something to do with SDAS not using hidden + parameters in the way they were designed to be used. With regular + IRAF tasks one always wants to see the hidden parameters too; most + of the parameters are generally hidden. (5/2) + + [See the hlib$clpackage.cl mod below to personalize these parameters + for your site]. + +unix/hlib/login.cl + In the login.cl template, changed the call to `page' to a call to + `clear;type'. The "more" query in page() causes problems if the user + types ahead and the motd is longer than one screen. If the user does + not want the screen cleared, or does not want the motd at all, they + can now easily change the login action. (5/2) + +pkg/cl/eparam.c + Some problems are apparent in using the new EPARAM. Some of these + were fixed before and must have gotten lost in the merge. + + To the strings "PACKAGE = %s\n" and "TASK = %s\n" in the screen + repaint function, added a \r before the \n. This is necessary because + the Eparam screen is updated in raw mode, and no output processing + is done in raw mode, hence newlines are not converted to CRLF. + This causes the next line to be printed at the END of the last line, + one line down on the screen (!!). + + In drawkey(), would clip the prompt string at the right margin of + the terminal only if the VALUE string was too long to fit in the + value field. Parameters with long prompt strings but short values + would wrap around, stepping on the next line. + +unix/hlib/clpackage.cl +unix/hlib/login.cl + Deleted the ehinit, epinit environment definitions. Added commented + out cl parameter assignments to the login.cl file. (5/2) + + NOTE - `editor' should remain an environment variable, rather than + being changed to a CL parameter, because the CL is not the only + task in the system which needs to know the user's editor preference. + The VOS facilities, e.g., DBMS, will use this variable too. + +pkg/cl/cl.par +pkg/cl/config.h +pkg/cl/prcache.c +pkg/cl/modes.c + Added a new "active" CL parameter `szprcache' to the CL parameter file. + Changed NFGPROC in config.h to MAXSUBPROC, the maximum rather than + actual number of cached processes. Modified the prcache.c and modes.c + codes to dynamically change the size of the process cache when this + parameter is set. This was done because the optimal size of the process + cache depends upon the host operating system, upon whether the system + is single user or multiple user, upon on the per user quota, and so on. + The system manager can now set the default cache size to the optimum + value for each individual host, by editing hlib$clpackage.cl. (5/2) + +pkg/cl/cl.par +unix/hlib/clpackage.cl + Changed the default value of the `lexmodes' parameter to yes in cl.par. + In clpackage.cl, added commented out assignments for all the CL + parameters for which a site might want to change the default values. + This makes it easy for sites to provide their favorite default values + for EHINIT, EPINIT, SZPRCACHE, KEEPLOG, etc. (5/2) + +pkg/cl/cl.par + Changed the default value of `logfile' to "home$logfile.cl". The HOME + directory seems a better default for the logfile than UPARM, so that + the user won't forget that this potentially very large file is around, + and so that they can find it easier. (5/3) + +unix/hlib/cllogout.cl +unix/hlib/clpackage.cl + Added a new task declaration $_logout = home$logout.cl in clpackage.cl. + Added code to hlib$cllogout.cl to call this task at logout time if a + logout.cl file is present in the user's home directory. (5/3) + +cl syntax errors - + The new facility to help give the user some insight into syntax errors + is great, and I notice the reduce/reduce conflicts are gone from the + grammar now too. + +pkg/cl/history.c + Eliminated the unused 4 spaces at the left in the logfile. (5/3) + +pkg/cl/builtin.c +pkg/cl/eparam.c +pkg/cl/modes.c [EXPERIMENTAL] +pkg/cl/exec.c +pkg/cl/pfiles.c +pkg/cl/param.h + Added a "menu mode" to the CL. This was the easiest to implement of + the many EPARAM related changes recently discussed, which is the main + reason it was done now. The main revisions were: [1] moved pfilecopy + code from eparam.c to cleparam() in builtin.c, so that eparam() now + simply edits a pfile structure in memory (it should have been done + that way originally). Added a status return to eparam() to indicate + what type of exit was taken. Added M_MENU mode all over the place. + Added a conditional call to eparam() to execnewtask(), after the pfile + has been copied, the command line parameters processed into it, etc. + Modified effmode() to not query when a task is run in menu mode. + Added a new function taskmode() to modes.c to determine the effective + mode for a task. + + Menu mode may be set only at the task or package level (setting menu + mode at the CL level is not useful since even simple tasks like DIR + will then cause eparam to be called). Menu mode is available only for + tasks which are called interactively, hence tasks called from within + scripts or in batch mode will not call eparam(). When menu mode is + disabled in this context, it is as if the mode were auto instead. + If menu mode is not asserted, everything behaves as it did before + there was such a thing as menu mode. Note that the task mode must + be set to "a" or "al" if setting the package mode to "m" or "ml" is + to have any effect. Setting the task mode to "m" or "ml" will always + work, of course. + + When a task is executed in menu mode eparam() is called after the + argument list (if any) has been processed, and immediately before the + task is executed. Exiting eparam() with ctrl/z runs the task, exiting + with ctrl/c aborts everything and does not update the parameters. + To simply edit the parameters, one runs task EPARAM explicitly. (5/3) + +pkg/cl/task.c +pkg/cl/param.c +pkg/cl/modes.c + Turned off the fancy context dependent checks to see if abbreviations + are to be permitted; abbreviations are now permitted in scripts etc. + if enabled by the CL parameter. Modified ltasksrch() to return a + match if an acceptable abbreviation is found in the current package, + without searching all the other loaded packages to see if the abbrev. + is unique. Eliminated the kludgy code in newltask() which would + directly fiddle with and later restore the CL parameter `abbrev...' + to disable abbreviations while checking for a redefined task. + This was done by adding an argument to ltaskfind(). (5/3) + +pkg/cl/modes.c + LEARN mode is now enabled only for tasks which are called + interactively. Tasks called by scripts, etc., or in batch mode, + do not have their parameters learned. This should speed things + up a bit and avoid mysterious changes to parameter values when + tasks are called as subroutines in scripts. (5/3) + + Note that a pfile will *always* be updated if a parameter is set in + an explicit assignment, or on eparam. + +pkg/cl/param.c + Moved the call to parse_clmodes() to before, rather than after, the + value of the CL parameter is modified, in case the new value is + illegal and parse_clmodes aborts. (5/3) + +pkg/cl/builtin.c (clpackage) + The PACKAGE builtin was not initializing the package descriptor + properly, causing the package parameter file to be misplaced and + preventing package parameters from being found in ambiguous (task, + package, cl) searches. 5/4) + +pkg/cl/param.c (lookup_param) +pkg/cl/modes.c (effmode searches for parameters too) + Parameter searches now look in the package parameter file properly; + possibly this has never worked up until now. Ambiguous parameter + references of the form "=param" are resolved as follows (searching + for the named parameter): + + Case 1: current task = `cl' (interactive) + - look in pfile of current package + - look in pfile of CL + + Case 2: current task != `cl' (e.g., a compiled or script task) + - look in pfile of task + - look in pfile of package to which task belongs + - look in pfile of CL + + Note that in case 2, the pfile to which the task belongs is NOT + necessarily the same as the current package. Indirection to a + package parameter can be achieved merely by omitting the parameter + declaration from the task's parameter set, although explicit + indirection is normally preferable to permit a command line override. + + Note: If the current package redefines any CL parameters, this can + be confusing. The prime example of this is the "mode" parameter, + present in each task, each package, and in the CL. Interactively + typing "=mode" or "mode=value" will set the mode of the current + package, not the mode of the CL. Type "cl.mode=value" to set the + mode of the CL (or use eparam). (5/4) + +unix/os/zfiotx.c + Modified the UNIX terminal driver to read the cursor in cooked rather + than raw mode, using a signal handler to catch interrupts and convert + them into ordinary character reads. It appears that raw mode is very + raw, i.e., even ctrl/s ctrl/q is turned off, which can cause data to + be lost or unsolicited characters to be seen. (5/4) + +sys/fio/zfiott.x +sys/fio/finit.x +sys/clio/clopen.x +sys/etc/ttopen.x +lib/ttset.h +unix/hlib/ttset.h +unix/hlib/xnames.h,xnames.no_ +unix/hlib/iraf.h + Added a new portable driver to the VOS and made it the standard terminal + driver for the high level code. If the iraf main is called by zmain + with the kernel terminal driver, clopen() maps the stdio streams to the + TT logical terminal driver. The TT driver is a place to implement any + VOS logical terminal functions; currently it is used only to support + monocase terminals, or dualcase terminals with the shift lock on (for + people who are fond of entering everything in upper case). The package + TTOPEN in ETC contains a direct terminal open routine (will be used + for screen editors implemented in subprocesses) plus TTSETI and TTSTATI + routines, used to set and query terminal driver options. FINIT was + modified to always load the TT driver as well as the TY driver. + + The logical terminal driver currently supports two options: + + ucasein Map input to lower case. A character may be + prefixed by ^ to enter an upper case character, + e.g., "PAGE ^MAKEFILE" -> "page Makefile". + To shift to upper case, "^+"; to shift back + to lower case, "^-", e.g., "PAGE ^+README" -> + "page README". The ^ character must be + doubled to be passed through. Note that ^ + is also the history metacharacter, but there + are only so many keys to work with. + + ucaseout Map all terminal output to upper case (may be + needed for some terminals). + + Case mapping is disabled in raw mode. A user requested this capability + because they have a lot of old monocase terminals. It also should + be useful for people who like to work with the shift lock on. (5/5) + +pkg/cl/builtin.c +pkg/system/stty.cl +pkg/system/stty.par - + Added a new builtin _stty, used to set/stat the VOS logical terminal + driver, and modified the system.stty task to use it (STTY should + probable be written as a builtin at some point). For example, + "stty ucasein" turns on monocase mode. STTY is now a procedure + script, hence the .par is gone. (5/5) + +pkg/cl/eparam.c +sys/gio/cursor/rcursor.x +sys/gio/stdgraph/stgopenws.x,stgclws.x,stgdeact.x,stgreact.x + Minor changes to support `stty ucase...' modes, which require some + support in routines that do raw i/o to the terminal (case mapping, + etc., is disabled while in raw mode). (5/5) + +miinelem.x + +miipksize.x + +miireadc.x + +miireadi.x + +miireads.x + +miiwritec.x + +miiwritei.x + +miiwrites.x + + Added the following routines to the MII package. The MIIPKSIZE routine + returns the size in chars of a packed MII array of the given MII type, + and obsoletes the old MIILEN function (miilen is still in the library, + however). The MIINELEM function returns the number of elements of the + given MII type in a packed array of the given size in chars. The read + and write routines are like the corresponding FIO routines, but are + used to read and write data stored externally in MII format. (5/7) + +sys/etc/symtab/stsave.x +sys/etc/symtab/strestore.x + Modified these routines to use the new miiread/miiwrite facilities to + save the symbol table externally in a machine independent format. + This makes it possible to use the symbol table package as a kind of + mini-database facility, providing a quite efficient interface for a + certain class of applications. (5/8) + +sys/gio/ncarutil/sysint/erprt77.f + In a couple of places, moved SAVE statements to before DATA statements + in the same procedure - required by Fortran standard. (5/8) + +sys/fio/ztiott.x +lib/ttset.h +hlib/libc/ttset.h +pkg/system/stty.cl +pkg/cl/builtin.c + Added a new option "logio" to the VOS logical terminal driver. This + is used to log all i/o to the terminal in a text file home$ttyio.log. + ALL i/o is logged, including graphics and raw mode i/o. Control codes + are rendered into printable form for output to the logfile. This + feature is most useful as a debugging tool when trying to figure out + why the system is not talking to a new terminal correctly. To turn + logging on, type `stty logio' in the CL. To turn it off, type + `stty clear logio'. The data passed in each ZGETTT or ZPUTTT call + is logged as one line of text; newlines in the data are logged as \n. + Long lines are broken, with the continuation line indented 4 spaces. + (5/9) + +sys/gio/gki/gkisetwcs.x + Modified to always write a copy of the SETWCS instruction to the output + metacode stream, even if writing to a standard graphics stream. (5/12) + +sys/fio/fexbuf.x +sys/fio/open.x +sys/fio/fgetfd.x +unix/hlib/iraf.h + Modified FIO to support the SPOOL_FILE file type. This type of binary + file spools data in a buffer in memory. Typically, a routine writes to + the spool file, the spool file is rewound, and another program reads + the data back out, after which the data may be cancelled and the + process repeated. Spool files have long been in use in by GIO; this + revision makes the facility available to applications software. (5/12) + +unix/os/zfiomt.c + Changed value of the count field in the mtop structure for the rewind + function from 0 to 1. (5/14) + +unix/boot/spp/rpp/(baderr.[rf],synerr.[rf]) + vms/boot/spp/rpp/(baderr.[rf],synerr.[rf]) + These routines are called with obsolete Hollerith character strings, + e.g., 5Habcde, in the argument list. Sometime ago we changed the + declarations for the Hollerith arguments to character*(*), thinking + that that was the correct specification. Both the UNIX and VMS + Fortran compilers, however, implement Hollerith as a single address + in the argument list pointing to a null delimited character string + (like a C string). Character*(*) is something quite different on + VMS, hence the XC/rpp error messages were getting garbled. Changed + the declaration for the Hollerith character string back to INTEGER, + which causes the pointer to be passed on to the low level interface + procedure correctly. (5/14) + +sys/fio/fdevblk.x + Modified to accept any pathname as input, not just directory pathnames. + The directory prefix is extracted and a temporary file created to + determine the device block size, as before. If an error occurs a + special error message is now generated, instead of the former message + "cannot open file (zbk12345)", which was rather cryptic. (5/14) + +sys/fio/fseti.x + In the case F_CANCEL, added the statement `boffset[fd] = 0'. This + ensures that FIO will not under any circumstances consider the contents + of the buffer to be valid. Also added LNOTE/LSEEK calls to preserve + the file offset over the cancel operation. Formerly the file offset + was set to be beginning of the buffer by the cancel. Preserving the + file offset means that a cancel when reading from a blocked file is + harmless but will pick up any recent changes to the file if shared. + Modifications to a file can likewise be cancelled provided the FIO + buffer has not been flushed in the interim. (5/19) + +unix/hlib/stripper +unix/hlib/stripall + No longer deletes the .hd (help directory) files. (5/16) + +sys/fio/fioclean.x + This routine, which cleans up during error recovery, deletes any + partially written new files if an error occurs. This would cause a + misleading message when the file being deleted was a special device. + Added a check for special devices. (5/19) + +sys/fio/fseti.x + When the file type is set to SPOOL_FILE, the FBLKSIZE parameter is now + also set to zero to indicate that the file is a streaming file. Spool + files are considered to be streaming binary files. (5/20) + +sys/fio/fwtacc.x + The sleep time of 60 seconds when waiting for a file to become + accessible was too long. Changed to a short interval which gradually + increases to a long interval. (5/23) + +pkg/plot/implot.keys +pkg/plot/implot.x + Moved the implot.keys file to lib$scr/implot.key, modified the implot.x + file accordingly. (5/23) + +lib/imhdr.h +lib/imio.h +sys/imio/* +sys/imio/iki/ + IKI Image Kernel Interface +sys/imio/iki/oif + OIF "old iraf format" kernel +sys/imio/iki/stf + STF "space telescope format" kernel + + Installed the newly revised IMIO interface, which was developed outside + the system without logging the revisions due to the extensive nature of + the revisions required. IMIO has been restructured to isolate all + knowledge of the physical image format into a new interface called the + image kernel interface (IKI). The IKI in turn can support any number + of image kernels, each of which provides an interface to a specific + host image format. These image kernels function very much like the + FIO device drivers and can even be dynamically loaded like the FIO + device drivers, to do IMIO to a device for which the full system is + not configured (linked). + + Two image formats are supported by the current interface, i.e., the + old IRAF format and the STScI GEIS format (FITS group format images). + IMIO automatically determines the image type at image open time. + A new environment variable IMTYPE determines the default type image + when a new image is created, but this may be overridden by simply + including the filename extension in the image name. + + A number of useful extensions were made to the semantics associated + with the use of the IMDIR environent variable. All IMIO datafiles + now have filename extensions by default. Existing code should require + no changes to use the new interface, only relinking. Existing images + can be read without reformatting. The new IMIO is documented more + fully elsewhere. (5/23) + +sys/imio/db/idb.h +sys/imio/db/idbfind.x + The IDB interface can now work with either a fixed record size user + area (80 char cards plus newline) or a variable length record size + as before. Keyword searches will be faster if fixed size records are + used. The interface automatically senses the record type at image + open time. When searching for a keyword, IDB will now reference the + FIRST keyword matched, rather than the last as before. (5/23) + +sys/fio/close.x + For the SPOOL_FILE case, replaced the call to frmbfs() by a call to + frtnfd(), to return the file descriptor allocated by open(). (5/24) + +pkg/images/iminfo/imheader.x + Modified to print group information if multigroup image, e.g., + [group/gcount] in section name. Also replaced file template expansion + by image template expansion to permit use of [] in image names. (5/24) + +sys/fio/fcopy.x + Added some minimum copy buffer size logic to avoid copy failure when + copying a file for which fstati(fd,F_BUFSIZE) returns zero for some + reason. (5/24) + +sys/fio/fntgfn.x + Made a couple of major extensions to the file template code to permit + the use of filename templates to generate the names of output files. + Also debugged the backslash escape logic in this code so that pattern + metacharacters (e.g., []) can be escaped in templates. + + The new features are: [1] new filename construction by string + concatenation, and [2] filename editing by string substitution. + Some examples follow. + + n_ // *.x Prepend `n_' to all .x files + nite1.* // .flat Append `.flat' to all nite1.* files + *.c // _X_ // *.h E.g., `builtin.c_X_bkg.h' (real useful, huh) + + *%%_1%.imh Append `_1' to the ROOT name of all .imh + files, e.g., `pix.imh' -> `pix_1.imh' + *.%x%gx Change extn from `.x' to `.gx' + + As before, more complex templates can be built up by forming a list + of patterns such as those shown, delimited by commas. The @listfile + notation may be used to read list files. The number of concatenatable + fields and edit operations is arbitrary and is currently set to 8 + concatenatable fields and 8 string substitutions per list element. + When concatenating successive elements from different lists, the length + of the output list is the length of the shortest input lists, hence the + input lists need not all be the same length. + + Added a new entry point FNTRFNB to the package, used to randomly read + the file list, unlike FNTGFNB which reads the list sequentially. (5/26) + +sys/fmtio/patmatch.x + Added an indexing feature to support the FNTGFN string substitution + capability discussed above. The character % may be embedded in + patterns to index the marked fields of the matched string. Note that + this is not trivial as the index depends upon the data being matched, + e.g., * may expand to any number of characters, and fields may be + anchored either at the left or the right (hence this feature had to + be built directly into the pattern matching code). Inclusion of the + % in patterns does not affect the match, i.e., the % is not matched + against anything. At match time, the pattern matching engine saves + the current character index in the encoded pattern buffer whenever + the INDEX (=%) instruction is encountered in the pattern. The index + values may be recalled after a successful match with the new PATINDEX + function. (5/26) + +pkg/xtools/imt.x - +sys/imio/imt.x + + Deleted the old image template package from XTOOLS and installed the + new template code in IMIO. The new code uses the revised filename + template and pattern matching code, supports the expanded image name + syntax, and supports metacharacter escapes that actually work. (5/27) + +sys/imio/imgclust.x +sys/imio/imgimage.x +sys/imio/imgsect.x + Added three new procedures to IMIO, to be used to parse image + specifications. These may be called to get the cluster name, the + image name (including the cluster index if any), or the image section. + These routines call IMPARSE which does the real work, but are more + convenient to use in applications programs. (5/27) + + Sample imspec: pix[3][*,-*] + + procedure returns + + imgcluster (imspec, cluster, maxch) pix + imgimage (imspec, image, maxch) pix[3] + imgsection (imspec, section, maxch) [*,-*] + +sys/fmtio/strdic.x + Now ignores whitespace at the beginning of the input keyword. (5/27) + +unix/os/zfiotx.c + It turns out that read-write mode is desirable for text files in the + IKI/STF kernel, so I made it legal in the UNIX kernel (it is also + legal in the VMS kernel). This mode was not legal under FOPEN in old + UNIX systems, but probably that is a thing of the past and even then + one could have gotten around it by modifying the UNIX FOPEN. Read + write access is now considered legal for text files; a seek or flush + is required when changing modes to synchronize the i/o system. + Currently RW mode is used only for file locking purposes and use of + this mode for i/o is not recommended. (5/27) + +pkg/cl/lexicon.c + The escape sequence handler in this code would map \c into c, + preventing the \ from being passed on to the code that needs it. + It now maps \c into c if c is one of the characters "&;=+-\"'\\#><()|", + i.e., the token delimiters recognized by the lexical analyzer, + otherwise \c is mapped to \c. (5/28) + +pkg/cl/history.c + The escape sequence handler in the history mechanism, which works over + the input text even before it gets to the lexical analyzer, would strip + the \ from \c when c was one of the characters ^$*. For example, \$ + would be converted to $, preventing the escape from reaching the lower + level software. Modified to recognize only \^, mapping it to ^, + since ^ is the only real history metacharacter. (5/28) + +sys/imio/immaky.x + Would name the new image when the old was intended, in the history + message. (5/28) + +sys/fio/fcopy.x + Modified to close the input file if the call to fmkcopy fails. (5/29) + +sys/fio/fmkcopy.x + Was issusing the open-failure message if the mkcopy failed. Added a + special error message for fmkcopy. (5/29) + +unix/hlib/gripes.cl +vms/hlib/gripes.cl + Now uses USERID instead of HOME to record who the gripe is from. (5/29) + +pkg/cl/grammar.h +pkg/cl/param.c + The .p_length parameter attribute is now treated properly. (5/29) + +pkg/cl/unop.c +pkg/cl/operand.h + Added a new intrinsic function STRLEN. (5/29) + +pkg/cl/param.c + In validparamget(), revised the `parameter is undefined' message to + read `the requested field of parameter .. is undefined', since I + thought the parameter itself could not be found when I saw the first + message. (5/29) + +pkg/system/lprint.x +pkg/system/page.x +pkg/system/type.x +pkg/system/help/houtput.x + In a number of calls to ttyputline(), the argument map_cc was being + passed as a boolean when an integer was expected. (5/29) + +pkg/cl/prcache.c +pkg/cl/builtin.c +pkg/cl/exec.c +pkg/cl/task.h + Added some new code to clpack(), restor(), the process cache, etc., + to automatically flush all processes connected since a package was + loaded, when the package exits. These idle processes consume + resources needlessly and it is best to free up the process slot + immediately, just as we already free dictionary space, environment + name slots, etc. (5/29) + +(Ongoing testing and development of the IKI/STF interface, not recorded here +(since this is a new interface. It is clear that bug fixes and further +(development will go on for some time - this is a complex interface). + +vms/boot/spp/xc.c +vms/boot/spp/xc.com +vms/boot/spp/mkpkg +vms/boot/spp/mkpkg.com + Installed revised version of VMS/XC from ST. (6/1) + +vms/hlib/irafemacs.com + Installed new version from ST. (6/1) + +vms/dev/hosts + Removed quotes around .exe file names in VMS node entries. (6/1) + +vms/hlib/irafuser.com + Changed a few of the job logicals to process ones to save job table + space; they don't all need to be job logicals. (6/1) + +pkg/system/doc/directory.hlp + Fixed typo, \fb -> \fB. (6/1) + +vms/as/README +vms/as/cstr.s + + Added assembler optimized versions of C string ops. (6/1) + +sys/libc/mkpkg + Revised to use as$cstr.s if available. (6/1) + +vms/boot/mkpkg/mkpkg.hlp +unix/boot/mkpkg/mkpkg.hlp + Fixed typo, \fmkpkg -> \fBmkpkg. (6/1) + +math/mathgen/mkpkg + Added a `$purge lib$' at the end of mathgen:. (6/1) + +vms/boot/bootlib/dcl.c + Installed revised version from ST. (6/1) + +vms/boot/bootlib/vfn2osfn.c +unix/boot/bootlib/vfn2osfn.c + Added check to return the null string if an error occurs mapping the + file; formerly it would return the most recent file successfully + mapped. (6/1) + +pkg/language/* + New manual pages added for logging, putlog task; others were modified + to reflect the recent changes in the CL. (6/1) + +vms/os/mkpkg +vms/os/zfiopl.c +vms/os/mcsub.c + + Installed the VMS NCAR/MCVAX version of zfiopl (the plotter interface) + from ST. (6/1) + +vms/os/rms.c + Assorted epN() changed to _epN(). (6/1) + +vms/os/str.c + Minor cosmetic changes. (6/1) + +vms/os/vms.h + Size parameters for zfiopl were changed. (6/1) + +vms/os/zxwhen.c + Modifications to permit traceback output to be spooled in a file for + debugging purposes. Default is no traceback. (6/1) + +vms/os/zmain.c + Installed the ST version; minor changes, e.g., correcting erroneous + comments. (6/1) + +vms/os/net/decnet.c + Minor fix in a comment. (6/1) + TODO: Compile both for decnet and tcp/ip; runtime switch depending + upon node. + +(System moved to VMS on 6/1. Merged all recent hlib,libc revisions into the +(VMS hlib,libc. System bootstrapped successfully on 6/2, started full sysgen +(on 6/2. + +vms/hlib/libc/xnames.h,.no_ +vms/hlib/libc/xnames.no_ +unix/hlib/libc/xnames.h +unix/hlib/libc/xnames.no_ + Added entry for ENVINIT, called by the bootlib routines on VMS. (6/2) + +sys/gio/gclose.x + Added a declaration for and(). (6/3) + +vms/hlib/lib/iraf.h [DISCUSSION] + There was a note in the ST notes file concerning the removal of the + IRAF,HOST,TMP pathnames from the C <iraf.h>, which gets installed in + sys$library. Of course it would be nice if the logical names always + got propagated to subprocesses and this file were never referenced, + in which case it would not matter what values were put in <iraf.h>. + At present, however, this is not the case and the file is getting + referenced at runtime to resolve pathnames. This is evident when + there are two versions of IRAF in the system, as the operation of + mkpkg is affected, of at least the operation of subprocesses called + by mkpkg. The ZGTENV routine only reads <iraf.h> if logical name + resolution fails. If we can figure out why it fails then we can do + away with the pathnames, but for the moment I have to leave them in + to ensure that IRAF programs know where the IRAF runtime files live. + + More information on this item - we just discovered that the quota + on the size of the job table can cause logical name propagation to + subprocesses to fail. Perhaps this is the source of the problems + we have experienced in the past. I still choose to leave the + pathnames in <iraf.h>, since it does little to impress the customer + with the reliability of our software when something fundamental like + mkpkg fails due to a quota problem on the job table. The fact is + that VMS does not reliably propagate logical names to subprocesses, + so we need a backup mechanism to ensure reliable operation. (6/3) + +vms/hlib/mkiraf.com + Added a couple queries to give the user more control over the operation + of MKIRAF. The first query asks if the uparm files are to be deleted. + The second asks for the name of the terminal; if nothing is entered + it picks a default and prints it on the terminal. Deleted the code + to delete the old login.cl file; this is not necessary on VMS since + it has file versions, and mkiraf.com is a very VMS dependent utility. + (6/3) + +sys/fio/fntgfn.x + Modified to perform string concatenation only on the root of the + filename, i.e., rather than after the filename extension. Hence, + the template `*.imh // _2' produces filenames `*_2.imh'. The + extension is defined to be the first . delimited field encountered + in any of the strings being concatenated. If there are multiple + such fields, the first such encountered is the extension of the + output filename. (6/4) + +vms/os/zopcpr.c + Changed the value of WSEXTENT for the subprocess from 1000 to 4096 + pages. This seems harmless since all it does is allow the system + to give the process that much working set if the process needs it + and the load on the system permits it. (6/4) + +dev/cacheg.dat +dev/cachet.dat + These files were updated to pick up any recent changes in the graphcap + and termcap entries for the cached devices. (6/4) + +sys/fio/ffault.x + Modified to return the number of chars available to be read in the + buffer after the iop, rather than in the entire buffer. This causes + ffault to return EOF when faulting at a seek offset beyond EOF on a + blocked binary file. (6/4) + +lib/evexpr.h +sys/fmtio/evexpr.y + An awkward feature of the way operand structure storage is mangaged + led to a "memory corrupted" bug in HEDIT. Reworked the EVEXPR code + to do the operand structure storage management in a set of procedures, + rather than by direct manipulation of the structure in the code. + EVEXPR no longer tries to reuse the same output operand structure, + it now allocates a new one on every call, leaving it up to the caller + to deallocate the operand structure returned. All allocation and + deallocation of string storage for string operands is now handled by + the operand structure procedures. (6/6) + +sys/fmtio/mkpkg +unix/hlib/irafuser.csh + Set up the FMTIO mkpkg to automatically run xyacc to remake evexpr.x + from evexpr.y if out out date, so that I don't have to remember what + command to enter (only on UNIX hosts). (6/6) + +images/imutil/hedit.x +images/iminfo/hselect.x + Modified as necessary for recent EVEXPR revisions. As far as I know, + these are the only programs currently using EVEXPR. This fixed the + HEDIT "memory corrupted" bug, which was due to having two operand + structures pointing to the same string buffer which was therefore + being deallocated twice. (6/6) + +sys/fio/fnullfile.x+ +sys/fio/protect.x +sys/fio/open.x +sys/fio/frename.x +sys/fio/falloc.x +sys/fio/delete.x +sys/imio/iki/ikimkfn.x + Added a boolean function fnullfile() to FIO, called to test if the + named file is the nullfile. Modified the listed procedures to use + the new primitive. The new procedure was added as a simple string + equality test for "dev$null" is not a reliable test, i.e., the file + name may have been mapped before being passed to the procedure which + tests for the nullfile. (6/7) + +sys/fio/fntgfn.x + The first version of the filename template package would consider + the first dot delimited field encountered to be the filename extension. + This no longer seems the best choice when dot-fields are used within + a filename for other purposes. FNT was changed so that only alpha + dot fields are considered to be extensions. Hence, "pix.01 // .44" -> + "pix.01.44", and "pix.01.imh // ".44" -> "pix.01.44.imh". (6/7) + +sys/imio/iki/ikirename.x +sys/imio/iki/ikicopy.x + If the old and new names are the same, now does nothing. Also fixed + some bugs in the logic for generating the root and extn fields of the + new image name. (6/7) + +sys/imio/iki/oif/oifrename.x + Added code to rename pixel file as well as header file. This has to + be done as the pixel file may reside in the same directory as the + header file, and the rename operation may move the header to a + different directory. (6/7) + +vms/boot/mkpkg/* + Merged in changes from ST. These were minor - XC called as a + subroutine, and a bug fix in one of the $if's. (6/7) + +vms/boot/mkpkg/tok.c + Changed SZ_LINE to SZ_PBBUF in getargs(). (6/7) + +unix/boot/mkpkg/tok.c +unix/boot/mkpkg/host.c + Merged in recent additions to vms/mkpkg so that these high level files + can be identical on the two systems. (6/7) + +vms/os/zopcpr.c + Installed a bug fix to increase the termination mailbox buffer quota + to hopefully fix the RWAST/RWMBX hung process problem. (6/7) + +vms/boot/bootlib/dcl.c + Modified to return OK only if the VMS status received from the oscmd + is 1. Return status is thus OK|ERR, which is what the calling code + (mkpkg) expects. (6/7) + +vms/boot/spp/xc.c + Now checks for the existence of files before trying to compile them. + (6/7) + +sys/tty/ttysubi.x + Was not handling the format "%+" properly. This would cause the + VT52 termcap entry to fail. (6/7) + +pkg/images/imarith/t_imarith.x + Checked if a change recently noted had gotten installed. Cleaned up + the code slightly but did not make any functional changes. (6/7) + +dev/hosts [VMS] + On our clustered VMS system, set up the satellite 750 vela as an + alias for the central host draco. This makes the networking software + work with the cluster. (6/7) + +pkg/cl/history.c + In putlog(), modified to prevent overflow of the output line buffer. + Also added a crude facility to break long output lines into multiple + lines with backslash escapes. Should be redone sometime to break lines + at whitespace, indent continuation, etc., using a VOS `putlongline' + procedure (there is already a getlongline). (6/7) + +sys/fio/osfnlock.x + Modified osfn_pkfname() to strip all backslash escapes from the final + output OS filename. Most of the code leaves the \ in to protect the + escaped character from the transformations to follow, hence the \ + often make it all the way down to this last routine. With this last + revision, \$, \[, etc. now work in the limited tests thus far run on + VMS/IRAF. (6/8) + +sys/fio/fntgfn.x + Now that \ can appear harmlessly in filenames during translation, + modified the template code to leave the \ in in more cases. This + makes it possible to use OS pathnames in templates in many cases, + provided the metacharacters are escaped. By the way, in the process + of doing the recent filename template modifications the template + code was modified to recognize / as well as $ as a directory + delimiter, hence templates such as `xx/*.h' are now legal. (6/8) + +sys/fio/fchdir.x + Fixed a comment, deleted a commented out block of code. (6/8) + +sys/fio/diropen.x + Added an errchk for syserrs(). Would continue on if could not open + directory, calling fstati on an unitialized file descriptor, leading + to a segmentation violation in the case which led to discovery of the + bug. (6/8) + +sys/fio/unread.x +sys/fio/ungetline.x +sys/fio/rename.x +sys/fio/fredir.x + Due to the above errchk bug, looked for the same problem in the other + FIO files and made minor changes to the files listed. (6/8) + +sys/fio/fdirname.x + On VMS, if fed the name of a subdirectory `subdir' would return + `subdir]'. Modified to return the concatenatable virtual path of + the given directory operand. (6/8) + +pkg/system/directory.x +pkg/system/directory.par [NEW DIRECTORY PROGRAM!] +pkg/system/isdir.x + Wrote a completely new directory lister program to replace the horrible + old thing we have been stuck with the last few years. The new program + only does the simple (most commonly used) things, but at least it works + correctly. Can now list subdirectories, or any directory by pathname, + also logical directories, directories on remote nodes, files by + template, etc. Prints "no files found" rather than echoing back the + unmatched filename. The syntax has been changed to be more terse, and + a number of new options have been added. Example: + + dir *.x l+ (long form listing) + + The old "options" parameter is gone. New parameters allow + specification of number of columns, whether or not to sort (not + needed on VMS probably), max chars of each filename to print (useful + when directory contains a few very long filenames), option to show + hidden files, etc. The new program is also more efficient and faster + than the old one. (6/8) + +sys/fio/vfnmap.x + In vfnunmap(), modified the code which deletes a trailing . (null + filename extension) to not do so if the previous character was also + a ., to avoid mapping `..' into `.'. (6/8) + +lib/protect.h + +sys/fio/protect.x + Reworked the fio.protect function so that it can be used to set, + remove, or query file protection, using the action codes defined + in the new file <protect.h>. Smartened up the code to know about + directory files; formerly, an attempt to query protection on a + subdirectory would cause a "nonexistent file" error due to the + .dir extension in VMS. (6/9) + +sys/imio/iki/oif/oifclose.x +sys/imio/iki/oif/oifdelete.x +pkg/system/directory.x +pkg/system/unprotect.x +pkg/system/protect.x + Modified to use <protect.h>. (6/9) + +sys/fmtio/patmatch.x + The metacharacters ^ and $, when found inside a pattern, were not + being encoded as regular characters properly. This would cause a + "cannot happen" message later when trying to apply the encoded + pattern. (6/9) + +sys/imio/iki/oifmkpfn.x + Fixed an interesting bug in the make-pixfile-filename routine. + The root image name was being tacked onto the OS directory name + where the pixfile would go. FIO does not translate filenames + that have an osdir prefix, so the result was that filenames were + being produced which were illegal on the host system (VMS). + This is kind of subtle - have to be on the watch for this sort + of bug in the future. (6/9) + +sys/imio/db/imget*.x + Added errchk declarations for the lower level imget routine. + Would cause a floating point exception when attempting to get the + value of a nonexistent parameter, e.g., when attempting to convert + an unitialized double to a real. (6/9) + +vms/hlib/install.com +vms/hlib/installr.com + Made entries for all iraf executables in the script, commenting out + all but those we wish to have actually installed (hope the install + utility accepts the comments). (6/10) + +dev/pix.hhh [VMS] + Installed the real pix.hhh header template file in the DEV directory + on vms/iraf. This is a funny format file peculiar to VMS, hence if + DEV is restored from a TAR tape the file type will be lost. The + template file is required to create new STF header files in the + correct format. I also read in the SCIDAT test image files and + tried out the STF kernel with them for the first time in VMS/IRAF + (the software was all developed on UNIX). Amazingly, it worked + the first time, at least as far as I can tell. (6/10) + +unix/boot/mkpkg/pkg.c + Modified to accept either "-f stdin" or "-f STDIN". (6/11) + +unix/boot/mkpkg/char.c + In getcmd(), $ would delimit the command even when used as a character + within an identifier. Modified to recognize $ as the command delimiter + only when it occurs as the first character in a new token. This fixes + the problem of $ characters in filenames in $SET macros. (6/11) + +unix/boot/mkpkg/pkg.c +unix/boot/mkpkg/tok.c + The $include directive was not working properly when called from within + a module. The module name was being passed into the context of the + include file, causing mkpkg to search the include file for the named + module and then abort with a module not found message. Modified the + push_context() function to set the module name to the null string + (disabling the module search) if the special module name "BOF" is + given. (6/11) + +sys/imio/iki/oif/oifdelete.x + Now checks if the pixel file exists before trying to delete it. + No warning message is issued if there is no pixel file, only if the + pixel file exists but cannot be deleted. An image opened new-image + or new-copy and then closed without writing any pixels will not have + a pixel file. (6/11) + +pkg/images/doc/imrename.hlp + +pkg/images/images.cl +pkg/images/images.hd +pkg/images/x_images.x +pkg/images/images.men +pkg/images/imutil/mkpkg +pkg/images/imutil/t_imrename.x + +pkg/images/imrename.par + + Added a new task IMRENAME to the IMAGES package. (6/11) + +vms/boot/mkpkg/pkg.c +vms/boot/mkpkg/tok.c + Installed the new versions of these files from unix/iraf with the + bug fixes. (6/11) + +unix/boot/bootlib/osgetenv.c +vms/boot/bootlib/osgetenv.c + One of our users edited the pathnames in the <iraf.h> file, rendering + the file unreadable by ZGTENV. Since VMS logical name passing was + also failing (probably due to insufficient quota on the job table) + OSGETENV would fail when MKPKG tried to start up, making it impossible + to relink the system. This showed up a bug in osgetenv - the zgtenv + failure would lead to a segmentation violation since osgetenv calls + itself recursively without checking for a NULL function value. + Rewrote osgetenv to read the values of IRAF and HOST into static + storage when first called, printing an error message if the zgtenv + call fails. (6/12) + +vms/hlib/mkiraf.com + Since IRAF can now accept \$, modified mkiraf to escape $ in device + names in the login.cl. (6/12) + +vms/hlib/irafuser.com + For testing purposes, modified the irafuser.com to define our local + IRAFDISK with the $ in the name. This $ CANNOT be escaped since the + logical name is also used directly at the VMS level. It does not + need to be escaped for the high level code since all high level + references resolve into references to IRAFDISK itself, not its value. + The $ in IRAFTMP, however, must be escaped since IRAF fetches the + value of this variable, but it is not used by the VMS level code. + This inconsistency is bound to cause problems but I do not have time + to resolve it just now. (6/12) + + +[Snapshot of system sent to ST] +---------------------------------- + + NOTE regarding $-in-osdir problem: ideally, one should just be able + to include $ in OS directory names defined in the environment without + having to worry about it. There appear to be several possible ways + to achieve this: + + [1] Make the user or system manager escape the $, e.g., in + irafuser.com, login.cl, and when SET defs are entered + interactively. This is the current solution. + + [2] Escape the $ when the entry is made in the environment table. + This is unacceptable because the env. is a general purpose + facility and is not used just for filenames. + + [3] During VFN translation when an ldir is substituted, call zfxdir + to check if the substitution string is an osdir. This is bad + because of the runtime expense in recursive logical directory + expansion. + + [4] Add a new function ENVGFN to the environment package, and use + this in filename translation instead of ENVGETS. The first + time an ldir is fetched, envgfn would check it the value is + an osdir and set a flag one way or the other. Thereafter, + the expense and semantics are the same as for envgets. + + Scheme 4 appears to be the best, since there is no efficiency penalty + and no dangerous modifications to the FIO code are required. Some + modifications to the ENV package are necessary; these should be done + when the RESET function is added. Since the environment facilities + are critical to the functioning of the system, there is not sufficient + time before the next release to test such ENV modifications, hence + these revisions will have to be postponed to the next version of the + system. + +unix/boot/mkpkg/pkg.c + In parse_modname(), added a break after the call to parse_fname, + and modified the call to parse_fname to receive the entire pathname. + (6/12) + +unix/boot/bootlib/oschdir.c + Modified to accept rooted directory references as well as subdirectory + references. (6/12) + +unix/boot/bootlib/osgetenv.c + The system directory SYS was somehow missing from the list of builtin + logical directory names. (6/12) + +unix/boot/mkpkg/pkg.c +unix/boot/mkpkg/main.c +unix/boot/mkpkg/mkpkg.h + Modified mkpkg slightly (mostly in push_context and pop_context) to + remove the restriction that mkpkg modules in the call tree have to + reside physically in subdirectories. Hence, calls such as the + following are now permitted: + + $call update@pkg$cl/mkpkg + + A call such as this will return to the caller's context in the usual + way. This feature has not been extensively tested since the system + mkpkg tree matches the directory tree, but basic tests were run + without any problems. (6/12) + +[Released VMS/IRAF V2.3 as the standard system on the NOAO 8600 on 6/13] +------------------------- + +vms/hlib/install.com +vms/hlib/installr.com + Changed the ".e" extension to ".exe" for VMS. (6/13) + +vms/hlib/zzsetenv.def +vms/hlib/sdas.cl + + Added a stubbed out sdas.cl to print "not yet available" rather than + abort because it cannot find the file. (6/13) + +vms/boot/bootlib/oschdir.c +vms/boot/bootlib/osgetenv.c + Installed the new versions from unix/iraf. (6/13) + +vms/boot/mkpkg/mkpkg.h +vms/boot/mkpkg/main.c +vms/boot/mkpkg/pkg.c + Installed the new versions from unix/iraf. (6/13) + +vms/boot/mkpkg/mkpkg + Set up a new mkpkg driver file to separate the relink and install + operations. Also includes a "mkpkg debug" entry. (6/13) + +sys/fio/vfntrans.x + In vfn_decode, added code to escape any $ in the OS filename being + decoded. This allows host filenames containing $ to be read from + a directory and passed back to the system successfully. (6/13) + +vms/iraf - XC compiler [NOTE] + Just logging a note on the VMS version of XC. This version of XC + preprocesses and then compiles each .x file in the argument list + and then moves on to the next file. The UNIX XC, on the other hand, + converts all the x. to .f and then calls the Fortran compiler to + compile all the .f. I don't know why the same thing is not done for + VMS; the VMS Fortran compiler is much faster when called to compile + several files at once. This would have a much more significant impact + on performance than the business of making XC callable as a subroutine. + (6/13) + +sys/imio/iki/ikiaccess.x +sys/imio/iki/ikidelete.x + Added code to check for the null image (dev$null). This was the + source of the "Cannot open image (dev$null)" bin in RFITS. (6/13) + +vms/os/zfinfo.c + When called to get info on a directory with a name ending in ], would + fail if there was a ".;N" file in the named directory. This was + because the sys$search would find the .; file which is the filename + you get if you sys$parse a [] directory name (this probably has + something to do with why these files get created in the first place). + Added code to skip the sys$search if sys$parse returns zero length + root and extn fields. (6/13) + +vms/os/zopdir.c + In ZGFDIR, modified to return the filename ".;" rather than the null + string, when a .;N file is encountered in a directory. A `dir all+' + is still required to actually see the file. (6/13) + +dev/cacheg.dat [UNIX] +dev/cachet.dat + Updated the cache files on unix. Evidently these were only updated on + VMS earlier. (6/13) + +vms/hlib/irafuser.com + The \$ in IRAFTMP caused a problem after all, since the damn thing is + used in a VMS pathname in mkiraf.com. As a temporary workaround, + added a logical IRAFTEMP which is just the same thing without the + escape. (6/13) + +sys/fio/fioclean.x + The "stddev = ..." statement was being executed before the FP==NULL + test, causing a segmentation violation on the SUN (but not on the vaxes + for some reason). Moved it to after the test, to just before it is + used. (6/14) + +sys/fio/fntgfn.x + In fntrfnb(), added a check for an index < 1 as well as > nfiles. + (6/14) + +sys/clio/clcmdw.x + + Added a synchronous version of CLCMD. (6/14) + +pkg/system/page.x +pkg/system/page.par +pkg/system/doc/page.hlp + Extensively rewrote the PAGE task to improve the interactive aspect of + the user interface. The program is now keystroke driven in raw mode + and the old cl boolean parameter "more" is gone. Type space bar or + "f" to go to the next page, return to display the next line, N or P + to go to the next or previous file in the list, ? for help, e to edit + the current file, q or ctrl/c to quit, etc. (6/14) + +pkg/system/help/houtput.x +pkg/system/help/nomore.x - +pkg/system/help.par + Added keystroke driven page control similar to that used in PAGE to + the HELP program. (6/15) + +pkg/cl/builtin.c + In the clclear() function, added a call to c_fseti to disable RAW + mode, just in case one of the new raw mode tasks bombs out leaving + the terminal in raw mode. (6/15) + +unix/hlib/newsfile +vms/hlib/newsfile + Made an entry noting the revisions to directory, page, and help. + (6/15) + +sys/osb/miireadi.x +sys/osb/miireads.x + Added an "nints = EOF" at the top; this variable was not getting + initialized when EOF was read on the input file, causing the function + to fail to return EOF. (6/17) + +sys/gio/sgikern/* + The SGI kernel has been extended to support raster devices. The kernel + will now generate either SGK metacode output or bitmaps. All that + the user need add to interface either type of device is a graphcap + entry and a host program to process the metacode file or bitmap to + the device. On some systems host facilities will already be provided + for writing bitmap files to raster devices (e.g., UNIX). This kernel + provides an attractive alternative to the NCAR/MCVAX kludge for + interfacing new devices. (6/17) + +pkg/plot/plot.cl +pkg/plot/sgikern.par + +pkg/plot/sgidecode.par + +pkg/plot/plot.hd +pkg/plot/plot.men +pkg/plot/doc/sgikern.hlp + +pkg/plot/doc/sgidecode.hlp + + Installed the new tasks SGIKERN and SGIDECODE in the plot package. + (6/17) + +sys/gio/mkpkg + Added an entry in the update: section for @sgikern. (6/17) + +sys/gio/sgikern/sgk.h +sys/gio/sgikern/sgk.x +pkg/plot/doc/sgikern.hlp + Changed the value of the opcode for the draw line instruction to 4, + so that the metacode opcodes will form a simple sequence 1-4. No need + for different classes of opcodes in this kernel. (6/18) + +sys/gio/sgikern/sgk.x + Added support for a new graphcap flag DB. If present in the graphcap + this causes the SGI kernel to print debugging messages at runtime. + (6/18) + +dev/graphcap + Finished up the entries for the NOAO/UNIX versatec devices and tested + the new kernel both as a task and as a pseudofile i/o subkernel. + The principle disadvantage of the SGI kernel is that it does the + rasterization on the fly rather than as a queued batch job, hence + operations like the cursor mode :.snap take longer, e.g., 10 seconds. + The actual rasterization process is actually about five times more + efficient than the NCAR/UNIX software, but to the user it will appear + somewhat slower when writing to a raster device. When writing to an + intelligent device (e.g., QMS or IMAGEN) the delay should not be + noticeable. (6/18) + +sys/gio/sgikern/sgk.x + Performed the obvious optimizations, i.e., + + [1] Substituted a call to ACLRI to clear the frame buffer for + the do-loop used formerly. This function is optimized in + assembler on the VAX using the movc3 instruction (should + have had sense to use this in the first place). + + [2] In the vector drawing primitive, added optimal code for the + special cases of vectorizing horizontal and vertical vectors, + e.g., for the plot box and ticks. + + This did not take long and the running time for my test plot decreased + from 7.5 to 5.1 cpu seconds. Currently, 2.8 seconds are spent clearing + the frame buffer and writing it out, compared to 2.1 seconds to do the + actual vectorization (the clear and write operations must process the + entire raster), so probably there is little further room for + improvement. (6/18) + +SGI device/host interface status [DISCUSSION] + An SGI VMS/Fortran translator for the calcomp has been written. + No host task had to be written for UNIX for the versatec since lpr + will take bitmaps directly; the dispose command merely disposes of the + bitmap to lpr. An SGI translator for the versatec on VMS is being + worked on - it looks like it will be only a couple pages of code, + one merely has to change the record structure of the bitmap file and + copy it to the device. A translator for the Imagen will be ready + soon; this should also be a simple little program, the main problem + being trying to make sense of the "impress" language. We are looking + for someone to write a QMS translator, since this appears to be a + popular device. + +pkg/language/doc/logging.hlp + + Added this mislaid manual page to the language package help directory. + (6/21) + +------------------------------------- +Revs notice printed in newsletter. +System work stopped for several weeks due to vacation. + +pkg/plot/* + Installed a new version of the PLOT package. Most of the changes were + cosmetic, e.g., changes to parameter names in old tasks to make them + conform to GIO nomenclature. There were also a few bug fixes. (7/14) + +sys/imio/imsetr.x + When called to set NBUFS (the number of input buffers) will now free + any existing buffers before changing the size of the buffer pool. + This makes it possible to change the number of input buffers after + doing i/o to an image; the FIXPIX program was doing this, causing an + apparent memory corruption problem leading to a panic abort. Note + that a bad pointer will result if an input routine is called before + the call to IMSET since the buffer will have been returned. The output + buffer, if any, is not affected by a change in NBUFS. (7/15) + +sys/imio/iki/oif/oifdelete.x +sys/imio/iki/oif/oifrename.x + Added a check for IM_PIXFILE(im)==EOS (no pixel file) so that these + operators will not attempt to rename or delete the pixel file if there + isn't one, i.e., the image was created but never written into. (7/15) + +pkg/cl/unop.c + In a couple of sscanf() calls, changed the %d and %f to %ld and %lf, + since the output variables are type long and double. (7/15) + +sys/gio/cursor/grcread.x +sys/gio/cursor/grcwrite.x +sys/gio/cursor/giotr.x + The :.write command would formerly write the binary WCS structure at + the beginning of the output metacode file, followed by the frame + buffer, and the :.read would expect the same structure when reading + a file. This was bad because the resultant metacode files were not + in the standard GKI metafile format, hence problems would result when + :.write files were input to other programs, or when standard metafiles + were read by :.read. Also, the whole business was no longer necessary + since the SETWCS instruction is now included in the metacode in the + frame buffer. Removed the write/read WCS code from grcread/grcwrite, + and added a case to GIOTR to reset the WCS when the SETWCS instruction + is encountered in the frame being redrawn. (7/15) + +sys/libc/isatty.c + This LIBC interface routine was the source of the bug causing <ctrl/z> + or bye to logout of the cl, rather than printing the "use `logout' to + log out of the CL" message - end of file must always cause logout if + the CL command input is not the terminal. The recent introduction of + the new VOS virtual terminal driver ZFIOTT was causing the isatty() + test to fail, since isatty() was using the driver associated with the + stream to determine if the stream was connected to a terminal. + Modified isatty() to recognize either ZFIOTY or ZFIOTT as a terminal + driver. (7/15) + + vms/hlib/libc/knames.h + vms/hlib/libc/knames.no_ +unix/hlib/libc/knames.h +unix/hlib/libc/knames.no_ + Added an entry for ZGETTT to these files. Put the define in knames + rather than xnames since it is a kernel driver, even though it resides + in the VOS rather than the kernel. (7/15) + +pkg/cl/binop.c + The STRIDX function would not work properly when there was more than + one character in the first argument string (had to invert the nested + loop). (7/15) + +lib/gio.h +sys/etc/oscmd.x +sys/gio/sgikern/sgk.x +sys/gio/cursor/prpsio.x +sys/gio/cursor/proscmd.x +sys/gio/cursor/gtrdiscon.x + The SGI kernel relys upon the use of the ZOSCMD facility to permit + use of a host or foreign task to dispose of the metacode or raster + file to a host plotter device. This was a problem on VMS since the + VMS version os ZOSCMD cannot be called from a subprocess; only the + root (CL) process can spawn a sub-DCL. + + To get around this problem OSCMD now determines whether the calling + process is a connected subprocess, and if so, sends the OS command to + the parent process via CLOUT, as a command line of the form "!oscmd". + The PRPSIO and GTR_DISCONNECT routines (which handle the pseudofile + XMIT/XFER requests) were modified to intercept OS escapes and process + them directly. Synchronization is achieved by returning the ZOSCMD + exit status via IPC to the OSCMD procedure in the subprocess. + If necessary the command will be passed all the way back up a + multilevel process tree to the root process before submission to the + host system. Note that these semantics are available only in the + VOS routine OSCMD; the kernel routine ZOSCMD will always try to send + a command directly to the host system. (7/16) + +sys/gio/glabax/glbencode.x + This routine trims insignficant trailing zeros and decimal points from + tick labels to produce a more concise label. This led to a bug in + exponential format, as a label such as 1.0E10 would be trimmed to + "1.0E1". (7/16) + +sys/imio/imt.x + The image template code will automatically escape any image notation + metacharacters present in the filename returned from the FNT package. + This was causing the @listfile type of image template to fail since + the image templace code thought the [...] sections in the image + listfile were part of the filename, and would escape them, causing + IMIO to interpret them as part of the filename rather than section, + and hence fail to find the image. This was fixed by turning off + all image template translation of the strings returned from a listfile, + hence any escapes needed must be explicitly included in the listfile + elements. (7/16) + +------------------------------------------- +VMS/IRAF system updated from lyra. (7/16) + +vms/os/net/zfioks.c + Changed the "Password:" prompt to "Password (user@node):" so that the + user will know which login and node the password is being requested + for when spawning a kernel server on a remote node. (7/17) + +pkg/system/page.x + Fixed a bug that would cause the last line in the file to be repeated + when a continuation keystroke is erroneously entered at the end of file. + Modified page to quit without a prompt when displaying a single file + small enough to fit all on one screen. Smartened up the ":line N" + syntax to permit omission of the space, and added a [+/-]N syntax for + relative offsets. Finally gave in to the temptation and added + backwards movement in files (but not in pipes yet), e.g., `u' (up) is + the opposite of `d' (down), `k' goes up a line while `j' goes down, + and so on. (7/17) + +pkg/system/lineoff.x + + Added a new package LNO (line offset package) in the SYSTEM directory + for keeping track of the file offsets of a subset of the lines in a + text file. This is used by the PAGE program but is a general purpose + package which can be copied and reused in other similar programs. + + lp = lno_open (maxlines) + lno_close (lp) + lno_save (lp, line, loffset, ltag) + OK|ERR = lno_fetch (lp, line, loffset, ltag) + + The package does not actually know anything about text files - its' + function is to associate a pair of long integer tag values (the file + offset and some other value) with each of a set of up to maxlines + integer keys (the line numbers). (7/17) + +pkg/cl/* + The current PAGE program cannot be used in the keystroke drive mode + when reading from a pipe, since the only way a subprocess can read + from the terminal in raw mode in by reading from an unredirected STDIN + in raw mode. After some study it appears that the best solution to + this problem is to add a new parameter type to the CL which reads from + the terminal in raw mode to satisfy a query. This avoids the use of + STDIN, eliminates the need to mess with raw mode in simple keystroke + driven programs, eliminates the need to worry about UCASEIN mode in + every keystroke driven program, makes keystroke driven interaction + possible in CL scripts, and so on. + + Accordingly, a new abstract datatype UKEY has been added to the CL. + UKEY is identical to GCUR except in the way the query is performed + and in the format of the returned value string. Also in analogy to + GCUR, a new list-structured parameter `ukey' has been added to the + CL global parameter set. Referencing the `cl.ukey' parameter (or any + parameter of type UKEY) in an expression will cause a raw mode + keyboard read, e.g., + + = ukey + or + while (fscan (cl.ukey, key, strval) != EOF) + ... + + A UKEY type parameter returns a "struct" value (i.e., a string) with + the format + + key [strval] + + where the `strval' is the null string unless the key is :, i.e., + a colon escape as in cursor mode. A new CLIO procedure CLGKEY will + be added to CLIO in analogy to CLGCUR for use in keystroke driven + loops in applications programs. (7/18) + +sys/clio/clgkey.x + + Added the CLGKEY function to CLIO. The function of CLGKEY is to + perform a raw mode read of a keystroke from the keyboard on the + user terminal. Single keystrokes are not echoed and the cursor is + not moved. The key ":" causes the cursor to move to the beginning + of the current line, the ": " prompt to be issued, and the `strval' + to be read. KEY is returned an integer value. EOF is returned if + end of file is detected on the input list, or if the key <ctrl/z> + or <ctrl/d> is typed. Interrupts are disabled during a raw mode + keystroke read, hence interrupt <ctrl/c> is returned as \003. + + nitems|EOF = clgkey (param, key, strval, maxch) + + CLGKEY is equivalent to CLGCUR except that the coordinate information + is omitted. CLGKEY flushes any buffered STDOUT or STDERR output before + reading from the terminal. The CL parameter may be local to the + calling task and of type "*ukey" to permit redirection of keyboard + input to a list file. (7/19) + +pkg/system/page.x + Modifed PAGE to use the new CLGKEY facilities so that the keystroke + driven interface is available in pipes as well as on disk files. + Added a pattern searching capability, accessed via the colon escape + ":/<pattern>" rather than with a simple / as one might expect + (because the clgkey interface only supports string arguments for + colon escapes). + + PAGE is now fairly complete except for backwards movements in pipes, + which would require buffering of the input data, and except for + upscrolling, which is currently not implemented (backwards motions + are implemented by repainting the full screen). The revisions to PAGE + have already consumed so much time that I suppose I should have just + scrapped the original program and written a new, fully featured one + from scratch. (7/19) + +pkg/system/help.x + Modifed to use CLGKEY. (7/19) + +pkg/system/doc/page.hlp + Updated this manual page. (7/19) + +unix/os/zfiotx.c + Changed the ioctl TIOCSETP to TIOCSETN to avoid discarding pending + terminal input when switching to "raw" mode (`cooked' in unix). + This makes type ahead possible in programs like PAGE and HELP which + are constantly switching between the raw and normal terminal modes. + It may also make cursor reads safer, since it might be possible for + a terminal to begin transmitting the cursor value sequence before + the program switches to raw mode, causing part of the return value + to be lost. (7/19) + +-------------- +Upgraded vms/iraf (7/19). + +sys/tty/ttyputl.x + The optimized code was breaking long lines and writing them out in + chunks the width of the terminal screen, but was not adding a newline + at the end of each output line, hence text was being lost on terminals + not set to wraparound in hardware. (7/20) + +pkg/system/count.x + The line count would be off when counting a file containing lines + longer than SZ_LINE. Modified to bump the line counter only when + newline is seen. In general, however, IRAF cannot be expected to + work correctly on text files containing very long lines. (7/20) + +local/tasks/README + The old README file in this directory was copied from PROTO and was + useless. Replaced it by a new README file explaining what the LOCAL + package is, and outlining the steps to be taken to install a new + task. (7/20) + +unix/boot/mkpkg/char.c + vms/boot/mkpkg/char.c + In k_fgets(), return NULL rather than `ch' if a read error occurs. + (7/20) + +pkg/cl/modes.c + In proc_params(), if called for a procedure with a null argument + list, will now initialize to hidden the mode of all parameters for + which the mode was not explicitly set when declared. Formerly, + such parameters would end up with a default mode of auto. (7/20) + +sys/imio/iki/stf/stfrgpb.x +sys/imio/iki/stf/stfwgpb.x + Added support for a boolean/logical data type. (7/20) + +sys/imio/iki/stf/stfopen.x + For the moment, modified to always reblock the old header in a + NEW_COPY operation, else an VMS/RMS file write error may occur + when updating the header. This should probably be done at update + time instead. (7/20) + +pkg/system/page.x + Fixed PAGE to run noninteractively if its STDOUT has been redirected. + Unfortunately, this redirection test fails when PAGE is called from + another task such as NEWS, and the output of the calling task has + been redirected. No easy solution to this at present. (7/20) + +sys/imio/iki/stf/stfwgpb.x + Was not blank filling character variables when updating the group + parameter block. (7/20) + +-------------------- +vms/iraf updated (7/20) + +vms/boot/spp/xc.c + In mktemp(), added a `static' to the declaration for the char buffer + in which the output filename goes. (7/21) + +doc/suniraf.hlp +doc/unixiraf.hlp +doc/vmsiraf.hlp [MISSING?] + Moved the installation guides to the doc directory so that they won't + get lost (but where is the VMS one?). (7/21) + +doc/ports/* + Moved all the old notes files from the LOCAL directory in VMS/IRAF to + the doc/ports archive. Deleted some other old files in LOCAL. (7/21) + +sys/fio/ungetline.x + Fixed typo: `fiodes (fd)' -> `fiodes[fd]'. (7/21) + +sys/fio/fcanpb.x + +sys/fio/* + Added a new FIO internal procedure fcanpb(fd), called to cancel out + any pushback and return the file i/o pointers to their normal state. + Added calls to this procedure in various places throughout FIO. + The new routine is a no-op if there is no pushback, so this should be + relatively risk free. This was found by the new PAGE program, which + is one of the few programs to use the FIO pushback facilities. (7/21) + +vms/os/qio.c + This bug showed up in MTIO, which was not seeing the end-of-tape mark, + causing the tape to run off the end of the reel, or worse, the + program to appear to work while actually writing nothing at the end + of the tape. The AST routine was returning a count of zero when + end-of-tape was encountered, causing _zflush() to return a zero in + the same circumstance, when this was really an error condition. + Modified so that _zflush() returns XERR when an end-of-file status + is returned in a write operation. (7/21) + +sys/mtio/mtrdlock.x + If the lock file does not exist or cannot be read from some reason, + a new lock file will now be written and the position will be returned + as undefined, causing MTOPEN to rewind the drive. The new MTIO will + do i/o to the drive even if the lock file does not exist, but would + abort at close time since the lock file must exist to be updated. + Creating a new lock file at open time should permit i/o even if the + drive has not been allocated within IRAF. (7/21) + +sys/imio/imaccess.x + This new function (currently unused) was calling iki_access() with + the wrong number of arguments. (7/22) + +imfit/fit1d.x +imfit/t_lineclean.x +imutil/imdelete.x + The above tasks were all incorrectly using the FIO access() function + to test for the existence of images. Replaced by a call to the + imaccess() function. (7/22) + +MTIO - discussion + A number of changes were made to fix some problems/complaints received + in past months regarding MTIO. There was a bug where the user would + allocate/mount the tape in VMS, get into IRAF, run a program which + would successfully do i/o to the drive (this would work) and then + when it was all done, an "cannot close file" error would occur. + This would happen because the kernel level MTIO routine called to + udpate the tape position needs the old lock file to update the tape + position in the lock file. The fact that the drive was allocated + outside of IRAF is not really a problem because the new allocation + software in the CL knows if a device is allocated/mounted, regardless + of whether this was done in IRAF or the host system. + + MTIO was modified in such a way that it should no longer matter + whether the user allocates the drive in IRAF or before running the CL + (I'm not sure what happens if an OS escape is used; did not test that). + If there is no lock file because the drive was allocated/mounted at + the host level, MTIO will simply write a new lock file which records + the tape position as undefined. The following changes were made to + implement this scheme. + +mtio/mtalloc.x + Changed to record the initial tape position as file 0 (position + undefined) rather than file 1, since we do not really know how + the tape is positioned at allocate time. Setting the tape position + to 0 in the lock file is harmless; the effect is to require MTOPEN + to rewind the tape to get to a known position at open time. This + change will be visible to the user who runs `devstatus' after + allocating the tape drive. (7/22) + +mtio/mtrewind.x +mtio/mtstatus.x + If called when there is no "lock" (save-position) file, will now + write one indicating that the position is undefined, rather than + abort. In the case of mtrewind, it is then immediately updated + to indicate that the tape is at file 1. (7/22) + +unix/hlib/login.cl + vms/hlib/login.cl + After the call to TYPE to type the message of the day, added a call + to DELETE to delete any old "mt?.lok" files in UPARM. This is + essential, as otherwise MTIO might use an old lock file for a new + tape and erroneously position to the wrong file. The delete operation + is performed at login time rather than logout time because [1] doing + it at logout is not safe, as the CL or host may crash and never go + through logout, [2] login takes so long the extra time will not be + noticed, [3] the call to DELETE occurs immediately after the call to + TYPE to type the message of the day and immediately after connecting + the subprocess, hence everything will be paged in and it should go + fast. It would have been nicer to do this in hlib$clpackage.cl, + but that is not possible since UPARM is not yet defined when that + file is read. (7/22) + +sys/mtio/mtdevall.x + +sys/mtio/mtopen.x +sys/mtio/mtrewind.x + Added a new internal routine mt_devallocated() to MTIO. This is called + by MTOPEN and MTREWIND to ensure that the drive has been physically + allocated before proceeding further. This is necessary because the + presence of the "lock" file can no longer be used to test if the device + has been allocated. If the device has not been allocated a message + is printed to that effect, rather than proceeding further and printing + a misleading i/o error etc. message. (7/22) + +unix/hlib/stripper +unix/hlib/stripall + vms/hlib/stripper + vms/hlib/stripall + Will no longer delete the .hd files or the .key. A number of other + protected extensions were dropped and replaced by the single + extension .dat. (7/22) + +---------------------------------------------------- +Snapshot of new V2.3 system sent to CTIO. + +sys/etc/xalloc.x + In xdeallocate(), the MTIO deallocate command was being called after + the device was deallocated at the host level. This was backwards + because the MTIO routine may rewind the device, hence must be called + before the device is physically deallocated (dismounted). (7/23) + +sys/mtio/mtrdlock.x + When called with no lock file present, mt_allocate() was being called + with the drive name minus the "mt" prefix, e.g., device "b" rather + than "mtb". (7/23) + +---------------------------------------------------- +Snapshot of new V2.3 system sent to STScI. + +sys/imio/imsetr.x + The variable `ibdes' is used to test if an input buffer descriptor + had been allocated before NBUFS was changed, as a new one must be + allocated in that case after the change. The bug was that the old + one was being freed by an `mfree (ibdes, ...)' which zeros `ibdes', + causing the test to fail. Replaced the ibdes by IM_IBDES in the + call to mfree. This bug would cause the FIXPIX task to fail, + since this wierd task likes to change the value of NBUFS after + doing i/o on the image (technically illegal but I am trying to + make it more user proof). (7/23) + +sys/imio/iki/iki.h +sys/imio/iki/ikiparse.x +sys/imio/iki/stf/*.*;* + It turns out that the ST folks have reserved an entire large class + of filename extensions for their images, rather than a finite set. + The legal header extensions are ".??h" and the matching pixel file + extensions are the same with a "d" as the last character. Modified + the iki_parse() routine and various routines in the STF package to + implement this scheme. Since IKI checks for an OIF (.imh) image type + first, it will recognize OIF images even though the OIF extension + is a legal STF extension. + + Only the changes to the iki_parse() routine affect OIF format images, + and the iki_parse() routine has been tested as a unit, hence bugs may + have been introduced into the STF interface, but the changes do not + require retesting of the IRAF image operators. (7/23-24) + +dev/devices [VMS/IRAF] + Added an entry for `mtg' (MSC0:), the TS11 recently added to the DRACO + cluster. (7/24) + +dev/graphcap +vms/gdev/sgidev/* +vms/hlib/irafuser.com + Several system revisions were made over the past week or so to install + the SGI translators. I have waited until now to document this so that + testing of the new interface could be completed. + + An SGI translator is a host system program which disposes of an SGI + metacode or bitmap raster file to a specific device. The programs + may be as host specific as desired; for VMS, we have written a couple + template programs for the versatec (bitmap interface) and the calcomp + (metacode interface) which are VMS Fortran with all the extensions + and even a little assembler in places if necessary. Similar programs + can be written at user sites with little or no knowledge of IRAF + internals. The translator programs are only a few pages of Fortran, + most of which can be reused for new devices. + + The source for these programs resides in vms$gdev/sgidev. + The mkpkg.com and mkpkg in this directory compile and link the + translators and install them in hlib$. A graphcap entry must be + added to dev$graphcap and a VMS foreign task declaration must be + added to irafuser.com, then the device is fully interfaced and + available for use with all IRAF graphics software. (7/24) + +vms/os/zopcpr.c + In prinit(), called to get the quotas of the parent process when the + first subprocess is spawned, the value of the parent's WSEXTENT was + being assigned into the wrong slot of the `quotas' array, causing + this feature to fail. Fixed this bug and added additional entries + for WSDEFAULT and WSQUOTA, so that the subprocess will inherit + all these nondeductable quotas from the parent. The system default + working set of 200 is hopeless for IRAF processes; on a busy system, + large memory batch jobs, for example, will quickly gobble up the + pages of an idle x_system.e, causing little system tasks (like DIR) + to take a minute or so to run each time. It seems better to let + the user/system manager control the working set parameters for the + entire process tree (on a per-user basis depending upon what they + need) rather than only for the CL process. (7/24) + +vms/os/zoscmd.c + Added a badly needed multiple-command capability to the VMS ZOSCMD + kernel procedure. The command separator character chosen was the + DCL comment character !, which is not likely to be useful in the + context of OS escapes. For example, + + cl> !show time !show users + + would issue the two commands "show time " and "show users" in that + order. This may eliminate the need to use a DCL .com file in some + applications, possibly simplifying and condensing table driven + interfaces, and making things somewhat more efficient. The feature + should be useful in foreign task definitions, the editor interfaces, + the graphcap entries for SGI devices, and other places where OS + commands are used. The revision was made to the VMS kernel procedure + rather than to etc$oscmd.x for reasons of efficiency, to avoid the + blank line output to the terminal after every command by the VMS + ZOSCMD, and to permit selection of a metacharacter suitable for the + host system. (7/24) + +vms/hlib/irafuser.com +vms/hlib/mkiraf.com + Deleted the temporary workaround logical IRAFTEMP, replacing it by + IMDIRDISK and TEMPDISK. There are now three system logicals which + must be set up in IRAFUSER.COM, e.g.: + + IRAFDISK USR$0: ! Disk IRAF resides on + TEMPDISK SCR$2: ! Runtime (scratch) files go here + IMDIRDISK SCR$1: ! User image subdirectories go here + + IRAFTMP is now defined in a site independent way in terms of these + logicals, like IRAFHOST, IRAFHLIB, and so on: + + IRAFTMP TEMPDISK:[IRAF] ! scratch files + + This should help to eliminate any confusion about when and when not + to escape $ characters, since this is no longer necessary for anything + in IRAFUSER.COM. The MKIRAF script will automatically escape the $ + when generating the user login.cl file. MKIRAF now creates the default + user image storage (IMDIR) directory as IMDIRDISK:[USER] rather than as + IMDIRDISK:[IRAF.USER], since this appears to be closer to the way + things are usually done in VMS. + + TEMPDISK and IMDIRDISK are no longer the same as IRAF uses tmp$ (on + TEMPDISK) for runtime scratch files that can be deleted on a daily + basis if desired, whereas the image pixel files may need to be kept + around longer. Files created by IRAF in tmp$ are normally deleted + immediately by IRAF unless a program is aborted, in which case the + host system is expected to clean things up. That is why a public + device is preferred for TEMPDISK. + + Sites which do not permit public directories or devices will have to + make IRAFTMP point to a user directory. This can be done in many ways, + e.g., by defining IRAFTMP in the user's LOGIN.COM file. IMDIR is only + used by the runtime IRAF system, hence need only be defined in the + user's login.cl, where it can be set to any of a number of values, + e.g., `uparm$', `home$imdir/', `HDR$', or `HDR$pixels/'. If the user + has their own private IRAFTMP it will probably not be the same as the + value in the installed version of <iraf.h>, but this may not be a + problem as the latter may not be accessed except by the IRAF login + when doing heavy duty operations with the HSI, e.g., sysgens. (7/24) + +vms/os/zopcpr.c [discussion] + The system paging activity seems much improved following yesterday's + change to ZOPCPR (to pass the parent's working set parameters on to + the child). Formerly, the child would inherit the system default + WSQUOTA of 200 and a WSEXTENT of 1024 (due to the bug). A busy + process would fault up to 1024 and then rapidly drop back to 200, + causing virtually the entire process to have to be paged back in + every time a task was run in the process. Since other VMS processes + would often have much larger quotas, the performance of the IRAF + processes would seem poor by comparison. Things should be improved + somewhat now, with the next major improvement to come if and when + shareable libraries are introduced. (7/25) + +dev/graphcap + In the entry for the 4014, added a | and a comment after the `tek4014' + on the header line so that the device name `tek4014' would be usable + externally. (7/25) + +vms/os/net/zfioks.c + Replaced the recently introduced (mistakenly) call to sprintf() by an + equivalent series of calls to strcpy() and strcat(), to avoid use of + the DEC C runtime library. (7/25) + +pkg/cl/modes.c +pkg/cl/gquery.c + Deleted the `%newmode' feature, used to change the mode of a parameter + in response to a query. This feature has not proven useful (it is + inadvisable to change the mode of a parameter in any case) and has + lately become a problem since % is now used as the string edit + metacharacter in image templates. Responding to a query for an image + template with a perfectly legal template, e.g., `%im%im_%...' would + cause an obscure `bad mode spec' error message. If anyone ever wants + to change the mode of a parameter they can still do so by an explicit + assignment into the .p_mode field of the parameter. (7/25) + +----------------------------------------------- +Partial updates sent to CTIO, STScI (7/28 am) + +doc/vmsiraf.hlp + + Found a copy of the VMS installation guide in a scratch directory on + another computer. Dusted it off and put it in the DOC library. (7/28) + +sys/gio/sgikern/sgk.x +sys/gio/sgikern/sgk.com +sys/gio/sgikern/sgipl.x +sys/gio/sgikern/ltype.dat + +sys/gio/sgikern/mkpkg + Added software generation of polyline linetypes (dotted, dashed, etc.) + to the SGI kernel. Added a new SGI graphcap parameter NB, specifying + the number of bits per byte for packing the output raster data. Also + added more documentation in the file describing the meaning of all the + parameters used to control the generation of bitmaps. (7/28) + +sys/etc/xalloc.x + The ZDVOWN kernel primitive was being passed the device list string + from the dev$devices file when the host device name was intended. + This would work fine on VMS since the device list on that system + contains only one device name, but on UNIX there are many /dev entries + for each physical drive hence it would fail. (7/29) + +sys/osb/bitfields.c +sys/osb/zzdebug.x + The portable versions of BITPAK and BITUPK in bitfields.c were overly + general, allowing bitfields to be read and written in a bit array of + arbitrary length. Since the assembler versions are currently limited + to operations upon integer scalars, the bit-array generality was not + needed and I replaced bitfields.c by a simpler and more efficient + version which only deals with a single longword at a time. Brought + the zzdebug.x up to date as well. (7/30) + +pkg/xtools/icfit/doc +noao/onedspec/identify/icfit/doc +noao/onedspec/identify/uparmbkgXXX + Deleted these garbage files. The DOC files were regular binary files + that were once UNIX directory files. (7/30) + +sys/imio/imsetr.x + Yet another imset(IM_NBUFS,.. bug. Must reset IM_NGET(im) to zero + when the number of buffers is changed. (7/30) + +iraf/local/notes.st [UNIX] +iraf/local/suninstall.hlp [UNIX] + Deleted these files as there are already copies in doc$. (7/30) + +iraf/local/login.com [VMS] +vms/hlib/mkpkg.inc [VMS] + Sometime back, I removed the LNK$LIBRARY reference to the C runtime + library from the IRAF LOGIN.COM file. This was done in case C + library references creep into the kernel, to cause the linker to + flag such references. One result is that the CALCOMP kernel no + longer links under mkpkg on VMS. This is easy to get around on + those rare occasions when this host system dependent executable + needs to be relinked, until I have time to figure out the best way + to reference sys$library:libcrtl.olb directly via mkpkg. For now, + turned off the USE_CALCOMP switch in the mkpkg.inc so that remote + sites do not get the error messages when relinking the system. (7/30) + +------------------------------------------------------------------------ +Cut and mailed distribution tapes for the six VMS/IRAF V2.3 early test sites. +Make UNIX source only archive tape and started SUN/IRAF upgrade. (7/31) + +vms/hlib/irafuser.com + Changed the definition of the IRAFTMP logical from TEMPDISK:[IRAF] to + TEMPDISK:[IRAFTMP], and changed the name of the corresponding public + directory on our system as well. This was purely a name change to + avoid having multiple [IRAF] directories on different disks used for + different purposes. Of course, the system installer can change the + name to anything they want if desired, since knowledge of the actual + directory is confined to IRAFUSER.COM (and <iraf.h>). (7/31) + +unix/boot/rtar/doc +unix/boot/rtar/doc/std.ms + Deleted this garbage test directory and the file therein. (7/31) + +pkg/dataio/fits/spool +noao/onedspec/doc/tmp +noao/onedspec/log.plotx +noao/twodspec/multispec/spool +noao/twodspec/multispec/make.log +noao/twodspec/longslit/doc/tmp +noao/twodspec/longslit/transform/spool +noao/twodspec/longslit/spool +noao/mtlocal/camera/header + Deleted the above junk files. (8/4) + +unix/boot/rmfiles/rmfiles.c +unix/boot/rmfiles/rmfiles.hlp + Made two modifications to the RMFILES utility: [1] the root of the + directory to be pruned need no longer be an immediate subdirectory, + and [2] the program file can contain lines of the form + + -file filename + + to delete individual files that do not fit into any particular class. + This will make it possible to build stripper files that prune even + more off the tree. (8/4) + +unix/hlib/stripper +unix/hlib/stripall +vms/hlib/stripper +vms/hlib/stripall + Examined a list of the files left after running the original stripper + scripts, and added entries (using the new RMFILES capabilities) to + strip more files here and there. In particular, did away with a lot + more stuff in the HOST directories, and all the manual pages dealing + with subroutines rather than CL callable tasks. (8/4) + +sys/gio/cursor/gtrgflush.x + I may have found the old STDGRAPH/STDPLOT/STDGRAPH segmentation + violation bug, which we have not been able to reproduce in recent + times. It showed up on the sun. The GTR code caches the descriptor + for a stream, saving the FD of stream in a variable TR_STREAM to + indicate what is in the cache. The low level GFLUSH routine would + initialize a stream, but was not setting TR_STREAM to null if the + stream being initialized was the one in the cache. Calling GTR_INIT + to cache the descriptor for another stream would result in the code + trying to move the old descriptor from the cache to the dynamically + allocated descriptor, which was deallocated by the GFLUSH, zeroing + the pointer and causing the segmentation violation. (8/5) + +sys/gio/cursor/prpsio.x + If an unsolicited command is received from a graphics subkernel (when + an XMIT or XFER is expected) the command is printed on STDERR with + a call to putline, followed by the `unsolicited command input' error + message. The bug was that the FIO buffer is passed to PUTLINE as + is, and at this level in the system the string is not EOS delimited, + causing garbage to be printed after the data string. Modified to add + the EOS before calling putline. This bug would only be seen when a + subkernel aborts for some reason. (8/5) + +sys/gio/cursor/prpsio.x + The same problem (no EOS) as above, except this time in the string + passed to OSCMD. (8/5) + +sys/gio/nsppkern/gktopenws.x +sys/gio/sgikern/sgiopenws.x + When opening the first device after process spawn, the STARTFRAME + field of the GKT/SGI descriptor was being accessed before the descriptor + was allocated and initialized, leading to a zero-pointer bug. (8/5) + +sys/gio/sgikern/sgk.x +sys/gio/sgikern/sgk.com + Added two new bitmap formatting options to the SGI kernel, BS and WS, + for swapping every 2 (BS) or 4 (WS) bytes of the bitmap at output + time. (8/6) + +dev/graphcap + Added a `dver' entry, and the `vtri' entry from VMS/IRAF. Tuned up + the versatec plotting window parameters to provide a unity aspect + ratio. (8/6) + +sys/gio/sgikern/sgk.x +sys/gio/sgikern/sgk.com + Added yet another new SGI bitmap formatting option, NF. The NF (new + file) option, if set, causes the individual frames of a multiframe + set to be written into separate files named $F.[1-MF], i.e., $F.1, + $F.2, ..., $F.MF. This option is also supported for metacode output. + It makes it possible to use LPR to dispose of the raster output + directly without a translator (on UNIX). This is very efficient + since no reformatting is required and the LPR job is queued. (8/6) + + Also discovered and fixed a bug in the SGK kernel. If XO was nonzero, + the x scale factor was not being computed correctly, causing the plot + to be truncated at the right. (8/6) + +sys/etc/main.x + The iraf main would not accept redirection on STDPLOT. Added it to a + case statement. (8/7) + +pkg/cl/builtin.c +pkg/cl/edcap.c +pkg/cl/eparam.h +pkg/cl/globals.c + Fixed a bug in the editor interface that would cause it to fail when + attempting to edit more than one file at a time. Also, string storage + in the command list was limited to 10 and 12 characters with no overflow + checking when the file is read in; added #defines to parameterize + these (rather small) numbers, and modified the initialization code to + truncate long strings rather than run off the end of the array. + + Also changed the way EDITOR_CMD (the command to be sent to the host + system to invoke the editor) is implemented internally. The string + is no longer stored in the command list, since the string storage there + is limited to only 10 characters, and EDITOR_CMD is not an editor + command anyway. The actual command string can now contain whitespace + provided it is quoted, can be up to SZ_LINE chars long, and most + importantly, may contain a %s somewhere in the string to be replaced + by the filelist. If no %s is present then " %s" is added at the + end, making it all compatible with the old edcap files. + + In combination with the multiple commands per os-escape feature + recently added, this makes it possible for the command sequence sent + to the host system to consist of several commands with the file list + embedded in there somewhere. This makes it possible to eliminate + a .COM and two wasteful process spawns from the VI editor interface + on VMS. (8/7) + +vms/hlib/irafuser.com +vms/hlib/irafvi.com +dev/vi.ed [VMS] + Redid the VI interface on VMS to eliminate the use of the IRAFVI.COM + script and the calls to STTY therein. VI is now called with the + following OS escape: + + "set term/pasthru/passall!vi %s!set term/nopasthru/nopassall" + + where the %s is replaced by the list of files to be edited. This + speeds things up considerably and eliminates the dependence on the + STTY task. (8/7) + +vms/boot/rmfiles.c +vms/boot/rmfiles.hlp + Merged the new version of the RMFILES bootstrap utility into the + VMS HSI. The link failed the first time since the C runtime library + was not defined as a LNK$LIBRARY: need to add defines for this to the + bootstrap .COM files, or maybe make the user type it in. (8/7) + +---------------------------------------------------- +Updated VMS/IRAF (8/7) + +vms/hlib/irafuser.com +vms/hlib/sgiqueue.com + +dev/graphcap + Modified the VMS SGI interface to submit the translation jobs to the + `fast' queue. This eliminated the SGI definitions in IRAFUSER.COM. + The single command script SGIQUEUE is used for all SGI devices. (8/8) + +sys/fmtio/patmatch.x + The match at end of line metacharacter $ will now work at EOS as well + as at newline. (8/8) + +sys/gio/stdgraph/stgrcur.x + Fixed the bug that was probably causing the cursor read failure where + successive cursor reads return garbage keys. The delimiter pattern + (CR for the tektronix) was being matched anywhere in the returned + cursor value string. If a character were lost somehow, e.g., due to + insufficient delay after sending a command to a slow terminal, then + the cursor read routine would read 6 characters, find the CR in there + somewhere, and accept the garbage cursor value. The left over + characters would cause the next cursor read to fail, and so on. + Modified the cursor read routine to match the delimiter (CD) only + at the END of the accumulated cursor value string, if the number of + chars in a cursor value (CN) is positive. More precisely, if CN > 0, + the cursor value will be accepted if len(valstr) >= CN and the pattern + CD//$ matches valstr. (8/8) + + Fixed a second bug: the routine is designed to restart the cursor if + a cursor value still has not been matched after 15 characters have + been accumulated. Instead, it was decoding the 15 character garbage + value and returning (usually harmless, as the program would beep and + the cursor would be restarted). Modified to discard the input and + restart the cursor read without returning. (8/8) + + (USER NOTE - if you lose the cursor for some reason, type any key ) + (except [RETURN] until the cursor comes back. ) + +dev/graphcap +dev/cacheg.dat (rebuilt) + The above bug was discovered due to the lack of soft delays (null + padding) in the graphcap entry for the VT640. The symptom was that + the cursor value was coming back minus the first character. What + was happening was that graphics was being deactivated, a couple + of lines of text output were written, and then graphics was immediately + reactivated and a cursor read issued. It was taking the terminal a + while to draw all the text, and this was still going on when the + graphics add-on board was reactivated, causing the cursor read to + terminate early. The above fix to the read cursor routine ensures + recovery, but to avoid the cursor read failure I added a 150 msec delay + to the GE (reactivate workstation or graphics enable) graphcap entry + for the VT640 and several other terminals. (8/8) + +dev/README +dev/vdmfile.gki +dev/vdmplot.gki + Replaced dev$mc by a file dev$vdm.gki containing a slightly different + selection of plots. Rewrote the README file for the directory as it + was completely out of date - it now contains some useful information + about the files in the directory. (8/8) + +sys/gio/cursor/gtrinit.x + If a very large plot is processed, the cursor mode frame buffer will + overflow and data will be discarded. An environment variable is + available to the user to increase the maximum size of the frame + buffer should this be a problem. Changed the name from the rather + verbose and non specific `maxlenframebuf' to `cmbuflen' (goes with + `cminit'). Name change should be no problem as I don't think anyone + knew about this parameter. (8/8) + +pkg/cl/history.c + At long last, brought the argument substitution feature of the history + mechanism up to date, i.e., modified it to work on whitespace rather + than comma delimited argument lists. Also added the ability to specify + arguments by number (^[0-9]). The possible argument symbols and their + meanings are therefore now: + + ^^ first argument of last command + ^$ last argument of last command + ^* all arguments of last command + ^0 taskname of last command + ^N argument N of last command (1 <= N <= 9) + + This conventional CSH-like history mechanism, simple as it is, is often + much more effective than the history editor and it is a pity that more + people do not know how to use it. (8/9) + +vms/boot/*/mkpkg.com +vms/boot/spp/*/mkpkg.com + Have not tried a full bootstrap of the VMS/HSI for a while, so thought + I had better make sure it still works before V2.3 goes out. Made the + following changes first: + + [1] To all MKPKG.COM and MKPKG files which call the linker, added a + DEFINE/NOLOG LNK$LIBRARY entry to cause the linker to search the + C runtime library, required by the current version of the VMS/HSI + (but not by the runtime system). This was necessary because the + original define statement was recently removed from the IRAF + LOGIN.COM file to prevent references to the C rtl from accidentally + creeping into the runtime system. + + [2] In all HSI linker calls, added the switch /NOSYSSHR. This + causes the system object modules referenced by the HSI + executables to be copied into the new executable, rather than + using an indirect reference to the system shareable library. + The effect is to make each executable about 40 Kb larger, + but rumour has it that these executables will run on older + versions of VMS without relinking. If true, this makes the + entire IRAF system runnable on old versions of VMS, since the + runtime system can be relinked with MKPKG provided the HSI is + runnable. + + [3] In the RPP mkpkg.com, fixed a bug in the IF (...) THEN GOTO LINK + which would cause the library to always be rebuilt. + + Ran MKPKG on boot/bootlib and boot/mkpkg to make the .MLB files, + purged all and lib/compress-ed the new libraries in HLIB. (8/9) + +------------------------------------------ +VMS/IRAF updated from lyra. +Sysgen performed (also served to test rebuilt HSI). (8/9) + +doc/*.doc + Deleted; can be regenerated from the .hlp. (8/11) + +doc/cluser.tex +doc/cluser/* + Installed the manuscript for the V2.3 CL User's Guide. Deleted the + entire cluser subdirectory, only the TEX file is needed. (8/11) + +osb/mkpkg +lib/libvops.a +osb/miiread[csi].x - +osb/miiwrite[csi].x - +etc/mkpkg +etc/miiread[csi].x + +etc/miiwrite[csi].x + + The miiread and miiwrite procedures use FIO and hence cannot be in the + VOPS library (OSB), else a linker unresolved reference will occur. + In any case, they are portable and do not need to be in OSB, so moved + them to ETC. The potentially machine dependent MII primitives remain + in OSB. (8/11) + +sys/gio/stdgraph/t_showcap.x + Fixed an argument type mismatch: `call pargc (char (intval))' does + not coerce the argument to type char due to limitations in the + preprocessor. The solution was to eliminate the call to CHAR, and + replace the PARGC by a PARGI. (8/12) + +pkg/system/directory.x + Fixed a portability bug, discovered on AOS/IRAF. The dir_putci() + routine, which has a boolean argument, was being called with an integer + argument in one case. Changed the argument type to integer. (8/12) + +dev/graphcap +vms/gdev/mkpkg +vms/gdev/mkpkg.com +vms/gdev/sgi2vptx.f + +vms/hlib/sgiqueue.com + Installed the SGI translator for the Printronix on VMS. (8/12) + +vms/gdev/iism75/m75put.x +vms/gdev/iism75/zrdm75.x + The M70 has an 10 bit DAC driving the guns, whereas the M75 only has + an 8 bit DAC. Modified these routines to scale the 10 bit M70 OFM + values to and from 8 bits for the M75. (8/12) + +pkg/images/tv/display/iisofm.x + Modified to set the full 1024 elements of the lookup table; formerly + it was setting only the first 256 elements. (8/12) + +unix/os/mkpkg.csh + In checking out IMFORT in the new system, the link failed due to the + undefined external irafmn_. This turned out to be be due to the + presence of zmain.o in libos.a. The zmain.o module contains a C + main(), which was being selected in preference to the Fortran main(). + This occurred because zmain.c got installed in the library during + the bootstrap by mkpkg.csh. Modified the OS mkpkg.csh bootstrap so + that this module is not inserted into the library. (8/13) + +sys/imio/iki/oif/oifdelete.x + If the image header file is not protected, the delete would fail + because the file protection could not be removed. Modified to proceed + to delete the file if it is not protected. (8/13) + +sys/imio/imfort/* + Brought IMFORT up to date for the new IMIO. New images are created + with the extension .imh. The extension is optional when referencing + an image. Pixel files are always created in the same directory as + the header file (for IMFORT), so the HDR$ form of the pixfile name + is stored in the image headers. The IMFORT created images are not + file protected, unlike the IMIO images, since IMFORT users may be + working outside of the IRAF environment. (8/13) + +dev/pix.imh + Changed the pixel file name in the image header from dev$pix.imh to + HDR$pix.imh, since that is how the new system does this sort of thing + (and I could not read the image from IMFORT). (8/13) + +local/noao [VMS/IRAF] +local/noao/gmr27 + Created a new directory [LOCAL.NOAO] on VMS/IRAF and put the Grinnell + display interface code there. (8/13) + +----------------- +Updated VMS/IRAF; rebooted VMS/IRAF; sysgen. (8/13) + +pkg/images/iminfo/imheader.x + The size of the user area was being computed incorrectly, leading to + STROPEN being called on a string of length zero. Since stropen + returns EOF at EOS, I merely changed it to call stropen with the + length of the string as ARB. This was the source of the problems + with IMFORT generated images on VMS/IRAF, as these images have an + empty user area (which is completely legal). (8/14) + +sys/fio/stropen.x + Changed the argument string dimension from `maxch' to ARB to avoid + a possible runtime array dimension error in VMS/IRAF. (8/14) + +============================================================================ +Version 2.3 of IRAF frozen; began distribution (8/14 pm). +============================================================================ + +unix/boot/mkpkg/tok.c + In getcmd(), there was still one case where $ was being recognized as + a special character even though it occurred inside a token. This was + causing the OSB mkpkg file to fail in a call to $generic. The argument + list for $generic had a `\$$' embedded in a filename which was supposed + to map to `\$'. This is correct for mkpkg, because with very few + exceptions, the only special metacharacter in mkpkg is $, and it is + escaped by doubling (as in make). Backslash is just another character + in mkpkg scripts. (8/15) + +pkg/plot/doc/sgikern.hlp + [TODO] |