Begin IRAF port to Solaris 2.3 
Wed May 25 15:38:55 MST 1994
----------------------------------------

bin.ssun			+
bin.ssun/IB.SSOL.SUN		+
bin.sf2c			+
bin.sf2c/IB.SSOL.F2C		+
noao/bin.ssun			+
noao/bin.ssun/IB.SSOL.SUN	+
noao/bin.sf2c			+
noao/bin.sf2c/IB.SSOL.F2C	+
	Set up the Solaris platform (SSOL = Sun Solaris) and the two planned
	Solaris architectures, SUN (Sun unbundled compilers) and F2C (F2C
	and FSF compilers).  (5/25)

unix/hlib/irafuser.csh
	1. Replaced the `mach` reference by something that will work on both
	SunOS and Solaris, using uname.
	2. Modified to define either SUNOS or SOLARIS in HSI_CF, so that
	kernel code can support both systems.  (5/25)

unix/os/getproc.c
	Added a Solaris version of uid_executing().  This reads /proc and
	scans the process files to see if any belong to the given uid.  (5/25)

unix/hlib/irafuser.csh
unix/os/mkpkg.sh
	1. alloc.e would no longer link without linking against the library
	-ldl.  Note that -ldl can only be linked dynamic (no -Bstatic).
	2. Added a new definition HSI_LFLAGS to irafuser.csh and modified the
	mkpkg.sh in OS to use this to define the link flags for alloc.e.
	This will probably have to be done for other HSI executables as well.
	(5/25)

unix/os/prwait.c
	Solaris defines the exit_status argument to wait() differently and
	the code had to be modified to allow for this.  (5/27)

unix/os/zfioks.c
	The select facility on Solaris uses fd_set, FD_SET, etc. and it
	was necessary to add #ifdef SOLARIS code to reflect this.  (5/27)
	

Fri Jun 24 14:23:32 MST 1994
----------------------------------------
Resume port (elsewhere for the past month)

unix/hlib/libc/kernel.h
	Added a definition PFV; PFI is now a pointer to function returning
	int, and PFV is a pointer to a function returning void.  Also added
	a new definition SIGFUNC, which is whatever type signal() refers to
	on the local system.  (6/24)

unix/os/zfioks.c
	1. Changed a number of PFI instances to SIGFUNC.
	2. Changed the second two arguments to ks_onsig to type int*.  These
	are not used and the actual type is different on Solaris than other
	systems.  Probably the args should just be omitted but it may be
	more portable to define a couple of dummy args.
	3. The second argument to bind() is type (struct sockaddr *) in
	Solaris, was (caddr_t) on other systems.  (6/24)

unix/os/zfiotx.c
	1. Deleted the import_fset, which apparently isn't used and which
	contains a #define which conflicts with a Solaris one.
	2. Changed a bunch of PFI instances to SIGFUNC.  Added some
	(SIGFUNC) declarations to the signal handler arguments to signal().
	3. Replaced the two dummy arguments (same as item 2 above) in three
	instances of event handlers with dummy args declared (int *).  (6/24)

unix/os/zopdir.c
	Modified to use Solaris version of opendir/readdir.  (6/24)

unix/os/zoscmd.c
	Modified to use SIGFUNC instead of PFI, and to declare generic
	dummy arguments for an event handler.  (6/24)

unix/os/zshlib.c
	Fixed a syntax error on the last line, an extra ';' following a
	stubbed out function declaration.  (6/24)

unix/os/zwmsec.c
	1. Modified to use signal instead of sigvec; the latter is BSD specifc.
	2. sigpause() takes a signal number instead of a signal mask.  Omitted
	sigblock, which is no longer needed since we aren't using a mask, and
	which doesn't exist on Solaris.
	Possibly this routine should be completely rewritten on Solaris,
	there may be better facilities for small timed delays.  (6/24)

unix/os/zxwhen.c
	1. For Solaris we must include <sys/siginfo.h> and <sys/ucontext.h>.
	2. fcancel macro modified to use the constant BUFSIZ.
	3. The table of hardware exceptions was modified to omit all
	codes other than those for SIGFPE; the other codes (at least on
	Solaris) alias with the FPE codes, and aren't used anywhere in
	zxwhen anyway.  Added Solaris SIGFPE codes.
	4. Modified calling sequence of exception handler ex_handler to
	the form Solaris requires.  Added a statement to get the hardware
	exception code out of the siginfo argument.
	5. Replaced a number of PFI's by SIGFUNC's.  (6/25)

unix/os/zfiomt.c
	Modified signal handling code to use type SIGFUNC.  (6/25)

unix/os/zzstrt.c
	Made a few changes to get this code to compile, although the shared
	library support isn't expected to work at this point.  (6/25)

unix/hlib/irafuser.csh
unix/os/zzstrt.c
	Added a new define SHLIB, used to conditionally compile zzstrt for
	shared library support.  (6/25)

unix/boot/bootlib/bootlib.h
	This file had a #ifdef UNIX in it, but this define is not defined
	anywhere.  Modified to #ifdef VMS but assume unix otherwise.  (6/25)

unix/hlib/irafuser.csh
	Modified to define RANLIB as "echo ranlib" for Solaris.  (6/25)

unix/hlib/kernel.h
	Solaris doesn't have bcopy/bzero, so added a couple of #defines to
	kernel.h to map these functions onto the equivalent Solaris versions
	memmove/memset.  (6/25)

unix/os/zoscmd.c
unix/os/zopdpr.c
unix/os/zfiopr.c
	Replaced all calls to getdtablesize() by corresponding calls to
	getrlimit().  (6/25)

unix/os/zfgcwd.c
	Replaced getwd() by getcwd().  (6/24)

unix/boot/mkpkg/scanlib.c
	It was necessary to add an (int) cast to  (int)fread(...) > 0
	to avoid a warning message from the compiler, because fread has an
	odd type on Solaris.  (6/25)

unix/hlib/irafuser.csh
	Added -lsocket -lnsl (the Solaris socket emulation library) to the
	list of HSI host libraries used to link the HSI utilities.  (6/25)

unix/boot/spp/xc.c
	Made some minor changes to xc for Solaris - not clear yet what all
	will be needed.  Most of it looks like it will work.  Added a #ifdef
	conditional for the Solaris F77 libraries, taking the SunSoft
	compiler as the builtin default.  Modified signal handling to use
	SIGFUNC to be more portable.  (6/25)

unix/boot/rmfiles/rmfiles.c
	Added an "extern char *vfn2osfn()" declaration.  (6/25)

unix/boot/spp/rpp/ratlibc/initst.c
	Added a #ifdef conditional to access the stdio streams on Solaris.
	(6/25)

unix/gdev/sgidev/sgi2uapl.c
unix/gdev/sgidev/sgi2uhpgl.c
unix/gdev/sgidev/sgi2ueps.c
	1. These files contained a number of cases where the file descriptor
	"out" was declared int where (FILE *) was intended.
	2. Replaced an instance of gethostname() in sgi2uapl.c by a call
	to sysinfo().  (6/25)


Sat Jun 25 23:26:24 MST 1994
----------------------------------------
Completed first bootstrap.  Try initial sysgen of core system.

unix/boot/spp/xc.c
	Modified xc to automatically do a "-t" when linking.  This disables
	linker warnings about different size commons.  (6/26)

unix/os/irafpath.c
	Added a case for Solaris/sparc.  (6/26)

mpkg
as.ssol		+
bin.ssol	+
unix/setarch.sh
unix/hlib/irafuser.csh
	For Solaris/sparc the HSI AS and BIN are as.ssol and bin.ssol.
	Hopefully it will be possible to use a single set of directories
	for both the ssun and sf2c binary architectures.  (6/26)

unix/hlib/install
	Added some code to set the platform architecture automatically for
	either SunOS or Solaris.  On a Solaris system the suntools stuff is
	skipped.  (6/26)

unix/boot/bootlib/envinit.c
	Fixed a bug/typo in this code: "printf (stderr, ...)".  (6/26)

unix/boot/bootlib/vfn2osfn.c
	Several more cases of a null statement ";" at the end of this file.
	This happens in dummy function constructs like "foo(){};".  (6/26)

unix/hlib/mkpkg.inc
	Added cases for IRAFARCH=ssun and sf2c.  (6/26)

unix/hlib/mkpkg.sf.SSUN		+
unix/hlib/mkpkg.sf.SF2C		+
	Added starter special file lists for the two Solaris architectures.
	(6/26)

unix/as.ssol/zsvjmp.s
	This assembler source appears to assemble ok, but I had to remove the
	leading underscore from _zsvjmp_ as the SunSoft Fortran compiler
	doesn't use leading underscores.  (6/26)


Sun Jun 26 20:18:48 MST 1994
----------------------------------------
Completed first core system sysgen: system starts up and runs, but a number
of bugs are evident.

unix/hlib/irafuser.csh
	HSI_XF now includes flags such as -/DSYSV -/DSOLARIS etc., so that
	mkpkg can be used to update HSI libraries such as OS.  This is only
	a temporary solution, ideally XC should accept HSI_CF.  (6/27)

sys/fio/fdirname.x
	There was an actual bug in this file that showed up during testing
	of the new port.  zfxdir (kfxdir) was being used incorrectly to
	test for the existence of host directory pathnames.  (6/27)

unix/os/zopdir.c
	The above testing also revealed a bug in this file.  This was
	preventing commands such as "dir /" from working, due to a bug in
	the code which strips trailing slashes from directory names.  (6/27)

unix/os/zfiotx.c
	1. Raw mode terminal i/o was not working properly on Solaris; output
	data was being lost when raw mode was entered, even though the ioctl
	used would (presumably) wait for the output to drain before changing
	the terminal mode.  It is not clear what the connection might be,
	but this was fixed by deleting the iflag=0, i.e., not resetting the
	iflags, when entering raw mode.  Evidently clearing one of the
	default input flags was the source of this problem, even though
	ICANON was disabled.  Since ICANON is disabled we shouldn't need
	to change the iflags anyway, so it should be safe to omit this.
	In fact, it is probably safer to preserve all default terminal flags
	by default and change only those affecting raw i/o, but at present
	I will leave it fully setting the oflags and lflags, since this
	is working.
	2. Solaris also provides the POSIX termios interface which is the
	recommended interface.  This appears to be a simple front end to
	the termio ioctl interface.  I decided to avoid this for the moment
	since the SYSV termio interface appears to be widely available.
	(6/27)


Sun Jul  3 23:08:27 MST 1994
----------------------------------------
Resume work on Solaris port.

unix/as.ssol/enbint.s		+
unix/os/zzstrt.c
unix/os/zxwhen.c
	After a bit more research got IEEE floating point exception handling
	working under Solaris.  The new routine enbint.s is used to enable the
	exceptions.  sigaction turned out to block SIGFPE when the handler
	was called and it proved necessary to add the SA_NODEFER flag to 
	prevent this.  (7/03)

unix/os/zfioks.c
unix/os/zfiond.c
	Fixed a couple bugs that were keeping networking from working.
	"RSH" was not being defined correctly in zfioks, and it was necessary
	to add FD_ZERO calls to zero the select fd arrays before calling
	FD_SET.  (7/04)

sys/imfort/tasks/
unix/hlib/fc.csh
	Tested FC on the imfort tasks.  This worked without incident following
	minor changes to the fc.csh script.  The only thing unusual is that
	an IEEE retrospective is printed when the task exits, indicating
	that the IEEE divzero,overflow,invalid exceptions were enabled.
	This is annoying but is not exactly a bug (ieee_retrospective is always
	called by Fortran programs, it just doesn't usually generate any
	output), so for the moment I don't see the need to change anything
	at present.  (7/04)

Build of ssun binaries for TABLES proceeded without incident.  (7/04)

unix/boot/bootlib/ossymlink.c
	This file used #ifdef BSDUNIX incorrectly, preventing the #ifdef-ed
	code from compiling on UNIX systems for which BSDUNIX was not set.
	Changed the statement to #ifndef VMS.  (7/05)

unix/shlib/zzzend.c
	Deleted ";" at the end (empty declaration).  (7/10)

unix/shlib/medit.c
	Added a #define for bcopy, which doesn't exist in Solaris.  (7/10)

unix/shlib/mkpkg
	Modified to avoid use of ranlib on Solaris platforms.  (7/10)

unix/boot/spp/mkxc.sh
	Modified to do the compile and link in separate steps.  (7/14)

unix/gdev/sgidev/sgi2uapl.c
	Modified to put "%!PS" in the Postscript file header.  (7/19)

dev/tapecap
	Added Solaris support.  (7/20)

unix/boot/spp/xc.c
	Added -lintl to the list of builtin host libraries.  (7/23)

unix/os/zfiotx.c
	Rather than leaving iflags unmodified when raw mode is entered,
	now clears several input processing flags, in particular CR is not
	mapped to NL.  (7/23)

unix/hlib/zzsetenv.def
	Changed the default printer device to "lw".  (7/25)

unix/shlib/Slib.c
unix/shlib/edsym.c
unix/shlib/elf.c		+
unix/shlib/medit.c
unix/shlib/mkpkg
unix/shlib/mkpkg.sh
unix/shlib/mkshlib.csh.ssol	+
unix/shlib/zzzend.c
unix/os/zzstrt.c
	There were many changes here, especially to mkshlib.csh, edsym.c,
	Slib,c, and zzend.c, to support IRAF shared libraries under Solaris.
	Most of the changes were made earlier but I did not keep detailed
	notes during development.  The changes are not fully backwards
	compatible, so it will be necessary to configure separate shlib
	directories for SunOS and Solaris.  (7/25)

unix/hlib/mkpkg.inc
	A wfits problem was traced to a bug in the Fortran optimizer using
	SunSoft Fortran 2.0.1.  Compiling -O2 avoids the problem.  (7/29)

unix/hlib/install
	The install script was modified earlier to just exit when it came
	to the gterm/imtool config stuff.  Modified this to continue on
	with this, but to do only the X11 related configuration.  This
	consists of making the /dev/imt fifos, installing the imtoolrc,
	and checking that termcap and graphcap are sufficiently up to date
	to contain xgterm and imtool entries.  (7/30)

unix/hlib/libc/kernel.h
unix/os/zfiotx.c
unix/os/zzstrt.c
	Replaced the terminal driver by a version which maintains a unique
	descriptor for every hardware terminal device, regardless of the
	file descriptor used to access the terminal.  (8/02)

dev/graphcap
	The xgterm graphcap entry now recognizes either CR or LF as the
	trailer code for a cursor read.  (8/02)

unix/boot/mkpkg/mkpkg
	Changed "cc" to "$(CC)".  (8/17)

unix/boot/spp/xc.c
	XC now supports multiple packages in PKGENV.  (8/18)

-----------------------------------------------------
Solaris 2.10.3 release
*** apus upgraded to Solaris 2.4, SunSoft V3.0 compilers ***

unix/os/zfiotx.c
	Installed the tty_reset bugfix.  (9/17)

unix/os/getproc.c
	This routine was omitting the "/proc" from pathnames of process
	files in the /proc directory, causing uid_executing to always
	return zero.  (10/05)

-----------------------------------------------------
Merged in V2.10.4 revisions from tucana.  (4/22 1995)

unix/hlib/mkpkg.sf.SSUN
	Added explicit $xc build commands to the special file list entries for
	C files.  The default compile flags from mkpkg.inc would cause a
	warning when applied to C files, as CC doesn't understand -O2.  (4/26)

unix/shlib/mkshlib.ssol-sc2
unix/shlib/mkshlib.ssol-sc3	+
	Renamed mkshlib.csh.ssol to mkshlib.ssol-sc2.  This is the version for
	the version 2x SunSoft compilers.  Started a variant mkshlib.ssol-sc3
	for the version 3x compilers.  In this made various minor changes:
	1) File header size increased from 0x74 to 0x78.
	2) Compiler libraries and objects are now in /opt/SUNWspro/SC*/lib
	instead of /opt/SUNWspro/SC*.
	3) There is a new library -lsunmath which follows -lF77.  (4/26)

unix/boot/spp/xc.c
	Modified to add the -lsunmath library if used with the Version 3 or
	greater SunSoft compilers.  XC attempt to automatically distinguish
	Version 2 and Version 3 and do the right thing.  (4/26)

unix/hlib/mkpkg.inc
	Removed the -O2 switch from the standard compile flags in mkpkg.inc.
	This was put in for an older version of the compilers and probably
	isn't needed any longer.  This also avoids the problem of passing -O2
	to the C compiler when compiling C code.  (4/26)

-----------------------------------------------------
Completed a full bootstrap and sysgen of V2.10.4 Solaris/IRAF using
Solaris 2.4 and the SunSoft V3 compilers.  (4/26)

unix/hlib/zzsetenv.def
	Updated "version" to 2.10.4EXPORT.  (5/18)

unix/hlib/spy.cl
	Rewrote spy.cl to work on both BSD and SYSV systems (SunOS and
	Solaris in the case of Solaris/IRAF).  (5/19)

unix/os/zgtime.c
	Modified for Solaris systems to use CLK_TCK (which does a runtime call
	to sysconf) to get the clock frequency, instead of the compile time
	kernel constant CLKFREQ.  On our development system CLK_TCK is 100,
	rather than 60 which is the value compiled into the kernel.  (5/19)

unix/os/gmttolst.c
	In the internal routine get_timezone added a call to "tzset()" 
	before accessing the external variable timezone.  This is necessary
	to set the value of timezone in the first call after process
	startup.  (5/19)

unix/os/zoscmd.c
	This fix was made to resolve a problem where EMACS or VI would
	hang up when run from the CL and ctrl/g or ctrl/c was typed.
	Evidently this was due to the code in zoscmd.c which pretends to
	ignore interrupts while the child is executing, but in reality was
	catching interrupts and setting a flag then continuing to wait for
	the child process to terminate.  Evidently on SysV systems, or at
	least on Solaris, the interrupt handler was causing the process
	to read from the terminal, and wait() was not being reentered
	folowing an interrupt causing both the parent and the child to read
	from the terminal at the same time.  The fix was to modify zoscmd.c
	so that on SYSV systems the parent does not post any interrupt
	handler.  (5/19)

unix/os/zzstrt.c
unix/shlib/mkpkg
bin.ssun/S10_5.4.e		+
	It appears that the system library libsocket.a in Solaris is
	incompatible between Solaris 2.3 and 2.4.  Networking is broken if
	an IRAF executable linked under Solaris 2.3 is run on 2.4 and vice
	versa.  Our workaround, at least for the moment, is to have different
	versions of the IRAF shared image for different versions of solaris.
	During startup an IRAF process will query the OS release number,
	e.g. 5.3 (Solaris 2.3) or 5.4 (Solaris 2.4) and map the corresponding
	shared image.  A mkpkg in unix/shlib updates the version of the
	shared image corresponding to the OS release on which IRAF is
	currently running.   The new shared image file names are S10_5.3.e
	for Solaris 2.3 and S10_5.4.e for Solaris 2.4.  If the release
	dependent version is not found the system will automatically fall
	back to S10.e.  (5/22)

-----------------------------------------------------
Did another sysgen-relink and rebuilt the distribution files.  (5/22)

unix/boot/spp/xc.c
	Modified to compile only C and assembler files in the catch-all
	compile phase.  Prevents compile attempts where the file list
	contains only object files.  This was a problem under Solaris 2.5.
	(10/19)

unix/shlib/mkshlib.ssol-sc3
	Modified to suport the SC4.0 compilers under Solaris 2.5.  There was
	a bug in the script if both SC3.0.1 and SC4.0 compilers were present
	in the same system.  The link line was slightly different for the
	new compiler.  (10/19)

unix/shlib/mkshlib.ssol-sc3		-
unix/shlib/mkshlib.ssol-sc34		+
	1. Changed the name of this file to sc34 since it supports both the SC3
	and SC4 compilers.  Updated the comments accordingly.  
	2. I tried changing the page alignment for the shared image from
	0x2000 (8K) to 0x4000 (16K).  The intent was to support Sparc clones
	with 16K pages.  It worked (at least on a Sun sparc), but would
	produce a bogus version match please relink error message on startup
	for old executables, due to relocation of the transfer vector.  I had
	to set things back to 0x2000 as we can't afford to break old
	executables for a patch.  (3/25 1996)

unix/os/zmain.c
	Added a #ifdef SYSV conditional to allow for different calling 
	sequences for setpgrp() on SYSV and BSD systems.  (4/24)

unix/os/zfinfo.c
	Commented out the setpwent/getpwent, they are not needed on Solaris
	and appear to cause an associated Solaris bug to crop up.  (8/16)

-------------------------------------------
V2.10.4 patch 2 released.  (5/22 1996)


TODO
    o	Tue Nov 21 12:50:24 MST 1995
	XC assumes /opt/SUNWspro in isv3().

    o	Thu Feb  1 11:54:17 MST 1996
	Skip reports networking failure - AA05224

    o	Mon Mar 11 12:24:55 MST 1996
	Modify zawset.c to use actual physical memory as determined by sysconf.

    o	Mon Mar 11 12:25:10 MST 1996
    	Change SHLIB address from 0a000000 to 03c000000 to allow 1 Gb process
	data segment.  This requires that all applications be relinked so
	cannot be done until V2.11.
