diff options
Diffstat (limited to 'unix/hlib')
144 files changed, 25443 insertions, 0 deletions
diff --git a/unix/hlib/README b/unix/hlib/README new file mode 100644 index 00000000..3d95447b --- /dev/null +++ b/unix/hlib/README @@ -0,0 +1,13 @@ +HLIB -- Host system library. All global library files which are machine at all + host system dependent are placed in this library, rather than in lib$. + +cllogout.cl log out of the CL (not normally host dependent) +clpackage.cl contains host system dependent device names +config.h very host dependent +iraf.h potentially host dependent +irafuser.csh sets up UNIX/CSH environment for IRAF +libc the C runtime library header files (mostly portable) +login.cl default login.cl file (contains device names) +mach.h machine constants (machine dependent) +mkiraf.csh set up UNIX/IRAF files for a user +zzsetenv.def environment startup file (contains device names) diff --git a/unix/hlib/allocate.cl b/unix/hlib/allocate.cl new file mode 100644 index 00000000..1c8a6308 --- /dev/null +++ b/unix/hlib/allocate.cl @@ -0,0 +1,11 @@ +# ALLOCATE -- Allocate a device. The real work is done by the hidden CL +# _allocate task, but we provide a script interface as well to provide +# scope for machine dependent additions. + +procedure allocate (device) + +string device { prompt = "device to be allocated" } + +begin + _allocate (device) +end diff --git a/unix/hlib/buglog.csh b/unix/hlib/buglog.csh new file mode 100755 index 00000000..832c9ad0 --- /dev/null +++ b/unix/hlib/buglog.csh @@ -0,0 +1,130 @@ +#! /bin/csh +# BUGLOG -- Format, edit, and log a new bug to the system bugs file. +# +# Usage: +# +# buglog [module] log a new bug to the system bugsfile +# buglog -e edit the system bugfile (with locking) +# +# The system bugsfile is locked for exclusive access while a bug is being +# logged, or while the bugsfile is being edited. Logging can be aborted either +# by typing <ctrl/c>, or by editing the editor with ":q!" (i.e., by exiting +# the editor without modifying the temporary file being edited). Bugs are +# formatted and edited in a small temporary file in /tmp and are added at the +# end of the bugsfile only if the task is not aborted and the edit modifies +# the input bug template. To go back and edit a previously logged bug use +# "buglog -e". +# +# Record Format: +# +# NUMBER: record number, decimal, sequential. +# MODULE: package.task or library.procedure or 'unknown' +# SYSTEM: versions of iraf in which bug was present +# DATE: date bug logged, unix format date string +# FROM: user login name +# BUG: description of the bug +# STATUS: 'fixed in V2.X', 'unresolved', etc. +# +# New records are added to the tail of the bugfile. Left justify field labels, +# indent text to the first tab stop, one blank line between bug entries. +# ---------------------------------------------------------------------------- + +unalias rm set find echo sleep tail sed cmp echo cat mail + +set bugfile = "${iraf}local/bugs.log" +set arcfile = "/u1/ftp/iraf/v214/bugs.log" +set tmpfile = "/tmp/bug." +set lokfile = "/tmp/bug.lok" + +set number = 1 +set module = "$1" +set from = "`whoami`" +set date = "`date`" +set system = "V2.14" +set irafmail = "iraf@iraf.noao.edu" +set buglog = "adass-iraf-buglog@iraf.noao.edu" + +# Get exclusive access to the bugfile. + +if (-e $lokfile) then + find $bugfile -newer $lokfile -exec rm -f $lokfile \; + while (-e $lokfile) + echo "waiting for access to system bugfile" + sleep 15 + end +endif + +date > $lokfile +onintr cleanup + +# If we were called as "buglog -e", simply edit the locked bugfile. + +if ("$1" == "-e") then + vi + $bugfile + goto cleanup +endif + +# Increment the bug record number. + +set number = "`grep '^NUMBER:' $bugfile | tail -1 | sed -e 's/^NUMBER:.//'`" +if ("$number" == "") then + set number = 1 +else + set number = "`expr $number + 1`" +endif + +# Get module name if not given on command line. + +if ($module == "") then + echo -n "Module: " + set module = "$<" +endif + +# Format new bug entry in a temporary file and edit it. + +set tmpfile = $tmpfile$number +if (-e $tmpfile) then + echo "file $tmpfile already exists" + rm -i $tmpfile + if (-e $tmpfile) then + goto editbug + endif +endif + +echo "NUMBER: $number" >> $tmpfile +echo "MODULE: $module" >> $tmpfile +echo "SYSTEM: $system" >> $tmpfile +echo "DATE: $date" >> $tmpfile +echo "FROM: $from" >> $tmpfile +echo "" >> $tmpfile +echo "BUG: ..." >> $tmpfile +echo "" >> $tmpfile +echo "STATUS: ..." >> $tmpfile + +editbug: +cp $tmpfile $tmpfile.ORIG +vi $tmpfile + +# Add new bug entry to bugfile (exiting the editor without modifying the file +# causes the bug to be discarded). + +cmp -s $tmpfile $tmpfile.ORIG +if ($status) then + echo "" >> $bugfile; cat $tmpfile >> $bugfile + echo "" >> $arcfile; cat $tmpfile >> $arcfile + mail -s "buglog.$number"": module = $module, author = $from" $irafmail\ + < $tmpfile +# mail -s "buglog.$number"": module = $module, author = $from" $buglog\ +# < $tmpfile + rm -f $tmpfile $tmpfile.ORIG +else + echo "system bugfile not modified" + rm -f $tmpfile $tmpfile.ORIG +endif + +# Cleanup (vector here on interrupt). + +cleanup: +if (-e $lokfile) then + rm -f $lokfile +endif diff --git a/unix/hlib/buglog.sh b/unix/hlib/buglog.sh new file mode 100755 index 00000000..ac4e614e --- /dev/null +++ b/unix/hlib/buglog.sh @@ -0,0 +1,140 @@ +#!/bin/bash +# +# BUGLOG -- Format, edit, and log a new bug to the system bugs file. +# +# Usage: +# +# buglog [module] log a new bug to the system bugsfile +# buglog -e edit the system bugfile (with locking) +# +# The system bugsfile is locked for exclusive access while a bug is being +# logged, or while the bugsfile is being edited. Logging can be aborted either +# by typing <ctrl/c>, or by editing the editor with ":q!" (i.e., by exiting +# the editor without modifying the temporary file being edited). Bugs are +# formatted and edited in a small temporary file in /tmp and are added at the +# end of the bugsfile only if the task is not aborted and the edit modifies +# the input bug template. To go back and edit a previously logged bug use +# "buglog -e". +# +# Record Format: +# +# NUMBER: record number, decimal, sequential. +# MODULE: package.task or library.procedure or 'unknown' +# SYSTEM: versions of iraf in which bug was present +# DATE: date bug logged, unix format date string +# FROM: user login name +# BUG: description of the bug +# STATUS: 'fixed in V2.X', 'unresolved', etc. +# +# New records are added to the tail of the bugfile. Left justify field labels, +# indent text to the first tab stop, one blank line between bug entries. +# ---------------------------------------------------------------------------- + +iraf="`/bin/echo ${iraf}/ | tr -s '/'`" + +bugfile="${iraf}local/bugs.log" +arcfile="/u1/ftp/iraf/v216/bugs.log" +tmpfile="/tmp/bug." +lokfile="/tmp/bug.lok" + +number=1 +module="$1" +from="`whoami`" +date="`date`" +system="V2.16" +irafmail="admin@iraf.net" +buglog="adass-iraf-buglog@iraf.noao.edu" + +# Cleanup (vector here on interrupt). + +cleanup() { + if [ -e $lokfile ]; then + rm -f $lokfile + fi + exit 0 +} + +# Get exclusive access to the bugfile. + +if [ -e $lokfile ]; then + find $bugfile -newer $lokfile -exec rm -f $lokfile \; + while [ -e $lokfile ]; do + /bin/echo "waiting for access to system bugfile" + sleep 15 + done +fi + +date > $lokfile +trap cleanup 2 + +# If we were called as "buglog -e", simply edit the locked bugfile. + +if [ "$1" = "-e" ]; then + vi + $bugfile + cleanup +fi + +# Increment the bug record number. + +number="`grep '^NUMBER:' $bugfile | tail -1 | sed -e 's/^NUMBER:.//'`" +if [ "$number" = "" ]; then + number=1 +else + number="`expr $number + 1`" +fi + +# Get module name if not given on command line. + +if [ "$module" = "" ]; then + /bin/echo -n "Module: " + read module +fi + +# Format new bug entry in a temporary file and edit it. + +SKP=0 +tmpfile=$tmpfile$number +if [ -e $tmpfile ]; then + /bin/echo "file $tmpfile already exists" + rm -i $tmpfile + if [ -e $tmpfile ]; then + SKP=1 + fi +fi + +if [ $SKP = 0 ]; then + /bin/echo "NUMBER: $number" >> $tmpfile + /bin/echo "MODULE: $module" >> $tmpfile + /bin/echo "SYSTEM: $system" >> $tmpfile + /bin/echo "DATE: $date" >> $tmpfile + /bin/echo "FROM: $from" >> $tmpfile + /bin/echo "" >> $tmpfile + /bin/echo "BUG: ..." >> $tmpfile + /bin/echo "" >> $tmpfile + /bin/echo "STATUS: ..." >> $tmpfile +fi + +cp $tmpfile $tmpfile.ORIG +vi $tmpfile + +# Add new bug entry to bugfile (exiting the editor without modifying the file +# causes the bug to be discarded). + +cmp -s $tmpfile $tmpfile.ORIG +if [ $? = 0 ]; then + /bin/echo "system bugfile not modified" + rm -f $tmpfile $tmpfile.ORIG +else + /bin/echo "" >> $bugfile; cat $tmpfile >> $bugfile + if [ -e $arcfile ]; then + /bin/echo "" >> $arcfile; cat $tmpfile >> $arcfile + fi + mail -s "buglog.$number"": module = $module, author = $from" $irafmail\ + < $tmpfile +# mail -s "buglog.$number"": module = $module, author = $from" $buglog\ +# < $tmpfile + rm -f $tmpfile $tmpfile.ORIG +fi + +cleanup + diff --git a/unix/hlib/cl.csh b/unix/hlib/cl.csh new file mode 100755 index 00000000..12938b53 --- /dev/null +++ b/unix/hlib/cl.csh @@ -0,0 +1,153 @@ +#!/bin/csh +# +# CL.CSH -- Startup the version of the CL executable compiled for the +# architecture or floating point hardware appropriate for the current +# machine. This script can be used to invoke a number of CL flavors +# depending on how it is called. The install script will create a 'cl' +# and 'ecl' command link to this script with the intent that a different +# binary would be started for each command. + + +# Determine CL binary to run based on how we were called. + +set cl_binary = "vocl.e" + +if (`echo $0 | egrep ecl` != "") then + set cl_binary = "ecl.e" + +else if (`echo $0 | egrep vo` != "") then + set cl_binary = "vocl.e" + +else if ($#argv > 0) then + if ("$argv[1]" == "-old" || "$argv[1]" == "-o") then + set cl_binary = "cl.e" + else if ("$argv[1]" == "-vo") then + set cl_binary = "vocl.e" + else if ("$argv[1]:e" == "c") then + # Workaround for autoconf scripts attempting to use this command as + # a valid compiler option. On some systems (mostly Debian) a valid + # CC command can't be found and eventually the 'cl' (lisp) compiler + # is tried. It will always apparently have the conftest.c test file, + # so simply exit with a code to tell autoconf it won't work. + exit 1 + endif +endif + + +# Determine IRAF root directory (value set in install script). +set d_iraf = "/iraf/iraf/" +if ($?iraf) then + if (! -e $iraf) then + echo "Warning: iraf=$iraf does not exist (check .cshrc or .login)" + echo "Session will default to iraf=$d_iraf" + unsetenv iraf ; sleep 3 + endif +endif +if ($?iraf == 0) then + setenv iraf "$d_iraf" +endif + +# Check for a version query. +if ($#argv > 0) then + if ("$argv[1]" == "-v" || "$argv[1]" == "-version" || \ + "$argv[1]" == "-V" || "$argv[1]" == "--version") then + head -1 $iraf/unix/hlib/motd + exit 0 + endif +endif + + +# Determine platform architecture. +if (-e $iraf/unix/hlib/irafarch.csh) then + set ACTUAL_ARCH = `$iraf/unix/hlib/irafarch.csh -actual` +else + set ACTUAL_ARCH = $IRAFARCH +endif + +if ($?IRAFARCH) then + if (-e $iraf/bin.${IRAFARCH}/${cl_binary}) then + set MACH = $IRAFARCH + else + echo "ERROR: No $iraf/bin.${IRAFARCH}/${cl_binary} binary found." + if ("$ACTUAL_ARCH" != "$IRAFARCH") then + echo "ERROR: IRAFARCH set to '$IRAFARCH', should be '$ACTUAL_ARCH'" + endif + exit 1 + endif + setenv arch ".$MACH" + +else + set os_mach = `uname -s | tr '[A-Z]' '[a-z]' | cut -c1-6` + + if (-e $iraf/unix/hlib/irafarch.csh) then + set MACH = `$iraf/unix/hlib/irafarch.csh` + else + set MACH = $os_mach + endif + + if ("$os_mach" == "linux") then # handle linux systems + if (`uname -m` == "x86_64") then + setenv mach linux64 + else + setenv mach linux + endif + else if ("$os_mach" == "darwin") then # handle Mac systems + if ("`uname -m`" == "x86_64") then + setenv mach macintel + else + setenv mach macosx + endif + else if ("$os_mach" == "cygwin") then + setenv mach cygwin + else + set mach = `uname -s | tr '[A-Z]' '[a-z]'` + endif + + setenv arch ".$MACH" + if (! $?IRAFARCH) then + setenv IRAFARCH "$MACH" + endif + + if (! (-e $iraf/bin.${MACH}/${cl_binary}) ) then + echo "ERROR: No $iraf/bin.${IRAFARCH}/${cl_binary} binary found." + exit 1 + endif +endif + +# Recent linux systems display a problem in how pointer addresses +# interact with the stack and can result in a segfault. Remove the +# stacksize limit for IRAF processes until this is better understood. +if ("$IRAFARCH" == "redhat" || \ + "$IRAFARCH" == "linux64" || \ + "$IRAFARCH" == "linux") then + limit stacksize unlimited +endif + + +# Just run the CL if IRAFARCH already defined. +if ($?IRAFARCH) then + if ($IRAFARCH == "") then + setenv arch "" + else + setenv arch ".$IRAFARCH" + endif + + setenv IRAFBIN ${iraf}bin$arch/ + set file = ${IRAFBIN}$cl_binary + if (-e $file) then + exec $file + else + echo "$file not found" + endif +endif + + +# Set the architecture to be used. +setenv IRAFARCH $MACH + + +setenv arch .$IRAFARCH +setenv IRAFBIN ${iraf}bin$arch/ + +# Run the desired CL. +exec ${IRAFBIN}$cl_binary diff --git a/unix/hlib/cl.csh.ORIG b/unix/hlib/cl.csh.ORIG new file mode 100755 index 00000000..bab64f9d --- /dev/null +++ b/unix/hlib/cl.csh.ORIG @@ -0,0 +1,212 @@ +#!/bin/csh -f +# +# CL.CSH -- Startup the version of the CL executable compiled for the +# architecture or floating point hardware appropriate for the current +# machine. This script can be used to invoke a number of CL flavors +# depending on how it is called. The install script will create a 'cl' +# and 'ecl' command link to this script with the intent that a different +# binary would be started for each command. + + +# Determine CL binary to run based on how we were called. + +set cl_binary = "ecl.e" + +if (`echo $0 | egrep ecl` != "") then + set cl_binary = "ecl.e" + +else if (`echo $0 | egrep vo` != "") then + set cl_binary = "vocl.e" + +else if ($#argv > 0) then + if ("$argv[1]" == "-old" || "$argv[1]" == "-o") then + set cl_binary = "cl.e" + else if ("$argv[1]" == "-vo" || "$argv[1]" == "-o") then + set cl_binary = "vocl.e" + else if ("$argv[1]:e" == "c") then + # Workaround for autoconf scripts attempting to use this command as + # a valid compiler option. On some systems (mostly Debian) a valid + # CC command can't be found and eventually the 'cl' (lisp) compiler + # is tried. It will always apparently have the conftest.c test file, + # so simply exit with a code to tell autoconf it won't work. + exit 1 + endif +endif + + +# Determine IRAF root directory (value set in install script). +set d_iraf = "/iraf/iraf/" +if ($?iraf) then + if (! -e $iraf) then + echo "Warning: iraf=$iraf does not exist (check .cshrc or .login)" + echo "Session will default to iraf=$d_iraf" + unsetenv iraf ; sleep 3 + endif +endif +if ($?iraf == 0) then + setenv iraf "$d_iraf" +endif + + +# Check for a version query. +if ($#argv > 0) then + if ("$argv[1]" == "-v" || "$argv[1]" == "-version" || \ + "$argv[1]" == "-V" || "$argv[1]" == "--version") then + head -1 $iraf/unix/hlib/motd + exit 0 + endif +endif + + +# Determine platform architecture. +if ($?IRAFARCH) then + if (-e $iraf/bin.${IRAFARCH}/${cl_binary}) then + set MACH = $IRAFARCH + endif +endif + +if (! $?MACH) then + + # SUN-IRAF + setenv OSNAME `uname` + if ($OSNAME == 'SunOS') then + setenv OSVERSION `uname -r | cut -c1` + if ($OSVERSION == 5) then + set MACH = `uname -p` + switch ($MACH) + case sparc: + set MACH = ssol + breaksw + endsw + else + set MACH = `mach` + endif + + else + + # PC-IRAF + set os_mach = `uname -s | tr '[A-Z]' '[a-z]' | cut -c1-6` + if (-f /etc/redhat-release) then + if (`uname -m` == "ppc") then + setenv mach linuxppc + else + setenv mach redhat + endif + else + set mach = `uname -s | tr '[A-Z]' '[a-z]'` + endif + + if ($mach == "darwin") then + if ("`uname -m`" == "i386") then + setenv mach macintel + else + setenv mach macosx + endif + else if ($os_mach == "cygwin") then + setenv mach cygwin + endif + + + if (-e $iraf/bin.$mach/$cl_binary) then + set MACH = $mach + else if (-e $iraf/bin.freebsd/$cl_binary) then + set MACH = freebsd + else if (-e $iraf/bin.macosx/$cl_binary) then + set MACH = macosx + else if (-e $iraf/bin.macintel/$cl_binary) then + set MACH = macintel + else if (-e $iraf/bin.cygwin/$cl_binary) then + set MACH = cygwin + else if (-e $iraf/bin.linux/$cl_binary) then + set MACH = linux + else if (-e $iraf/bin.redhat/$cl_binary) then + set MACH = redhat + else if (-e $iraf/bin.linuxppc/$cl_binary) then + set MACH = linuxppc + else if (-e $iraf/bin.sunos/$cl_binary) then + set MACH = sunos + else if (-e $iraf/bin.linuz/$cl_binary) then + set MACH = linuz + else + echo "cannot find $iraf/bin.xxx/$cl_binary" + exit 1 + endif + + endif + +endif + +# Check for obsolete IRAFBIN definition. +if ($?IRAFBIN && !($?IRAFARCH)) then + echo "Use IRAFARCH rather than IRAFBIN to specify the machine architecture" + echo "IRAFARCH, if defined, should be one of ffpa,f68881,i386,sparc, etc." +endif + +# Just run the CL if IRAFARCH already defined. +if ($?IRAFARCH) then + if ($IRAFARCH == "") then + setenv arch "" + else + setenv arch ".$IRAFARCH" + endif + + # Recent linux systems display a problem in how pointer addresses + # interact with the stack and can result in a segfault. Remove the + # stacksize limit for IRAF processes until this is better understood. + if ("$IRAFARCH" == "redhat" || \ + "$IRAFARCH" == "linux" || \ + "$IRAFARCH" == "linuxppc") then + limit stacksize unlimited + endif + + setenv IRAFBIN ${iraf}bin$arch/ + set file = ${IRAFBIN}$cl_binary + if (-e $file) then + exec $file + else + echo "$file not found" + endif +endif + + +# Determine the architecture to be used. +if ("$MACH" == "freebsd") then # PC-IRAF + setenv IRAFARCH "freebsd" +else if ("$MACH" == "linux") then + setenv IRAFARCH "linux" +else if ("$MACH" == "redhat") then + setenv IRAFARCH "redhat" +else if ("$MACH" == "linuxppc") then + setenv IRAFARCH "linuxppc" +else if ("$MACH" == "macosx") then + setenv IRAFARCH "macosx" +else if ("$MACH" == "macintel") then + setenv IRAFARCH "macintel" +else if ("$MACH" == "cygwin") then + setenv IRAFARCH "cygwin" +else if ("$MACH" == "sunos") then + setenv IRAFARCH "sunos" +else if ("$MACH" == "linuz") then + setenv IRAFARCH "linuz" + +else if ("$MACH" == "ssol") then # SUN-IRAF + setenv IRAFARCH "ssun" +else if ("$MACH" == "sparc") then + setenv IRAFARCH "sparc" +endif + +# Recent linux systems display a problem in how pointer addresses +# interact with the stack and can result in a segfault. Remove the +# stacksize limit for IRAF processes until this is better understood. +if ("$IRAFARCH" == "redhat" || \ + "$IRAFARCH" == "linux" || \ + "$IRAFARCH" == "linuxppc") then + limit stacksize unlimited +endif + +setenv arch .$IRAFARCH +setenv IRAFBIN ${iraf}bin$arch/ +set file = ${IRAFBIN}$cl_binary + +# Run the desired CL. +exec $file diff --git a/unix/hlib/cl.sh b/unix/hlib/cl.sh new file mode 100755 index 00000000..67bcd428 --- /dev/null +++ b/unix/hlib/cl.sh @@ -0,0 +1,165 @@ +#!/bin/bash +# +# CL.SH -- Startup the version of the CL executable compiled for the +# architecture or floating point hardware appropriate for the current +# machine. This script can be used to invoke a number of CL flavors +# depending on how it is called. The install script will create a 'cl' +# and 'ecl' command link to this script with the intent that a different +# binary would be started for each command. + + +# Determine CL binary to run based on how we were called. + + +nm=${0##*/} +cl_binary="vocl.e" + +case "$nm" in + "cl" | "cl.sh") + cl_binary="vocl.e" + ;; + "ecl" | "ecl.sh") + cl_binary="vocl.e" + ;; + "vocl" | "vocl.sh") + cl_binary="vocl.e" + ;; + *) + if (( $# > 1 )); then + if [ $1 == "-old" -o $1 == "-o" ]; then + cl_binary="cl.e" + elif [ $1 == "-ecl" -o $1 == "-e" ]; then + cl_binary="ecl.e" + elif [ $1 == "-vo" ]; then + cl_binary="vocl.e" + elif [ ${1##*.} == "c" ]; then + # Workaround for autoconf scripts attempting to use this + # command as a valid compiler option. On some systems (mostly + # Debian) a valid CC command can't be found and eventually + # the 'cl' (lisp) compiler is tried. It will always apparently + # have the conftest.c test file, so simply exit with a code to + # tell autoconf it won't work. + exit 1 + fi + fi +esac + +# Determine IRAF root directory (value set in install script). +d_iraf="/iraf/iraf/" +if [ -n $iraf ]; then + if [ ! -e $iraf ]; then + echo "Warning: iraf=$iraf does not exist \(check .cshrc or .login\)" + echo "Session will default to iraf=$d_iraf" + unset iraf ; sleep 3 + fi +fi +if [ -z $iraf ]; then + export iraf="$d_iraf" +fi + +# Check for a version query. +if (( $# > 1 )); then + case "$1" in + "-v" | "-V" | "-version" | "--version") + head -1 $iraf/unix/hlib/motd + exit 0 + ;; + *) + ;; + esac +fi + + +# Determine platform architecture. +if [ -e $iraf/unix/hlib/irafarch.sh ]; then + ACTUAL_ARCH=`$iraf/unix/hlib/irafarch.sh -actual` +else + ACTUAL_ARCH=$IRAFARCH +fi + +if [ -n "$IRAFARCH" ]; then + if [ -e $iraf/bin.${IRAFARCH}/${cl_binary} ]; then + MACH=$IRAFARCH + else + echo "ERROR: No $iraf/bin.${IRAFARCH}/${cl_binary} binary found." + if [ "$ACTUAL_ARCH" != "$IRAFARCH" ]; then + echo "ERROR: IRAFARCH set to '$IRAFARCH', should be '$ACTUAL_ARCH'" + fi + exit 1 + fi + export arch=".$MACH" + +else + os_mach=`uname -s | tr '[A-Z]' '[a-z]' | cut -c1-6` + + if [ -e $iraf/unix/hlib/irafarch.csh ]; then + MACH=`$iraf/unix/hlib/irafarch.csh` + else + MACH=$os_mach + fi + + if [ "$os_mach" == "linux" ]; then # handle linux systems + if [ `uname -m` == "x86_64" ]; then + export mach="linux64" + else + export mach="linux" + fi + elif [ "$os_mach" == "darwin" ]; then # handle Mac systems + if [ "`uname -m`" == "x86_64" ]; then + export mach="macintel" + else + export mach="macosx" + fi + elif [ "$os_mach" == "cygwin" ]; then + export mach="cygwin" + else + mach=`uname -s | tr '[A-Z]' '[a-z]'` + fi + + export arch=".$MACH" + if [ -z $IRAFARCH ]; then + export IRAFARCH="$MACH" + fi + + if [ ! -e $iraf/bin.${MACH}/${cl_binary} ]; then + echo "ERROR: No $iraf/bin.${IRAFARCH}/${cl_binary} binary found." + exit 1 + fi +fi + + +# Recent linux systems display a problem in how pointer addresses +# interact with the stack and can result in a segfault. Remove the +# stacksize limit for IRAF processes until this is better understood. +if [ "$IRAFARCH" == "redhat" -o \ + "$IRAFARCH" == "linux64" -o \ + "$IRAFARCH" == "linux" ]; then + ulimit -s unlimited +fi + + +# Just run the CL if IRAFARCH already defined. +if [ -n "$IRAFARCH" ]; then + if [ -z $IRAFARCH ]; then + export arch="" + else + export arch=".$IRAFARCH" + fi + + export IRAFBIN=${iraf}bin$arch/ + file=${IRAFBIN}$cl_binary + if [ -e $file ]; then + exec $file + else + echo "$file not found" + fi +fi + + +# Set the architecture to be used. +export IRAFARCH=$MACH +export arch=.$IRAFARCH +export IRAFBIN=${iraf}bin$arch/ + +# Run the desired CL. +exec ${IRAFBIN}$cl_binary diff --git a/unix/hlib/cllogout.cl b/unix/hlib/cllogout.cl new file mode 100644 index 00000000..c597320f --- /dev/null +++ b/unix/hlib/cllogout.cl @@ -0,0 +1,5 @@ +#{ System logout file; executed when logging off from the CL. Perform any +# cleanup functions you want executed at logout time. + +if (deftask ("_logout") && access ("home$logout.cl")) + _logout();; diff --git a/unix/hlib/clpackage.cl b/unix/hlib/clpackage.cl new file mode 100644 index 00000000..cb017cd7 --- /dev/null +++ b/unix/hlib/clpackage.cl @@ -0,0 +1,59 @@ +#{ CLPACKAGE.CL -- Package definitions file for the "clpackage" package. +# When this script is run, the current package is "clpackage", the default +# startup package. NOTE -- See hlib$zzsetenv.def for additional environment +# definitions. + +# Uncomment and edit the following to change the default values of these +# CL parameters for your site. + +#ehinit = "nostandout eol noverify" +#epinit = "standout showall" +#keeplog = no +#logfile = "home$logfile" +#logmode = "commands nobackground noerrors notrace" + +szprcache = 4 + +# IRAF standard system package script task declarations. + +task dbms.pkg = "dbms$dbms.cl" +task dataio.pkg = "dataio$dataio.cl" +task images.pkg = "images$images.cl" +task language.pkg = "language$language.cl" +task lists.pkg = "lists$lists.cl" +task obsolete.pkg = "obsolete$obsolete.cl" +task plot.pkg = "plot$plot.cl" +task proto.pkg = "proto$proto.cl" +task softools.pkg = "softools$softools.cl" +task system.pkg = "system$system.cl" +task utilities.pkg = "utilities$utilities.cl" + +# Handy task to call the user's logout.cl file. +task $_logout = "home$logout.cl" + +# Define the external (user-configurable) packages. +cl < hlib$extern.pkg + + +# Load dynamically-defined external packages. +if (access ("hlib$extpkg.cl") == yes) + cl < hlib$extpkg.cl +; + + +# Load packages needed by dynamic external packages. These are reloaded +# in the login.cl. +images +proto +utilities +noao + +# Load the SYSTEM package. Avoid printing menu, but do not change the +# default value of the menus switch. + +if (menus) { + menus = no; system; menus = yes +} else + system + +keep diff --git a/unix/hlib/clpackage.hd b/unix/hlib/clpackage.hd new file mode 100644 index 00000000..8d967dc6 --- /dev/null +++ b/unix/hlib/clpackage.hd @@ -0,0 +1,86 @@ +# Help directory for the package CLPACKAGE (the root package of the CL). + +$dataio = "pkg$dataio/" +$dbms = "pkg$dbms/" +$images = "pkg$images/" +$language = "pkg$language/" +$lists = "pkg$lists/" +$obsolete = "pkg$obsolete/" +$plot = "pkg$plot/" +$proto = "pkg$proto/" +$softools = "pkg$softools/" +$system = "pkg$system/" +$utilities = "pkg$utilities/" +$xtools = "pkg$xtools/doc/" + +# Define help files for the standard IRAF system packages. + +dataio men = dataio$dataio.men, + hlp = .., + sys = dataio$dataio.hlp, + pkg = dataio$dataio.hd, + src = dataio$dataio.cl + +dbms men = dbms$dbms.men, + hlp = .., + sys = dbms$dbms.hlp, + pkg = dbms$dbms.hd, + src = dbms$dbms.cl + +images men = images$images.men, + hlp = .., + sys = images$images.hlp, + pkg = images$images.hd, + src = images$images.cl + +language men = language$language.men, + hlp = .., + sys = language$language.hlp, + pkg = language$language.hd, + src = language$language.cl + +lists men = lists$lists.men, + hlp = .., + sys = lists$lists.hlp, + pkg = lists$lists.hd, + src = lists$lists.cl + +obsolete men = obsolete$obsolete.men, + hlp = .., + sys = obsolete$obsolete.hlp, + pkg = obsolete$obsolete.hd, + src = obsolete$obsolete.cl + +plot men = plot$plot.men, + hlp = .., + sys = plot$plot.hlp, + pkg = plot$plot.hd, + src = plot$plot.cl + +proto men = proto$proto.men, + hlp = .., + sys = proto$proto.hlp, + pkg = proto$proto.hd, + src = proto$proto.cl + +softools men = softools$softools.men, + hlp = .., + sys = softools$softools.hlp, + pkg = softools$softools.hd, + src = softools$softools.cl + +system men = system$system.men, + hlp = .., + sys = system$system.hlp, + pkg = system$system.hd, + src = system$system.cl + +utilities men = utilities$utilities.men, + hlp = .., + sys = utilities$utilities.hlp, + pkg = utilities$utilities.hd, + src = utilities$utilities.cl + +xtools hlp=xtools$xtools.men, + sys=xtools$README, + pkg=xtools$xtools.hd diff --git a/unix/hlib/clpackage.men b/unix/hlib/clpackage.men new file mode 100644 index 00000000..dd46fd32 --- /dev/null +++ b/unix/hlib/clpackage.men @@ -0,0 +1,13 @@ + dataio - Data format conversion package (RFITS, etc.) + dbms - Database management package (not yet implemented) + images - General image processing package + language - The command language itself + lists - List processing package + local - The template local package + obsolete - Obsolete tasks + noao - The NOAO optical astronomy packages + plot - Plot package + proto - Prototype or interim tasks + softools - Software tools package + system - System utilities package + utilities - Miscellaneous utilities package diff --git a/unix/hlib/config.h b/unix/hlib/config.h new file mode 100644 index 00000000..a0d2db5e --- /dev/null +++ b/unix/hlib/config.h @@ -0,0 +1,79 @@ +# System configuration parameters. Sizes are in SPP chars unless otherwise +# specified. + +define FIRST_FD 10 # first open file descriptor +define LAST_FD 4096 # number of file descriptors +define PSIOCTRL 9 # the last pseudofile (see etc$prpsio.x) +define FBUF_ALLOC vmalloc # call to allocate file buffer +define LEN_DEVTBL 150 # FIO device table (7 cells/device) +define LEN_RANDBUF 8 # bufsize = LEN_RANDBUF * blksize +define LEN_SEQBUF 8 # bufsize = LEN_SEQBUF * optbufsize +define SZ_STDIOBUF 1024 # size of STDIN/STDOUT buffers +define SZ_PBBUF 1024 # default size of FIO pushback buf + +define SZ_MEM 1 # size of Mem common +define SZ_MEMALIGN SZ_DOUBLE # alignment criteria for malloc +define SZ_PHYSMEM 750000 # max phys memory available to a task +define SZ_STACK 8192 # size of a stack segment (salloc) +define SZ_STKHDR (4*SZ_POINTER) # size of stack segment header +define SZ_VMEMALIGN SZ_VMPAGE # alignment criterium for vmalloc +define VMEM_BASE 0 # fwa to align with, vmalloc +define SZ_WORKSET 100000 # tasks normal working set size +define LEN_JUMPBUF 1024 # buffer for ZSVJMP +define JUMPCOM zjucom # IRAF Main ZDOJMP common + +define MAX_ONEXIT 10 # max onexit procedures +define MAX_ONERROR 10 # max onerror procedures +define MAX_CLGFILPAR 10 # max open params for CLGFIL +define MAX_CHILDPROCS 10 # max connected subprocesses +define MAX_BKGJOBS 10 # max detached processes + +define IM_FALLOC YES # "falloc" pixel storage file (IMIO)? +define IM_PACKDENSITY 0.6 # minimum storage efficiency for images + +define MT_MAXTAPES 2 # maximum open tape drives +define MT_SZBDEFIBUF 65535 # def. input buffer size (bytes) +define MT_SZBDEFOBUF 8192 # def. output buffer size (bytes) + +# File Locking. + +define OS_FILELOCKING false # OS provides file locking +define FILELOCK_PERIOD 120 # minimum lifetime of a file lock, secs +define MIN_TIMELEFT 60 # rollback if less time left on lock + +# Characteristics of host OS filenames. + +define CASE_INSENSITIVE false # is case ignored in OS filenames +define HOST_CASE 'L' # case used [UL] if case insensitive +define UNDERSCORE_PERMITTED true # is _ permitted in filenames +define PERIOD_PERMITTED true # is . permitted in root +define MAX_ROOTLEN 128 # max chars in OS root filename +define MAX_EXTNLEN 32 # max chars in OS filename extension +define EXTN_DELIMITER '.' # character preceding extension +define LEADING_ALPHA_ONLY false # first char must be a letter +define ONECASE_OUT false # output filenames in host case + +# IRAF vs OS filename extensions. + +define EXTN_MAP "" +define RESERVED_EXTNS "|zsf|zvf|zl1|zl2|zmd|zlk|" + +# Escape sequence encoding metacharacters. + +define VFN_ESCAPE_CHAR '\1' # escape character for encoding +define SHIFT_NEXTCHAR '0' # shift next char to upper case +define SHIFT_TO_LOWER '1' # shift to lower case +define SHIFT_TO_UPPER '2' # shift to upper case +define UNDERSCORE_CODE '3' # code for encoding _ +define PERIOD_CODE '4' # code for encoding . + +# Reserved filenames and filename extensions. + +define SETENV_FILE "zzsetenv.def" +define FNMAPPING_FILE "zzfnmap.zvf" +define SUBFILE_EXTN ".zsf" +define FNMAPFILE_EXTN ".zvf" +define TIMELOCK1_EXTN ".zl1" +define TIMELOCK2_EXTN ".zl2" +define DEGENFLAG_EXTN ".zmd" +define LOCKFILE_EXTN ".zlk" diff --git a/unix/hlib/d1mach.f b/unix/hlib/d1mach.f new file mode 100644 index 00000000..ccecd107 --- /dev/null +++ b/unix/hlib/d1mach.f @@ -0,0 +1,463 @@ + DOUBLE PRECISION FUNCTION D1MACH(I) +C +C DOUBLE-PRECISION MACHINE CONSTANTS +C +C D1MACH( 1) = B**(EMIN-1), THE SMALLEST POSITIVE MAGNITUDE. +C +C D1MACH( 2) = B**EMAX*(1 - B**(-T)), THE LARGEST MAGNITUDE. +C +C D1MACH( 3) = B**(-T), THE SMALLEST RELATIVE SPACING. +C +C D1MACH( 4) = B**(1-T), THE LARGEST RELATIVE SPACING. +C +C D1MACH( 5) = LOG10(B) +C +C TO ALTER THIS FUNCTION FOR A PARTICULAR ENVIRONMENT, +C THE DESIRED SET OF DATA STATEMENTS SHOULD BE ACTIVATED BY +C REMOVING THE C FROM COLUMN 1. +C ON RARE MACHINES A STATIC STATEMENT MAY NEED TO BE ADDED. +C (BUT PROBABLY MORE SYSTEMS PROHIBIT IT THAN REQUIRE IT.) +C +C FOR IEEE-ARITHMETIC MACHINES (BINARY STANDARD), ONE OF THE FIRST +C TWO SETS OF CONSTANTS BELOW SHOULD BE APPROPRIATE. IF YOU DO NOT +C KNOW WHICH SET TO USE, TRY BOTH AND SEE WHICH GIVES PLAUSIBLE +C VALUES. +C +C WHERE POSSIBLE, DECIMAL, OCTAL OR HEXADECIMAL CONSTANTS ARE USED +C TO SPECIFY THE CONSTANTS EXACTLY. SOMETIMES THIS REQUIRES USING +C EQUIVALENT INTEGER ARRAYS. IF YOUR COMPILER USES HALF-WORD +C INTEGERS BY DEFAULT (SOMETIMES CALLED INTEGER*2), YOU MAY NEED TO +C CHANGE INTEGER TO INTEGER*4 OR OTHERWISE INSTRUCT YOUR COMPILER +C TO USE FULL-WORD INTEGERS IN THE NEXT 5 DECLARATIONS. +C +C COMMENTS JUST BEFORE THE END STATEMENT (LINES STARTING WITH *) +C GIVE C SOURCE FOR D1MACH. +C + INTEGER SMALL(2) + INTEGER LARGE(2) + INTEGER RIGHT(2) + INTEGER DIVER(2) + INTEGER LOG10(2) + INTEGER I +C/6S +C/7S + SAVE SMALL, LARGE, RIGHT, DIVER, LOG10 +C/ + DOUBLE PRECISION DMACH(5) +C + EQUIVALENCE (DMACH(1),SMALL(1)) + EQUIVALENCE (DMACH(2),LARGE(1)) + EQUIVALENCE (DMACH(3),RIGHT(1)) + EQUIVALENCE (DMACH(4),DIVER(1)) + EQUIVALENCE (DMACH(5),LOG10(1)) +C +C MACHINE CONSTANTS FOR BIG-ENDIAN IEEE ARITHMETIC (BINARY FORMAT) +C MACHINES IN WHICH THE MOST SIGNIFICANT BYTE IS STORED FIRST, +C SUCH AS THE AT&T 3B SERIES, MOTOROLA 68000 BASED MACHINES (E.G. +C SUN 3), AND MACHINES THAT USE SPARC, HP, OR IBM RISC CHIPS. +C +C DATA SMALL(1),SMALL(2) / 1048576, 0 / +C DATA LARGE(1),LARGE(2) / 2146435071, -1 / +C DATA RIGHT(1),RIGHT(2) / 1017118720, 0 / +C DATA DIVER(1),DIVER(2) / 1018167296, 0 / +C DATA LOG10(1),LOG10(2) / 1070810131, 1352628735 / +C +C MACHINE CONSTANTS FOR LITTLE-ENDIAN (BINARY) IEEE ARITHMETIC +C MACHINES IN WHICH THE LEAST SIGNIFICANT BYTE IS STORED FIRST, +C E.G. IBM PCS AND OTHER MACHINES THAT USE INTEL 80X87 OR DEC +C ALPHA CHIPS. +C + DATA SMALL(1),SMALL(2) / 0, 1048576 / + DATA LARGE(1),LARGE(2) / -1, 2146435071 / + DATA RIGHT(1),RIGHT(2) / 0, 1017118720 / + DATA DIVER(1),DIVER(2) / 0, 1018167296 / + DATA LOG10(1),LOG10(2) / 1352628735, 1070810131 / +C +C MACHINE CONSTANTS FOR AMDAHL MACHINES. +C +C DATA SMALL(1),SMALL(2) / 1048576, 0 / +C DATA LARGE(1),LARGE(2) / 2147483647, -1 / +C DATA RIGHT(1),RIGHT(2) / 856686592, 0 / +C DATA DIVER(1),DIVER(2) / 873463808, 0 / +C DATA LOG10(1),LOG10(2) / 1091781651, 1352628735 /, SC/987/ +C +C MACHINE CONSTANTS FOR THE BURROUGHS 1700 SYSTEM. +C +C DATA SMALL(1) / ZC00800000 / +C DATA SMALL(2) / Z000000000 / +C +C DATA LARGE(1) / ZDFFFFFFFF / +C DATA LARGE(2) / ZFFFFFFFFF / +C +C DATA RIGHT(1) / ZCC5800000 / +C DATA RIGHT(2) / Z000000000 / +C +C DATA DIVER(1) / ZCC6800000 / +C DATA DIVER(2) / Z000000000 / +C +C DATA LOG10(1) / ZD00E730E7 / +C DATA LOG10(2) / ZC77800DC0 /, SC/987/ +C +C MACHINE CONSTANTS FOR THE BURROUGHS 5700 SYSTEM. +C +C DATA SMALL(1) / O1771000000000000 / +C DATA SMALL(2) / O0000000000000000 / +C +C DATA LARGE(1) / O0777777777777777 / +C DATA LARGE(2) / O0007777777777777 / +C +C DATA RIGHT(1) / O1461000000000000 / +C DATA RIGHT(2) / O0000000000000000 / +C +C DATA DIVER(1) / O1451000000000000 / +C DATA DIVER(2) / O0000000000000000 / +C +C DATA LOG10(1) / O1157163034761674 / +C DATA LOG10(2) / O0006677466732724 /, SC/987/ +C +C MACHINE CONSTANTS FOR THE BURROUGHS 6700/7700 SYSTEMS. +C +C DATA SMALL(1) / O1771000000000000 / +C DATA SMALL(2) / O7770000000000000 / +C +C DATA LARGE(1) / O0777777777777777 / +C DATA LARGE(2) / O7777777777777777 / +C +C DATA RIGHT(1) / O1461000000000000 / +C DATA RIGHT(2) / O0000000000000000 / +C +C DATA DIVER(1) / O1451000000000000 / +C DATA DIVER(2) / O0000000000000000 / +C +C DATA LOG10(1) / O1157163034761674 / +C DATA LOG10(2) / O0006677466732724 /, SC/987/ +C +C MACHINE CONSTANTS FOR FTN4 ON THE CDC 6000/7000 SERIES. +C +C DATA SMALL(1) / 00564000000000000000B / +C DATA SMALL(2) / 00000000000000000000B / +C +C DATA LARGE(1) / 37757777777777777777B / +C DATA LARGE(2) / 37157777777777777774B / +C +C DATA RIGHT(1) / 15624000000000000000B / +C DATA RIGHT(2) / 00000000000000000000B / +C +C DATA DIVER(1) / 15634000000000000000B / +C DATA DIVER(2) / 00000000000000000000B / +C +C DATA LOG10(1) / 17164642023241175717B / +C DATA LOG10(2) / 16367571421742254654B /, SC/987/ +C +C MACHINE CONSTANTS FOR FTN5 ON THE CDC 6000/7000 SERIES. +C +C DATA SMALL(1) / O"00564000000000000000" / +C DATA SMALL(2) / O"00000000000000000000" / +C +C DATA LARGE(1) / O"37757777777777777777" / +C DATA LARGE(2) / O"37157777777777777774" / +C +C DATA RIGHT(1) / O"15624000000000000000" / +C DATA RIGHT(2) / O"00000000000000000000" / +C +C DATA DIVER(1) / O"15634000000000000000" / +C DATA DIVER(2) / O"00000000000000000000" / +C +C DATA LOG10(1) / O"17164642023241175717" / +C DATA LOG10(2) / O"16367571421742254654" /, SC/987/ +C +C MACHINE CONSTANTS FOR CONVEX C-1 +C +C DATA SMALL(1),SMALL(2) / '00100000'X, '00000000'X / +C DATA LARGE(1),LARGE(2) / '7FFFFFFF'X, 'FFFFFFFF'X / +C DATA RIGHT(1),RIGHT(2) / '3CC00000'X, '00000000'X / +C DATA DIVER(1),DIVER(2) / '3CD00000'X, '00000000'X / +C DATA LOG10(1),LOG10(2) / '3FF34413'X, '509F79FF'X /, SC/987/ +C +C MACHINE CONSTANTS FOR THE CRAY 1, XMP, 2, AND 3. +C +C DATA SMALL(1) / 201354000000000000000B / +C DATA SMALL(2) / 000000000000000000000B / +C +C DATA LARGE(1) / 577767777777777777777B / +C DATA LARGE(2) / 000007777777777777776B / +C +C DATA RIGHT(1) / 376434000000000000000B / +C DATA RIGHT(2) / 000000000000000000000B / +C +C DATA DIVER(1) / 376444000000000000000B / +C DATA DIVER(2) / 000000000000000000000B / +C +C DATA LOG10(1) / 377774642023241175717B / +C DATA LOG10(2) / 000007571421742254654B /, SC/987/ +C +C MACHINE CONSTANTS FOR THE DATA GENERAL ECLIPSE S/200 +C +C SMALL, LARGE, RIGHT, DIVER, LOG10 SHOULD BE DECLARED +C INTEGER SMALL(4), LARGE(4), RIGHT(4), DIVER(4), LOG10(4) +C +C NOTE - IT MAY BE APPROPRIATE TO INCLUDE THE FOLLOWING LINE - +C STATIC DMACH(5) +C +C DATA SMALL/20K,3*0/,LARGE/77777K,3*177777K/ +C DATA RIGHT/31420K,3*0/,DIVER/32020K,3*0/ +C DATA LOG10/40423K,42023K,50237K,74776K/, SC/987/ +C +C MACHINE CONSTANTS FOR THE HARRIS SLASH 6 AND SLASH 7 +C +C DATA SMALL(1),SMALL(2) / '20000000, '00000201 / +C DATA LARGE(1),LARGE(2) / '37777777, '37777577 / +C DATA RIGHT(1),RIGHT(2) / '20000000, '00000333 / +C DATA DIVER(1),DIVER(2) / '20000000, '00000334 / +C DATA LOG10(1),LOG10(2) / '23210115, '10237777 /, SC/987/ +C +C MACHINE CONSTANTS FOR THE HONEYWELL DPS 8/70 SERIES. +C +C DATA SMALL(1),SMALL(2) / O402400000000, O000000000000 / +C DATA LARGE(1),LARGE(2) / O376777777777, O777777777777 / +C DATA RIGHT(1),RIGHT(2) / O604400000000, O000000000000 / +C DATA DIVER(1),DIVER(2) / O606400000000, O000000000000 / +C DATA LOG10(1),LOG10(2) / O776464202324, O117571775714 /, SC/987/ +C +C MACHINE CONSTANTS FOR THE IBM 360/370 SERIES, +C THE XEROX SIGMA 5/7/9 AND THE SEL SYSTEMS 85/86. +C +C DATA SMALL(1),SMALL(2) / Z00100000, Z00000000 / +C DATA LARGE(1),LARGE(2) / Z7FFFFFFF, ZFFFFFFFF / +C DATA RIGHT(1),RIGHT(2) / Z33100000, Z00000000 / +C DATA DIVER(1),DIVER(2) / Z34100000, Z00000000 / +C DATA LOG10(1),LOG10(2) / Z41134413, Z509F79FF /, SC/987/ +C +C MACHINE CONSTANTS FOR THE INTERDATA 8/32 +C WITH THE UNIX SYSTEM FORTRAN 77 COMPILER. +C +C FOR THE INTERDATA FORTRAN VII COMPILER REPLACE +C THE Z'S SPECIFYING HEX CONSTANTS WITH Y'S. +C +C DATA SMALL(1),SMALL(2) / Z'00100000', Z'00000000' / +C DATA LARGE(1),LARGE(2) / Z'7EFFFFFF', Z'FFFFFFFF' / +C DATA RIGHT(1),RIGHT(2) / Z'33100000', Z'00000000' / +C DATA DIVER(1),DIVER(2) / Z'34100000', Z'00000000' / +C DATA LOG10(1),LOG10(2) / Z'41134413', Z'509F79FF' /, SC/987/ +C +C MACHINE CONSTANTS FOR THE PDP-10 (KA PROCESSOR). +C +C DATA SMALL(1),SMALL(2) / "033400000000, "000000000000 / +C DATA LARGE(1),LARGE(2) / "377777777777, "344777777777 / +C DATA RIGHT(1),RIGHT(2) / "113400000000, "000000000000 / +C DATA DIVER(1),DIVER(2) / "114400000000, "000000000000 / +C DATA LOG10(1),LOG10(2) / "177464202324, "144117571776 /, SC/987/ +C +C MACHINE CONSTANTS FOR THE PDP-10 (KI PROCESSOR). +C +C DATA SMALL(1),SMALL(2) / "000400000000, "000000000000 / +C DATA LARGE(1),LARGE(2) / "377777777777, "377777777777 / +C DATA RIGHT(1),RIGHT(2) / "103400000000, "000000000000 / +C DATA DIVER(1),DIVER(2) / "104400000000, "000000000000 / +C DATA LOG10(1),LOG10(2) / "177464202324, "047674776746 /, SC/987/ +C +C MACHINE CONSTANTS FOR PDP-11 FORTRANS SUPPORTING +C 32-BIT INTEGERS (EXPRESSED IN INTEGER AND OCTAL). +C +C DATA SMALL(1),SMALL(2) / 8388608, 0 / +C DATA LARGE(1),LARGE(2) / 2147483647, -1 / +C DATA RIGHT(1),RIGHT(2) / 612368384, 0 / +C DATA DIVER(1),DIVER(2) / 620756992, 0 / +C DATA LOG10(1),LOG10(2) / 1067065498, -2063872008 /, SC/987/ +C +C DATA SMALL(1),SMALL(2) / O00040000000, O00000000000 / +C DATA LARGE(1),LARGE(2) / O17777777777, O37777777777 / +C DATA RIGHT(1),RIGHT(2) / O04440000000, O00000000000 / +C DATA DIVER(1),DIVER(2) / O04500000000, O00000000000 / +C DATA LOG10(1),LOG10(2) / O07746420232, O20476747770 /, SC/987/ +C +C MACHINE CONSTANTS FOR PDP-11 FORTRANS SUPPORTING +C 16-BIT INTEGERS (EXPRESSED IN INTEGER AND OCTAL). +C +C SMALL, LARGE, RIGHT, DIVER, LOG10 SHOULD BE DECLARED +C INTEGER SMALL(4), LARGE(4), RIGHT(4), DIVER(4), LOG10(4) +C +C DATA SMALL(1),SMALL(2) / 128, 0 / +C DATA SMALL(3),SMALL(4) / 0, 0 / +C +C DATA LARGE(1),LARGE(2) / 32767, -1 / +C DATA LARGE(3),LARGE(4) / -1, -1 / +C +C DATA RIGHT(1),RIGHT(2) / 9344, 0 / +C DATA RIGHT(3),RIGHT(4) / 0, 0 / +C +C DATA DIVER(1),DIVER(2) / 9472, 0 / +C DATA DIVER(3),DIVER(4) / 0, 0 / +C +C DATA LOG10(1),LOG10(2) / 16282, 8346 / +C DATA LOG10(3),LOG10(4) / -31493, -12296 /, SC/987/ +C +C DATA SMALL(1),SMALL(2) / O000200, O000000 / +C DATA SMALL(3),SMALL(4) / O000000, O000000 / +C +C DATA LARGE(1),LARGE(2) / O077777, O177777 / +C DATA LARGE(3),LARGE(4) / O177777, O177777 / +C +C DATA RIGHT(1),RIGHT(2) / O022200, O000000 / +C DATA RIGHT(3),RIGHT(4) / O000000, O000000 / +C +C DATA DIVER(1),DIVER(2) / O022400, O000000 / +C DATA DIVER(3),DIVER(4) / O000000, O000000 / +C +C DATA LOG10(1),LOG10(2) / O037632, O020232 / +C DATA LOG10(3),LOG10(4) / O102373, O147770 /, SC/987/ +C +C MACHINE CONSTANTS FOR THE PRIME 50 SERIES SYSTEMS +C WITH 32-BIT INTEGERS AND 64V MODE INSTRUCTIONS, +C SUPPLIED BY IGOR BRAY. +C +C DATA SMALL(1),SMALL(2) / :10000000000, :00000100001 / +C DATA LARGE(1),LARGE(2) / :17777777777, :37777677775 / +C DATA RIGHT(1),RIGHT(2) / :10000000000, :00000000122 / +C DATA DIVER(1),DIVER(2) / :10000000000, :00000000123 / +C DATA LOG10(1),LOG10(2) / :11504046501, :07674600177 /, SC/987/ +C +C MACHINE CONSTANTS FOR THE SEQUENT BALANCE 8000 +C +C DATA SMALL(1),SMALL(2) / $00000000, $00100000 / +C DATA LARGE(1),LARGE(2) / $FFFFFFFF, $7FEFFFFF / +C DATA RIGHT(1),RIGHT(2) / $00000000, $3CA00000 / +C DATA DIVER(1),DIVER(2) / $00000000, $3CB00000 / +C DATA LOG10(1),LOG10(2) / $509F79FF, $3FD34413 /, SC/987/ +C +C MACHINE CONSTANTS FOR THE UNIVAC 1100 SERIES. +C +C DATA SMALL(1),SMALL(2) / O000040000000, O000000000000 / +C DATA LARGE(1),LARGE(2) / O377777777777, O777777777777 / +C DATA RIGHT(1),RIGHT(2) / O170540000000, O000000000000 / +C DATA DIVER(1),DIVER(2) / O170640000000, O000000000000 / +C DATA LOG10(1),LOG10(2) / O177746420232, O411757177572 /, SC/987/ +C +C MACHINE CONSTANTS FOR THE VAX UNIX F77 COMPILER +C +C DATA SMALL(1),SMALL(2) / 128, 0 / +C DATA LARGE(1),LARGE(2) / -32769, -1 / +C DATA RIGHT(1),RIGHT(2) / 9344, 0 / +C DATA DIVER(1),DIVER(2) / 9472, 0 / +C DATA LOG10(1),LOG10(2) / 546979738, -805796613 /, SC/987/ +C +C MACHINE CONSTANTS FOR THE VAX-11 WITH +C FORTRAN IV-PLUS COMPILER +C +C DATA SMALL(1),SMALL(2) / Z00000080, Z00000000 / +C DATA LARGE(1),LARGE(2) / ZFFFF7FFF, ZFFFFFFFF / +C DATA RIGHT(1),RIGHT(2) / Z00002480, Z00000000 / +C DATA DIVER(1),DIVER(2) / Z00002500, Z00000000 / +C DATA LOG10(1),LOG10(2) / Z209A3F9A, ZCFF884FB /, SC/987/ +C +C MACHINE CONSTANTS FOR VAX/VMS VERSION 2.2 +C +C DATA SMALL(1),SMALL(2) / '80'X, '0'X / +C DATA LARGE(1),LARGE(2) / 'FFFF7FFF'X, 'FFFFFFFF'X / +C DATA RIGHT(1),RIGHT(2) / '2480'X, '0'X / +C DATA DIVER(1),DIVER(2) / '2500'X, '0'X / +C DATA LOG10(1),LOG10(2) / '209A3F9A'X, 'CFF884FB'X /, SC/987/ +C +C *** ISSUE STOP 779 IF ALL DATA STATEMENTS ARE COMMENTED... +C IF (SC .NE. 987) THEN +C DMACH(1) = 1.D13 +C IF ( SMALL(1) .EQ. 1117925532 +C * .AND. SMALL(2) .EQ. -448790528) THEN +C* *** IEEE BIG ENDIAN *** +C SMALL(1) = 1048576 +C SMALL(2) = 0 +C LARGE(1) = 2146435071 +C LARGE(2) = -1 +C RIGHT(1) = 1017118720 +C RIGHT(2) = 0 +C DIVER(1) = 1018167296 +C DIVER(2) = 0 +C LOG10(1) = 1070810131 +C LOG10(2) = 1352628735 +C ELSE IF ( SMALL(2) .EQ. 1117925532 +C * .AND. SMALL(1) .EQ. -448790528) THEN +C* *** IEEE LITTLE ENDIAN *** +C SMALL(2) = 1048576 +C SMALL(1) = 0 +C LARGE(2) = 2146435071 +C LARGE(1) = -1 +C RIGHT(2) = 1017118720 +C RIGHT(1) = 0 +C DIVER(2) = 1018167296 +C DIVER(1) = 0 +C LOG10(2) = 1070810131 +C LOG10(1) = 1352628735 +C ELSE IF ( SMALL(1) .EQ. -2065213935 +C * .AND. SMALL(2) .EQ. 10752) THEN +C* *** VAX WITH D_FLOATING *** +C SMALL(1) = 128 +C SMALL(2) = 0 +C LARGE(1) = -32769 +C LARGE(2) = -1 +C RIGHT(1) = 9344 +C RIGHT(2) = 0 +C DIVER(1) = 9472 +C DIVER(2) = 0 +C LOG10(1) = 546979738 +C LOG10(2) = -805796613 +C ELSE IF ( SMALL(1) .EQ. 1267827943 +C * .AND. SMALL(2) .EQ. 704643072) THEN +C* *** IBM MAINFRAME *** +C SMALL(1) = 1048576 +C SMALL(2) = 0 +C LARGE(1) = 2147483647 +C LARGE(2) = -1 +C RIGHT(1) = 856686592 +C RIGHT(2) = 0 +C DIVER(1) = 873463808 +C DIVER(2) = 0 +C LOG10(1) = 1091781651 +C LOG10(2) = 1352628735 +C ELSE +C WRITE(*,*)'Adjust D1MACH by uncommenting' +C WRITE(*,*)'data statements appropriate for your machine.' +C STOP 779 +C END IF +C SC = 987 +C END IF +C +C *** ISSUE STOP 778 IF ALL DATA STATEMENTS ARE OBVIOUSLY WRONG... +C IF (DMACH(4) .GE. 1.0D0) STOP 778 +C*C/6S +C*C IF (I .LT. 1 .OR. I .GT. 5) +C*C 1 CALL SETERR(24HD1MACH - I OUT OF BOUNDS,24,1,2) +C*C/7S +C* IF (I .LT. 1 .OR. I .GT. 5) +C* 1 CALL SETERR('D1MACH - I OUT OF BOUNDS',24,1,2) +C*C/ +C IF (I .LT. 1 .OR. I .GT. 5) THEN +C WRITE(*,*) 'D1MACH(I): I =',I,' is out of bounds.' +C STOP +C END IF + IF (I .LT. 1 .OR. I .GT. 5) THEN + D1MACH = 0.0 + RETURN + END IF + D1MACH = DMACH(I) + RETURN +C +C* /* C source for D1MACH -- remove the * in column 1 */ +C*#include <stdio.h> +C*#include <float.h> +C*#include <math.h> +C* +C*double d1mach_(long *i) +C*{ +C* switch(*i){ +C* case 1: return DBL_MIN; +C* case 2: return DBL_MAX; +C* case 3: return DBL_EPSILON/FLT_RADIX; +C* case 4: return DBL_EPSILON; +C* case 5: return log10(FLT_RADIX); +C* } +C* +C* fprintf(stderr, "invalid argument: d1mach(%ld)\n", *i); +C* exit(1); +C* return 0; /* for compilers that complain of missing return values */ +C* } + END diff --git a/unix/hlib/deallocate.cl b/unix/hlib/deallocate.cl new file mode 100644 index 00000000..564d57be --- /dev/null +++ b/unix/hlib/deallocate.cl @@ -0,0 +1,12 @@ +# DEALLOCATE -- Deallocate a device. The real work is done by the hidden CL +# _deallocate task, but we provide a script interface as well to provide +# scope for machine dependent additions. + +procedure deallocate (device) + +string device { prompt = "device to be deallocated" } +bool rewind = yes + +begin + _deallocate (device, rewind) +end diff --git a/unix/hlib/devstatus.cl b/unix/hlib/devstatus.cl new file mode 100644 index 00000000..4e00540b --- /dev/null +++ b/unix/hlib/devstatus.cl @@ -0,0 +1,30 @@ +# DEVSTATUS -- Print status info for the named device. The basic function +# is performed by the hidden builtin _devstatus, but you may with to add +# additional machine dependent function to the script. + +procedure devstatus (device) + +string device { prompt = "device for which status is desired" } +bool verbose = no + +string logname, hostname +struct *devlist +string dev + +begin + dev = device + _devstatus (dev) + +# if (verbose) { +# # Print UNIX device status, too. +# +# devlist = "dev$devices" +# while (fscan (devlist, logname, hostname) != EOF) { +# if (logname == dev) { +# print ("!ls -l /dev/", hostname) | cl +# break +# } +# } +# devlist = "" +# } +end diff --git a/unix/hlib/diskspace.cl b/unix/hlib/diskspace.cl new file mode 100644 index 00000000..d252a4a9 --- /dev/null +++ b/unix/hlib/diskspace.cl @@ -0,0 +1,7 @@ +#{ DISKSPACE -- [MACHDEP] Summarize the amount of diskspace currently +# available. + +{ + # Call the UNIX "diskfree" command. + !!df +} diff --git a/unix/hlib/ecl.csh b/unix/hlib/ecl.csh new file mode 120000 index 00000000..bc54b0f4 --- /dev/null +++ b/unix/hlib/ecl.csh @@ -0,0 +1 @@ +cl.csh
\ No newline at end of file diff --git a/unix/hlib/ecl.sh b/unix/hlib/ecl.sh new file mode 100755 index 00000000..027343a3 --- /dev/null +++ b/unix/hlib/ecl.sh @@ -0,0 +1,164 @@ +#!/bin/bash +# +# CL.SH -- Startup the version of the CL executable compiled for the +# architecture or floating point hardware appropriate for the current +# machine. This script can be used to invoke a number of CL flavors +# depending on how it is called. The install script will create a 'cl' +# and 'ecl' command link to this script with the intent that a different +# binary would be started for each command. + + +# Determine CL binary to run based on how we were called. + +nm=${0##*/} +cl_binary="vocl.e" + +case "$nm" in + "cl" | "cl.sh") + cl_binary="cl.e" + ;; + "ecl" | "ecl.sh") + cl_binary="ecl.e" + ;; + "vocl" | "vocl.sh") + cl_binary="vocl.e" + ;; + *) + if (( $# > 1 )); then + if [ $1 == "-old" -o $1 == "-o" ]; then + cl_binary="cl.e" + elif [ $1 == "-ecl" -o $1 == "-e" ]; then + cl_binary="ecl.e" + elif [ $1 == "-vo" ]; then + cl_binary="vocl.e" + elif [ ${1##*.} == "c" ]; then + # Workaround for autoconf scripts attempting to use this + # command as a valid compiler option. On some systems (mostly + # Debian) a valid CC command can't be found and eventually + # the 'cl' (lisp) compiler is tried. It will always apparently + # have the conftest.c test file, so simply exit with a code to + # tell autoconf it won't work. + exit 1 + fi + fi +esac + +# Determine IRAF root directory (value set in install script). +d_iraf="/iraf/iraf/" +if [ -n $iraf ]; then + if [ ! -e $iraf ]; then + echo "Warning: iraf=$iraf does not exist (check .cshrc or .login)" + echo "Session will default to iraf=$d_iraf" + unset iraf ; sleep 3 + fi +fi +if [ -z $iraf ]; then + export iraf="$d_iraf" +fi + +# Check for a version query. +if [ $# > 1 ]; then + case "$1" in + "-v" | "-V" | "-version" | "--version") + head -1 $iraf/unix/hlib/motd + exit 0 + ;; + *) + ;; + esac +fi + + +# Determine platform architecture. +if [ -e $iraf/unix/hlib/irafarch.sh ]; then + ACTUAL_ARCH=`$iraf/unix/hlib/irafarch.sh -actual` +else + ACTUAL_ARCH=$IRAFARCH +fi + +if [ -n "$IRAFARCH" ]; then + if [ -e $iraf/bin.${IRAFARCH}/${cl_binary} ]; then + MACH=$IRAFARCH + else + echo "ERROR: No $iraf/bin.${IRAFARCH}/${cl_binary} binary found." + if [ "$ACTUAL_ARCH" != "$IRAFARCH" ]; then + echo "ERROR: IRAFARCH set to '$IRAFARCH', should be '$ACTUAL_ARCH'" + fi + exit 1 + fi + export arch=".$MACH" + +else + os_mach=`uname -s | tr '[A-Z]' '[a-z]' | cut -c1-6` + + if [ -e $iraf/unix/hlib/irafarch.csh ]; then + MACH=`$iraf/unix/hlib/irafarch.csh` + else + MACH=$os_mach + fi + + if [ "$os_mach" == "linux" ]; then # handle linux systems + if [ `uname -m` == "x86_64" ]; then + export mach="linux64" + else + export mach="linux" + fi + elif [ "$os_mach" == "darwin" ]; then # handle Mac systems + if [ "`uname -m`" == "x86_64" ]; then + export mach="macintel" + else + export mach="macosx" + fi + elif [ "$os_mach" == "cygwin" ]; then + export mach="cygwin" + else + mach=`uname -s | tr '[A-Z]' '[a-z]'` + fi + + export arch=".$MACH" + if [ -z $IRAFARCH ]; then + export IRAFARCH="$MACH" + fi + + if [ ! -e $iraf/bin.${MACH}/${cl_binary} ]; then + echo "ERROR: No $iraf/bin.${IRAFARCH}/${cl_binary} binary found." + exit 1 + fi +fi + + +# Recent linux systems display a problem in how pointer addresses +# interact with the stack and can result in a segfault. Remove the +# stacksize limit for IRAF processes until this is better understood. +if [ "$IRAFARCH" == "redhat" -o \ + "$IRAFARCH" == "linux64" -o \ + "$IRAFARCH" == "linux" ]; then + ulimit -s unlimited +fi + + +# Just run the CL if IRAFARCH already defined. +if [ -n "$IRAFARCH" ]; then + if [ -z $IRAFARCH ]; then + export arch="" + else + export arch=".$IRAFARCH" + fi + + export IRAFBIN=${iraf}bin$arch/ + file=${IRAFBIN}$cl_binary + if [ -e $file ]; then + exec $file + else + echo "$file not found" + fi +fi + + +# Set the architecture to be used. +export IRAFARCH=$MACH +export arch=.$IRAFARCH +export IRAFBIN=${iraf}bin$arch/ + +# Run the desired CL. +exec ${IRAFBIN}$cl_binary diff --git a/unix/hlib/extern.pkg b/unix/hlib/extern.pkg new file mode 100644 index 00000000..5afbabf9 --- /dev/null +++ b/unix/hlib/extern.pkg @@ -0,0 +1,41 @@ +# External (non core-system) packages. To install a new package, add the +# two statements to define the package root directory and package task, +# then add the package helpdb to the `helpdb' list. + +reset extern = iraf$extern/ + +reset noao = iraf$noao/ +task noao.pkg = noao$noao.cl + +reset vo = iraf$vo/ +task vo.pkg = vo$vo.cl + +#reset local = iraf$local/ +#task local.pkg = local$local.cl + + +# Manually defined external packages. Packages installed in the iraf$extern +# directory will be loaded dynamically, other packages may be defined here +# if for some reason they are non-standard and cannot be loaded dynamically. +# +# Package definitions have the form: +# +# reset example = extern$example/ <--- must have trailing '/' +# task example.pkg = example$example.cl +# +# Note the 'helpdb' string below must also be modified. + + + +# Initialize the helpdb string. We'll add to this when dyanamically +# loading packages when the next load the CLPACKAGE. +reset helpdb = "lib$helpdb.mip\ + ,noao$lib/helpdb.mip\ + ,vo$lib/helpdb.mip\ +# ,example$lib/helpdb.mip\ + " + + +# Do not modify below this line! +clpackage +keep diff --git a/unix/hlib/extern.pkg.DEF b/unix/hlib/extern.pkg.DEF new file mode 100644 index 00000000..8d1f9f76 --- /dev/null +++ b/unix/hlib/extern.pkg.DEF @@ -0,0 +1,16 @@ +# External (non core-system) packages. To install a new package, add the +# two statements to define the package root directory and package task, +# then add the package helpdb to the `helpdb' list. + +reset noao = iraf$noao/ +task noao.pkg = noao$noao.cl + +#reset tables = /iraf/extern/tables/ +#task tables.pkg = tables$tables.cl + +reset helpdb = "lib$helpdb.mip\ + ,noao$lib/helpdb.mip\ +# ,tables$lib/helpdb.mip\ + " + +keep diff --git a/unix/hlib/extern.pkg.IRAFNET b/unix/hlib/extern.pkg.IRAFNET new file mode 100644 index 00000000..8d1f9f76 --- /dev/null +++ b/unix/hlib/extern.pkg.IRAFNET @@ -0,0 +1,16 @@ +# External (non core-system) packages. To install a new package, add the +# two statements to define the package root directory and package task, +# then add the package helpdb to the `helpdb' list. + +reset noao = iraf$noao/ +task noao.pkg = noao$noao.cl + +#reset tables = /iraf/extern/tables/ +#task tables.pkg = tables$tables.cl + +reset helpdb = "lib$helpdb.mip\ + ,noao$lib/helpdb.mip\ +# ,tables$lib/helpdb.mip\ + " + +keep diff --git a/unix/hlib/extpkg.cl b/unix/hlib/extpkg.cl new file mode 100644 index 00000000..105dd5bf --- /dev/null +++ b/unix/hlib/extpkg.cl @@ -0,0 +1,58 @@ +# Dynamic Package Loading Script +# +# This script is "sourced" by the standard hlib$extern.pkg file when the +# CL is loaded to automatically define any packages installed in the +# iraf$extern directory. Both the package definition and helpdb strings +# are defined to include the package, negating the previous manual +# declarations required in hlib$extern.pkg +# +# + +string curdir, extdir, dpkg + +extdir = osfn ("iraf$extern") + +# Go to the dynamic package directory, but save the current directory so +# we can return when we're done. At this stage of the login we need to +# use host commands since the system package isn't available. +printf ("!pwd\n") | cl () | scan (curdir) +chdir (extdir) + +# Create a file list to process. +dpkg = mktemp ("tmp$dpkg") +if (access (dpkg) == yes) + printf ("!/bin/rm -f %s\n", osfn(dpkg)) | cl () +; +printf ("!/bin/ls -1ad [a-y]*\n") | cl (,> dpkg) + +list = dpkg +while (fscan (list, s1) != EOF) { + + # We define an environment variable for installed directories, e.g. a + # package support directory of data might require it's own definition. + # This also works to define the variable for actual package code, but + # we don't declare the package just yet. + if (access (s1) == yes && + (access (s1//"/.installed") == yes || + access (s1//"/"//s1//".cl") == yes)) { + printf ("reset %s = %s/%s/\nkeep\n", s1, osfn("iraf$extern"), s1) | cl () + } + ; + + # We assume we can dynamically load a package if there is a "foo.cl" + # script file in the 'foo' subdirectory. + if (access (s1//"/"//s1//".cl") == yes) { + printf ("task %s.pkg = %s$%s.cl\nkeep\n", s1, s1, s1) | cl () + + # Add to the helpdb string. + printf ("reset helpdb=%s,%s$lib/helpdb.mip\nkeep\n", + envget("helpdb"), s1) | cl () + } + ; +} + +# Clean uo and go back to the login directory. +printf ("!/bin/rm -f %s\n", osfn(dpkg)) | cl () +chdir (curdir) + +keep diff --git a/unix/hlib/f77.sh b/unix/hlib/f77.sh new file mode 100755 index 00000000..1033f0cf --- /dev/null +++ b/unix/hlib/f77.sh @@ -0,0 +1,296 @@ +#!/bin/bash +PATH=/v/bin:/bin:/usr/bin:/usr/local/bin +# f77-style shell script to compile and load fortran, C, and assembly codes +# usage: f77 [-g] [-O|-O[23456]] [-o absfile] [-c] files [-l library] +# -o objfile Override default executable name a.out. +# -c Do not call linker, leave relocatables in *.o. +# -S leave assembler output on file.s +# -l library (passed to ld). +# -u complain about undeclared variables +# -w omit all warning messages +# -w66 omit Fortran 66 compatibility warning messages +# -f* pass thru gcc optimizer options +# -W* pass thru gcc warning options +# files FORTRAN source files ending in .f . +# C source files ending in .c . +# Assembly language files ending in .s . +# efl source files ending in .e . +# -I includepath passed to C compiler (for .c files) +# -Ntnnn allow nnn entries in table t +# -cpp -Dxxx pipe through cpp +# +# [IRAF] -- For IRAF we had to modify the f77 script that came with Linux +# to remove the "f2ctmp_XX" prefix that the script was adding to the Fortran +# file names when compiling. The main problem with this is that it prevents +# source code debugging from working since the file that was compiled (e.g. +# f2ctmp_foo.f) no longer exists at run time. A lesser problem was that the +# code which deletes the f2ctmp_ files would return an exit 4 status, causing +# problems with XC (XC was modified for Linux to ignore this but it is still +# a bug with the f77 script). NOTE -- the old behavior is still present if +# the Fortran file has a .F extension. The modified (no f2ctmp_) behavior is +# for .f files. + +s=/tmp/stderr_$$ +t=/tmp/f77_$$ +#CC=${CC_f2c:-'/usr/bin/cc -m486'} +CC=${CC_f2c:-'gcc'} +CFLAGS=${CFLAGS:-"-I${iraf}unix/bin.${IRAFARCH}"} +EFL=${EFL:-/v/bin/efl} +EFLFLAGS=${EFLFLAGS:-'system=portable deltastno=10'} +F2C=${F2C:-/usr/bin/f2c} +F2CFLAGS=${F2CFLAGS:='-KRw8 -Nn802'} +keepc=0 +warn=1 +xsrc=0 +rc=0 +lib=/lib/num/lib.lo +trap "rm -f $s ; exit \$rc" 0 +OUTF=a.out +cOPT=1 +G= +CPP=/bin/cat +CPPFLAGS= +# set -- `getopt cD:gI:N:Oo:Suw6 "$@"` +case $? in 0);; *) exit 1;; esac +while + test X"$1" != X-- +do + case "$1" + in + -b) CFLAGS="$CFLAGS -b $2" + shift 2 + ;; + + -K) keepc=1 + shift + ;; + + -c) cOPT=0 + shift + ;; + + -D) CPPFLAGS="$CPPFLAGS -D$2" + shift 2 + ;; + + -D*) CPPFLAGS="$CPPFLAGS $1" + shift 1 + ;; + + -f2c) F2C="$2" + #F2C="${iraf}/unix/bin/f2c.e" + shift 2 + ;; + + -f*) CFLAGS="$CFLAGS $1" + shift 1 + ;; + + -g) CFLAGS="$CFLAGS -g" + F2CFLAGS="$F2CFLAGS -g" + G="-g" + shift;; + + -x64) CFLAGS="$CFLAGS -mfloat64" + shift;; + + -I) CFLAGS="$CFLAGS -I$2" + shift 2 + ;; + + -I*) CFLAGS="$CFLAGS $1" + shift 1 + ;; + + -m*) CFLAGS="$CFLAGS $1" + shift 1 + ;; + + -o) OUTF=$2 + shift 2 + ;; + + -O*) + CFLAGS="$CFLAGS $1" + shift + ;; + + -arch) CFLAGS="$CFLAGS -arch $2" + shift 2 + ;; + + -U) CFLAGS="$CFLAGS -arch ppc -arch i386" + shift + ;; + + -u) F2CFLAGS="$F2CFLAGS -u" + shift + ;; + + -P) F2CFLAGS="$F2CFLAGS -P" + shift + ;; + + -FP) CFLAGS="$CFLAGS -include $2" + shift 2 + ;; + + -W*) CFLAGS="$CFLAGS $1" + warn=1 + shift 1 + ;; + + -w) F2CFLAGS="$F2CFLAGS -w" + CFLAGS="$CFLAGS -w" + warn=0 + case $2 in -6) F2CFLAGS="$F2CFLAGS"66; shift + case $2 in -6) shift;; esac;; esac + shift + ;; + + -x) xsrc=1 + shift + ;; + + -N) F2CFLAGS="$F2CFLAGS $1""$2" + shift 2 + ;; + + -N*|-C) F2CFLAGS="$F2CFLAGS $1" + shift 1 + ;; + + -cpp) CPP="/lib/cpp -traditional" + shift 1 + ;; + + -S) CFLAGS="$CFLAGS -S" + cOPT=0 + shift + ;; + + -*) + echo "invalid parameter $1" 1>&2 + shift + ;; + + *) set -- -- $@ + ;; + esac +done +shift + +while + test -n "$1" +do + case "$1" + in + *.f) + case "$1" in *.f) f=".f";; *.F) f=".F";; esac + b=`basename $1 $f` + if [ $warn = 0 ]; then + $F2C $F2CFLAGS $b.f 2>$s + sed '/^ arg .*: here/d' $s 1>&2 + else + $F2C $F2CFLAGS $b.f + fi + if [ $xsrc = 1 ]; then + sed -e "s/$b\\.f/$b.x/" < $b.c > $b.t; mv $b.t $b.c + fi + $CC $CPPFLAGS -c $CFLAGS $b.c 2>$s + rc=$? + sed '/parameter .* is not referenced/d;/warning: too many parameters/d' $s 1>&2 + case $rc in 0);; *) exit 5;; esac + if [ $keepc = 0 ]; then + rm -f $b.c + fi + OFILES="$OFILES $b.o" + case $cOPT in 1) cOPT=2;; esac + shift + ;; + *.F) + case "$1" in *.f) f=".f";; *.F) f=".F";; esac + b=`basename $1 $f` + trap "rm -f f2ctmp_$b.* ; exit 4" 0 + sed 's/\\$/\\-/; + s/^ *INCLUDE *'\(.*\)'.*$/#include "\1"/' $1 |\ + $CPP $CPPFLAGS |\ + egrep -v '^# ' > f2ctmp_$b.f + trap "rm -f f2ctmp_$b.* ; exit 4" 0 + $F2C $F2CFLAGS f2ctmp_$b.f + case $? in 0);; *) rm f2ctmp_* ; exit 5;; esac + rm -f f2ctmp_$b.f + mv f2ctmp_$b.c $b.c + if [ -f f2ctmp_$b.P ]; then mv f2ctmp_$b.P $b.P; fi + case $? in 0);; *) rm -f $b.c ; exit 5;; esac + trap "rm -f $s ; exit 4" 0 + $CC $CPPFLAGS -c $CFLAGS $b.c 2>$s + rc=$? + sed '/parameter .* is not referenced/d;/warning: too many parameters/d' $s 1>&2 + case $rc in 0);; *) exit 5;; esac + if [ $keepc = 0 ]; then + rm -f $b.c + fi + OFILES="$OFILES $b.o" + case $cOPT in 1) cOPT=2;; esac + shift + ;; + *.e) + b=`basename $1 .e` + $EFL $EFLFLAGS $1 >$b.f + case $? in 0);; *) exit;; esac + $F2C $F2CFLAGS $b.f + case $? in 0);; *) exit;; esac + $CC -c $CFLAGS $b.c + case $? in 0);; *) exit;; esac + OFILES="$OFILES $b.o" + rm $b.[cf] + case $cOPT in 1) cOPT=2;; esac + shift + ;; + *.s) + echo $1: 1>&2 + OFILE=`basename $1 .s`.o + ${AS:-/usr/bin/as} -o $OFILE $AFLAGS $1 + case $? in 0);; *) exit;; esac + OFILES="$OFILES $OFILE" + case $cOPT in 1) cOPT=2;; esac + shift + ;; + *.c) + echo $1: 1>&2 + OFILE=`basename $1 .c`.o + $CC -c $CFLAGS $CPPFLAGS $1 + rc=$?; case $rc in 0);; *) exit;; esac + OFILES="$OFILES $OFILE" + case $cOPT in 1) cOPT=2;; esac + shift + ;; + *.o) + OFILES="$OFILES $1" + case $cOPT in 1) cOPT=2;; esac + shift + ;; + -l) + OFILES="$OFILES -l$2" + shift 2 + case $cOPT in 1) cOPT=2;; esac + ;; + -l*) + OFILES="$OFILES $1" + shift + case $cOPT in 1) cOPT=2;; esac + ;; + -o) + OUTF=$2; shift 2;; + *) + OFILES="$OFILES $1" + shift + case $cOPT in 1) cOPT=2;; esac + ;; + esac +done + +case $cOPT in 2) $CC $G -o $OUTF $OFILES -lf2c -lm;; esac +rc=$? +exit $rc diff --git a/unix/hlib/f77.sh.bak b/unix/hlib/f77.sh.bak new file mode 100755 index 00000000..49db55b0 --- /dev/null +++ b/unix/hlib/f77.sh.bak @@ -0,0 +1,297 @@ +#!/bin/sh +PATH=/v/bin:/bin:/usr/bin:/usr/local/bin +# f77-style shell script to compile and load fortran, C, and assembly codes +# usage: f77 [-g] [-O|-O[23456]] [-o absfile] [-c] files [-l library] +# -o objfile Override default executable name a.out. +# -c Do not call linker, leave relocatables in *.o. +# -S leave assembler output on file.s +# -l library (passed to ld). +# -u complain about undeclared variables +# -w omit all warning messages +# -w66 omit Fortran 66 compatibility warning messages +# -f* pass thru gcc optimizer options +# -W* pass thru gcc warning options +# files FORTRAN source files ending in .f . +# C source files ending in .c . +# Assembly language files ending in .s . +# efl source files ending in .e . +# -I includepath passed to C compiler (for .c files) +# -Ntnnn allow nnn entries in table t +# -cpp -Dxxx pipe through cpp +# +# [IRAF] -- For IRAF we had to modify the f77 script that came with Linux +# to remove the "f2ctmp_XX" prefix that the script was adding to the Fortran +# file names when compiling. The main problem with this is that it prevents +# source code debugging from working since the file that was compiled (e.g. +# f2ctmp_foo.f) no longer exists at run time. A lesser problem was that the +# code which deletes the f2ctmp_ files would return an exit 4 status, causing +# problems with XC (XC was modified for Linux to ignore this but it is still +# a bug with the f77 script). NOTE -- the old behavior is still present if +# the Fortran file has a .F extension. The modified (no f2ctmp_) behavior is +# for .f files. + +s=/tmp/stderr_$$ +t=/tmp/f77_$$ +#CC=${CC_f2c:-'/usr/bin/cc -m486'} +CC=${CC_f2c:-'gcc'} +CFLAGS=${CFLAGS:-"-I${iraf}unix/bin.${IRAFARCH}"} +EFL=${EFL:-/v/bin/efl} +EFLFLAGS=${EFLFLAGS:-'system=portable deltastno=10'} +F2C=${F2C:-/usr/bin/f2c} +F2CFLAGS=${F2CFLAGS:='-KRw8 -Nn802'} +MARCH="-m64 -arch x86_64" +keepc=0 +warn=1 +xsrc=0 +rc=0 +lib=/lib/num/lib.lo +trap "rm -f $s ; exit \$rc" 0 +OUTF=a.out +cOPT=1 +G= +CPP=/bin/cat +CPPFLAGS= +# set -- `getopt cD:gI:N:Oo:Suw6 "$@"` +case $? in 0);; *) exit 1;; esac +while + test X"$1" != X-- +do + case "$1" + in + -b) CFLAGS="$CFLAGS -b $2" + shift 2 + ;; + + -K) keepc=1 + shift + ;; + + -c) cOPT=0 + shift + ;; + + -D) CPPFLAGS="$CPPFLAGS -D$2" + shift 2 + ;; + + -D*) CPPFLAGS="$CPPFLAGS $1" + shift 1 + ;; + + -f2c) F2C="$2" + F2C="${iraf}/unix/bin/f2c.e" + shift 2 + ;; + + -f*) CFLAGS="$CFLAGS $1" + shift 1 + ;; + + -g) CFLAGS="$CFLAGS -g" + F2CFLAGS="$F2CFLAGS -g" + G="-g" + shift;; + + -x64) CFLAGS="$CFLAGS -mfloat64" + shift;; + + -I) CFLAGS="$CFLAGS -I$2" + shift 2 + ;; + + -I*) CFLAGS="$CFLAGS $1" + shift 1 + ;; + + -m*) CFLAGS="$CFLAGS $1" + shift 1 + ;; + + -o) OUTF=$2 + shift 2 + ;; + + -O*) + CFLAGS="$CFLAGS $1" + shift + ;; + + -arch) CFLAGS="$CFLAGS -arch $2" + shift 2 + ;; + + -U) CFLAGS="$CFLAGS -arch ppc -arch i386" + shift + ;; + + -u) F2CFLAGS="$F2CFLAGS -u" + shift + ;; + + -P) F2CFLAGS="$F2CFLAGS -P" + shift + ;; + + -FP) CFLAGS="$CFLAGS -include $2" + shift 2 + ;; + + -W*) CFLAGS="$CFLAGS $1" + warn=1 + shift 1 + ;; + + -w) F2CFLAGS="$F2CFLAGS -w" + CFLAGS="$CFLAGS -w" + warn=0 + case $2 in -6) F2CFLAGS="$F2CFLAGS"66; shift + case $2 in -6) shift;; esac;; esac + shift + ;; + + -x) xsrc=1 + shift + ;; + + -N) F2CFLAGS="$F2CFLAGS $1""$2" + shift 2 + ;; + + -N*|-C) F2CFLAGS="$F2CFLAGS $1" + shift 1 + ;; + + -cpp) CPP="/lib/cpp -traditional" + shift 1 + ;; + + -S) CFLAGS="$CFLAGS -S" + cOPT=0 + shift + ;; + + -*) + echo "invalid parameter $1" 1>&2 + shift + ;; + + *) set -- -- $@ + ;; + esac +done +shift + +while + test -n "$1" +do + case "$1" + in + *.f) + case "$1" in *.f) f=".f";; *.F) f=".F";; esac + b=`basename $1 $f` + if [ $warn = 0 ]; then + $F2C $F2CFLAGS $b.f 2>$s + sed '/^ arg .*: here/d' $s 1>&2 + else + $F2C $F2CFLAGS $b.f + fi + if [ $xsrc = 1 ]; then + sed -e "s/$b\\.f/$b.x/" < $b.c > $b.t; mv $b.t $b.c + fi + $CC $CPPFLAGS -c $CFLAGS $b.c 2>$s + rc=$? + sed '/parameter .* is not referenced/d;/warning: too many parameters/d' $s 1>&2 + case $rc in 0);; *) exit 5;; esac + if [ $keepc = 0 ]; then + rm -f $b.c + fi + OFILES="$OFILES $b.o" + case $cOPT in 1) cOPT=2;; esac + shift + ;; + *.F) + case "$1" in *.f) f=".f";; *.F) f=".F";; esac + b=`basename $1 $f` + trap "rm -f f2ctmp_$b.* ; exit 4" 0 + sed 's/\\$/\\-/; + s/^ *INCLUDE *'\(.*\)'.*$/#include "\1"/' $1 |\ + $CPP $CPPFLAGS |\ + egrep -v '^# ' > f2ctmp_$b.f + trap "rm -f f2ctmp_$b.* ; exit 4" 0 + $F2C $F2CFLAGS f2ctmp_$b.f + case $? in 0);; *) rm f2ctmp_* ; exit 5;; esac + rm -f f2ctmp_$b.f + mv f2ctmp_$b.c $b.c + if [ -f f2ctmp_$b.P ]; then mv f2ctmp_$b.P $b.P; fi + case $? in 0);; *) rm -f $b.c ; exit 5;; esac + trap "rm -f $s ; exit 4" 0 + $CC $CPPFLAGS -c $CFLAGS $b.c 2>$s + rc=$? + sed '/parameter .* is not referenced/d;/warning: too many parameters/d' $s 1>&2 + case $rc in 0);; *) exit 5;; esac + if [ $keepc = 0 ]; then + rm -f $b.c + fi + OFILES="$OFILES $b.o" + case $cOPT in 1) cOPT=2;; esac + shift + ;; + *.e) + b=`basename $1 .e` + $EFL $EFLFLAGS $1 >$b.f + case $? in 0);; *) exit;; esac + $F2C $F2CFLAGS $b.f + case $? in 0);; *) exit;; esac + $CC -c $CFLAGS $b.c + case $? in 0);; *) exit;; esac + OFILES="$OFILES $b.o" + rm $b.[cf] + case $cOPT in 1) cOPT=2;; esac + shift + ;; + *.s) + echo $1: 1>&2 + OFILE=`basename $1 .s`.o + ${AS:-/usr/bin/as} -o $OFILE $AFLAGS $1 + case $? in 0);; *) exit;; esac + OFILES="$OFILES $OFILE" + case $cOPT in 1) cOPT=2;; esac + shift + ;; + *.c) + echo $1: 1>&2 + OFILE=`basename $1 .c`.o + $CC -c $CFLAGS $CPPFLAGS $1 + rc=$?; case $rc in 0);; *) exit;; esac + OFILES="$OFILES $OFILE" + case $cOPT in 1) cOPT=2;; esac + shift + ;; + *.o) + OFILES="$OFILES $1" + case $cOPT in 1) cOPT=2;; esac + shift + ;; + -l) + OFILES="$OFILES -l$2" + shift 2 + case $cOPT in 1) cOPT=2;; esac + ;; + -l*) + OFILES="$OFILES $1" + shift + case $cOPT in 1) cOPT=2;; esac + ;; + -o) + OUTF=$2; shift 2;; + *) + OFILES="$OFILES $1" + shift + case $cOPT in 1) cOPT=2;; esac + ;; + esac +done + +case $cOPT in 2) $CC $G -o $OUTF $OFILES -lf2c -lm;; esac +rc=$? +exit $rc diff --git a/unix/hlib/fc.csh b/unix/hlib/fc.csh new file mode 100755 index 00000000..ab631b39 --- /dev/null +++ b/unix/hlib/fc.csh @@ -0,0 +1,37 @@ +#!/bin/csh -f +# +# FC.CSH -- Link an IMFORT or host fortran program from IRAF. A front end +# to XC, the purpose of this script is to determine the IRAF architecture +# and add the appropriate host compiler file to XC. + +# set echo + +# Scan the argument list and concatenate all arguments. +set args = "" +while ("$1" != "") + set args = "$args $1" + shift +end + +# Determine the desired architecture. +setenv IRAFARCH `$iraf/unix/hlib/irafarch.csh` +setenv MACH $IRAFARCH + +# Get float option switch. +switch ($IRAFARCH) +case macosx: + set float = "-/arch -//i386" + breaksw +case macint: + set float = "-/arch -//x86_64" + breaksw +case linux64: + set float = "-/m64" # FIXME + breaksw +default: + set float = "" + breaksw +endsw + +# Call XC with the appropriate float option. +xc $float $args diff --git a/unix/hlib/fc.sh b/unix/hlib/fc.sh new file mode 100755 index 00000000..88a0762c --- /dev/null +++ b/unix/hlib/fc.sh @@ -0,0 +1,30 @@ +#!/bin/bash +# +# FC.SH -- Link an IMFORT or host fortran program from IRAF. A front end +# to XC, the purpose of this script is to determine the IRAF architecture +# and add the appropriate host compiler file to XC. + + +# Determine the desired architecture. +IRAFARCH=`$iraf/unix/hlib/irafarch.csh` +MACH=$IRAFARCH + + +# Set any float option switch. +case $IRAFARCH in + macosx) + float="-/arch -//i386" + ;; + macintel) + float="-/arch -//x86_64" + ;; + linux64) + float="-/m64" # FIXME + ;; + *) + float="" + ;; +esac + +# Call XC with the appropriate float option. +xc $float $@ diff --git a/unix/hlib/gripes.cl b/unix/hlib/gripes.cl new file mode 100644 index 00000000..d05bedd5 --- /dev/null +++ b/unix/hlib/gripes.cl @@ -0,0 +1,65 @@ +# GRIPES -- Send gripes to the system. Gripes may be gripes, complaints, or +# suggestions. + +procedure gripes (subject) + +string subject { prompt = "Subject" } +file gripesfile = "hlib$gripesfile" +struct gripetext { len = 80 } +file tempfile +struct *list +struct timestring { len = 25 } +bool quit +bool verbose = yes + +begin + # Put gripe in tempfile and only append to the system gripefile if + # we complete normally. Thus if the user aborts us the gripe is + # not recorded. + + tempfile = mktemp ("uparm$gripe") // ".txt" + time (> tempfile) + list = tempfile + if (fscan (list, timestring) != EOF) + delete (tempfile, verify=no) + + # Print gripe report header. + print ("\n------------", >> tempfile) + print ("From: ", envget ("userid"), " ", timestring, >> tempfile) + + # Learn mode is not very useful for the subject string, since new + # gripemail virtually always deals with a different subject. Reset + # the subject string to null so that no prompt will be issued the + # next time we are called. + + print ("Subject: ", subject, >> tempfile) + subject = "" + + if (verbose) { + print ("Enter your gripe(s).\n") + print ("Type <eof> or '.' to quit, '~edit' to go into the editor:") + } + print (" ", >> tempfile) # skip line on output + print (" ") # skip line on terminal + + # Copy user text. Call up editor on temp file if "~edit" escape + # is entered, or any abbreviation thereof, and append file to + # gripesfile after exiting from the editor. + + while (scan (gripetext) != EOF) + if (substr (gripetext,1,1) == '.') { + break + } else if (substr (gripetext,1,2) == "~e") { + edit (tempfile) + clear; type (tempfile) + } else + print (gripetext, >> tempfile) + + # type (tempfile, >> gripesfile) +# UNIX + print ("!!mail iraf@noao.edu < ", osfn(tempfile)) | cl +# VMS + # print ("!mail ", osfn(tempfile), " 5355::iraf") | cl + + delete (tempfile, verify=no) +end diff --git a/unix/hlib/helplog.csh b/unix/hlib/helplog.csh new file mode 100755 index 00000000..8c740fd4 --- /dev/null +++ b/unix/hlib/helplog.csh @@ -0,0 +1,128 @@ +#! /bin/csh +# HELPLOG -- Format, edit, and log a new help digest to the system help file. +# +# Usage: +# +# helplog [none|system|applications] log a new help digest +# helplog -e edit the helpfile (with locking) +# +# The system helpfile is locked for exclusive access while a help digest is +# being logged, or while the helpfile is being edited. Logging can be +# aborted either by typing <ctrl/c>, or by editing the editor with ":q!" +# (i.e., by exiting the editor without modifying the temporary file being +# edited). Help logs are formatted and edited in a small temporary file in +# /tmp and are added at the end of the helpfile only if the task is not +# aborted and the edit modifies the input help log template. To go back and +# edit a previously logged help digest use "helplog -e". +# +# Record Format: +# +# NUMBER: record number, decimal, sequential. +# KEYWORDS: search keywords (eg task/package, category) +# DATE: date help digest logged, unix format date string +# FROM: user login name +# Q: digest of question +# A: digest of answer +# +# New records are added to the tail of the bugfile. Left justify field labels, +# indent text to the first tab stop, one blank line between bug entries. +# +# ---------------------------------------------------------------------------- + +unalias rm set find echo sleep tail sed cmp echo cat mail + +set helpfile = "${iraf}local/help.log" +set arcfile = "/u1/ftp/iraf/v212/help.log" +set tmpfile = "/tmp/help." +set lokfile = "/tmp/help.lok" + +set number = 1 +set keywords = "" +set from = "`whoami`" +set date = "`date`" +#set irafmail = "iraf@iraf.noao.edu valdes" +set irafmail = "sites@tucana.tuc.noao.edu valdes" +set newsgroup = "$1" + +# Get exclusive access to the helpfile. + +if (-e $lokfile) then + find $helpfile -newer $lokfile -exec rm -f $lokfile \; + while (-e $lokfile) + echo "waiting for access to system helpfile" + sleep 15 + end +endif + +date > $lokfile +onintr cleanup + +# If we were called as "helplog -e", simply edit the locked helpfile. + +if ("$1" == "-e") then + vi + $helpfile + goto cleanup +endif + +# Increment the help record number. + +set number = "`grep '^NUMBER:' $helpfile | tail -1 | sed -e 's/^NUMBER:.//'`" +if ("$number" == "") then + set number = 1 +else + set number = "`expr $number + 1`" +endif + +# Format new help entry in a temporary file and edit it. + +set tmpfile = $tmpfile$number +if (-e $tmpfile) then + echo "file $tmpfile already exists" + rm -i $tmpfile + if (-e $tmpfile) then + goto edithelp + endif +endif + +echo "NUMBER: $number" >> $tmpfile +echo "KEYWORDS: $keywords" >> $tmpfile +echo "DATE: $date" >> $tmpfile +echo "FROM: $from" >> $tmpfile +echo "" >> $tmpfile +echo "Q: ..." >> $tmpfile +echo "" >> $tmpfile +echo "A: ..." >> $tmpfile + +edithelp: +cp $tmpfile $tmpfile.ORIG +vi $tmpfile + +# Add new help entry to helpfile (exiting the editor without modifying the file +# causes the help to be discarded). + +cmp -s $tmpfile $tmpfile.ORIG +if ($status) then + while ($newsgroup != "system" && $newsgroup != "applications" && $newsgroup != "none") + echo -n "Newsgroup (none|system|applications): " + set newsgroup = "$<" + end + set keywords = "`grep '^KEYWORDS:' $tmpfile | tail -1 | sed -e 's/^KEYWORDS:.//'`" + echo "" >> $helpfile; cat $tmpfile >> $helpfile + echo "" >> $arcfile; cat $tmpfile >> $arcfile + mail -s "helplog.$number"": $keywords" $irafmail < $tmpfile + if ($newsgroup != "none") then + mail -s "helplog.$number"": $keywords"\ + adass-iraf-{$newsgroup}@iraf.noao.edu < $tmpfile + endif + rm -f $tmpfile $tmpfile.ORIG +else + echo "system helpfile not modified" + rm -f $tmpfile $tmpfile.ORIG +endif + +# Cleanup (vector here on interrupt). + +cleanup: +if (-e $lokfile) then + rm -f $lokfile +endif diff --git a/unix/hlib/helplog.sh b/unix/hlib/helplog.sh new file mode 100755 index 00000000..7fea4288 --- /dev/null +++ b/unix/hlib/helplog.sh @@ -0,0 +1,138 @@ +#!/bin/bash +# +# HELPLOG -- Format, edit, and log a new help digest to the system help file. +# +# Usage: +# +# helplog [none|system|applications] log a new help digest +# helplog -e edit the helpfile (with locking) +# +# The system helpfile is locked for exclusive access while a help digest is +# being logged, or while the helpfile is being edited. Logging can be +# aborted either by typing <ctrl/c>, or by editing the editor with ":q!" +# (i.e., by exiting the editor without modifying the temporary file being +# edited). Help logs are formatted and edited in a small temporary file in +# /tmp and are added at the end of the helpfile only if the task is not +# aborted and the edit modifies the input help log template. To go back and +# edit a previously logged help digest use "helplog -e". +# +# Record Format: +# +# NUMBER: record number, decimal, sequential. +# KEYWORDS: search keywords (eg task/package, category) +# DATE: date help digest logged, unix format date string +# FROM: user login name +# Q: digest of question +# A: digest of answer +# +# New records are added to the tail of the bugfile. Left justify field labels, +# indent text to the first tab stop, one blank line between bug entries. +# +# ---------------------------------------------------------------------------- + +iraf="`/bin/echo ${iraf}/ | tr -s '/'`" + +helpfile="${iraf}local/help.log" +arcfile="/u1/ftp/iraf/v216/help.log" +tmpfile="/tmp/help." +lokfile="/tmp/help.lok" + +number=1 +keywords="" +from="`whoami`" +date="`date`" +#irafmail="iraf@iraf.noao.edu valdes" +irafmail="sites@tucana.tuc.noao.edu valdes" +newsgroup="$1" + +# Cleanup (vector here on interrupt). + +cleanup() { + if [ -e $lokfile ]; then + rm -f $lokfile + fi + exit 0 +} + +# Get exclusive access to the helpfile. + +if [ -e $lokfile ]; then + find $helpfile -newer $lokfile -exec rm -f $lokfile \; + while [ -e $lokfile ]; do + /bin/echo "waiting for access to system helpfile" + sleep 15 + done +fi + +date > $lokfile +trap cleanup 2 + +# If we were called as "helplog -e", simply edit the locked helpfile. + +if [ "$1" = "-e" ]; then + vi + $helpfile + cleanup +fi + +# Increment the help record number. + +number="`grep '^NUMBER:' $helpfile | tail -1 | sed -e 's/^NUMBER:.//'`" +if [ "$number" = "" ]; then + number=1 +else + number="`expr $number + 1`" +fi + +# Format new help entry in a temporary file and edit it. + +SKP=0 +tmpfile=$tmpfile$number +if [ -e $tmpfile ]; then + /bin/echo "file $tmpfile already exists" + rm -i $tmpfile + if [ -e $tmpfile ]; then + SKP=1 + fi +fi + +if [ $SKP = 0 ]; then + /bin/echo "NUMBER: $number" >> $tmpfile + /bin/echo "KEYWORDS: $keywords" >> $tmpfile + /bin/echo "DATE: $date" >> $tmpfile + /bin/echo "FROM: $from" >> $tmpfile + /bin/echo "" >> $tmpfile + /bin/echo "Q: ..." >> $tmpfile + /bin/echo "" >> $tmpfile + /bin/echo "A: ..." >> $tmpfile +fi + +cp $tmpfile $tmpfile.ORIG +vi $tmpfile + +# Add new help entry to helpfile (exiting the editor without modifying the file +# causes the help to be discarded). + +cmp -s $tmpfile $tmpfile.ORIG +if [ $? = 0 ]; then + /bin/echo "system helpfile not modified" + rm -f $tmpfile $tmpfile.ORIG +else + while [ $newsgroup != "system" -a $newsgroup != "applications" -a $newsgroup != "none" ]; do + /bin/echo -n "Newsgroup (none|system|applications): " + read newsgroup + done + keywords="`grep '^KEYWORDS:' $tmpfile | tail -1 | sed -e 's/^KEYWORDS:.//'`" + /bin/echo "" >> $helpfile; cat $tmpfile >> $helpfile + if [ -e $arcfile ]; then + /bin/echo "" >> $arcfile; cat $tmpfile >> $arcfile + fi + mail -s "helplog.$number"": $keywords" $irafmail < $tmpfile + if [ $newsgroup != "none" ]; then + mail -s "helplog.$number"": $keywords"\ + adass-iraf-{$newsgroup}@iraf.noao.edu < $tmpfile + fi + rm -f $tmpfile $tmpfile.ORIG +fi + +cleanup + diff --git a/unix/hlib/i1mach.f b/unix/hlib/i1mach.f new file mode 100644 index 00000000..733a6bb9 --- /dev/null +++ b/unix/hlib/i1mach.f @@ -0,0 +1,661 @@ + INTEGER FUNCTION I1MACH(I) +C +C I/O UNIT NUMBERS. +C +C I1MACH( 1) = THE STANDARD INPUT UNIT. +C +C I1MACH( 2) = THE STANDARD OUTPUT UNIT. +C +C I1MACH( 3) = THE STANDARD PUNCH UNIT. +C +C I1MACH( 4) = THE STANDARD ERROR MESSAGE UNIT. +C +C WORDS. +C +C I1MACH( 5) = THE NUMBER OF BITS PER INTEGER STORAGE UNIT. +C +C I1MACH( 6) = THE NUMBER OF CHARACTERS PER CHARACTER STORAGE UNIT. +C FOR FORTRAN 77, THIS IS ALWAYS 1. FOR FORTRAN 66, +C CHARACTER STORAGE UNIT = INTEGER STORAGE UNIT. +C +C INTEGERS. +C +C ASSUME INTEGERS ARE REPRESENTED IN THE S-DIGIT, BASE-A FORM +C +C SIGN ( X(S-1)*A**(S-1) + ... + X(1)*A + X(0) ) +C +C WHERE 0 .LE. X(I) .LT. A FOR I=0,...,S-1. +C +C I1MACH( 7) = A, THE BASE. +C +C I1MACH( 8) = S, THE NUMBER OF BASE-A DIGITS. +C +C I1MACH( 9) = A**S - 1, THE LARGEST MAGNITUDE. +C +C FLOATING-POINT NUMBERS. +C +C ASSUME FLOATING-POINT NUMBERS ARE REPRESENTED IN THE T-DIGIT, +C BASE-B FORM +C +C SIGN (B**E)*( (X(1)/B) + ... + (X(T)/B**T) ) +C +C WHERE 0 .LE. X(I) .LT. B FOR I=1,...,T, +C 0 .LT. X(1), AND EMIN .LE. E .LE. EMAX. +C +C I1MACH(10) = B, THE BASE. +C +C SINGLE-PRECISION +C +C I1MACH(11) = T, THE NUMBER OF BASE-B DIGITS. +C +C I1MACH(12) = EMIN, THE SMALLEST EXPONENT E. +C +C I1MACH(13) = EMAX, THE LARGEST EXPONENT E. +C +C DOUBLE-PRECISION +C +C I1MACH(14) = T, THE NUMBER OF BASE-B DIGITS. +C +C I1MACH(15) = EMIN, THE SMALLEST EXPONENT E. +C +C I1MACH(16) = EMAX, THE LARGEST EXPONENT E. +C +C TO ALTER THIS FUNCTION FOR A PARTICULAR ENVIRONMENT, +C THE DESIRED SET OF DATA STATEMENTS SHOULD BE ACTIVATED BY +C REMOVING THE C FROM COLUMN 1. ALSO, THE VALUES OF +C I1MACH(1) - I1MACH(4) SHOULD BE CHECKED FOR CONSISTENCY +C WITH THE LOCAL OPERATING SYSTEM. FOR FORTRAN 77, YOU MAY WISH +C TO ADJUST THE DATA STATEMENT SO IMACH(6) IS SET TO 1, AND +C THEN TO COMMENT OUT THE EXECUTABLE TEST ON I .EQ. 6 BELOW. +C +C FOR IEEE-ARITHMETIC MACHINES (BINARY STANDARD), THE FIRST +C SET OF CONSTANTS BELOW SHOULD BE APPROPRIATE, EXCEPT PERHAPS +C FOR IMACH(1) - IMACH(4). +C +C COMMENTS JUST BEFORE THE END STATEMENT (LINES STARTING WITH *) +C GIVE C SOURCE FOR I1MACH. +C + INTEGER IMACH(16), OUTPUT, SMALL(2), I +C/6S +C/7S + SAVE IMACH +C/ + REAL RMACH +C + EQUIVALENCE (IMACH(4),OUTPUT), (RMACH,SMALL(1)) +C +C MACHINE CONSTANTS FOR IEEE ARITHMETIC MACHINES, SUCH AS THE AT&T +C 3B SERIES, MOTOROLA 68000 BASED MACHINES (E.G. SUN 3 AND AT&T +C PC 7300), AND 8087 BASED MICROS (E.G. IBM PC AND AT&T 6300). +C + DATA IMACH( 1) / 5 / + DATA IMACH( 2) / 6 / + DATA IMACH( 3) / 7 / + DATA IMACH( 4) / 6 / + DATA IMACH( 5) / 32 / + DATA IMACH( 6) / 4 / + DATA IMACH( 7) / 2 / + DATA IMACH( 8) / 31 / + DATA IMACH( 9) / 2147483647 / + DATA IMACH(10) / 2 / + DATA IMACH(11) / 24 / + DATA IMACH(12) / -125 / + DATA IMACH(13) / 128 / + DATA IMACH(14) / 53 / + DATA IMACH(15) / -1021 / + DATA IMACH(16) / 1024 / +C +C MACHINE CONSTANTS FOR AMDAHL MACHINES. +C +C DATA IMACH( 1) / 5 / +C DATA IMACH( 2) / 6 / +C DATA IMACH( 3) / 7 / +C DATA IMACH( 4) / 6 / +C DATA IMACH( 5) / 32 / +C DATA IMACH( 6) / 4 / +C DATA IMACH( 7) / 2 / +C DATA IMACH( 8) / 31 / +C DATA IMACH( 9) / 2147483647 / +C DATA IMACH(10) / 16 / +C DATA IMACH(11) / 6 / +C DATA IMACH(12) / -64 / +C DATA IMACH(13) / 63 / +C DATA IMACH(14) / 14 / +C DATA IMACH(15) / -64 / +C DATA IMACH(16) / 63 /, SANITY/987/ +C +C MACHINE CONSTANTS FOR THE BURROUGHS 1700 SYSTEM. +C +C DATA IMACH( 1) / 7 / +C DATA IMACH( 2) / 2 / +C DATA IMACH( 3) / 2 / +C DATA IMACH( 4) / 2 / +C DATA IMACH( 5) / 36 / +C DATA IMACH( 6) / 4 / +C DATA IMACH( 7) / 2 / +C DATA IMACH( 8) / 33 / +C DATA IMACH( 9) / Z1FFFFFFFF / +C DATA IMACH(10) / 2 / +C DATA IMACH(11) / 24 / +C DATA IMACH(12) / -256 / +C DATA IMACH(13) / 255 / +C DATA IMACH(14) / 60 / +C DATA IMACH(15) / -256 / +C DATA IMACH(16) / 255 /, SANITY/987/ +C +C MACHINE CONSTANTS FOR THE BURROUGHS 5700 SYSTEM. +C +C DATA IMACH( 1) / 5 / +C DATA IMACH( 2) / 6 / +C DATA IMACH( 3) / 7 / +C DATA IMACH( 4) / 6 / +C DATA IMACH( 5) / 48 / +C DATA IMACH( 6) / 6 / +C DATA IMACH( 7) / 2 / +C DATA IMACH( 8) / 39 / +C DATA IMACH( 9) / O0007777777777777 / +C DATA IMACH(10) / 8 / +C DATA IMACH(11) / 13 / +C DATA IMACH(12) / -50 / +C DATA IMACH(13) / 76 / +C DATA IMACH(14) / 26 / +C DATA IMACH(15) / -50 / +C DATA IMACH(16) / 76 /, SANITY/987/ +C +C MACHINE CONSTANTS FOR THE BURROUGHS 6700/7700 SYSTEMS. +C +C DATA IMACH( 1) / 5 / +C DATA IMACH( 2) / 6 / +C DATA IMACH( 3) / 7 / +C DATA IMACH( 4) / 6 / +C DATA IMACH( 5) / 48 / +C DATA IMACH( 6) / 6 / +C DATA IMACH( 7) / 2 / +C DATA IMACH( 8) / 39 / +C DATA IMACH( 9) / O0007777777777777 / +C DATA IMACH(10) / 8 / +C DATA IMACH(11) / 13 / +C DATA IMACH(12) / -50 / +C DATA IMACH(13) / 76 / +C DATA IMACH(14) / 26 / +C DATA IMACH(15) / -32754 / +C DATA IMACH(16) / 32780 /, SANITY/987/ +C +C MACHINE CONSTANTS FOR FTN4 ON THE CDC 6000/7000 SERIES. +C +C DATA IMACH( 1) / 5 / +C DATA IMACH( 2) / 6 / +C DATA IMACH( 3) / 7 / +C DATA IMACH( 4) / 6 / +C DATA IMACH( 5) / 60 / +C DATA IMACH( 6) / 10 / +C DATA IMACH( 7) / 2 / +C DATA IMACH( 8) / 48 / +C DATA IMACH( 9) / 00007777777777777777B / +C DATA IMACH(10) / 2 / +C DATA IMACH(11) / 47 / +C DATA IMACH(12) / -929 / +C DATA IMACH(13) / 1070 / +C DATA IMACH(14) / 94 / +C DATA IMACH(15) / -929 / +C DATA IMACH(16) / 1069 /, SANITY/987/ +C +C MACHINE CONSTANTS FOR FTN5 ON THE CDC 6000/7000 SERIES. +C +C DATA IMACH( 1) / 5 / +C DATA IMACH( 2) / 6 / +C DATA IMACH( 3) / 7 / +C DATA IMACH( 4) / 6 / +C DATA IMACH( 5) / 60 / +C DATA IMACH( 6) / 10 / +C DATA IMACH( 7) / 2 / +C DATA IMACH( 8) / 48 / +C DATA IMACH( 9) / O"00007777777777777777" / +C DATA IMACH(10) / 2 / +C DATA IMACH(11) / 47 / +C DATA IMACH(12) / -929 / +C DATA IMACH(13) / 1070 / +C DATA IMACH(14) / 94 / +C DATA IMACH(15) / -929 / +C DATA IMACH(16) / 1069 /, SANITY/987/ +C +C MACHINE CONSTANTS FOR CONVEX C-1. +C +C DATA IMACH( 1) / 5 / +C DATA IMACH( 2) / 6 / +C DATA IMACH( 3) / 7 / +C DATA IMACH( 4) / 6 / +C DATA IMACH( 5) / 32 / +C DATA IMACH( 6) / 4 / +C DATA IMACH( 7) / 2 / +C DATA IMACH( 8) / 31 / +C DATA IMACH( 9) / 2147483647 / +C DATA IMACH(10) / 2 / +C DATA IMACH(11) / 24 / +C DATA IMACH(12) / -128 / +C DATA IMACH(13) / 127 / +C DATA IMACH(14) / 53 / +C DATA IMACH(15) /-1024 / +C DATA IMACH(16) / 1023 /, SANITY/987/ +C +C MACHINE CONSTANTS FOR THE CRAY 1, XMP, 2, AND 3. +C +C DATA IMACH( 1) / 5 / +C DATA IMACH( 2) / 6 / +C DATA IMACH( 3) / 102 / +C DATA IMACH( 4) / 6 / +C DATA IMACH( 5) / 64 / +C DATA IMACH( 6) / 8 / +C DATA IMACH( 7) / 2 / +C DATA IMACH( 8) / 63 / +C DATA IMACH( 9) / 777777777777777777777B / +C DATA IMACH(10) / 2 / +C DATA IMACH(11) / 47 / +C DATA IMACH(12) / -8189 / +C DATA IMACH(13) / 8190 / +C DATA IMACH(14) / 94 / +C DATA IMACH(15) / -8099 / +C DATA IMACH(16) / 8190 /, SANITY/987/ +C +C MACHINE CONSTANTS FOR THE DATA GENERAL ECLIPSE S/200. +C +C DATA IMACH( 1) / 11 / +C DATA IMACH( 2) / 12 / +C DATA IMACH( 3) / 8 / +C DATA IMACH( 4) / 10 / +C DATA IMACH( 5) / 16 / +C DATA IMACH( 6) / 2 / +C DATA IMACH( 7) / 2 / +C DATA IMACH( 8) / 15 / +C DATA IMACH( 9) /32767 / +C DATA IMACH(10) / 16 / +C DATA IMACH(11) / 6 / +C DATA IMACH(12) / -64 / +C DATA IMACH(13) / 63 / +C DATA IMACH(14) / 14 / +C DATA IMACH(15) / -64 / +C DATA IMACH(16) / 63 /, SANITY/987/ +C +C MACHINE CONSTANTS FOR THE HARRIS SLASH 6 AND SLASH 7. +C +C DATA IMACH( 1) / 5 / +C DATA IMACH( 2) / 6 / +C DATA IMACH( 3) / 0 / +C DATA IMACH( 4) / 6 / +C DATA IMACH( 5) / 24 / +C DATA IMACH( 6) / 3 / +C DATA IMACH( 7) / 2 / +C DATA IMACH( 8) / 23 / +C DATA IMACH( 9) / 8388607 / +C DATA IMACH(10) / 2 / +C DATA IMACH(11) / 23 / +C DATA IMACH(12) / -127 / +C DATA IMACH(13) / 127 / +C DATA IMACH(14) / 38 / +C DATA IMACH(15) / -127 / +C DATA IMACH(16) / 127 /, SANITY/987/ +C +C MACHINE CONSTANTS FOR THE HONEYWELL DPS 8/70 SERIES. +C +C DATA IMACH( 1) / 5 / +C DATA IMACH( 2) / 6 / +C DATA IMACH( 3) / 43 / +C DATA IMACH( 4) / 6 / +C DATA IMACH( 5) / 36 / +C DATA IMACH( 6) / 4 / +C DATA IMACH( 7) / 2 / +C DATA IMACH( 8) / 35 / +C DATA IMACH( 9) / O377777777777 / +C DATA IMACH(10) / 2 / +C DATA IMACH(11) / 27 / +C DATA IMACH(12) / -127 / +C DATA IMACH(13) / 127 / +C DATA IMACH(14) / 63 / +C DATA IMACH(15) / -127 / +C DATA IMACH(16) / 127 /, SANITY/987/ +C +C MACHINE CONSTANTS FOR THE IBM 360/370 SERIES, +C THE XEROX SIGMA 5/7/9 AND THE SEL SYSTEMS 85/86. +C +C DATA IMACH( 1) / 5 / +C DATA IMACH( 2) / 6 / +C DATA IMACH( 3) / 7 / +C DATA IMACH( 4) / 6 / +C DATA IMACH( 5) / 32 / +C DATA IMACH( 6) / 4 / +C DATA IMACH( 7) / 2 / +C DATA IMACH( 8) / 31 / +C DATA IMACH( 9) / Z7FFFFFFF / +C DATA IMACH(10) / 16 / +C DATA IMACH(11) / 6 / +C DATA IMACH(12) / -64 / +C DATA IMACH(13) / 63 / +C DATA IMACH(14) / 14 / +C DATA IMACH(15) / -64 / +C DATA IMACH(16) / 63 /, SANITY/987/ +C +C MACHINE CONSTANTS FOR THE INTERDATA 8/32 +C WITH THE UNIX SYSTEM FORTRAN 77 COMPILER. +C +C FOR THE INTERDATA FORTRAN VII COMPILER REPLACE +C THE Z'S SPECIFYING HEX CONSTANTS WITH Y'S. +C +C DATA IMACH( 1) / 5 / +C DATA IMACH( 2) / 6 / +C DATA IMACH( 3) / 6 / +C DATA IMACH( 4) / 6 / +C DATA IMACH( 5) / 32 / +C DATA IMACH( 6) / 4 / +C DATA IMACH( 7) / 2 / +C DATA IMACH( 8) / 31 / +C DATA IMACH( 9) / Z'7FFFFFFF' / +C DATA IMACH(10) / 16 / +C DATA IMACH(11) / 6 / +C DATA IMACH(12) / -64 / +C DATA IMACH(13) / 62 / +C DATA IMACH(14) / 14 / +C DATA IMACH(15) / -64 / +C DATA IMACH(16) / 62 /, SANITY/987/ +C +C MACHINE CONSTANTS FOR THE PDP-10 (KA PROCESSOR). +C +C DATA IMACH( 1) / 5 / +C DATA IMACH( 2) / 6 / +C DATA IMACH( 3) / 7 / +C DATA IMACH( 4) / 6 / +C DATA IMACH( 5) / 36 / +C DATA IMACH( 6) / 5 / +C DATA IMACH( 7) / 2 / +C DATA IMACH( 8) / 35 / +C DATA IMACH( 9) / "377777777777 / +C DATA IMACH(10) / 2 / +C DATA IMACH(11) / 27 / +C DATA IMACH(12) / -128 / +C DATA IMACH(13) / 127 / +C DATA IMACH(14) / 54 / +C DATA IMACH(15) / -101 / +C DATA IMACH(16) / 127 /, SANITY/987/ +C +C MACHINE CONSTANTS FOR THE PDP-10 (KI PROCESSOR). +C +C DATA IMACH( 1) / 5 / +C DATA IMACH( 2) / 6 / +C DATA IMACH( 3) / 7 / +C DATA IMACH( 4) / 6 / +C DATA IMACH( 5) / 36 / +C DATA IMACH( 6) / 5 / +C DATA IMACH( 7) / 2 / +C DATA IMACH( 8) / 35 / +C DATA IMACH( 9) / "377777777777 / +C DATA IMACH(10) / 2 / +C DATA IMACH(11) / 27 / +C DATA IMACH(12) / -128 / +C DATA IMACH(13) / 127 / +C DATA IMACH(14) / 62 / +C DATA IMACH(15) / -128 / +C DATA IMACH(16) / 127 /, SANITY/987/ +C +C MACHINE CONSTANTS FOR PDP-11 FORTRANS SUPPORTING +C 32-BIT INTEGER ARITHMETIC. +C +C DATA IMACH( 1) / 5 / +C DATA IMACH( 2) / 6 / +C DATA IMACH( 3) / 7 / +C DATA IMACH( 4) / 6 / +C DATA IMACH( 5) / 32 / +C DATA IMACH( 6) / 4 / +C DATA IMACH( 7) / 2 / +C DATA IMACH( 8) / 31 / +C DATA IMACH( 9) / 2147483647 / +C DATA IMACH(10) / 2 / +C DATA IMACH(11) / 24 / +C DATA IMACH(12) / -127 / +C DATA IMACH(13) / 127 / +C DATA IMACH(14) / 56 / +C DATA IMACH(15) / -127 / +C DATA IMACH(16) / 127 /, SANITY/987/ +C +C MACHINE CONSTANTS FOR PDP-11 FORTRANS SUPPORTING +C 16-BIT INTEGER ARITHMETIC. +C +C DATA IMACH( 1) / 5 / +C DATA IMACH( 2) / 6 / +C DATA IMACH( 3) / 7 / +C DATA IMACH( 4) / 6 / +C DATA IMACH( 5) / 16 / +C DATA IMACH( 6) / 2 / +C DATA IMACH( 7) / 2 / +C DATA IMACH( 8) / 15 / +C DATA IMACH( 9) / 32767 / +C DATA IMACH(10) / 2 / +C DATA IMACH(11) / 24 / +C DATA IMACH(12) / -127 / +C DATA IMACH(13) / 127 / +C DATA IMACH(14) / 56 / +C DATA IMACH(15) / -127 / +C DATA IMACH(16) / 127 /, SANITY/987/ +C +C MACHINE CONSTANTS FOR THE PRIME 50 SERIES SYSTEMS +C WTIH 32-BIT INTEGERS AND 64V MODE INSTRUCTIONS, +C SUPPLIED BY IGOR BRAY. +C +C DATA IMACH( 1) / 1 / +C DATA IMACH( 2) / 1 / +C DATA IMACH( 3) / 2 / +C DATA IMACH( 4) / 1 / +C DATA IMACH( 5) / 32 / +C DATA IMACH( 6) / 4 / +C DATA IMACH( 7) / 2 / +C DATA IMACH( 8) / 31 / +C DATA IMACH( 9) / :17777777777 / +C DATA IMACH(10) / 2 / +C DATA IMACH(11) / 23 / +C DATA IMACH(12) / -127 / +C DATA IMACH(13) / +127 / +C DATA IMACH(14) / 47 / +C DATA IMACH(15) / -32895 / +C DATA IMACH(16) / +32637 /, SANITY/987/ +C +C MACHINE CONSTANTS FOR THE SEQUENT BALANCE 8000. +C +C DATA IMACH( 1) / 0 / +C DATA IMACH( 2) / 0 / +C DATA IMACH( 3) / 7 / +C DATA IMACH( 4) / 0 / +C DATA IMACH( 5) / 32 / +C DATA IMACH( 6) / 1 / +C DATA IMACH( 7) / 2 / +C DATA IMACH( 8) / 31 / +C DATA IMACH( 9) / 2147483647 / +C DATA IMACH(10) / 2 / +C DATA IMACH(11) / 24 / +C DATA IMACH(12) / -125 / +C DATA IMACH(13) / 128 / +C DATA IMACH(14) / 53 / +C DATA IMACH(15) / -1021 / +C DATA IMACH(16) / 1024 /, SANITY/987/ +C +C MACHINE CONSTANTS FOR THE UNIVAC 1100 SERIES. +C +C NOTE THAT THE PUNCH UNIT, I1MACH(3), HAS BEEN SET TO 7 +C WHICH IS APPROPRIATE FOR THE UNIVAC-FOR SYSTEM. +C IF YOU HAVE THE UNIVAC-FTN SYSTEM, SET IT TO 1. +C +C DATA IMACH( 1) / 5 / +C DATA IMACH( 2) / 6 / +C DATA IMACH( 3) / 7 / +C DATA IMACH( 4) / 6 / +C DATA IMACH( 5) / 36 / +C DATA IMACH( 6) / 6 / +C DATA IMACH( 7) / 2 / +C DATA IMACH( 8) / 35 / +C DATA IMACH( 9) / O377777777777 / +C DATA IMACH(10) / 2 / +C DATA IMACH(11) / 27 / +C DATA IMACH(12) / -128 / +C DATA IMACH(13) / 127 / +C DATA IMACH(14) / 60 / +C DATA IMACH(15) /-1024 / +C DATA IMACH(16) / 1023 /, SANITY/987/ +C +C MACHINE CONSTANTS FOR VAX. +C +C DATA IMACH( 1) / 5 / +C DATA IMACH( 2) / 6 / +C DATA IMACH( 3) / 7 / +C DATA IMACH( 4) / 6 / +C DATA IMACH( 5) / 32 / +C DATA IMACH( 6) / 4 / +C DATA IMACH( 7) / 2 / +C DATA IMACH( 8) / 31 / +C DATA IMACH( 9) / 2147483647 / +C DATA IMACH(10) / 2 / +C DATA IMACH(11) / 24 / +C DATA IMACH(12) / -127 / +C DATA IMACH(13) / 127 / +C DATA IMACH(14) / 56 / +C DATA IMACH(15) / -127 / +C DATA IMACH(16) / 127 /, SANITY/987/ +C +C *** ISSUE STOP 775 IF ALL DATA STATEMENTS ARE COMMENTED... +C IF (SANITY .NE. 987) THEN +C* *** CHECK FOR AUTODOUBLE *** +C SMALL(2) = 0 +C RMACH = 1E13 +C IF (SMALL(2) .NE. 0) THEN +C* *** AUTODOUBLED *** +C IF ( (SMALL(1) .EQ. 1117925532 +C * .AND. SMALL(2) .EQ. -448790528) +C * .OR. (SMALL(2) .EQ. 1117925532 +C * .AND. SMALL(1) .EQ. -448790528)) THEN +C* *** IEEE *** +C IMACH(10) = 2 +C IMACH(14) = 53 +C IMACH(15) = -1021 +C IMACH(16) = 1024 +C ELSE IF ( SMALL(1) .EQ. -2065213935 +C * .AND. SMALL(2) .EQ. 10752) THEN +C* *** VAX WITH D_FLOATING *** +C IMACH(10) = 2 +C IMACH(14) = 56 +C IMACH(15) = -127 +C IMACH(16) = 127 +C ELSE IF ( SMALL(1) .EQ. 1267827943 +C * .AND. SMALL(2) .EQ. 704643072) THEN +C* *** IBM MAINFRAME *** +C IMACH(10) = 16 +C IMACH(14) = 14 +C IMACH(15) = -64 +C IMACH(16) = 63 +C ELSE +C WRITE(*,*)'Adjust autodoubled I1MACH by uncommenting' +C WRITE(*,*)'data statements appropriate for your machine' +C WRITE(*,*)'and setting IMACH(I) = IMACH(I+3) for' +C WRITE(*,*)'I = 11, 12, and 13.' +C STOP 777 +C END IF +C IMACH(11) = IMACH(14) +C IMACH(12) = IMACH(15) +C IMACH(13) = IMACH(16) +C ELSE +C RMACH = 1234567. +C IF (SMALL(1) .EQ. 1234613304) THEN +C* *** IEEE *** +C IMACH(10) = 2 +C IMACH(11) = 24 +C IMACH(12) = -125 +C IMACH(13) = 128 +C IMACH(14) = 53 +C IMACH(15) = -1021 +C IMACH(16) = 1024 +C SANITY = 987 +C ELSE IF (SMALL(1) .EQ. -1271379306) THEN +C* *** VAX *** +C IMACH(10) = 2 +C IMACH(11) = 24 +C IMACH(12) = -127 +C IMACH(13) = 127 +C IMACH(14) = 56 +C IMACH(15) = -127 +C IMACH(16) = 127 +C SANITY = 987 +C ELSE IF (SMALL(1) .EQ. 1175639687) THEN +C* *** IBM *** +C IMACH(10) = 16 +C IMACH(11) = 6 +C IMACH(12) = -64 +C IMACH(13) = 63 +C IMACH(14) = 14 +C IMACH(15) = -64 +C IMACH(16) = 63 +C SANITY = 987 +C ELSE +C WRITE(*,*)'Adjust I1MACH by uncommenting' +C WRITE(*,*)'data statements appropriate for your machine.' +C STOP 777 +C END IF +C END IF +C IMACH( 1) = 5 +C IMACH( 2) = 6 +C IMACH( 3) = 7 +C IMACH( 4) = 6 +C IMACH( 5) = 32 +C IMACH( 6) = 4 +C IMACH( 7) = 2 +C IMACH( 8) = 31 +C IMACH( 9) = 2147483647 +C SANITY = 987 +C END IF +C IF (I .LT. 1 .OR. I .GT. 16) GO TO 30 + IF (I .LT. 1 .OR. I .GT. 16) THEN + I1MACH = -1 + RETURN + END IF +C + I1MACH = IMACH(I) +C/6S +C/7S + IF (I .EQ. 6) I1MACH = 1 +C/ + RETURN +C +C 30 WRITE(*,*) 'I1MACH(I): I =',I,' is out of bounds.' +C +C* CALL FDUMP +C +C STOP +C +C* /* C source for I1MACH -- remove the * in column 1 */ +C* /* Note that some values may need changing -- see the comments below. */ +C*#include <stdio.h> +C*#include <float.h> +C*#include <limits.h> +C*#include <math.h> +C* +C*long i1mach_(long *i) +C*{ +C* switch(*i){ +C* case 1: return 5; /* standard input unit -- may need changing */ +C* case 2: return 6; /* standard output unit -- may need changing */ +C* case 3: return 7; /* standard punch unit -- may need changing */ +C* case 4: return 0; /* standard error unit -- may need changing */ +C* case 5: return 32; /* bits per integer -- may need changing */ +C* case 6: return 1; /* Fortran 77 value: 1 character */ +C* /* per character storage unit */ +C* case 7: return 2; /* base for integers -- may need changing */ +C* case 8: return 31; /* digits of integer base -- may need changing */ +C* case 9: return LONG_MAX; +C* case 10: return FLT_RADIX; +C* case 11: return FLT_MANT_DIG; +C* case 12: return FLT_MIN_EXP; +C* case 13: return FLT_MAX_EXP; +C* case 14: return DBL_MANT_DIG; +C* case 15: return DBL_MIN_EXP; +C* case 16: return DBL_MAX_EXP; +C* } +C* +C* fprintf(stderr, "invalid argument: i1mach(%ld)\n", *i); +C* exit(1); +C* return 0; /* for compilers that complain of missing return values */ +C* } + END diff --git a/unix/hlib/install.csh b/unix/hlib/install.csh new file mode 100755 index 00000000..1aa08984 --- /dev/null +++ b/unix/hlib/install.csh @@ -0,0 +1,3484 @@ +#!/bin/csh +# +# INSTALL -- Install IRAF on a UNIX/IRAF host. May also be run after the +# initial installation as a consistency check to verify that all the necessary +# links and file permissions are still in place (e.g., after updating UNIX +# itself). +# +# Installation: +# This file should be installed in the $iraf directory, if it is being +# installed as a patch to a distributed IRAF system the existing iraf$install +# script should be backed up and then this file used to replace it. Once +# in place the script may be made executable with the command +# +# % chmod 755 install +# +# Please consult the IRAF web pages for the latest information on bug fixes +# to this script. +# +# +# Usage: install [-n] [-r rootdir] [-i imdir] [-b localbindir] \ +# [-R oldroot] [-I oldimdir] [-u username (e.g., 'iraf')] +# [-l locallibdir] [-m mach (e.g., 'sparc', 'ssun') ] +# [-noedit] +# +# Example: +# % su +# % cd $hlib +# % ./install -n +# % ./install +# +# If run with no arguments, INSTALL will make an informed guess and prompt +# with this value; type <return> to accept the value, or enter a new value. +# +# Use "install -n" to do a dry run to see what the would be done, without +# actually modifying the host system and IRAF configuration files. To do the +# actual installation one must be superuser, but anyone can run "install -n" +# to see what it would do. +# +# ---------------------------------------------------------------------------- + + +unset noclobber +onintr cleanup_ +unalias cd cp cmp echo ln mv rm sed set grep ls chmod chown pwd touch sort which + +setenv path "(/sbin /usr/sbin /bin /usr/bin /usr/5bin /usr/ucb /etc /usr/etc $path /usr/local/bin /opt/local/bin /local/bin /home/local/bin /usr/openwin/bin /usr/X11R6/bin /usr/X11/bin)" + +# set echo + + + +############################################################################## +# START OF MACHDEP DEFINITIONS. +############################################################################## + +# MACHDEP definitions which may be reset below. +set LS = "/bin/ls" # [MACHDEP] +set LSDF = "-lLtgs" # [MACHDEP] + +set VERSION = "V2.16" +set V = `echo $VERSION | cut -c2-5` +set hmach = "INDEF" +set shlib = "no" +set pciraf = 0 +set suniraf = 0 +set do_tapecaps = 0 +set do_tapes = 1 +set do_pipes = 0 +set has_pipes = 1 +set hilite = 1 +set no_edit = 0 + + +# Utility aliases. +#alias PUT "mv -f \!*; chown $user \!$ " # [MACHDEP] +alias PUT "cp -p \!*; chown $user \!$ " # [MACHDEP] +alias BOLD_ON "(if ($hilite) tput bold)" +alias BOLD_OFF "(if ($hilite) tput sgr0)" +alias SO_ON "(if ($hilite) tput smso)" +alias SO_OFF "(if ($hilite) tput sgr0)" + +alias DO_OK "(echo -n '[ '; BOLD_ON; echo -n ' OK '; BOLD_OFF; echo ' ]')" +alias DO_WARN "(echo -n '[ '; BOLD_ON; echo -n 'WARN'; BOLD_OFF; echo ' ]')" +alias DO_FAIL "(echo -n '[ '; SO_ON; echo -n 'FAIL'; SO_OFF; echo ' ]')" + +alias MSG "(echo -n ' ';BOLD_ON;echo -n '*** ';BOLD_OFF; echo \!*)" +alias MSGB "(echo -n ' ';BOLD_ON;echo -n '*** ';echo \!*; BOLD_OFF)" +alias MSGN "(echo -n ' ';BOLD_ON;echo -n '*** ';BOLD_OFF; echo -n \!*)" +alias MSGBN "(echo -n ' ';BOLD_ON;echo -n '*** ';echo -n \!*; BOLD_OFF)" +alias ERRMSG "(echo -n ' ';BOLD_ON;echo -n 'ERROR: ' ;BOLD_OFF; echo \!*)" +alias WARNING "(echo -n ' ';BOLD_ON;echo -n 'WARNING: ';BOLD_OFF; echo \!*)" +alias NEWLINE "(echo '')" + +alias PROMPT "(BOLD_ON; echo -n \!*; BOLD_OFF; echo -n ' (yes): ')" +alias PROMPT_N "(BOLD_ON; echo -n \!*; BOLD_OFF; echo -n ' (no): ')" + +alias RM "rm -rf" +alias LN "ln -s" + + +#---------------------------------- +# Determine platform architecture. +#---------------------------------- + +set UNAME="" +if (-e /usr/bin/uname) then + set uname_cmd = /usr/bin/uname + set UNAME=`/usr/bin/uname | tr '[A-Z]' '[a-z]'` +else if (-e /bin/uname) then + set uname_cmd = /bin/uname + set UNAME=`/bin/uname | tr '[A-Z]' '[a-z]'` +else + WARNING "No 'uname' command found to determine architecture." + exit 1 +endif + +set WHOAMI=`whoami` +if (-e /usr/bin/whoami) then + set WHOAMI=`/usr/bin/whoami` +else if (-e /usr/ucb/whoami) then + set WHOAMI=`/usr/ucb/whoami` +else + WARNING "No 'whoami' command found for this architecture." + exit 1 +endif + + + + +switch ($UNAME) + case sunos: + set do_tapecaps = 1 + if (`$uname_cmd -m | cut -c2-` != "86pc") then + set suniraf = 1 + setenv OSVERSION `$uname_cmd -r | cut -c1` + if ($OSVERSION == 5) then # Sparc Solaris + set mach = "ssun" + set hmach = "ssol" + set TAPES = "/dev/*st[0-7]*" + set shlib = "no" + set LIBFILES = "" + set LS = "/usr/ucb/ls" + else # Sparc SunOS 4.x + set mach = "sparc" + set hmach = "sparc" + set TAPES = "/dev/*st[0-7]*" + set shlib = "no" + set LIBFILES = "" + endif + else + set pciraf = 1 + set mach = "sunos" # Intel Solaris + set hmach = "sunos" + set TAPES = "/dev/*st[0-7]*" + set shlib = "no" + set LIBFILES = "" + set LSDF = "-lLts" + endif + breaksw + case linux: + set pciraf = 1 + set do_tapecaps = 1 + if ($?IRAFARCH == 1) then + # Let IRAFARCH override the default for the machine. + set mach = "$IRAFARCH" + set hmach = "$IRAFARCH" + else if (`$uname_cmd -m` == "x86_64") then # Linux x86_64 + set mach = "linux64" + set hmach = "linux64" + else if (`$uname_cmd -m` == "ppc") then # LinuxPPC + if (-f /etc/redhat-release) then + set mach = "linuxppc" + set hmach = "linuxppc" + endif + else + set mach = "linux" + set hmach = "linux" + endif + set TAPES = "/dev/*st[0-7]" + set shlib = "no" + set LIBFILES = "" + breaksw + case freebsd: # FreeBSD 4.0 + set do_tapecaps = 1 + setenv OSVERSION `$uname_cmd -r | cut -c1` + if ($OSVERSION == 5) then # Sparc Solaris + set has_pipes = 0 + endif + set mach = "freebsd" + set hmach = "freebsd" + set TAPES = "/dev/*st[0-7]*" + set shlib = "no" + set LIBFILES = "" + set pciraf = 1 + breaksw + case darwin: # Mac OS X + case macosx: + case macintel: + case ipad: + # Mac OS X doesn't appear to have tape support + # at this point. + set do_tapecaps = 0 + set do_tapes = 0 + set has_pipes = 0 + if ($?IRAFARCH == 1) then + # Let IRAFARCH override the default for the machine. + set mach = "$IRAFARCH" + set hmach = "$IRAFARCH" + else if (`$uname_cmd -m` == "x86_64") then # 64-bit OSX + set mach = "macintel" + set hmach = "macintel" + else if (`$uname_cmd -m |cut -c1-4` == "iPad") then # iPad/iPod OSX + set mach = "ipad" + set hmach = "ipad" + else # 32-bit OSX + set mach = "macosx" + set hmach = "macosx" + endif + set TAPES = "/dev/*st[0-7]*" + set shlib = "no" + set LIBFILES = "" + set pciraf = 1 + breaksw + case hp-ux: # HP/UX 10.20 + set mach = "hp700" + set hmach = "hp700" + set TAPES = "/dev/*st[0-7]*" + set shlib = "no" + set LIBFILES = "" + set LSDF = "-lLts" + + # reset for HP/UX + alias PUT 'mv -f \!*; chown $user \!$ ' + breaksw + case irix: # IRIX 6.5 + case irix64: + set mach = "irix" + set hmach = "irix" + set TAPES = "/dev/*st[0-7]*" + set shlib = "no" + set LIBFILES = "" + set LSDF = "-lLts" + breaksw + case aix: # AIX V4 + set mach = "rs6000" + set hmach = "rs6000" + set TAPES = "/dev/*st[0-7]*" + set shlib = "no" + set LIBFILES = "" + set LSDF = "-lLts" + breaksw + case osf1: # Alpha OSF/1 + set mach = "alpha" + set hmach = "alpha" + set TAPES = "/dev/*st[0-7]*" + set shlib = "yes" + set LIBFILES = "libiraf.so" + breaksw + case ultrix: # DEC Ultrix + set mach = "ultrix" + set hmach = "ultrix" + set TAPES = "/dev/*st[0-7]*" + set shlib = "no" + set LIBFILES = "" + breaksw + + default: + # We don't want to be limited by the CYGWIN version numbering so + # look for a truncated match here before punting. + set os_mach = `echo $UNAME | cut -c1-6` + if ("$os_mach" == "cygwin") then + set mach = "cygwin" + set hmach = "cygwin" + set shlib = "no" + set LIBFILES = "" + set TAPES = "" # no tape support + set do_tapecaps = 0 + set do_tapes = 0 + set has_pipes = 0 + breaksw + + else + ERRMSG "Unable to determine platform architecture." + exit 1 + endif +endsw + +############################################################################## +# END OF MACHDEP DEFINITIONS. +############################################################################## + + +#============================================================================= +# Declarations and initializations. +#============================================================================= + +set W = '\([ "]\)' # match a blank, tab, or quote +set TEMP = "/tmp/iraf_install.$$" +set exec = yes +set user = iraf +set port = 0 + +set imdir = "" # Initialize paths +set lbin = "" +set llib = "" +set cache = "" +set o_iraf = "" +set o_imdir = "" +set o_cache = "" + + + +#============================================================================= +# Initialize the path variables. +#============================================================================= + +set valid_iraf = 1 +if ($?iraf == 1) then + if (! (-d $iraf) || ! (-r $iraf) || \ + ("`$LS -lLd $iraf |& grep '.rw[xs]r.[xs]r.[xt]'`" == "") || \ + ("`$LS -lLd $iraf/.. |& grep '.rw[xs]r.[xs]r.[xt]'`" == "")) then + set valid_iraf = 0 + endif + if ($valid_iraf == 0) then + NEWLINE + BOLD_ON + echo -n ' ERROR: invalid $iraf value ' + echo "($iraf)" + BOLD_OFF + NEWLINE + MSG ' The iraf directory tree set by your environment variable, $iraf' + MSG " is not generally readable. This will prevent most users from" + MSG " being able to read iraf files, especially the binaries! " + NEWLINE + MSG " Please reset the permissions on the tree and try again..." + NEWLINE + exit 1 + endif + if (! -d $iraf) then + NEWLINE + WARNING "Env definition of iraf root is incorrect, resetting." + NEWLINE + setenv iraf "" + endif + +else + setenv iraf "" +endif + + +#============================================================================= +# Process any command line arguments. +#============================================================================= +while ("$1" != "") + switch ("$1") + case -n: # no execute + alias PUT "diff \!$ \!^; rm -f $TEMP" + set exec = no + breaksw + case -noedit: # no-edit installations + set no_edit = 1 + breaksw + case -port: # do a "port" install + set port = 1 + breaksw + case -hl: # disable highlighting + set hilite = 0 + alias BOLD_ON "(if ($hilite) tput bold)" + alias BOLD_OFF "(if ($hilite) tput sgr0)" + alias SO_ON "(if ($hilite) tput smso)" + alias SO_OFF "(if ($hilite) tput rmso)" + breaksw + case +hl: # enable highlighting + set hilite = 1 + alias BOLD_ON "(if ($hilite) tput bold)" + alias BOLD_OFF "(if ($hilite) tput sgr0)" + alias SO_ON "(if ($hilite) tput smso)" + alias SO_OFF "(if ($hilite) tput rmso)" + breaksw + case -f: # create fifo pipes + set do_pipes = 1 + breaksw + case -h: # print help summary + goto Usage + case -help: # print help summary + goto Usage + case --help: # print help summary + goto Usage + case -b: # set local bin directory + if ("$2" != "") then + shift + else + ERRMSG "missing argument to '-b <localbindir>' switch" + exit 1 + endif + set lbin = "$1" + breaksw + case -l: # set local lib directory + if ("$shlib" == "yes") then + if ("$2" != "") then + shift + else + ERRMSG "missing argument to '-l <locallibdir>' switch" + exit 1 + endif + set llib = "$1" + else + set llib = "" + shift + endif + breaksw + case -c: # set cache directory + if ("$2" != "") then + shift + else + ERRMSG "missing argument to '-c <cache>' switch" + exit 1 + endif + set cache = "$1" + breaksw + case -i: # set imdir directory + if ("$2" != "") then + shift + else + ERRMSG "missing argument to '-i <imdir>' switch" + exit 1 + endif + set imdir = "$1" + breaksw + case -m: # set machine type + if ("$2" != "") then + shift + else + ERRMSG "missing argument to '-m <mach>' switch" + exit 1 + endif + set mach = "$1" + if ("$1" == "ssun") then + set hmach = "ssol" + else + set hmach = "$1" + endif + setenv IRAFARCH $mach + breaksw + case -r: # set root directory + if ("$2" != "") then + shift + else + ERRMSG "missing argument to '-r <irafdir>' switch" + exit 1 + endif + setenv iraf "$1" + breaksw + case -C: # set old cache directory + if ("$2" != "") then + shift + else + ERRMSG "missing argument to '-C <o_cache>' switch" + exit 1 + endif + set o_cache = "$1" + breaksw + case -I: # set old imdir directory + if ("$2" != "") then + shift + else + ERRMSG "missing argument to '-I <o_imdir>' switch" + exit 1 + endif + set o_imdir = "$1" + breaksw + case -R: # set old root directory + if ("$2" != "") then + shift + else + ERRMSG "missing argument to '-R <o_iraf>' switch" + exit 1 + endif + set o_iraf = "$1" + breaksw + case -u: # set user name for iraf, e.g, 'iraf' + if ("$2" != "") then + shift + else + ERRMSG "missing argument to '-u <irafowner>' switch" + exit 1 + endif + set user = "$1" + breaksw + default: + ERRMSG "install: unknown argument $1" + goto Usage + breaksw + endsw + + if ("$2" == "") then + break + else + shift + endif +end + + + +#============================================================================= +# See whether we're gonna work ... +#============================================================================= +if ($exec == yes && $WHOAMI != "root" && $mach != "cygwin") then + clear + NEWLINE + BOLD_ON + echo " IRAF "$VERSION" System Installation" + echo " ================================" + BOLD_OFF + NEWLINE ; NEWLINE + BOLD_ON + echo "======================================================================" + echo -n "WARNING" + BOLD_OFF + echo ": This script must be run as root for changes to take effect." + echo " If you decide to proceed, the 'no-op' flag will be enabled" + echo " by default. No changes will be made to the system files," + echo " however you will be able to see what the script does." + BOLD_ON + echo "======================================================================" + BOLD_OFF + NEWLINE +no_op_proc_: + PROMPT "Proceed with a no-op installation anyway? " + setenv ans "$<" + if ("$ans" == "n" || "$ans" == "N" || "$ans" == "no") then + exit 0 + endif + if ("$ans" != "" && "$ans" != "y" && "$ans" != "Y" && "$ans" != "yes") then + echo "Huh?" + goto no_op_proc_ + endif + alias PUT "diff \!$ \!^; rm -f $TEMP" + set exec = no +endif + + +#============================================================================= +# Initialize the screen output. +#============================================================================= +clear +NEWLINE +BOLD_ON +echo " IRAF "$VERSION" System Installation" +echo " ================================" +BOLD_OFF +NEWLINE + +echo " Welcome to the IRAF installation script. This script will first" +echo " prompt you for several needed path names. The system will be verified" +echo " for proper structure before the actual install begins, all error must" +echo " must be corrected before you will be allowed to continue. Recommend-" +echo " ations for fixing problems will be made but no corrective action will" +echo " be taken directly. Once properly installed, you will be allowed to" +echo " do some minimal configuration." + +# Print a quick usage summary. +NEWLINE +echo -n " For each prompt: hit " +BOLD_ON ; echo -n "<CR>"; BOLD_OFF; +echo -n " to accept the default value, " +BOLD_ON ; echo -n "'q'" ; BOLD_OFF +echo ' to quit,' + +echo -n " or " +BOLD_ON ; echo -n "'help'"; BOLD_OFF +echo -n " or "; +BOLD_ON ; echo -n "'?'"; BOLD_OFF +echo -n " to print an explanation of the prompt." +NEWLINE +NEWLINE + + +#============================================================================= +# Prompt the user for needed paths. +#============================================================================= + +NEWLINE +BOLD_ON +echo "========================================================================" +echo "===================== Query for System Settings ======================" +echo "========================================================================" +BOLD_OFF +NEWLINE + + +#============================================================================= +# Set $iraf, the new root directory for iraf. The system must already have +# been read in at this directory (e.g., /iraf/iraf), but we assume that no +# files have yet been modified. +#============================================================================= + +if ("$iraf" == "") then + + if (-e "IRAF.NET" && -e "IS.PORT.GEN") then + # Use the current directory. + set d_iraf = `pwd` + + else + # Make a guess at what the new root directory is. + set d_iraf = "" + if (-d /iraf/iraf) then + set d_iraf = /iraf/iraf + else if (-d /iraf) then + set d_iraf = /iraf + else if (-d /usr/local/iraf) then + set d_iraf = /usr/local/iraf + else if (-d /usr/iraf) then + set d_iraf = /usr/iraf + else + # Search for an iraf directory. + set IDIRS = "/u* /local /home /opt /iraf* /" + foreach i ($IDIRS) + if (-d $i/iraf) then + set d_iraf = "$i/iraf" + break + endif + end + endif + + if ("$d_iraf" == "") then + set d_iraf = /iraf/iraf + endif + endif +else + set d_iraf = $iraf +endif + +# If the given directory doesn't exist, compute the root directory relative +# to $iraf/unix/hlib (our current directory, presumably). + +if (! -d $d_iraf) then + set d_iraf = `(cd ../..;pwd)` +endif + +iraf_prompt: + set d_iraf = `echo $d_iraf | sed -e 's+/\(["]*\)$+\1+'` + + BOLD_ON ; echo -n "New iraf root directory " ; BOLD_OFF + echo -n "($d_iraf): " + setenv iraf "$<" + if ("$iraf" == "") then + setenv iraf "$d_iraf" + else if ("$iraf" == "quit" || "$iraf" == "q") then + exit 0 + else if ("$iraf" == "help" || "$iraf" == "h" || "$iraf" == "?") then + NEWLINE + MSG "The iraf root directory is the place where the AS distribution" + MSG "file was unpacked; it contains subdirectories such as 'dev'," + MSG "'local', 'noao', 'pkg', and the file IS.PORT.GEN." + + set di = $d_iraf + if (((-d $di/dev) && (-d $di/pkg) && (-d $di/noao))) then + MSG "" + MSG "The default path '$d_iraf' appears to be correct ..." + else + MSG "" + MSG "The default path '$d_iraf' appears to be incorrect ..." + endif + NEWLINE + + setenv iraf $d_iraf + goto iraf_prompt + endif + + +# See whether this looks like a reasonable $iraf directory +if (! (-e $iraf)) then + NEWLINE + MSG "The '$iraf' directory doesn't exist." + MSG "Please try again..." + NEWLINE + goto iraf_prompt + +else if (! (-r $iraf) || \ + ("`$LS -lLd $iraf |& grep '.rw[xs]r.[xs]r.[xt]'`" == "") || \ + ("`$LS -lLd $iraf/.. |& grep '.rw[xs]r.[xs]r.[xt]'`" == "")) then + NEWLINE + MSG "The iraf directory tree is not generally readable." + MSG "This will prevent most users from being able to read iraf" + MSG "files, especially the binaries\\! " + MSG "Please reset the permissions and try again..." + NEWLINE + exit 1 + +else if (! ((-d $iraf/dev) && (-d $iraf/pkg) && (-d $iraf/noao))) then + NEWLINE + MSG "The definition of '$iraf' looks incorrect." + MSG "" + MSG "The iraf root directory is the place where the AS distribution" + MSG "file was unpacked; it contains subdirectories such as 'dev'," + MSG "'local', 'noao', 'pkg', and the file IS.PORT.GEN." + MSG "" + if (((-d $iraf/iraf/dev) && (-d $iraf/iraf/pkg) && (-d $iraf/iraf/noao))) then + MSG "The path '$iraf/iraf' appears to be correct ..." + set iraf = $iraf/iraf + else if (((-d $iraf/../dev) && (-d $iraf/../pkg) && (-d $iraf/../noao))) then + if (-d $iraf/..) then + pushd $iraf/.. >& /dev/null + setenv ip `echo $cwd` + MSG "The path '$ip' appears to be correct ..." + set iraf = $ip + popd >& /dev/null + endif + endif + MSG "" + MSG "Please verify your path and try again ..." + NEWLINE + goto iraf_prompt +endif + + +#============================================================================= +# Get the values of o_iraf and o_imdir from the current mkiraf.csh file, if +# not already otherwise defined. +#============================================================================= + +cd $iraf/unix/hlib +set WS = '[ ]' +if ("$o_iraf" == "") then + set o_iraf =\ + `grep "^set$WS*iraf" mkiraf.csh | sed -e "s+^.*=$WS*++" | sed -e 's+"++g'` +endif +if ("$o_imdir" == "") then + set o_imdir =\ + `grep "^set$WS*imdir" mkiraf.csh | sed -e "s+^.*=$WS*++" | sed -e 's+"++g'` +endif +if ("$o_cache" == "") then + set o_cache =\ + `grep "^set$WS*cachedir" mkiraf.csh | sed -e "s+^.*=$WS*++" | sed -e 's+"++g'` +endif + +# Strip any trailing / in the pathname to be matched, so that the trailing /, +# if present, will be LEFT in the occurrence of the path in the file. + +set o_iraf = `echo $o_iraf | sed -e 's+/\(["]*\)$+\1+'` +set o_imdir = `echo $o_imdir | sed -e 's+/\(["]*\)$+\1+'` +set o_cache = `echo $o_cache | sed -e 's+/\(["]*\)$+\1+'` + + +#============================================================================= +# Get the iraf parent directory to be used below. +#============================================================================= +pushd $iraf/.. >& /dev/null ; set iraf_p = `echo $cwd` ; popd >& /dev/null + + +#============================================================================= +# Set $imdir, the default user image storage root directory. Each user imdir +# will be a subdirectory of this directory by default, when MKIRAF is run. +# Since bulk image data can consume hundreds of megabytes of disk space, IRAF +# likes to keep such data on a public scratch device, which is probably not +# backed up, which has a short file expiration interval, and possibly which +# has been configured (newfs/mkfs) with a large block size for fast seq. i/o. +#============================================================================= + +if ("$imdir" == "") then + + if (-d $o_imdir) then + set d_imdir = $o_imdir + else if (-d /iraf) then + set d_imdir = /iraf/imdirs + else if (-d /home/iraf) then + set d_imdir = /home/iraf/imdirs + else if (-d $iraf_p) then + set d_imdir = $iraf_p/imdirs + else if (-d /usr/local/iraf) then + set d_imdir = /usr/local/iraf/imdirs + else + set d_imdir = /tmp + endif + +imdir_prompt: + BOLD_ON ; echo -n "Default root image storage directory " ; BOLD_OFF + echo -n "($d_imdir): " + set imdir = "$<" + if ("$imdir" == "") then + set imdir = "$d_imdir" + else if ("$imdir" == "quit" || "$imdir" == "q") then + exit 0 + else if ("$imdir" == "help" || "$imdir" == "h" || "$imdir" == "?") then + NEWLINE + MSG "The root imdir directory is the default image storage dir" + MSG 'for OIF images (i.e. the ".imh" format) used by all users on' + MSG "this system. Individual user dirs will be created as needed." + MSG "It should be some large data disk on the machine which has a" + MSG "regular backup, scratch or tmp disks should be avoided or data" + MSG "may be lost." + MSG "" + MSG 'The "HDR$" syntax should not be used at this stage, please' + MSG 'edit the hlib$mkiraf.csh script after installation if you wish' + MSG "to make this the default." + NEWLINE + setenv imdir $d_imdir + goto imdir_prompt + endif + + # Cannot have iraf and imdir the same. + if ("$imdir" == "$iraf") then + NEWLINE + MSG "The definition of imdir cannot be the same as the iraf" + MSG "root, please choose a different directory. Ideally this" + MSG "should be some large data area on your system or a user" + MSG "data area such as /home, /users, /u1, etc." + NEWLINE + NEWLINE + goto imdir_prompt + endif +endif + + +#============================================================================= +# Set $cache, the default user file cache root directory. +#============================================================================= + +if ("$cache" == "") then + + if (-d /iraf) then + set d_cache = /iraf/cache + else if (-d /home/iraf) then + set d_cache = /home/iraf/cache + else if (-d $iraf_p) then + set d_cache = $iraf_p/cache + else if (-d /usr/local/iraf) then + set d_cache = /usr/local/iraf/cache + else + set d_cache = /tmp + endif + +cache_prompt: + BOLD_ON ; echo -n "Default root cache directory " ; BOLD_OFF + echo -n "($d_cache): " + set cache = "$<" + if ("$cache" == "") then + set cache = "$d_cache" + else if ("$cache" == "quit" || "$cache" == "q") then + exit 0 + else if ("$cache" == "help" || "$cache" == "h" || "$cache" == "?") then + NEWLINE + MSG "The root cache directory is the default storage directory for" + MSG "URL-referenced files. Individual user dirs will be created as" + MSG "needed. It should be some large data disk on the machine " + MSG "which has a regular backup, scratch or tmp disks should be" + MSG "avoided or data may be lost." + MSG "" + NEWLINE + setenv cache $d_cache + goto cache_prompt + endif + + # Cannot have iraf and cache the same. + if ("$cache" == "$iraf") then + NEWLINE + MSG "The definition of cache cannot be the same as the iraf" + MSG "root, please choose a different directory. Ideally this" + MSG "should be some large data area on your system or a user" + MSG "data area such as /home, /users, /u1, etc." + NEWLINE + NEWLINE + goto cache_prompt + endif +endif + + +#============================================================================= +# Get UNIX directory where HSI commands (links) are to be installed, if not +# set on command line. IRAF will only install a very few new commands in this +# directory. Ideally it should be a directory on the standard user $path, +# so that users do not have to customize their . files just to run IRAF. +#============================================================================= + +if ("$lbin" == "") then + # Look around and come up with a likely candidate directory. + if (-d /usr/local/bin) then + set d_lbin = /usr/local/bin + else if (-d /opt/local/bin) then + set d_lbin = /opt/local/bin + else if (-d /local/bin) then + set d_lbin = /local/bin + else + set d_lbin = /usr/bin + endif + +lbin_prompt: + BOLD_ON ; echo -n "Local unix commands directory " ; BOLD_OFF + echo -n "($d_lbin): " + set lbin = "$<" + if ("$lbin" == "") then + set lbin = "$d_lbin" + else if ("$lbin" == "quit" || "$lbin" == "q") then + exit 0 + else if ("$lbin" == "help" || "$lbin" == "h" || "$lbin" == "?") then + NEWLINE + MSG "The local bin directory is the system directory into which the" + MSG "iraf commands (e.g. cl, mkiraf, mkpkg, etc) will be installed" + MSG "as symlinks to files in the iraf tree. This should be a common" + MSG "dir such as /usr/local/bin which will likely be found in every" + MSG "user's path." + NEWLINE + setenv lbin $d_lbin + goto lbin_prompt + endif + + # Create the local bin directory if it doesn't exist? + if (! (-e $lbin)) then + PROMPT " Sorry, but $lbin does not exist, create it? " + set ans = "$<" + if ("$ans" == "" || "$ans" == "y" || "$ans" == "yes") then + echo " Creating directory $lbin..." + if ($exec == yes) then + mkdir $lbin + endif + if (! (-e $lbin) && $exec == yes) then + ERRMSG "Cannot create $lbin, please retry..." + setenv lbin $d_lbin + goto lbin_prompt + endif + else + goto lbin_prompt + endif + NEWLINE + endif +endif + + + +#============================================================================= +# Get UNIX directory where IRAF shared library should be installed. +#============================================================================= + +if ("$shlib" == "yes") then + if ("$llib" == "") then + # Look around and come up with a likely candidate directory. + if (-d /usr/local/lib) then + set d_llib = /usr/local/lib + else if (-d /local/lib) then + set d_llib = /local/lib + else if (-d /usr/lib) then + set d_llib = /usr/lib + else if (-d /var/shlib) then + set d_llib = /var/shlib + else + set d_llib = /usr/shlib + endif + +llib_prompt: + BOLD_ON ; echo -n "Directory for local shared libraries " ; BOLD_OFF + echo -n "($d_llib): " + set llib = "$<" + if ("$llib" == "") then + set llib = "$d_llib" + else if ("$llib" == "quit" || "$llib" == "q") then + exit 0 + else if ("$llib" == "help" || "$llib" == "h" || "llib" == "?") then + NEWLINE + MSG "The local lib directory is the system directory into which" + MSG "the IRAF shared library will be installed as a symlink to" + MSG "the library in the iraf tree. The default prompt dir is" + MSG "one which will be used on this system w/out special user" + MSG "setup, choose another one with care." + NEWLINE + setenv llib $d_llib + goto llib_prompt + endif + + # Create the local lib directory if it doesn't exist? + if (! (-e $llib)) then + PROMPT " Sorry, but $llib does not exist, create it? " + set ans = "$<" + if ("$ans" == "" || "$ans" == "y" || "$ans" == "yes") then + echo " Creating directory $llib..." + if ($exec == yes) then + mkdir $llib + endif + if (! (-e $llib) && $exec == yes) then + ERRMSG "Cannot create $lbin, please retry..." + setenv llib $d_llib + goto llib_prompt + endif + else + goto llib_prompt + endif + NEWLINE + endif + endif +endif + + + +############################################################################## +# +# Step 1: VERIFICATION +# +# Run some simple checks to be sure the system was unpacked correctly +# and the settings used are correct. Verification tests include: +# +# o Verify the machine type and document settings. +# o Check iraf root directory looks correct. +# o Check iraf root and imdir aren't the same +# o Check iraf user exists in passwd file/NIS. +# o Check iraf user login path in passwd file is iraf$local. +# o Check iraf tree for proper structure. +# o Check binary dirs are both populated correctly. +# o Check that the local bin directory exists. +# o Check that the local lib directory exists. +# +# An error at this stage will cause the script to exit so we can reset +# and try again. +# +############################################################################## + +set err_stat = 0 # initialize error stats +set err_count = 0 +set warn_stat = 0 # initialize warning stats +set warn_count = 0 + +NEWLINE +BOLD_ON +echo "========================================================================" +echo "===================== Verifying System Settings ======================" +echo "========================================================================" +BOLD_OFF + + +# Verify the machine type and document the old root pathnames. +NEWLINE +BOLD_ON; echo -n "Hostname = "; \ + BOLD_OFF; echo `hostname` | awk '{printf("%-20.20s ", $1)}' +BOLD_ON; echo -n "OS version = "; \ + BOLD_OFF; echo `$uname_cmd`" "`$uname_cmd -r` +BOLD_ON; echo -n "Architecture = "; \ + BOLD_OFF; echo $mach | awk '{printf("%-20s ", $1)}' +BOLD_ON; echo -n "HSI arch = "; \ + BOLD_OFF; echo $hmach | awk '{printf("%-20s\n", $1)}' +BOLD_ON; echo -n "New iraf root = "; \ + BOLD_OFF; echo $iraf | awk '{printf("%-20s ", $1)}' +BOLD_ON; echo -n "Old iraf root = "; \ + BOLD_OFF; echo $o_iraf | awk '{printf("%-20s\n", $1)}' +BOLD_ON; echo -n "New imdir = "; \ + BOLD_OFF; echo $imdir | awk '{printf("%-20s ", $1)}' +BOLD_ON; echo -n "Old imdir = "; \ + BOLD_OFF; echo $o_imdir | awk '{printf("%-20s\n", $1)}' +BOLD_ON; echo -n "New cache = "; \ + BOLD_OFF; echo $cache | awk '{printf("%-20s ", $1)}' +BOLD_ON; echo -n "Old cache = "; \ + BOLD_OFF; echo $o_cache | awk '{printf("%-20s\n", $1)}' +BOLD_ON; echo -n "Local bin dir = "; \ + BOLD_OFF; echo $lbin | awk '{printf("%-20s\n", $1)}' +if ("$shlib" == "yes") then + BOLD_ON; echo -n "Local lib dir = "; \ + BOLD_OFF; echo $llib | awk '{printf("%-20s\n", $1)}' +endif +NEWLINE ; NEWLINE + + +# Check iraf root directory looks correct. +echo -n "Checking definition of iraf root directory ... " +if (! ((-d $iraf/dev) && (-d $iraf/pkg) && (-d $iraf/noao))) then + DO_FAIL ; set err_stat = 1 ; set iraf_root_ok = 0 + NEWLINE + MSG "The definition of '$iraf' looks incorrect. The iraf root" + MSG "directory is the place where the AS distribution was unpacked," + MSG "it contains subdirectories such as 'dev', 'local', 'noao', and" + MSG "'pkg' and the binary directory links." + MSG "" + if (((-d $iraf/iraf/dev) && (-d $iraf/iraf/pkg) && (-d $iraf/iraf/noao))) then + MSG "The path '$iraf/iraf' appears to be correct ..." + set iraf = $iraf/iraf + else if (((-d $iraf/../dev) && (-d $iraf/../pkg) && (-d $iraf/../noao))) then + if (-d $iraf/..) then + pushd $iraf/.. >& /dev/null + setenv ip `echo $cwd` + MSG "The path '$ip' appears to be correct ..." + set iraf = $ip + popd >& /dev/null + endif + endif + MSG "Please verify your path and try again ..." + NEWLINE + set err_count = `expr $err_count + 1` +else + DO_OK ; set iraf_root_ok = 1 +endif + + +# Cannot have iraf and imdir the same. +echo -n "Checking iraf root and imdir directory ... " +if ($iraf == $imdir) then + DO_FAIL ; set err_stat = 1 + NEWLINE + MSG "The 'imdir' pixel storage directory cannot be the same as the" + MSG "iraf root directory. Please choose another directory." + NEWLINE + set err_count = `expr $err_count + 1` +else + DO_OK +endif + +# Cannot have iraf and cache the same. +echo -n "Checking iraf root and cache directory ... " +if ($iraf == $cache) then + DO_FAIL ; set err_stat = 1 + NEWLINE + MSG "The 'cache' storage directory cannot be the same as the" + MSG "iraf root directory. Please choose another directory." + NEWLINE + set err_count = `expr $err_count + 1` +else + DO_OK +endif + + + +if ($no_edit == 0) then + +# Check for write permission on iraf directory... +echo -n "Checking iraf directory write permissions ... " + + set TEST = "_inst.check" + if ($exec == "yes") then + set back = $cwd/ + chdir $iraf_p/iraf + touch $TEST >& /dev/null + if (-e $TEST) then + rm $TEST + DO_OK + else + DO_WARN ; set warn_stat = 1 + NEWLINE + MSG "You do not have write permission on the iraf directory." + MSG "This will prevent the install script from modifying files" + MSG "in the tree needed to complete the setup. If this is an" + MSG "NFS disk there can be several explanations aside from just" + MSG "the usual permissions problems:" + MSG "" + MSG " 1) The NFS disk is mounted read-only" + MSG " 2) The NFS disk is mounted with the 'nosuid' option" + MSG " 3) The NFS disk is exported with the 'all_squash' option" + MSG " which remaps your userid to 'anonymous'" + MSG "" + MSG "The script can continue by installing the command links on" + MSG "the local machine, but will not edit the iraf path into the" + MSG "files. If you choose not to do this the verification stage" + MSG "will be completed but the installation will then abort." + MSG "" + MSG "In either case, you should verify the server iraf path is" + MSG "correct for this machine and rerun the install script or" + MSG "make the appropriate links as needed." + MSG "" + MSG "" + + echo -n ' ' + BOLD_ON + echo -n '*** Would you like to continue with a no-edit install? ' + BOLD_OFF + echo -n "(yes) " + + set ans = "$<" + if ("$ans" == "" || "$ans" == "y" || "$ans" == "yes") then + set no_edit = 1 + else + set err_stat = 1 + endif + NEWLINE + set warn_count = `expr $warn_count + 1` + endif + chdir $back + else + DO_OK + endif +endif + + + +# Check iraf user. + +goto _no_user_check + +# Check for iraf user disabled for all platforms with v2.15 +if ($mach == "macosx" || $mach == "macintel" || $mach == "cygwin") then + goto _no_user_check +endif + +echo -n "Checking for iraf user account ... " +set pass = "" +if (($pciraf && ($mach == "macosx" || $mach == "macintel" || $mach == "cygwin")) || (!(-r /etc/passwd)) ) then + # Special-case user info check for OS X and systems where the /etc/passwd + # file may not contain the user info or isn't readable. + + set id_found = 0 + foreach d ($path) + if (-e $d/id) then + set id_found = 1 + break + endif + end + if ($id_found == 1) then + if (`id iraf |& grep -i 'no such user'` != "") then + DO_WARN ; set warn_stat = 1 + NEWLINE + MSG "No 'iraf' user was found on the system. The iraf user should" + MSG "be created before installing the system to ensure all files" + MSG "are owned by the iraf user, and the have the proper environment" + MSG "defined for installation and maintanence." + NEWLINE + + else + DO_OK + + # Check iraf user login path and shell + echo -n "Checking iraf user login directory ... " + + set v = `finger iraf |& egrep '^Directory'` + set ihome = `echo $v[2] | sed -e 's+/\(["]*\)$+\1+'` + set shel = `echo $v[4] | sed -e 's+/\(["]*\)$+\1+' | grep csh` + if ("$ihome" != "$iraf/local" && $shel == "") then + DO_FAIL ; set errstat = 1 + NEWLINE + MSG "The iraf user login info appears to be incorrect. For the" + MSG "given iraf root this path should be '$iraf/local'," + MSG "please run the 'chpass' command to change this. The iraf" + MSG "user account should also be defined to use a C-shell." + if ("$iraf_root_ok" == 0) then + MSG "(This error may be related to the incorrect definition of" + MSG "the iraf root directory seen above.)" + endif + NEWLINE + else + DO_OK + endif + + else + + endif + endif + +else + set pass1 = "`grep ^iraf: /etc/passwd`" + set pass2 = "`ypcat passwd |& grep ^iraf:`" + + if ("$pass1" == "" && "$pass2" == "") then + DO_WARN ; set warn_stat = 1 + NEWLINE + MSG "No 'iraf' user was found in the /etc/passwd file. The iraf" + MSG "user should be created before installing the system to ensure" + MSG "all files are owned by the iraf user, and the have the proper" + MSG "environment defined for installation and maintanence." + NEWLINE + else + DO_OK + + # Check iraf user login path in passwd file is iraf$local. + echo -n " Checking iraf user login directory ... " + if ("$pass1" != "") then + set pass = `grep ^iraf: /etc/passwd |sed -e 's/[ \*]/_/g' |sed -e 's/:/ /g'` + else + set pass = `ypcat passwd | grep ^iraf: |sed -e 's/[ \*]/_/g' |sed -e 's/:/ /g'` + endif + + set c = `echo $pass | wc -w` + set indx = `expr $c - 1` + + set ihome = `echo $pass[$indx] | sed -e 's+/\(["]*\)$+\1+'` + if ("$ihome" != "$iraf/local") then + DO_FAIL ; set errstat = 1 + NEWLINE + MSG "The iraf user login directory appears to be incorrect." + MSG "For the given iraf root this path should be '$iraf/local'," + MSG "please edit the /etc/passwd file to change this." + if ("$iraf_root_ok" == 0) then + MSG "(This error may be related to the incorrect definition of" + MSG "the iraf root directory seen above.)" + endif + NEWLINE + else + DO_OK + endif + + echo -n " Checking iraf user account shell ... " + set shel = `echo $pass[$c] | sed -e 's+/\(["]*\)$+\1+' | grep csh` + if ($shel == "") then + DO_FAIL ; set errstat = 1 + NEWLINE + MSG "The iraf user login directory appears to be incorrect." + MSG "The account should be configured to use a C-shell in order" + MSG "to take advantage of a preconfigured environment which will" + MSG "make maintainence easier. Please edit the passwd file or" + MSG "use the 'chsh' command (if available) to change this." + NEWLINE + else + DO_OK + endif + endif +endif + +_no_user_check: + + +# Skip the ownership check on some platforms. +if ($V != "2.15" && $V != "2.16") then + if ($mach != "cygwin" && $mach != "macosx" && $mach != "macintel") then + + # Check file ownership. + if ($mach == "hp700" || $mach == "rs6000") then + set downr = `$LS -lLd $iraf_p/iraf | awk '{print ($4)}'` + set fownr = `$LS -lLd $iraf_p/iraf/mkpkg | awk '{print ($4)}'` + else + set downr = `$LS -lLd $iraf_p/iraf | awk '{print ($3)}'` + set fownr = `$LS -lLd $iraf_p/iraf/mkpkg | awk '{print ($3)}'` + endif + set dperm = `$LS -lLd $iraf_p/iraf | awk '{print ($1)}'` + set fperm = `$LS -lLd $iraf_p/iraf/mkpkg | awk '{print ($1)}'` + + + echo -n "Checking file ownerships ... " + if ("$downr" == "iraf" && "$fownr" == "iraf") then + DO_OK + else if ("$downr" == "tody" && "$fownr" == "tody") then + # Special exemption for NOAO installations. + DO_OK + else + DO_WARN ; set warn_stat = 1 + NEWLINE + MSG "(root dir owned by $downr, iraf files owned by $fownr)" + MSG "The iraf tree should be owned by the iraf user so it can" + MSG "be updated and maintained properly." + MSG "" + MSG 'To fix this, login as root, set the iraf environment, and' + MSG 'issue the commands:' + MSG "" + MSG " cd " `echo $iraf_p` + MSG ' chown -R iraf . # change dir owner' + MSG ' cd $hbin # go to HSI bin dir' + MSG ' chown 0 alloc.e # fix alloc.e ownership' + MSG ' chmod 4755 alloc.e # fix permissions' + NEWLINE + set warn_count = `expr $warn_count + 1` + endif + + endif + +# Check file/directory permissions. +echo -n "Checking file permissions ... " + +set err_seen = 0 +foreach dir ($iraf_p $iraf_p/iraf $iraf_p/iraf/unix $iraf_p/iraf/unix/hlib) + if ("`$LS -lLd $dir | grep '.rw[xs]r.[xs]r.[xt]'`" == "") then + set err_seen = 1 + break + endif +end + +if ("$err_seen" == 0) then + DO_OK +else + DO_FAIL ; set err_stat = 1 + NEWLINE + MSG "The permissions on the iraf directory tree appear to be too" + MSG "restrictive to allow group or world user to access the file" + MSG "This may prevent users other than $downr from starting the system" + NEWLINE + set err_count = `expr $err_count + 1` +endif + +endif + + +# Check iraf tree for proper structure. +set check_iraf_tree = 0 # for v214 and earlier + +set iraf_r = $iraf # iraf root directory +set iraf_p = $iraf_r:h # iraf parent directory +set iraf_b = $iraf_p/irafbin # irafbin directory +set iraf_tree_ok = 1 + +set iraf_ib = $iraf/bin.$mach # irafbin IB directory +set iraf_nb = $iraf/noao/bin.$mach # irafbin NB directory + + +if ($check_iraf_tree == 1) then + +set iraf_ib = $iraf_b/bin.$mach # irafbin IB directory +set iraf_nb = $iraf_b/noao.bin.$mach # irafbin NB directory + + +echo "Checking proper iraf tree structure in $iraf_p ..." + +echo -n " Checking for 'iraf' subdir ... " +if (-d "$iraf_p/iraf") then + DO_OK +else + DO_FAIL ; set err_stat = 1 ; set iraf_tree_ok = 0 + set err_count = `expr $err_count + 1` +endif + +echo -n " Checking for 'irafbin' subdir ... " +if (-d "$iraf_p/irafbin") then + DO_OK +else + set temp = $iraf_tree_ok + #echo -n "[ "; BOLD_ON; echo -n "Not Found" ; BOLD_OFF; echo " ]" ; + echo "" + set iraf_tree_ok = 0 + + # Look for a fallback to recover ... + echo -n " Checking for fallback tree structure ... " + set iraf_p = $iraf/../ + set iraf_b = $iraf_p/irafbin # irafbin directory + set iraf_ib = $iraf_b/bin.$mach # irafbin IB directory + set iraf_nb = $iraf_b/noao.bin.$mach # irafbin NB directory + if (-d "$iraf_p/irafbin") then + echo -n " "; DO_OK ; set iraf_tree_ok = $temp + else + echo -n " "; DO_FAIL; set err_stat = 1 ; set iraf_tree_ok = 0 + set err_count = `expr $err_count + 1` + endif +endif + + +echo "'irafbin/bin.$mach'" | \ + awk '{ printf (" Checking for %s subdir ... \t", $1) }' +if (-d "$iraf_p/irafbin/bin.$mach") then + echo -n " "; DO_OK +else + echo -n " "; DO_FAIL; set err_stat = 1 ; set iraf_tree_ok = 0 + set err_count = `expr $err_count + 1` +endif + +echo "'irafbin/noao.bin.$mach'" | \ + awk '{ printf (" Checking for %s subdir ...\t\t", $1) }' +if (-d "$iraf_p/irafbin/noao.bin.$mach") then + DO_OK +else + DO_FAIL ; set err_stat = 1 ; set iraf_tree_ok = 0 + set err_count = `expr $err_count + 1` +endif + +if ("$iraf_tree_ok" == 0) then + NEWLINE + MSG "An error was detected in the structure of the iraf tree." + MSG "Your directory tree should look something like:" + MSG "" + MSG " $iraf_p" + MSG " / \" + MSG " (AS) /iraf /irafbin" + MSG " / \" + MSG " (IB) bin.$mach noao.bin.$mach (NB)" + MSG "" + MSG "The AS, IB, and NB distribution files are shown where they" + MSG "should be unpacked. Please verify the structure and the" + MSG "system architecture." + NEWLINE +endif + +endif # if (check_iraf_tree) + + + + +# Check binary dirs are both populated correctly. +echo -n "Checking Core system binary directory ... " +if (! (-e "$iraf_ib/cl.e" && -e "$iraf_ib/x_system.e")) then + if ($port == 1) then + DO_WARN ; set warn_stat = 1 + else + DO_FAIL ; set err_stat = 1 + endif + NEWLINE + MSG "The core system binary directory, $iraf_ib, does" + MSG "not appear to contain the proper binaries." + NEWLINE + set err_count = `expr $err_count + 1` +else + DO_OK +endif + +echo -n "Checking NOAO package binary directory ... " +if (! (-e "$iraf_nb/x_apphot.e" && -e "$iraf_nb/x_rv.e")) then + if ($port == 1) then + DO_WARN ; set warn_stat = 1 + else + DO_FAIL ; set err_stat = 1 + endif + if (-e "$iraf_ib/x_apphot.e" && -e "$iraf_ib/x_rv.e") then + NEWLINE + MSG "The NOAO package binary directory, $iraf_nb, is" + MSG "empty but the binaries appear to have been unpacked in the" + MSG "core system directory, $iraf_ib. These will need to be moved," + MSG "please delete the binaries and start again, be sure to unpack" + MSG "the NB distribution files in the $iraf_nb directory," + MSG "and the core system file in the $iraf_ib directory." + NEWLINE + else + NEWLINE + MSG "The NOAO package binary directory, $iraf_nb, does" + MSG "not appear to contain the proper files." + NEWLINE + endif + set err_count = `expr $err_count + 1` +else + DO_OK +endif + + +# Check that the specified local bin directory exists. +echo -n "Checking that local bin directory exists ... " +if (-d "$lbin") then + DO_OK +else + DO_FAIL ; set err_stat = 1 + NEWLINE + MSG "The specified local bin directory does not exist. This" + MSG "directory should be a common local bin directory which " + MSG "is found in all user's paths, e.g. /usr/local/bin." + MSG "Please create the directory or else reset and try again." + NEWLINE + set err_count = `expr $err_count + 1` +endif + + +# Check that the specified local lib directory exists. +if ("$shlib" == "yes") then + echo -n "Checking that local lib directory exists ... " + if (-d "$llib") then + DO_OK + else + DO_FAIL ; set err_stat = 1 + NEWLINE + MSG "The specified local lib directory does not exist. This" + MSG "directory should be a common local lib directory which " + MSG "is found in all user's paths, e.g. /usr/local/lib." + MSG "This directory is required for the iraf shared library." + MSG "Please create the directory or else reset and try again." + NEWLINE + set err_count = `expr $err_count + 1` + endif +endif + + +# See if we're good to go ... +if ("$err_stat" != "0") then + NEWLINE ; NEWLINE + BOLD_ON + echo "======================================================================" + echo "| An error occured during verification. Please take corrective |" + echo "| action before rerunning the install script. |" + echo "======================================================================" + BOLD_OFF + NEWLINE + exit $err_stat +endif + + + +# ============================================ +# The following is partially system dependent. +# ============================================ + +# Set the BINDIRS pathnames - directories where the HSI executables go. +set host = "$iraf/unix" +set hbin = "$iraf/unix/bin.$hmach" +set hlib = "$iraf/unix/hlib" +set fbin = "$iraf/bin" + +# Replace any // by /. +set host = `echo $host | sed -e "s+//+/+g"` +set hbin = `echo $hbin | sed -e "s+//+/+g"` +set fbin = `echo $fbin | sed -e "s+//+/+g"` +set hlib = `echo $hlib | sed -e "s+//+/+g"` + +# Strip any trailing /. +set host = `echo $host | sed -e 's+/\(["]*\)$+\1+'` +set hbin = `echo $hbin | sed -e 's+/\(["]*\)$+\1+'` +set fbin = `echo $fbin | sed -e 's+/\(["]*\)$+\1+'` +set hlib = `echo $hlib | sed -e 's+/\(["]*\)$+\1+'` +set BINDIRS = "$hbin $hlib $fbin $host" + +# The following file lists are partially system dependent. +set PATHFILES = "mkiraf.csh libc/iraf.h cl.csh" +set MODEFILES = "cl.csh fc.csh mkiraf.csh mkfloat.csh mkmlist.csh $host/reboot generic.e mkpkg.e rmbin.e rmfiles.e rpp.e rtar.e wtar.e xc.e xpp.e xyacc.e sgidispatch.e $hbin/sgi2*.e irafarch.csh" +set LINKFILES = "ecl.e cl.e mkiraf.csh mkmlist.csh generic.e mkpkg.e rmbin.e rmfiles.e rtar.e sgidispatch.e wtar.e rpp.e xpp.e xyacc.e xc.e" +set CMDLINKS = "ecl cl mkiraf mkmlist generic mkpkg rmbin rmfiles rtar sgidispatch wtar rpp xpp xyacc xc irafarch" + + +#============================================================================= +# See whether there is an existing commands dir we need to delete. +#============================================================================= + +echo -n "Checking for existing commands directory... " +set cl_found = 0 +set clpath = "" +foreach d ($path) + if (-e $d/cl) then + set cl_found = 1 + set clpath = $d/cl + break + endif +end +if ($cl_found == 1) then + set o_lbin = $clpath:h + + if ("$o_lbin" != "$lbin") then + DO_WARN + NEWLINE + MSG "IRAF commands were found in the directory:" + MSG "" + MSG " $o_lbin" + MSG "" + MSG " These commands may conflict with the commands now being" + MSG "installed in: '$lbin'" + MSG "" +del_cmd_: + PROMPT "Do you want to delete commands in the old directory? " + set ans = "$<" + + if ("$ans" == "" || "$ans" == "y" || "$ans" == "yes") then + NEWLINE + foreach i ($CMDLINKS) # remove the iraf commands + set file = $o_lbin/$i + if (-e $file) then + MSG "Deleting command $file ..." + if ($exec == yes) then + RM $file + endif + endif + end + else if ("$ans" == "quit" || "$ans" == "q") then + exit 1 + else if ("$ans" == "no" || "$ans" == "n") then + ; # fall through + else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then + NEWLINE + MSG "Multiple commands such as 'cl' or 'mkiraf' on a machine" + MSG "may cause errors (such as 'command not found' due to an" + MSG "invalid link), or confusions as to which version of iraf" + MSG "is being run if the old link is still valid. This is" + MSG "because the command being used depends on the order in" + MSG 'which the directories occur in the users "$path" environ-' + MSG "ment variable (which may vary by user)." + MSG "" + MSG "It is recommended there be only one iraf command directory" + MSG "on a given system, other methods can be used to start a" + MSG "different IRAF installation. This script will not auto-" + MSG "matically remove those links, and will only correct the" + MSG "path is the local bin directory is the same as before." + MSG "" + MSG "Type 'q' to quit and rerun the install script to specify" + MSG "a different local bin directory, 'yes' to remove the old" + MSG "links, and 'no' to leave the old commands around." + MSG "" + NEWLINE + goto del_cmd_ + endif + NEWLINE + else + DO_OK + endif + +else + DO_OK +endif + + +#============================================================================= +# Prompt for the go-ahead ... +#============================================================================= +NEWLINE +proceed_: +PROMPT "Proceed with installation? " +set ans = "$<" +if ("$ans" == "" || "$ans" == "y" || "$ans" == "yes") then + NEWLINE +else if ("$ans" == "quit" || "$ans" == "q") then + exit 0 +else if ("$ans" == "no" || "$ans" == "n") then + exit 0 +else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then + NEWLINE + MSG "If you proceed, the system will be installed on this machine." + MSG "This means that command links will be placed in the local bin" + MSG "directory, needed system files will be created, and the iraf" + MSG "root path will be edited into key files. Stopping at this stage" + MSG "will have no side effects on your system or the iraf files." + MSG "Type <cr> to continue, or 'q' to quit to exit the installation." + NEWLINE + goto proceed_ +else + echo "Huh?" + goto proceed_ +endif + + +############################################################################## +# +# Step 2: INSTALLATION +# +# Do the actual installation. This involves: +# +# 1) Editing the $iraf path into system files +# 2) Creating the <iraf.h> link +# 3) Creating the system command links +# 4) Creating the image directory (imdir) +# 5) Creating the cache directory (cache) +# 6) Tape setup (modes on alloc.e and /dev tape devices) +# 7) Graphics/Display file installation/setup +# +############################################################################## + +# Begin installation. +# ------------------ + +set err_seen = 0 + + +NEWLINE +BOLD_ON +echo "========================================================================" +echo "========================= Begin Installation =========================" +echo "========================================================================" +BOLD_OFF + +# Skip ahead if we're not editing the files or touching the disk. +if ($no_edit == 1) then + goto end_no_edit +endif + + +NEWLINE +BOLD_ON +echo " Editing Paths" +echo " -------------" +BOLD_OFF + +# Edit the $iraf pathname in the .login file for user 'iraf'. +echo -n "Editing the iraf user .login/.cshrc paths ... " +cd $iraf/local + +foreach file (.cshrc .login) + if (-e $file) then + RM $TEMP >& /dev/null + sed -e "s+$W$o_iraf+\1$iraf+" $file > $TEMP + cmp -s $file $TEMP + if ($status) then + PUT $TEMP $file + endif + RM $TEMP >& /dev/null + else + if ("$err_seen" == 0) then + DO_FAIL + set err_seen = 1 + set err_count = `expr $err_count + 1` + endif + MSG "Cannot find the iraf $file file" + RM $TEMP >& /dev/null + endif +end +if ("$err_seen" == 0) then + DO_OK +endif + + +# If we're on a Mac OS X or Cygwin system the iraf login directory isn't easy +# to change and as of OSX 10.1 the default is to create this in /Users/iraf. +# If this is how things are set up then link the .login/.cshrc files in this +# directory so the account has the proper environment. + +set err_seen = 0 + +if ($V != "2.15" && $V != "2.16") then + + if ($pciraf && ($mach == "macosx" || $mach == "macintel" || $mach == "cygwin")) then + echo -n "Creating iraf user .login/.cshrc links ... " + + set v = `finger iraf |& egrep '^Directory'` + set ihome = `echo $v[2] | sed -e 's+/\(["]*\)$+\1+'` + + if ("$ihome" != "$iraf/local") then + cd $ihome # go to account login dir + + if (! (-e bugs.log)) then # make sure it's not iraf$local + foreach file (.cshrc .login) + if ($exec == yes) then + if (-e $file) then + RM $file >& /dev/null # remove old file + endif + ln -s $iraf/local/$file $file # make local link + + if (! (-e $file) && $exec == yes) then + if ("$err_seen" == 0) then + DO_FAIL + set err_seen = 1 + set err_count = `expr $err_count + 1` + endif + MSG "Cannot find the iraf $file file in $ihome" + RM $TEMP >& /dev/null + endif + + endif + end + endif + cd $iraf/local + + else + DO_OK + endif + + if ("$err_seen" == 0) then + DO_OK + endif + endif + +endif + + +# Edit the $iraf and $imdir paths in mkiraf.csh, cl.csh, and libc/iraf.h files. + +echo -n "Editing iraf/imdir paths into system files ... " +cd $iraf/unix/hlib + +set err_seen = 0 +foreach i ($PATHFILES) + if (-e $i) then + RM $TEMP >& /dev/null + sed -e "s+$W$o_iraf+\1$iraf+" $i |\ + sed -e "s+$W$o_cache+\1$cache+" | \ + sed -e "s+$W$o_imdir+\1$imdir+" > $TEMP + cmp -s $i $TEMP + if ($status) then + if ($exec == yes) then + PUT $TEMP $i + chmod 755 $i + endif + endif + RM $TEMP >& /dev/null + else + if ("$err_seen" == 0) then + DO_FAIL + set err_seen = 1 + set err_count = `expr $err_count + 1` + endif + MSG "File $i not found." + RM $TEMP >& /dev/null + endif +end +if ("$err_seen" == 0) then + DO_OK +endif + + + +NEWLINE +BOLD_ON +echo " Checking File Permissions" +echo " -------------------------" +BOLD_OFF + +# Set default file permissions for the executable files in the BINDIRS, +# in case the file mode has somehow been changed, e.g., in a file restore +# or copy. + +echo -n "Checking iraf file permissions ... " + +set err_seen = 0 +foreach i ($MODEFILES) + set file = $i + if (! -e $file) then + foreach j ($BINDIRS) + if (-e $j/$i) then + set file = $j/$i + break + endif + end + endif + + if (-e $file) then + if ("`$LS -l $file | grep '^.rw[xs]r.[xs]r.[xt]'`" == "") then + if ("$err_seen" == 0) then + DO_WARN + set err_seen = 1 + set err_count = `expr $err_count + 1` + endif + MSG "Setting $file:t to mode 0755." + if ($exec == yes) then + chmod 755 $file + endif + endif + else + if ("$err_seen" == 0) then + DO_FAIL + set err_seen = 1 + set err_count = `expr $err_count + 1` + endif + MSG "File $file:t not found." + endif +end +if ("$err_seen" == 0) then + DO_OK +endif + + +# Create the root imdir as a public scratch directory, if not already created. +set err_seen = 0 +if (-d $imdir) then + if ("`$LS -ld $imdir | grep '^.rw[xs]r.[xs]r.[xt]'`" != "") then + echo -n 'Checking imdir permissions ...' + echo -n ' ' + else + echo -n 'Setting mode for $imdir to 0777 ' + if ($exec == yes) then + chmod 777 $imdir + endif + endif +else + echo -n "Creating root imdir at $imdir ... " + if ($exec == yes) then + mkdir $imdir; chmod 777 $imdir + endif +endif +if ("$err_seen" == 0) then + DO_OK +endif + + +# Create the root cache as a public scratch directory, if not already created. +set err_seen = 0 +if (-d $cache) then + if ("`$LS -ld $cache | grep '^.rw[xs]r.[xs]r.[xt]'`" != "") then + echo -n 'Checking cache permissions ...' + echo -n ' ' + else + echo -n 'Setting mode for $cache to 0777 ' + if ($exec == yes) then + chmod 777 $cache + endif + endif +else + echo -n "Creating root cache at $cache ... " + if ($exec == yes) then + mkdir $cache; chmod 777 $cache + endif +endif +if ("$err_seen" == 0) then + DO_OK +endif + + + +# Allow deletion of files in /tmp - needed for multiuser tape allocation. +echo -n "Reset /tmp sticky bit setting ... " +if ($exec == yes) then + chmod -t /tmp +endif +DO_OK + +# Initialize permissions of tape devices. +if ($do_tapes) then +echo -n "Setting tape device permissions ... " + if ($exec == yes) then + chmod 666 $TAPES >& /dev/null + chown root $TAPES >& /dev/null + endif + DO_OK +endif + + + +# Set owner=root for the device allocation task, alloc.e. + +echo -n "Checking alloc.e permissions ... " + +set err_seen = 0 +foreach i ($BINDIRS) + if (-e $i/alloc.e) then + if ("`$LS -l $i/alloc.e | grep 'rwsr-.*root'`" == "") then + if ($exec == yes) then + chown 0 $i/alloc.e + chmod u+s $i/alloc.e + endif + endif + break + else + if ("$err_seen" == 0) then + DO_FAIL + set err_seen = 1 + set err_count = `expr $err_count + 1` + endif + MSG "Cannot find alloc.e executable." + endif +end +if ("$err_seen" == 0) then + DO_OK +endif + + +# Target for no-edit install. +end_no_edit: + + +NEWLINE +BOLD_ON +echo " Creating File Links" +echo " -------------------" +BOLD_OFF + + +# Create a /iraf symlink on the system to establish a /iraf/iraf root +# path regardless of the actual root dir. We only do this if there is +# no /iraf on the system already. + +echo -n "Checking for /iraf symlink ... " +if (! -e /iraf) then + if ($exec == yes) then + ln -s $iraf_p /iraf + endif + if ($exec == no || -e /iraf/iraf ) then + DO_OK + else + DO_FAIL + set err_count = `expr $err_count + 1` + endif +else + DO_OK +endif + + +# Link $hlib/libc/iraf.h to <iraf.h>. This is needed not only to compile C +# source files in iraf, but also to define $iraf, $host, etc. for iraf tasks. + +# Verify we have a /usr/include directory (some MacOSX systems won't) +echo -n "Checking /usr/include directory ... " +if (! -e /usr/include) then + if ($exec == yes) then + mkdir /usr/include + if (-d /usr/include) then + DO_OK + else + DO_FAIL + set err_count = `expr $err_count + 1` + endif + else + DO_OK + endif +else + DO_OK +endif + + +echo -n "Creating <iraf.h> symlink ... " +set file1 = /usr/include/iraf.h +set file2 = $iraf/unix/hlib/libc/iraf.h + +set err_seen = 0 +if (-e $file1) then + if ("`$LS -l $file1 | grep $file2`" == "") then + if ($exec == yes) then + RM $file1 + endif + if ($exec == yes) then + ln -s $file2 $file1 + endif + endif +else + if ($exec == yes) then + ln -s $file2 $file1 + endif +endif +if (("$err_seen" == 0 && -e $file1) || $exec == "no") then + DO_OK +else + DO_FAIL + set err_count = `expr $err_count + 1` +endif + + +# Establish the remaining symbolic links to HSI tasks. +echo -n "Creating iraf command links in local bin dir ... " +cd $lbin + +set err_seen = 0 +foreach i ($LINKFILES) + # Locate the file to be linked to. + set file1 = $i:r + foreach j ($BINDIRS) + set file2 = $j/$file1.csh + if (-e $file2) then + break + endif + set file2 = $j/$i + if (-e $file2) then + break + endif + end + + # Verify or set the link. + if (-e $file1) then + if ("`$LS -l $file1 | grep $file2`" == "") then + if ($exec == yes) then + RM $file1 + endif + if ($exec == yes) then + ln -s $file2 $file1 + endif + endif + else + if ($exec == yes) then + RM $file1 + ln -s $file2 $file1 + endif + endif + + if (! (-e $file1) && "$exec" == "yes") then + if ("$err_seen" == 0) then + DO_FAIL + endif + MSG "Could not make link $file1 -> $file2" + set err_seen = 1 + set err_count = `expr $err_count + 1` + endif +end +if ("$err_seen" == 0) then + DO_OK +endif + + +# Establish the remaining symbolic links to shared libraries. +if ("$shlib" == "yes") then + echo -n "Creating iraf library links in local lib dir ... " + cd $llib + + set err_seen = 0 + foreach i ($LIBFILES) + # Locate the file to be linked to. + set file1 = $i + foreach j ($iraf/bin.$mach $iraf/bin.$hmach) + set file2 = $j/$i + if (-e $file2) then + break + endif + end + + # Verify or set the link. + if (-e $file1) then + if ("`$LS -l $file1 | grep $file2`" == "") then + if ($exec == yes) then + RM $file1 + endif + if ($exec == yes) then + ln -s $file2 $file1 + endif + endif + else + if ($exec == yes) then + RM $file1 + ln -s $file2 $file1 + endif + endif + + if (! (-e $file1) && "$exec" == "yes") then + if ("$err_seen" == 0) then + DO_FAIL + endif + MSG "Could not make link $file1 -> $file2" + set err_seen = 1 + set err_count = `expr $err_count + 1` + endif + end + if ("$err_seen" == 0) then + DO_OK + endif +endif + + +# Mark the system update time. +if ($no_edit == 0) then + echo -n 'Marking system update time hlib$utime ... ' + if ($exec == yes) then + touch $hlib/utime + endif + DO_OK +endif + + +#============================================================================= +# Install the VOClient Daemon code. +#============================================================================= + +NEWLINE +BOLD_ON +echo " Installing VOClient Code" +echo " ------------------------" +BOLD_OFF + + +echo -n "Creating 'voclientd' symlink ... " +set file1 = $lbin/voclientd +set file2 = $iraf/vo/java/voclientd + +set err_seen = 0 +if (-e $file1) then + if ("`$LS -l $file1 | grep $file2`" == "") then + if ($exec == yes) then + RM $file1 + endif + if ($exec == yes) then + ln -s $file2 $file1 + endif + endif +else + if ($exec == yes) then + ln -s $file2 $file1 + endif +endif +if (("$err_seen" == 0 && -e $file1) || $exec == "no") then + DO_OK +else + DO_FAIL + set err_count = `expr $err_count + 1` +endif + + +echo -n "Creating 'voclient.jar' symlink ... " +set file1 = $lbin/voclient.jar +set file2 = $iraf/vo/java/voclient.jar + +set err_seen = 0 +if (-e $file1) then + if ("`$LS -l $file1 | grep $file2`" == "") then + if ($exec == yes) then + RM $file1 + endif + if ($exec == yes) then + ln -s $file2 $file1 + endif + endif +else + if ($exec == yes) then + ln -s $file2 $file1 + endif +endif +if (("$err_seen" == 0 && -e $file1) || $exec == "no") then + DO_OK +else + DO_FAIL + set err_count = `expr $err_count + 1` +endif + + + +#============================================================================= +# Common code for XGTERM/XIMTOOL installation. +#============================================================================= + +NEWLINE +BOLD_ON +echo " Creating Graphics Device Files" +echo " ------------------------------" +BOLD_OFF + +if ($do_pipes == 0 || $has_pipes == 0) then + goto _no_pipes +endif + +# Make sure special device entries for the display servers exist in /dev. +echo -n "Creating /dev/imt1 fifo pipes for image display ... " + +set err_seen = 0 +foreach i (/dev/imt1i /dev/imt1o) + if (-e $i) then + # Check the file permissions. + if ("`$LS -l $i | grep '^.rwxrwxrwx'`" == "") then + if ($exec == yes) then + chmod 777 $i + endif + endif + else + if ($exec == yes) then + set mkfifo_found = 0 + foreach d ($path) + if (-e $d/mkfifo) then + set mkfifo_found = 1 + break + endif + end + if ($mkfifo_found == 1) then + mkfifo $i + else + mknod $i p + endif + chmod 777 $i + endif + endif + + if (! (-e $i) && $exec == "yes") then + if ("$err_seen" == 0) then + DO_FAIL + endif + MSG "Could not create fifo $i" + set err_seen = 1 + set err_count = `expr $err_count + 1` + endif +end +if ("$err_seen" == 0) then + DO_OK +endif + + +# The old /dev/imt1 entry is now just a link to /dev/imt1o. +echo -n "Creating /dev/imt fifo pipes link ... " +set file = /dev/imt1 + +set err_seen = 0 +if (-e $file) then + if ("`$LS -l $file | grep imt1o`" == "") then + if ($exec == yes) then + RM $file + ln -s /dev/imt1o $file + endif + endif +else + if ($exec == yes) then + ln -s /dev/imt1o $file + endif +endif +if (("$err_seen" == 0 && -e $file) || $exec == "no") then + DO_OK +else + DO_FAIL + set err_count = `expr $err_count + 1` +endif + +_no_pipes: + +if ($mach == "cygwin") then + echo -n "Creating special graphcap file ... " + cp $iraf/dev/graphcap.inet $iraf/dev/graphcap + DO_OK +endif + +#============================================================================= +# Install the default IMTOOLRC frame buffer configuration file. The path +# /usr/local/lib path hardwired in to imtool and cannot easily be changed, but +# if installation of the default imtoolrc in this directory is not possible, +# the file can be installed in each imtool user's login directory as .imtoolrc, +# or the environment variable IMTOOLRC can be defined in each imtool user's +# .login or .cshrc to define the path to the file. +#============================================================================= + +# Verify imtoolrc link. +echo -n "Checking /usr/local/lib directory ... " +if (! -e /usr/local/lib) then + if ($exec == yes) then + if (! -e /usr/local) then + mkdir /usr/local + endif + mkdir /usr/local/lib + if (-d /usr/local/lib) then + DO_OK + else + DO_FAIL + set err_count = `expr $err_count + 1` + endif + else + DO_OK + endif +else + DO_OK +endif + + +# Verify or set the IMTOOLRC link. +if ($exec == yes) then + cd /usr/local/lib +endif +set file1 = imtoolrc +set file2 = $iraf/dev/imtoolrc + +echo -n "Creating /usr/local/lib/imtoolrc link ... " + +set err_seen = 0 +if (-e $file1) then + if ("`$LS $file1`" == "$file1") then + if ("`$LS -l $file1 | grep $file2`" == "") then + if ($exec == yes) then + RM $file1 + ln -s $file2 $file1 + endif + endif + endif +else + if ($exec == yes) then + ln -s $file2 $file1 + endif +endif +if (("$err_seen" == 0 && -e $file1) || $exec == "no") then + DO_OK +else + DO_FAIL + set err_count = `expr $err_count + 1` +endif + + +#============================================================================= +# Make sure there are entries in the the termcap and graphcap files for xgterm +# and imtool. This is almost a no-op however we check in case there's an +# ancient local version which may have been replaced repeatedly rather than +# diff/merged over time. +#============================================================================= + +echo -n "Checking if termcap file contains an XGterm entry ... " +set temp = `grep -l xgterm $iraf/dev/termcap | grep -v '^#'` +if ("$temp" == "") then + DO_FAIL + set err_count = `expr $err_count + 1` +else + DO_OK +endif + +echo -n "Checking graphcap file for XGterm/imtool entries ... " +set gcok = yes +foreach i (xgterm imtool) + set temp = `grep -l $i $iraf/dev/graphcap | grep -v '^#'` + if ("$temp" == "" && "$gcok" == "yes") then + DO_FAIL + set err_count = `expr $err_count + 1` + set gcok = no + endif +end +if ($gcok == yes) then + DO_OK +endif + +if ("$err_count" > 0) then + goto fini_ +endif + + + +############################################################################## +# +# Step 3: POST-INSTALL CONFIGURATION +# +# Do some of the post-installation config required of all systems. +# This involves: +# +# 1) Creating a dev$tapecap for this system +# 2) Adding machine to dev$hosts file +# 3) Check for display servers +# 4) Check for graphics terminals +# 5) Delete unused HSI binaries +# 6) Strip system sources +# +############################################################################## + +# Begin configuration. +# -------------------- + +set err_seen = 0 + +NEWLINE ; NEWLINE +BOLD_ON +echo "========================================================================" +echo "===================== Post-Install Configuration =====================" +echo "========================================================================" +BOLD_OFF +NEWLINE + + +echo " The system should be fully functional at this point however some" +echo "post-install configuration may be required to make use of all the" +echo "features such as networking or tape access. Additional software such" +echo "as external packages or display servers will need to be installed" +echo "separately. Some minimal configuration can be accomplished now but" +echo -n "you should consult the " +BOLD_ON +echo -n "IRAF Site Manager's Guide" +BOLD_OFF +echo " for a more complete" +echo "discussion of IRAF system management, configuration of printers, etc." + +NEWLINE +post_install_: +PROMPT "Proceed to post-install configuration stage? " +set ans = "$<" +if ("$ans" == "" || "$ans" == "y") then + NEWLINE + BOLD_ON + echo "------------------------------------------------------------------------" + BOLD_OFF +else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then + NEWLINE + MSG " If you continue, some minimal configuration of the IRAF net-" + MSG "working and tapecap file will be performed. Additional checks" + MSG "on the availability of display servers and graphics terminals will" + MSG "also be done." + NEWLINE + goto post_install_ +else if ("$ans" == "no" || "$ans" == "n") then + NEWLINE; NEWLINE + goto fini_ +else if ("$ans" == "q" || "$ans" == "quit") then + exit 0 +else + echo "Huh?" + goto post_install_ +endif + + +#============================================================================== +# Set up the dev$hosts file to enable iraf networking on this system. +#============================================================================== + + +# Get the networking values. +set hname = "`hostname`" +set lhost_abbr = `hostname | awk '{printf ("%16.16s\n", $1 ) }'` +set ihosts = $iraf/dev/hosts +set tmp_host = /tmp/_host$$ + + +if (`echo $hname | grep "\."` != "") then + # When using FQDN lnode may not be set.... + set is_fqdn = yes + set domain = "`hostname | sed -e 's/^[a-zA-Z0-9_\-]*\.//g'`" + set lhost = "`hostname | sed -e 's/\.[a-zA-Z0-9]*//g'`" +else + set is_fqdn = no + set domain = "<unknown>" + set lhost = $hname +endif +set nnode = "`hostname`" + +# Compute the recommended hosts entry. +set irafks = $iraf/bin.$mach/irafks.e +set bang = '\\!' +if ("$is_fqdn" == "no") then + set rec = `echo $lhost " : " ${hname}${bang}${irafks}` +else + set rec = `echo $lhost $lhost_abbr " : " ${nnode}${bang}${irafks}` +endif + + + +NEWLINE +BOLD_ON +echo " IRAF Networking Config" +echo " ----------------------" +BOLD_OFF +NEWLINE + +echo " IRAF Networking can be used to access a remote image, tape device," +echo "display server, or other network service. It's configuration is not" +echo "a requirement for normal IRAF operations and it can be updated at any" +echo 'time by editing the IRAF dev$hosts file with new entries.' +NEWLINE +echo " In this stage we will add an entry for the current platform to the" +echo "hosts file. In a local network installation this script should be run" +echo "on each system to add a networking entry as well as to install other" +echo "system files needed by IRAF." + +net_conf_: +NEWLINE +PROMPT "Configure IRAF Networking on this machine? " +set ans = "$<" +if ("$ans" == "" || "$ans" == "y") then + + # Check to see if the current machine is already in the hosts file. + set overwrite = 0 + set have_entry = 0 + grep $lhost $ihosts >& /dev/null + if ($status == 0) then + # Compare the recommended entry with the one already in the file. + echo $rec >& /tmp/_net_rec.$$ + grep $lhost $ihosts >& /tmp/_net_exists.$$ + diff -bitw /tmp/_net_rec.$$ /tmp/_net_exists.$$ >& /dev/null + if ($status == 0) then + RM /tmp/_net_*.$$ + set have_entry = 1 + NEWLINE + echo "Host '$lhost' exists with recommended entry in $ihosts." + NEWLINE + goto net_proc_ + + else + RM /tmp/_net_*.$$ + NEWLINE + echo "Host '$lhost' exists with entry in $ihosts other than what" + echo "would be computed by this script:" + NEWLINE + echo ' Recommended dev$hosts file entry used for this machine: ' + NEWLINE + if ("$is_fqdn" == "no") then + echo " "$lhost " : "$hname"\!"$irafks + else + echo " "$lhost $lhost_abbr " : " $nnode"\!"$irafks + endif + NEWLINE + echo ' Existing entry found in the dev$hosts file: ' + NEWLINE + echo -n " "; grep $lhost $ihosts + NEWLINE + +net_overwrite_: + NEWLINE + PROMPT_N "Overwrite the existing entry with recommended one?" + set ans = "$<" + if ("$ans" == "" || "$ans" == "no" || "$ans" == "n") then + set overwrite = 0 + goto net_check_ + else if ("$ans" == "y" || "$ans" == "yes") then + set overwrite = 1 + # fall through + else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then + NEWLINE + MSG "Answering 'yes' will replace the entry in the file" + MSG "with the one created by this script, answering 'no'" + MSG "will leave the current entry (which may be correct)" + MSG "intact." + NEWLINE + goto net_overwrite_ + else if ("$ans" == "q" || "$ans" == "quit") then + exit 0 + else + echo "Huh? " + goto net_overwrite_ + endif + + endif + + else + # This host isn't currently in the file. +net_rec_: + NEWLINE + echo 'Recommended dev$hosts file entry used for this machine: ' + NEWLINE + if ("$is_fqdn" == "no") then + echo " "$lhost " : "$hname"\!"$irafks + else + echo " "$lhost $lhost_abbr " : " $nnode"\!"$irafks + endif + NEWLINE + +net_proc_: + PROMPT "Proceed with this entry? " + set ans = "$<" + if ("$ans" == "" || "$ans" == "y") then + ; + else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then + NEWLINE + MSG 'If you continue the recommended entry will be added to the' + MSG "IRAF dev$hosts file as is, otherwise you will be asked if" + MSG "you wish to edit the file manually." + NEWLINE + goto net_proc_ + + else if ("$ans" == "q" || "$ans" == "quit") then + exit 0 + else if ("$ans" == "no" || "$ans" == "n") then +net_edit_: + PROMPT 'Do you wish to edit the dev$hosts file manually? ' + set ans = "$<" + + if ("$ans" == "" || "$ans" == "y") then + if ($?EDITOR) then + $EDITOR $ihosts + else + vi $ihosts + endif + goto net_check_ + else if ("$ans" == "no" || "$ans" == "n") then + MSG "Skipping network configuration." + goto net_check_ + else if ("$ans" == "q" || "$ans" == "quit") then + exit 0 + else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then + NEWLINE + MSG 'If you say yes you will be allowed to edit the dev$hosts' + MSG "file manually. You should use the existing entries as a" + MSG "template. Be sure the host name and iraf path are correct" + MSG "for this machine." + NEWLINE + goto net_edit_ + else + echo "Huh? " + goto net_edit_ + endif + else + echo "Huh?" + goto net_proc_ + endif + + endif + + # If we have an entry already in the file skip ahead to the check. + if ($have_entry == 1) then + goto net_check_ + endif + + # When exported to other sites the default dev$hosts file is the one + # configured for the NOAO network. Check to see whether we really *are* + # running at NOAO so we don't wipe this out assuming it's a fresh install + # and we can treat the file as an existing installation (i.e. append to + # the hosts file). + set is_noao = 0 + ifconfig -a |& grep 140.252 >& /dev/null + if ($status == 0) then + set is_noao = 1 + endif + + grep kpno.noao.edu $ihosts >& /dev/null + if ($status == 0 && $is_noao == 0) then + # If we're here then the hosts file is the NOAO default, but we are + # not running on an NOAO network machine. So, we want to initialize + # the hosts file by getting rid of the NOAO hosts, adding a standard + # "header" and adding the current platform. + + NEWLINE + echo 'Creating backup of default dev$hosts file...' + if ($exec == yes) then + cp $iraf/dev/hosts $iraf/dev/hosts.ORIG + endif + + echo 'Initializing dev$hosts file ...' + + + echo "# HOSTS -- IRAF local network host table." > $tmp_host + echo "" >> $tmp_host + echo -n "# Logical nodes (lpnode = line printer" >> $tmp_host + echo "output, plnode = plotter output)." >> $tmp_host + echo "#lpnode : @ursa" >> $tmp_host + echo "#plnode : @ursa" >> $tmp_host + echo "" >> $tmp_host + echo "# Host table." >> $tmp_host + echo "" >> $tmp_host + + if ("$is_fqdn" == "no") then + echo $lhost $hname $iraf/bin.$mach/irafks.e | \ + awk '{printf("%-16s\t: %s\!%s\n",$1,$2,$3)}' >> $tmp_host + else + echo $lhost $lhost_abbr $hname $iraf/bin.$mach/irafks.e | \ + awk '{printf("%-16s %s\t: %s\!%s\n",$1,$2,$3,$4)}' >> $tmp_host + endif + + # Copy the header to the file + if ($exec == yes) then + cp $tmp_host $ihosts + else + cat $tmp_host + endif + + RM $tmp_host + echo "Host '$hname' has been added to the network configuration file..." + + else + # If we get to this point we're appending a hosts file that is + # correct for the current network, NOAO or not. + + + # Pull off the file "header" and "data" to separate segments. + head -7 $ihosts >& /tmp/_hhdr$$ + if ($overwrite == 1) then + more +8 $ihosts | grep -v $lhost >& /tmp/_hdat$$ + else + more +8 $ihosts >& /tmp/_hdat$$ + endif + + if ("$is_fqdn" == "no") then + echo $lhost $hname $iraf/bin.$mach/irafks.e | \ + awk '{printf("%-16s\t: %s\!%s\n",$1,$2,$3)}' >> /tmp/_hdat$$ + else + echo $lhost $lhost_abbr $hname $iraf/bin.$mach/irafks.e | \ + awk '{printf("%-16s %s\t: %s\!%s\n",$1,$2,$3,$4)}' >> /tmp/_hdat$$ + endif + +net_sort_: + # See if we want to sort the file. + PROMPT "Do you want to sort the hosts file by node name? " + set ans = "$<" + if ("$ans" == "" || "$ans" == "y" || "$ans" == "yes") then + sort /tmp/_hdat$$ >& /tmp/_hsdat$$ + else if ("$ans" == "no" || "$ans" == "n") then + cp /tmp/_hdat$$ /tmp/_hsdat$$ + else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then + NEWLINE + MSG "Answering 'yes' will sort the hosts file." + NEWLINE + goto net_sort_ + else if ("$ans" == "quit" || "$ans" == "q") then + exit 0 + else + echo "Huh? " + goto net_sort_ + endif + + # Finally, put together the hosts file. + cat /tmp/_hhdr$$ /tmp/_hsdat$$ >& $tmp_host + + # Copy the header to the file + if ($exec == yes) then + cp $tmp_host $ihosts + else + cat $tmp_host + endif + + RM $tmp_host /tmp/_hhdr$$ /tmp/_hdat$$ /tmp/_hsdat$$ + endif + + + # Host should be added to the dev$hosts file, let's check to see that + # it actually works... + + # See what NETSTATUS says about this setup. +net_check_: + NEWLINE + echo -n "Checking that iraf networking is properly enabled ... " + echo -n " " + set system = $iraf/bin.$mach/x_system.e + setenv iraf $iraf/ + set errstat = 0 + if (-e $system) then + set net = `$system netstatus | grep -i "interface disabled"` + if ("$net" == "") then + DO_OK + else + DO_FAIL ; set errstat = 1 + NEWLINE + MSG "The NETSTATUS task claims that networking is disabled." + MSG "Please contact http://iraf.net with questions or check" + MSG "the Site Manager's Guide for details on how to properly" + MSG "configure networking." + NEWLINE + endif + else + DO_FAIL ; set errstat = 1 + NEWLINE + MSG "The NETSTATUS task binary could not be executed or does not" + MSG "exist. Please contact http://iraf.net with questions or" + MSG "check the Site Manager's Guide for details on how to properly" + MSG "configure networking." + NEWLINE + endif + +net_restart_: + if ($errstat == 1) then + PROMPT "Would you like to return to networking setup? " + set ans = "$<" + if ("$ans" == "" || "$ans" == "y" || "$ans" == "yes") then + goto net_conf_ + else if ("$ans" == "n" || "$ans" == "no") then + ; # fall through + else if ("$ans" == "h" || "$ans" == "help" || "$ans" == "?") then + NEWLINE + MSG "Answering 'yes' will return you to the top of the networking" + MSG "configuration where you can make changes. Answering 'no'" + MSG "will leave the current (unworking) configuration in place." + NEWLINE + goto net_restart_ + else if ("$ans" == "q" || "$ans" == "quit") then + exit 1 + else + echo "Huh? " + goto net_restart_ + endif + endif + +else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then + NEWLINE + MSG 'If you continue a recommended entry can be added to the' + MSG 'IRAF dev$hosts file, otherwise you will be asked if' + MSG "you wish to edit the file manually." + NEWLINE + goto net_conf_ +else if ("$ans" == "q" || "$ans" == "quit") then + exit 0 +else if ("$ans" == "no" || "$ans" == "n") then + NEWLINE + goto end_net_ +else + echo "Huh?" + goto net_conf_ +endif + +end_net_: +BOLD_ON +echo "------------------------------------------------------------------------" +BOLD_OFF + +NEWLINE + + +#============================================================================== +# Set up the default tapecap file for the machine. +#============================================================================== + +# Skip the configuration if the system already has a default dev$tapecap +# file. We only need to do this for e.g. PC-IRAF systems where we need +# to create a default based on the OS version. + +if (! $do_tapecaps ) then + goto skip_tape_ +endif + + +NEWLINE +BOLD_ON +echo " Tapecap Device File Config" +echo " --------------------------" +BOLD_OFF +NEWLINE + +echo ' By default IRAF will search for a dev$tapecap.<node> file (where' +echo "<node> is the system name) when looking for a tape configuration file." +echo "Platforms such as PC-IRAF and Sun/IRAF support multiple OS versions" +echo "and so the proper template file must be used. This configuration will" +echo "allow you to setup a default tapecap for this system, it may be skipped" +echo "if this machine has no tape drive attached." +NEWLINE + +tape_conf_: +PROMPT "Create a default tapecap file? " +set ans = "$<" +if ("$ans" == "" || "$ans" == "y") then + + # Figure out what the template should be. + if ($pciraf == 1) then + if ("$UNAME" == "linux") then + set tapefile = "tapecap.linux" + else if ("$UNAME" == "sunos") then + set tapefile = "tapecap.solaris" + else if ("$UNAME" == "freebsd") then + set tapefile = "tapecap.freebsd" + endif + else if ($suniraf == 1) then + setenv OSVERSION `$uname_cmd -r | cut -c1` + if ($OSVERSION == 5) then + set tapefile = "tapecap.solaris" + else + set tapefile = "tapecap.sunos" + endif + else + set tapefile = tapecap.$UNAME + endif + + # Get the (possibly abbreviated) local host name. + set lhost = `hostname | awk '{printf ("%16.16s\n", $1 ) }'` + + set file1 = $iraf/dev/tapecap.$lhost + set file2 = $tapefile + if (! -e $file1) then +tape_link1_: + echo "Creating default file 'tapecap.$lhost' from $tapefile..." + if ($exec == yes) then + chdir $iraf/dev + if (-e $file1) then + # Remove the link in case it exists but points to a file + # which doesn't. + RM tapecap.$lhost >& /dev/null + endif + ln -s $tapefile tapecap.$lhost + endif + else + if ("`$LS -l $file1 | grep $file2`" != "") then + echo "Tapecap symlink 'tapecap.$lhost' exists and is ok." + else + echo "Tapecap symlink 'tapecap.$lhost' exists but is invalid...." + echo "Deleting invalid link...." + if ($exec == yes) then + RM $file1 >& /dev/null + endif + goto tape_link1_ + endif + endif + + + # See if we want to make this the dev$tapecap default. + NEWLINE ; NEWLINE + echo ' In the event a dev$tapecap.<node> file is not found on this' + echo 'system IRAF will fallback to use just dev$tapecap. In cases where' + echo 'the node name changes, this installation is shared with another' + echo 'machine or in a local network, or any case where a tapecap.<node>' + echo 'is not found, the dev$tapecap file will be the default tapecap used' + echo "for all IRAF systems." + echo "" + + +tape_def_: + PROMPT 'Do you wish to create a default dev$tapecap link? ' + set ans = "$<" + if ("$ans" == "" || "$ans" == "y") then + + set file1 = $iraf/dev/tapecap + if (! -e $file1) then +tape_link2_: + echo -n 'Creating default dev$tapecap link to dev$' + echo "$tapefile..." + if ($exec == yes) then + chdir $iraf/dev + if (-e $file1) then + # Remove the link in case it exists but points to a file + # which doesn't. + RM tapecap >& /dev/null + endif + ln -s $tapefile tapecap + endif + else + if ("`$LS -l $file1 | grep $tapefile`" != "") then + echo "Tapecap symlink 'tapecap' exists and is ok." + else + echo "Tapecap symlink 'tapecap' exists but is invalid...." + echo "Deleting invalid link...." + if ($exec == yes) then + RM $file1 >& /dev/null + endif + goto tape_link2_ + endif + endif + + else if ("$ans" == "no" || "$ans" == "n") then + ; + else if ("$ans" == "q" || "$ans" == "quit") then + exit 0 + else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then + NEWLINE + MSG 'A dev$tapecap file is the fallback file used if there is no' + MSG "tapecap.<node> file found. If you continue a link will be made" + MSG "to the template file appropriate for this machine." + NEWLINE + goto tape_def_ + else + echo "Huh?" + goto tape_def_ + endif + +else if ("$ans" == "q" || "$ans" == "quit") then + exit 0 +else if ("$ans" == "no" || "$ans" == "n") then + NEWLINE + goto end_tape_ +else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then + NEWLINE + MSG "If you continue a default tapecap appropriate for this system" + MSG 'will be created in the $iraf/dev directory' + NEWLINE + goto tape_conf_ +else + echo "Huh?" + goto tape_conf_ +endif + +end_tape_: +BOLD_ON +echo "------------------------------------------------------------------------" +BOLD_OFF + +NEWLINE +skip_tape_: + + + +#============================================================================== +# Delete the unused HSI binaries in the system to recover disk space. +#============================================================================== + +if ($pciraf == 0 && $suniraf == 0) then + goto skip_hsi_del_ +endif + + +# Get the set of currently installed system binaries. +set archs = "" +foreach i ($iraf/bin.*) + set dir = $i:t + if ($dir:r == "bin") then + set sz = `(chdir $i ; du -s | awk '{printf ("%d", $1)}')` + if (`$LS -lL $i | wc -l` > 1) then + if (-e "$i/cl.e" && -e "$i/x_system.e") then + # Save the list of installed binaries, allow for changes between + # the binary arch and HSI arch here (e.g. ssun->ssol). + if ("$dir:e" == "ssun") then + set archs = `echo $archs ssol` + else + set archs = `echo $archs $dir:e` + endif + endif + endif + endif +end + + + +# Check for HSI bin directories. +set delete_bin = "" +set empty_bin = "" +foreach i ($iraf_p/iraf/unix/bin.*) + set dir = $i:t + if ($dir:r == "bin") then + set sz = `(chdir $i ; du -s | awk '{printf ("%d", $1)}')` + if (`$LS -lL $i | wc -l` > 1) then + set d = `$LS $LSDF $i/* | head -2 | tail -1` + if ("`echo $archs | grep $dir:e`" == "") then + set delete_bin = `echo $delete_bin $dir` + endif + else + if ($sz > 8 && "`echo $archs | grep $dir:e`" == "") then + set delete_bin = `echo $delete_bin $dir` + endif + endif + else + continue + endif +end + +# If there were no unused bin directories found then skip this section. +if ("$delete_bin" == "") then + goto end_hsi_del_ +endif + + + +NEWLINE +BOLD_ON +echo " Delete Unneeded HSI Binaries" +echo " ----------------------------" +BOLD_OFF +NEWLINE + +echo ' The following bin directories in the iraf$unix directories were' +echo "found to be unused on this machine:" +NEWLINE +set tot = 0 +foreach i ($delete_bin) + set p = `echo $iraf/unix/$i | sed -e 's://:/:g'` + set sz = `du -s $p` + set tot = `expr $tot + $sz[1]` + echo $sz[1] $p | awk '{printf ("\t (%5d Kb)\t%s\n", $1, $2)}' +end +set tot = `expr $tot / 1000` +NEWLINE +echo "The contents of these directories may be safely deleted to reclaim" +echo "about $tot Mb of disk space without affecting the IRAF runtime system." +NEWLINE + + +hsi_del_: +PROMPT "Do you wish to delete these unused HSI binaries? " +set ans = "$<" +if ("$ans" == "" || "$ans" == "y") then + NEWLINE + chdir $iraf/unix + foreach i ($delete_bin) + echo -n "Delete HSI binaries in $i ... " + if ($exec == yes) then + if (-e $i) then + rm -rf $i/* + DO_OK + else + DO_FAIL + NEWLINE + MSG "Hmm, I can't find '$i' in '$cwd', skipping..." + NEWLINE + endif + else + # No-op okay + DO_OK + endif + end +else if ("$ans" == "q" || "$ans" == "quit") then + exit 0 +else if ("$ans" == "no" || "$ans" == "n") then + NEWLINE + goto end_hsi_del_ +else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then + NEWLINE + MSG "This system contains binaries needed for multi-architecture" + MSG "support, however you do not appear to need all of the binaries" + MSG "supplied. Removing uneeded binaries can recover some disk" + MSG "space that could be used for data." + NEWLINE + goto hsi_del_ +else + echo "Huh?" + goto hsi_del_ +endif + +end_hsi_del_: +BOLD_ON +echo "------------------------------------------------------------------------" +BOLD_OFF + +NEWLINE +skip_hsi_del_: + + +#============================================================================== +# Strip the system sources. +#============================================================================== + +NEWLINE +BOLD_ON +echo " Strip IRAF System Sources" +echo " -------------------------" +BOLD_OFF +NEWLINE + +echo " Source code for all IRAF tasks and interfaces is included with this" +echo "installation, but is strictly only required if you plan to develop this" +echo "code. The sources may be deleted from the system without affecting the" +echo "runtime environment (including help pages, compilation of external pack-" +echo "ages or local task development) allowing you to reclaim 50-60Mb of disk" +echo "space for the system. Stripping sources is recommended for systems very" +echo "short on space, leaving it on the system will allow IRAF site support to" +echo "send code fixes and compilation instructions as needed to fix problems" +echo "which have no other workaround." +NEWLINE + +strip_: +PROMPT_N "Do you wish to strip the system of sources? " +set ans = "$<" +if ("$ans" == "y" || "$ans" == "yes") then + NEWLINE + echo -n "Stripping core system sources ... " + if ($exec == yes) then + cd $iraf + $lbin/mkpkg strip + endif + DO_OK + echo -n "Stripping NOAO package sources ... " + if ($exec == yes) then + cd $iraf/noao + $lbin/mkpkg -p noao strip + endif + DO_OK +else if ("$ans" == "q" || "$ans" == "quit") then + exit 0 +else if ("$ans" == "" || "$ans" == "no" || "$ans" == "n") then + NEWLINE + goto end_strip_ +else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then + NEWLINE + MSG "Stripping system sources can recover considerable amounts of" + MSG "disk space while leaving a full runtime system. Sources should" + MSG "be stripp if there is insufficient room and you do not plan to" + MSG "do any development of the Core system or NOAO package." + NEWLINE + goto strip_ +else + echo "Huh?" + goto strip_ +endif + +#BOLD_ON +#echo "------------------------------------------------------------------------" +#BOLD_OFF + +end_strip_: +NEWLINE + + + +#============================================================================== +# Post-Install Verification +#============================================================================== + +NEWLINE +BOLD_ON +echo "========================================================================" +echo "===================== Post-Install Verification ======================" +echo "========================================================================" +BOLD_OFF +NEWLINE + + +#============================================================================== +# Check for available display servers on this system. +#============================================================================== + +NEWLINE +BOLD_ON +echo " Display Server Availability" +echo " ---------------------------" +BOLD_OFF +NEWLINE + +set DISPLAY_SERVERS = "ximtool ximtool-alt saoimage ds9 saotng" + +echo "Display Servers Found on This Machine:" +NEWLINE + +set found = 0 +foreach i ($DISPLAY_SERVERS) + set p = `which $i |& grep -i "^\/"` + if ($status == 0) then + set d = `$LS $LSDF $p | head -2 | tail -1` + echo $d | awk '{printf (" ( Date: %3s %2s %-5s ) ", $7, $8, $9) }' + echo " "`which $i` + set found = 1 + endif +end +if ($found == 0) then + BOLD_ON + echo " No Display Servers Found" + BOLD_OFF + NEWLINE + MSG "No display servers were found on this machine or in the user" + MSG "path. A display server such as XImtool/SAOimage/SAOtng/DS9" + MSG "is required to be running on the local machine before an iraf" + MSG "display command (e.g. DISPLAY/TVMARK/IMEXAMINE) will work." + MSG "" + MSG "Remote displays (i.e. the server on one machine and IRAF on" + MSG "another) require either iraf networking be enabled or the X" + MSG "'DISPLAY' variable be set so the server appears on the remote" + MSG "machine." + MSG "" + MSG " XImtool can be downloaded as part of X11IRAF from:" + MSG "" + MSG " http://iraf.net/ftp/iraf/x11iraf" + MSG "" + MSG "or it's mirror sites." + MSG " For information on DS9 please see" + MSG "" + MSG " http://hea-www.harvard.edu/RD/ds9/" + MSG "" + MSG "Please contact http://iraf.net with questions." +endif +NEWLINE + +BOLD_ON +echo "------------------------------------------------------------------------" +BOLD_OFF + +end_servers_: + + + +#============================================================================== +# Check for available graphics terminals on this system. +#============================================================================== + +NEWLINE +BOLD_ON +echo " Graphics Terminal Availability" +echo " ------------------------------" +BOLD_OFF +NEWLINE + +set GRAPHICS_TERMS = "xgterm xterm" + +echo "Graphics Terminals Found on This Machine:" +NEWLINE + +set found = 0 +foreach i ($GRAPHICS_TERMS) + set p = `which $i |& grep "^\/"` + if ($status == 0) then + set d = `$LS $LSDF $p | head -2 | tail -1` + echo $d | awk '{printf (" ( Date: %3s %2s %-5s ) ", $7, $8, $9) }' + echo " "`which $i` + set found = 1 + endif +end +if ($found == 0) then + BOLD_ON + echo " No Suitable Graphics Terminals Found" + BOLD_OFF + NEWLINE + MSG "No 'xterm' or 'xgterm' binary was found on this systen or" + MSG "in the user path. IRAF graphics require some form of " + MSG "graphics-enabled terminal window to be running or else" + MSG "garbarge characters will appear on the screen. Windows" + MSG "such as 'cmdtool', 'rxvt', 'aixterm', 'hpterm', 'decterm'" + MSG "do not support graphics and should not be used for IRAF." + MSG "" + MSG "The default terminal type is set in the login.cl when" + MSG "a user runs MKIRAF, this is the type of window they should" + MSG "be running when starting IRAF. Users can use the 'show" + MSG "terminal' command to see the current setting, or 'stty" + MSG "xterm' or 'stty xgterm' command (or rerun MKIRAF and reset" + MSG "the default terminal type) to change the default iraf terminal." + MSG "" + MSG "XGterm can be downloaded as part of X11IRAF from" + MSG "" + MSG " http://iraf.net/ftp/iraf/x11iraf" + MSG "" + MSG "or it's mirror sites. Xterm will normally be a part of the" + MSG "system, if not found please check your path." + MSG "" +endif +NEWLINE + +#BOLD_ON +#echo "------------------------------------------------------------------------" +#BOLD_OFF + +end_terms_: + + + +#============================================================================= +# Finish up and set the exit status. +#============================================================================= +fini_: + +NEWLINE ; NEWLINE +if ("$err_count" > 0) then + BOLD_ON + echo "========================================================================" + echo "================= Installation Completed With Errors =================" + echo "========================================================================" + BOLD_OFF + NEWLINE + exit 1 +else + BOLD_ON + echo "========================================================================" + echo -n "Congratulations! " + BOLD_OFF + echo "IRAF has been successfully installed on this system." + BOLD_ON + echo "========================================================================" + BOLD_OFF + NEWLINE + echo " To begin using the system simply log in as any user and from the" + echo "directory you wish to use as your iraf login directory type:" + echo "" + echo -n ' % '; + BOLD_ON; echo -n 'mkiraf'; BOLD_OFF + echo ' # create a login.cl file' + echo -n ' % '; + BOLD_ON; echo -n 'cl'; BOLD_OFF + echo ' # start IRAF' + echo "" + echo "The 'iraf' user is already configured with a login.cl file so a simple" + echo "'cl' command is sufficient to start the system." + NEWLINE + echo "Additional information can be found at the IRAF.NET web site:" + NEWLINE + BOLD_ON ; echo " http://iraf.net" ; BOLD_OFF + NEWLINE + echo "Please contact http://iraf.net with any questions or problems." + NEWLINE + NEWLINE + + BOLD_ON + echo "========================================================================" + echo "================ Installation Completed With No Errors ===============" + echo "========================================================================" + BOLD_OFF + NEWLINE + exit 0 +endif + +cleanup_: + exit 0 + + + +# Print usage information. We will not get here unless the "-help" flag +# was issued. + +Usage: + echo "Usage: install [-n] [-h] [-hl] [-f] [-r rootdir] [-i imdir]" + echo " [-b localbindir] [-R oldroot] [-I oldimdir]" + echo " [-u username ] [-l locallibdir] [-m mach ]" + echo " [-noedit]" + echo "" + echo " where -n # no execute" + echo " -h # print this help summary" + echo " +hl # enable highlighted text" + echo " -hl # disable highlighted text" + echo " -f # create fifo pipes (if supported)" + echo " -r # set iraf root directory" + echo " -c # set cache directory" + echo " -i # set imdir directory" + echo " -b # set local bin directory" + echo " -l # set local lib directory" + echo " -R # set old iraf root directory" + echo " -I # set old imdir directory" + echo " -u # set username to own files" + echo " -m # set machine type (ssun, linux, etc)" + echo " -noedit # install but don't edit pathnames" + exit 0 diff --git a/unix/hlib/install.old b/unix/hlib/install.old new file mode 100755 index 00000000..8764f337 --- /dev/null +++ b/unix/hlib/install.old @@ -0,0 +1,943 @@ +#!/bin/csh +# +# INSTALL -- Install IRAF on a UNIX/IRAF host. May also be run after the +# initial installation as a consistency check to verify that all the necessary +# links and file permissions are still in place (e.g., after updating UNIX +# itself). +# +# Usage: install [-n] [-r rootdir] [-i imdir] [-b localbindir] \ +# [-R oldroot] [-I oldimdir] [-u username (e.g., 'iraf')] +# [-m mach (e.g., 'sparc', 'mc68020') ] +# +# Example: +# % su +# % cd $hlib +# % install -n +# % install +# +# If run with no arguments, INSTALL will make an informed guess and prompt +# with this value; type <return> to accept the value, or enter a new value. +# +# Use "install -n" to do a dry run to see what the would be done, without +# actually modifying the host system and IRAF configuration files. To do the +# actual installation one must be superuser, but anyone can run "install -n" +# to see what it would do. +# ---------------------------------------------------------------------------- + +unset noclobber +unalias cd cp cmp echo ln mv rm sed set grep ls chmod chown pwd touch +set path = (/sbin /usr/sbin /bin /usr/bin /usr/ucb /etc /usr/etc) + +#set echo + +set W = '\([ "]\)' # match a blank, tab, or " +set TEMP = "/tmp/I_temp" +set exec = yes +set user = iraf +set LS = /bin/ls +alias PUT "mv -f \!*; chown $user \!$ " + +# Determine platform architecture. +if (-f /etc/redhat-release) then + if (`uname -m` == "ppc") then + set mach = linuxppc + else + set mach = redhat + endif +else + set mach = `uname -s | tr '[A-Z]' '[a-z]'` +endif + +if ($mach == "darwin") then + set mach = macosx +endif + +if ($?iraf == 1) then + if (! -d $iraf) then + setenv iraf "" + endif +else + setenv iraf "" +endif + +set imdir = "" +set lbin = "" +set o_iraf = "" +set o_imdir = "" + +# Process any command line arguments. +while ("$1" != "") + switch ("$1") + case -n: # no execute + alias PUT "diff \!$ \!^; rm -f $TEMP" + set exec = no + breaksw + case -b: # set local bin directory (unix) + if ("$2" != "") then + shift + else + echo "missing argument to '-b <localbindir>' switch" + exit 1 + endif + set lbin = "$1" + breaksw + case -i: # set imdir directory + if ("$2" != "") then + shift + else + echo "missing argument to '-i <imdir>' switch" + exit 1 + endif + set imdir = "$1" + breaksw + case -m: # set machine type + if ("$2" != "") then + shift + else + echo "missing argument to '-m <mach>' switch" + exit 1 + endif + set mach = "$1" + breaksw + case -r: # set root directory + if ("$2" != "") then + shift + else + echo "missing argument to '-r <irafdir>' switch" + exit 1 + endif + setenv iraf "$1" + breaksw + case -I: # set old imdir directory + if ("$2" != "") then + shift + else + echo "missing argument to '-I <o_imdir>' switch" + exit 1 + endif + set o_imdir = "$1" + breaksw + case -R: # set old root directory + if ("$2" != "") then + shift + else + echo "missing argument to '-R <o_iraf>' switch" + exit 1 + endif + set o_iraf = "$1" + breaksw + case -u: # set user name for iraf, e.g, 'iraf' + if ("$2" != "") then + shift + else + echo "missing argument to '-u <irafowner>' switch" + exit 1 + endif + set user = "$1" + breaksw + default: + echo "install: unknown argument $1" + breaksw + endsw + + if ("$2" == "") then + break + else + shift + endif +end + +# Set $iraf, the new root directory for iraf. The system must already have +# been read in at this directory (e.g., /usr/iraf), but we assume that no +# files have yet been modified. + +if ("$iraf" == "") then + # Make a guess at what the new root directory is. + set d_iraf = "" + if (-d /iraf/iraf) then + set d_iraf = /iraf/iraf + else if (-d /iraf) then + set d_iraf = /iraf + else if (-d /usr/iraf) then + set d_iraf = /usr/iraf + else + # Search for a directory /u*/iraf. + foreach i (/u*) + if (-d $i/iraf) then + set d_iraf = "$i/iraf" + break + endif + end + # Search for a directory /*/iraf. + if ("$d_iraf" == "") then + foreach i (/*) + if (-d $i/iraf) then + set d_iraf = "$i/iraf" + break + endif + end + endif + endif + + if ("$d_iraf" == "") then + set d_iraf = /usr/iraf + endif +else + set d_iraf = $iraf +endif + +# If the given directory doesn't exist, compute the root directory relative +# to $iraf/unix/hlib (our current directory, presumably). + +if (! -d $d_iraf) then + set d_iraf = `(cd ../..;cwd)` +endif + +set d_iraf = `echo $iraf | sed -e 's+/\(["]*\)$+\1+'` +echo -n "new iraf root directory ($d_iraf): " +setenv iraf "$<" +if ("$iraf" == "") then + setenv iraf "$d_iraf" +endif + +# Get the values of o_iraf and o_imdir from the current mkiraf.csh file, if +# not already otherwise defined. + +cd $iraf/unix/hlib +set WS = '[ ]' +if ("$o_iraf" == "") then + set o_iraf =\ + `grep "^set$WS*iraf" mkiraf.csh | sed -e "s+^.*=$WS*++" | sed -e 's+"++g'` +endif +if ("$o_imdir" == "") then + set o_imdir =\ + `grep "^set$WS*imdir" mkiraf.csh | sed -e "s+^.*=$WS*++" | sed -e 's+"++g'` +endif + +# Strip any trailing / in the pathname to be matched, so that the trailing /, +# if present, will be LEFT in the occurrence of the path in the file. + +set o_iraf = `echo $o_iraf | sed -e 's+/\(["]*\)$+\1+'` +set o_imdir = `echo $o_imdir | sed -e 's+/\(["]*\)$+\1+'` + +# Set $imdir, the default user image storage root directory. Each user imdir +# will be a subdirectory of this directory by default, when MKIRAF is run. +# Since bulk image data can consume hundreds of megabytes of disk space, IRAF +# likes to keep such data on a public scratch device, which is probably not +# backed up, which has a short file expiration interval, and possibly which +# has been configured (newfs/mkfs) with a large block size for fast seq. i/o. + +if ("$imdir" == "") then + if (-d $o_imdir) then + set d_imdir = $o_imdir + else if (-d /tmp2) then + set d_imdir = /tmp2/iraf + else if (-d /tmp3) then + set d_imdir = /tmp3/iraf + else if (-d /usr/tmp) then + set d_imdir = /usr/tmp + else + set d_imdir = /tmp + endif + + echo -n "default root image storage directory ($d_imdir): " + set imdir = "$<" + if ("$imdir" == "") then + set imdir = "$d_imdir" + endif +endif + +# Get UNIX directory where HSI commands (links) are to be installed, if not +# set on command line. IRAF will only install a very few new commands in this +# directory. Ideally it should be a directory on the standard user $path, +# so that users do not have to customize their . files just to run IRAF. + +if ("$lbin" == "") then + # Look around and come up with a likely candidate directory. + if (-d /usr/local/bin) then + set d_lbin = /usr/local/bin + else if (-d /local/bin) then + set d_lbin = /local/bin + else + set d_lbin = /usr/bin + endif + + echo -n "local unix commands directory ($d_lbin): " + set lbin = "$<" + if ("$lbin" == "") then + set lbin = "$d_lbin" + endif +endif + +# Verify the machine type. +echo "install iraf for machine type $mach" +# Document the old root pathnames. +echo "old iraf root = $o_iraf, old imdir = $o_imdir" + +# Cannot have iraf and imdir the same. +if ($iraf == $imdir) then + echo "imdir cannot be the same as the iraf root, try again" + exit 1 +endif + +# The following is partially system dependent. +# ------------------------------------------ +# Set the BINDIRS pathnames - directories where the HSI executables go. +set host = "$iraf/unix" +set hbin = "$iraf/unix/bin.$mach" # "mach" is SUN specific!! +set hlib = "$iraf/unix/hlib" +set fbin = "$iraf/bin" + +# Replace any // by /. +set host = `echo $host | sed -e "s+//+/+g"` +set hbin = `echo $hbin | sed -e "s+//+/+g"` +set fbin = `echo $fbin | sed -e "s+//+/+g"` +set hlib = `echo $hlib | sed -e "s+//+/+g"` + +# Strip any trailing /. +set host = `echo $host | sed -e 's+/\(["]*\)$+\1+'` +set hbin = `echo $hbin | sed -e 's+/\(["]*\)$+\1+'` +set fbin = `echo $fbin | sed -e 's+/\(["]*\)$+\1+'` +set hlib = `echo $hlib | sed -e 's+/\(["]*\)$+\1+'` +set BINDIRS = "$hbin $hlib $fbin" + +# The following file lists are partially system dependent. +set PATHFILES = "mkiraf.csh libc/iraf.h cl.csh" +set MODEFILES = "mkiraf.csh mkmlist.csh generic.e mkpkg.e rmbin.e rmfiles.e rpp.e rtar.e wtar.e xc.e xpp.e xyacc.e sgidispatch.e $hbin/sgi2*.e cl.csh mkfloat.csh fc.csh $host/reboot" +set LINKFILES = "cl.e generic.e mkiraf.csh mkmlist.csh mkpkg.e rmbin.e rmfiles.e rtar.e sgidispatch.e wtar.e rpp.e xpp.e xyacc.e xc.e" +# ------------------------------------------ + +# Begin installation. +# ------------------ + +echo "installing iraf at $iraf, imdir=$imdir, lbindir=$lbin" +echo -n "proceed with installation? (yes): "; set temp = $< +if (! ($temp == "" || $temp == "y" || $temp == "yes")) then + echo "installation terminated" + exit 1 +else + echo "" +endif + +# Create the root imdir as a public scratch directory, if not already created. +if (! -d $imdir) then + echo "creating root imdir at $imdir" + if ($exec == yes) then + mkdir $imdir; chmod 777 $imdir + endif +else + if ($exec == yes) then + chmod 777 $imdir + endif + echo "default root imdir is ok" +endif + +# Allow deletion of files in /tmp - needed for multiuser tape allocation. +if ($exec == yes) then + echo "set delete permission on /tmp" + chmod -t /tmp +endif + +# Initialize permissions of tape devices. +if ($exec == yes) then + echo "set mode 0666 on magtape devices to permit tape allocation" + chmod 666 /dev/*st[0-4]* +endif + +# Set owner=root for the device allocation task, alloc.e. + +foreach i ($BINDIRS) + if (-e $i/alloc.e) then + if ("`$LS -l $i/alloc.e | grep 'rwsr-.*root'`" != "") then + echo "device allocation task $i/alloc.e is ok" + else + echo "chown $i/alloc.e to root, set uid modebit" + if ($exec == yes) then + chown 0 $i/alloc.e + chmod u+s $i/alloc.e + endif + endif + break + else + echo "cannot find alloc.e" + endif +end + +# Edit the $iraf pathname in the .login file for user 'iraf'. +cd $iraf/local + +if (-e .login) then + rm -f $TEMP >& /dev/null + sed -e "s+$W$o_iraf+\1$iraf+" .login > $TEMP + cmp -s .login $TEMP + if ($status) then + echo "updating $iraf/local/.login" + PUT $TEMP .login + else + echo "iraf .login file is ok" + rm -f $TEMP + endif +else + echo "cannot find the iraf .login file" +endif + +# Edit the $iraf and $imdir pathnames in the mkiraf.csh and libc/iraf.h files. +cd $iraf/unix/hlib + +foreach i ($PATHFILES) + if (-e $i) then + rm -f $TEMP >& /dev/null + sed -e "s+$W$o_iraf+\1$iraf+" $i |\ + sed -e "s+$W$o_imdir+\1$imdir+" > $TEMP + cmp -s $i $TEMP + if ($status) then + echo "updating $i" + PUT $TEMP $i + if ($exec == yes) then + chmod 755 $i + endif + else + echo "$i is ok" + rm -f $TEMP + endif + else + echo "cannot find $i" + endif +end + +# Set default file permissions for the executable files in the BINDIRS, +# in case the file mode has somehow been changed, e.g., in a file restore +# or copy. + +echo "--------------- Check File Permissions ----------------" + +foreach i ($MODEFILES) + set file = $i + if (! -e $file) then + foreach j ($BINDIRS) + if (-e $j/$i) then + set file = $j/$i + break + endif + end + endif + + if (-e $file) then + if ("`$LS -l $file | grep '^.rwxr.xr.x'`" != "") then + echo "file $file exists with the correct permissions" + else + echo "set mode for $file to 0755" + if ($exec == yes) then + chmod 755 $file + endif + endif + else + echo "cannot find $file" + endif +end + +# Link $hlib/libc/iraf.h to <iraf.h>. This is needed not only to compile C +# source files in iraf, but also to define $iraf, $host, etc. for iraf tasks. + +echo "---------------- Check Symbolic Links -----------------" +set file1 = /usr/include/iraf.h +set file2 = $iraf/unix/hlib/libc/iraf.h + +if (-e $file1) then + if ("`$LS -l $file1 | grep $file2`" != "") then + echo "symbolic link $file1 is ok" + else + echo "link $file1 exists but is invalid; unlink $file1" + if ($exec == yes) then + rm -f $file1 + endif + echo "make symbolic link $file1 -> $file2" + if ($exec == yes) then + rm -f $file1 + ln -s $file2 $file1 + endif + endif +else + echo "make symbolic link $file1 -> $file2" + if ($exec == yes) then + rm -f $file1 + ln -s $file2 $file1 + endif +endif + +# Establish the remaining symbolic links to HSI tasks. +echo "directory $lbin" +cd $lbin + +foreach i ($LINKFILES) + # Locate the file to be linked to. + set file1 = $i:r + foreach j ($BINDIRS) + set file2 = $j/$file1.csh + if (-e $file2) then + break + endif + set file2 = $j/$i + if (-e $file2) then + break + endif + end + + # Verify or set the link. + if ("`$LS $file1`" == "$file1") then + if ("`$LS -l $file1 | grep $file2`" != "") then + echo "symbolic link $file1 is ok" + else + echo "link $file1 exists but is invalid; unlink $file1" + if ($exec == yes) then + rm -f $file1 + endif + echo "make symbolic link $file1 -> $file2" + if ($exec == yes) then + rm -f $file1 + ln -s $file2 $file1 + endif + endif + else + echo "make symbolic link $file1 -> $file2" + if ($exec == yes) then + rm -f $file1 + ln -s $file2 $file1 + endif + endif +end + +# Mark the system update time. +echo 'touch hlib$utime' +if ($exec == yes) then + touch $hlib/utime +endif + +#exit 0 # COMMENT OUT FOR SUN/IRAF + +# SUN/IRAF specific stuff. +# ------------------------------ + +if ($mach == linux || $mach == redhat || $mach == suse || \ + $mach == freebsd || $mach == sunos || $mach == linuxppc) then + set pciraf = yes +else + set pciraf = no +endif + +# If PC-IRAF only do X. +if ($pciraf == yes) then + goto xconfig +endif + +# Install custom suntools (GTERM and IMTOOL). + +if ("`grep Release.4 /etc/motd`" != "" || `mach` == "i386") then + set SUNOS4 = yes +else + set SUNOS4 = no +endif + +echo "" +echo "------------ Custom Suntools Installation -------------" + +if ($SUNOS4 == "yes") then + # SunOS 4.0 and later versions. + # Install GTERM and IMTOOL executables in /usr/bin. + # ---------------------------------- + + # Get the path to the user bin directory. + set usrbin = /usr/bin + if ($mach != `mach`) then + echo -n "/usr/bin directory for machine type $mach ($usrbin): " + set usrbin = "$<" + if ("$usrbin" == "") then + set usrbin = "$usrbin" + endif + endif + + # Install the executables. + cd $usrbin + foreach i (gterm imtool) + set file2 = $hbin/$i.e + # Check if installed executable, if any, is up to date. + if (-e $i) then + rm -f $TEMP.[12] >& /dev/null + size $i > $TEMP.1; size $file2 > $TEMP.2 + cmp -s $TEMP.1 $TEMP.2 + if ($status || "`find $file2 -newer $i -print`" != "") then + set uptodate = no + else + set uptodate = yes + endif + rm $TEMP.[12] + else + set uptodate = no + endif + + # Update file if necessary. + if ($uptodate == no) then + echo "copy $file2 to $usrbin/$i" + if (-e $file2) then + if ($exec == yes) then + if (-e $i) then + rm -f $i + endif + cp $file2 $i + endif + else + echo "file $file2 not found" + endif + else + echo "installed version of $i is up to date" + endif + end + + # Add entries for GTERM and IMTOOL to rootmenu file, if necessary. + set file = /usr/lib/rootmenu + if ("`grep gterm $file`" != "" &&\ + "`grep imtool $file`" != "") then + echo "standard rootmenu file is ok (has gterm, imtool entries)" + else + echo -n "add entries for gterm and imtool to rootmenu file? (yes): " + set temp = "$<" + + if ("$temp" == "" || "$temp" == "y" || "$temp" == "yes") then + (rm -f $TEMP; rm -f $TEMP.s) >& /dev/null + if ("`grep gterm $file`" == "") then + echo '7a\' > $TEMP.s + echo '"Gterm" gterm' >> $TEMP.s + sed -f $TEMP.s < $file > $TEMP + PUT $TEMP $file; rm $TEMP.s + endif + if ("`grep imtool $file`" == "") then + echo '8a\' > $TEMP.s + echo '"ImTool" imtool' >> $TEMP.s + sed -f $TEMP.s < $file > $TEMP + PUT $TEMP $file; rm $TEMP.s + endif + endif + endif + +else + # Install the custom Suntools - SunOS versions prior to 4.0. + # ------------------------------- + echo -n "install custom suntools (GTERM, IMTOOL)? (yes): "; set temp = "$<" + if (! ("$temp" == "" || "$temp" == "y" || "$temp" == "yes")) then + echo "suntools installation skipped" + exit 0 + endif + + # The custom suntools executable is upwards compatible with standard + # suntools. If the answer to the query below is yes, the new executable + # replaces /usr/bin/suntools, which is renamed /usr/bin/suntools.BAK. + # If the answer is no, GTERM and IMTOOL will be linked to the uninstalled + # IRAF version of suntools, $iraf/local/suntools, which will work, but + # runtime memory requirements will be 800 Kb or so greater than otherwise. + # The main reason one would not want to use the IRAF /usr/bin/suntools is + # if a custom version of /usr/bin/suntools containing tools not in the + # standard SUN version of suntools has already been installed. + + echo -n "install custom version of /usr/bin/suntools executable? (yes): " + set temp = "$<" + + if ("$temp" == "" || "$temp" == "y" || "$temp" == "yes") then + # Install custom version of /usr/bin/suntools, and make links for gterm + # and imtool in /usr/bin, like the other suntools. + + set usrbin = /usr/bin + set file2 = $hbin/suntools.e + + if ($mach != `mach`) then + echo -n "/usr/bin directory for machine type $mach ($usrbin): " + set usrbin = "$<" + if ("$usrbin" == "") then + set usrbin = "$usrbin" + endif + endif + + set suntools = $usrbin/suntools + + # Check if installed executable is up to date. + rm -f $TEMP.[12] >& /dev/null + size $suntools > $TEMP.1; size $file2 > $TEMP.2 + cmp -s $TEMP.1 $TEMP.2 + if ($status || "`find $file2 -newer $suntools -print`" != "") then + set uptodate = no + else + set uptodate = yes + endif + + rm $TEMP.[12] + + # Update file if necessary. + if ($uptodate == no) then + if (! -e $suntools.BAK) then + echo "rename standard suntools ($suntools) to $suntools.BAK" + if ($exec == yes) then + cp $suntools $suntools.BAK + endif + endif + + echo "copy $file2 to $suntools" + if (-e $file2) then + if ($exec == yes) then + cp $file2 temp + mv -f temp $suntools + endif + else + echo "file $file2 not found" + endif + else + echo "installed version of $suntools is up to date" + endif + + # Add entries for GTERM and IMTOOL to rootmenu file, if necessary. + set file = /usr/lib/rootmenu + if ("`grep gterm $file`" != "" &&\ + "`grep imtool $file`" != "") then + echo "standard rootmenu file is ok (has gterm, imtool entries)" + else + echo -n "add entries for gterm and imtool to rootmenu file? (yes): " + set temp = "$<" + + if ("$temp" == "" || "$temp" == "y" || "$temp" == "yes") then + (rm -f $TEMP; rm -f $TEMP.s) >& /dev/null + if ("`grep gterm $file`" == "") then + echo '7a\' > $TEMP.s + echo '"Gterm" gterm' >> $TEMP.s + sed -f $TEMP.s < $file > $TEMP + PUT $TEMP $file; rm $TEMP.s + endif + if ("`grep imtool $file`" == "") then + echo '8a\' > $TEMP.s + echo '"ImTool" imtool' >> $TEMP.s + sed -f $TEMP.s < $file > $TEMP + PUT $TEMP $file; rm $TEMP.s + endif + endif + endif + + # Make sure GTERM and IMTOOL links are in place. + echo "directory $usrbin" + cd $usrbin + + # Note that the following is resolved at runtime, hence the /usr/bin + # is correct regardless of the physical directory. + set exe = /usr/bin/suntools + + foreach i (gterm imtool) + if (-e $lbin/$i) then + echo "remove old symbolic link $lbin/$i" + if ($exec == yes) then + /bin/rm -f $lbin/$i + endif + endif + if (-e $i) then + if ("`$LS -l $i | grep $exe`" != "") then + echo "symbolic link $i is ok" + else + echo "link $i exists but is invalid; unlink it" + if ($exec == yes) then + /bin/rm -f $i + endif + echo "make symbolic link '$i' pointing to $exe" + if ($exec == yes) then + /bin/ln -s $exe $i + endif + endif + else + echo "make symbolic link '$i' pointing to $exe" + if ($exec == yes) then + ln -s $exe $i + endif + endif + end + + else + # Do not install custom suntools and rootmenu files; leave these in + # $hbin, but add links to $lbin for gterm, and imtool, pointing to + # local iraf version of suntools. + + set file = $hbin/suntools.e + if (! -e $file) then + echo "custom suntools executable $file is missing!!" + endif + + echo "directory $lbin" + cd $lbin + foreach i (gterm imtool) + if (-e /usr/bin/$i) then + echo "remove old symbolic link /usr/bin/$i" + if ($exec == yes) then + rm -f /usr/bin/$i + endif + endif + if (-e $i) then + if ("`$LS -l $i | grep iraf`" != "") then + echo "symbolic link $i is ok" + else + echo "link $i exists but is invalid; unlink it" + if ($exec == yes) then + rm -f $i + endif + echo "make symbolic link '$i' -> $file" + if ($exec == yes) then + ln -s $file $i + endif + endif + else + echo "make symbolic link '$i' -> $file" + if ($exec == yes) then + ln -s $file $i + endif + endif + end + endif +endif + +# Common code for GTERM/IMTOOL installation. +# ------------------------------------------- + +xconfig: + +# Make sure special device entries for the IMTOOL display server exist +# in /dev. + +foreach i (/dev/imt1i /dev/imt1o) + if (-e $i) then + echo "imtool device entry $i is ok" + else + echo "make device entry $i for imtool" + if ($exec == yes) then + if ($mach == linux || $mach == redhat || $mach == suse || \ + $mach == linuxppc) then + mknod $i p + else if ($mach == freebsd) then + mkfifo $i + else + mknod $i p + endif + chmod 777 $i + endif + endif +end + +# The old /dev/imt1 entry is now just a link to /dev/imt1o. +set file = /dev/imt1 +if (-e $file) then + if ("`$LS -l $file | grep imt1o`" != "") then + echo "imtool device entry $file is ok" + else + echo "make device entry $file for imtool" + if ($exec == yes) then + rm -f $file + ln -s /dev/imt1o $file + endif + endif +else + echo "make device entry $file for imtool" + if ($exec == yes) then + ln -s /dev/imt1o $file + endif +endif + +# Install the default IMTOOLRC frame buffer configuration file. The path +# /usr/local/lib path hardwired in to imtool and cannot easily be changed, but +# if installation of the default imtoolrc in this directory is not possible, +# the file can be installed in each imtool user's login directory as .imtoolrc, +# or the environment variable IMTOOLRC can be defined in each imtool user's +# .login or .cshrc to define the path to the file. + +# Verify imtoolrc link. +cd /usr/local/lib +set file1 = imtoolrc +set file2 = $iraf/dev/imtoolrc + +# Verify or set the link. +if ("`$LS $file1`" == "$file1") then + if ("`$LS -l $file1 | grep $file2`" != "") then + echo "symbolic link $file1 is ok" + else + echo "link $file1 exists but is invalid; unlink $file1" + if ($exec == yes) then + rm -f $file1 + endif + echo "make symbolic link $file1 -> $file2" + if ($exec == yes) then + rm -f $file1 + ln -s $file2 $file1 + endif + endif +else + echo "make symbolic link $file1 -> $file2" + if ($exec == yes) then + rm -f $file1 + ln -s $file2 $file1 + endif +endif + +# Make sure there are entries in the the termcap and graphcap files for xgterm +# and imtool. + +set temp = `grep -l xgterm $iraf/dev/termcap | grep -v "^#"` +if ("$temp" == "") then + echo "WARNING: no xgterm entry in termcap file" +else + echo "termcap file is ok (contains xgterm entry)" +endif + +set gcok = yes +set temp = `grep -l xgterm $iraf/dev/graphcap | grep -v "^#"` +if ("$temp" == "") then + echo "WARNING: no xgterm entry in graphcap file" + set gcok = no +endif +set temp = `grep -l imtool $iraf/dev/graphcap | grep -v "^#"` +if ("$temp" == "") then + echo "WARNING: no imtool entry in graphcap file" + set gcok = no +endif +if ($gcok == yes) then + echo "graphcap file is ok (contains xgterm, imtool entries)" +endif + +# Install or update the XGTERM and XIMTOOL manual pages. +if ($pciraf == no && -e /usr/man/mann) then + cd /usr/man/mann + set src = $iraf/unix/x11 + + foreach i (xgterm ximtool) + set file1 = $i.n + set file2 = $src/$i.man + + # Install or update the manpage source file. + if (-e $file1) then + cmp -s $file1 $file2 + if ($status) then + echo "update $i manual page" + if ($exec == yes) then + cp $file2 $file1 + endif + else + echo "$i manual page is up to date" + endif + else + echo "install $i manual page in /usr/man/mann" + if ($exec == yes) then + cp $file2 $file1 + endif + endif + + # Rerun catman if necessary. + if (-e /usr/man/catl) then + set file2 = /usr/man/catl/$i.n + if (! -e $file2 || "`find $file1 -newer $file2 -print`" != "") then + echo "rerun catman on section n" + if ($exec == yes) then + /usr/etc/catman n + endif + endif + endif + end +endif diff --git a/unix/hlib/install.port b/unix/hlib/install.port new file mode 100755 index 00000000..dea23d01 --- /dev/null +++ b/unix/hlib/install.port @@ -0,0 +1,943 @@ +#!/bin/csh -f +# +# INSTALL -- Install IRAF on a UNIX/IRAF host. May also be run after the +# initial installation as a consistency check to verify that all the necessary +# links and file permissions are still in place (e.g., after updating UNIX +# itself). +# +# Usage: install [-n] [-r rootdir] [-i imdir] [-b localbindir] \ +# [-R oldroot] [-I oldimdir] [-u username (e.g., 'iraf')] +# [-m mach (e.g., 'sparc', 'mc68020') ] +# +# Example: +# % su +# % cd $hlib +# % install -n +# % install +# +# If run with no arguments, INSTALL will make an informed guess and prompt +# with this value; type <return> to accept the value, or enter a new value. +# +# Use "install -n" to do a dry run to see what the would be done, without +# actually modifying the host system and IRAF configuration files. To do the +# actual installation one must be superuser, but anyone can run "install -n" +# to see what it would do. +# ---------------------------------------------------------------------------- + +unset noclobber +unalias cd cp cmp echo ln mv rm sed set grep ls chmod chown pwd touch +set path = (/sbin /usr/sbin /bin /usr/bin /usr/ucb /etc /usr/etc) + +#set echo + +set W = '\([ "]\)' # match a blank, tab, or " +set TEMP = "/tmp/I_temp" +set exec = yes +set user = iraf +set LS = /bin/ls +alias PUT "mv -f \!*; chown $user \!$ " + +# Determine platform architecture. +if (-f /etc/redhat-release) then + if (`uname -m` == "ppc") then + set mach = linuxppc + else + set mach = redhat + endif +else + set mach = `uname -s | tr '[A-Z]' '[a-z]'` +endif + +if ($mach == "darwin") then + set mach = macosx +endif + +if ($?iraf == 1) then + if (! -d $iraf) then + setenv iraf "" + endif +else + setenv iraf "" +endif + +set imdir = "" +set lbin = "" +set o_iraf = "" +set o_imdir = "" + +# Process any command line arguments. +while ("$1" != "") + switch ("$1") + case -n: # no execute + alias PUT "diff \!$ \!^; rm -f $TEMP" + set exec = no + breaksw + case -b: # set local bin directory (unix) + if ("$2" != "") then + shift + else + echo "missing argument to '-b <localbindir>' switch" + exit 1 + endif + set lbin = "$1" + breaksw + case -i: # set imdir directory + if ("$2" != "") then + shift + else + echo "missing argument to '-i <imdir>' switch" + exit 1 + endif + set imdir = "$1" + breaksw + case -m: # set machine type + if ("$2" != "") then + shift + else + echo "missing argument to '-m <mach>' switch" + exit 1 + endif + set mach = "$1" + breaksw + case -r: # set root directory + if ("$2" != "") then + shift + else + echo "missing argument to '-r <irafdir>' switch" + exit 1 + endif + setenv iraf "$1" + breaksw + case -I: # set old imdir directory + if ("$2" != "") then + shift + else + echo "missing argument to '-I <o_imdir>' switch" + exit 1 + endif + set o_imdir = "$1" + breaksw + case -R: # set old root directory + if ("$2" != "") then + shift + else + echo "missing argument to '-R <o_iraf>' switch" + exit 1 + endif + set o_iraf = "$1" + breaksw + case -u: # set user name for iraf, e.g, 'iraf' + if ("$2" != "") then + shift + else + echo "missing argument to '-u <irafowner>' switch" + exit 1 + endif + set user = "$1" + breaksw + default: + echo "install: unknown argument $1" + breaksw + endsw + + if ("$2" == "") then + break + else + shift + endif +end + +# Set $iraf, the new root directory for iraf. The system must already have +# been read in at this directory (e.g., /usr/iraf), but we assume that no +# files have yet been modified. + +if ("$iraf" == "") then + # Make a guess at what the new root directory is. + set d_iraf = "" + if (-d /iraf/iraf) then + set d_iraf = /iraf/iraf + else if (-d /iraf) then + set d_iraf = /iraf + else if (-d /usr/iraf) then + set d_iraf = /usr/iraf + else + # Search for a directory /u*/iraf. + foreach i (/u*) + if (-d $i/iraf) then + set d_iraf = "$i/iraf" + break + endif + end + # Search for a directory /*/iraf. + if ("$d_iraf" == "") then + foreach i (/*) + if (-d $i/iraf) then + set d_iraf = "$i/iraf" + break + endif + end + endif + endif + + if ("$d_iraf" == "") then + set d_iraf = /usr/iraf + endif +else + set d_iraf = $iraf +endif + +# If the given directory doesn't exist, compute the root directory relative +# to $iraf/unix/hlib (our current directory, presumably). + +if (! -d $d_iraf) then + set d_iraf = `(cd ../..;cwd)` +endif + +set d_iraf = `echo $iraf | sed -e 's+/\(["]*\)$+\1+'` +echo -n "new iraf root directory ($d_iraf): " +setenv iraf "$<" +if ("$iraf" == "") then + setenv iraf "$d_iraf" +endif + +# Get the values of o_iraf and o_imdir from the current mkiraf.csh file, if +# not already otherwise defined. + +cd $iraf/unix/hlib +set WS = '[ ]' +if ("$o_iraf" == "") then + set o_iraf =\ + `grep "^set$WS*iraf" mkiraf.csh | sed -e "s+^.*=$WS*++" | sed -e 's+"++g'` +endif +if ("$o_imdir" == "") then + set o_imdir =\ + `grep "^set$WS*imdir" mkiraf.csh | sed -e "s+^.*=$WS*++" | sed -e 's+"++g'` +endif + +# Strip any trailing / in the pathname to be matched, so that the trailing /, +# if present, will be LEFT in the occurrence of the path in the file. + +set o_iraf = `echo $o_iraf | sed -e 's+/\(["]*\)$+\1+'` +set o_imdir = `echo $o_imdir | sed -e 's+/\(["]*\)$+\1+'` + +# Set $imdir, the default user image storage root directory. Each user imdir +# will be a subdirectory of this directory by default, when MKIRAF is run. +# Since bulk image data can consume hundreds of megabytes of disk space, IRAF +# likes to keep such data on a public scratch device, which is probably not +# backed up, which has a short file expiration interval, and possibly which +# has been configured (newfs/mkfs) with a large block size for fast seq. i/o. + +if ("$imdir" == "") then + if (-d $o_imdir) then + set d_imdir = $o_imdir + else if (-d /tmp2) then + set d_imdir = /tmp2/iraf + else if (-d /tmp3) then + set d_imdir = /tmp3/iraf + else if (-d /usr/tmp) then + set d_imdir = /usr/tmp + else + set d_imdir = /tmp + endif + + echo -n "default root image storage directory ($d_imdir): " + set imdir = "$<" + if ("$imdir" == "") then + set imdir = "$d_imdir" + endif +endif + +# Get UNIX directory where HSI commands (links) are to be installed, if not +# set on command line. IRAF will only install a very few new commands in this +# directory. Ideally it should be a directory on the standard user $path, +# so that users do not have to customize their . files just to run IRAF. + +if ("$lbin" == "") then + # Look around and come up with a likely candidate directory. + if (-d /usr/local/bin) then + set d_lbin = /usr/local/bin + else if (-d /local/bin) then + set d_lbin = /local/bin + else + set d_lbin = /usr/bin + endif + + echo -n "local unix commands directory ($d_lbin): " + set lbin = "$<" + if ("$lbin" == "") then + set lbin = "$d_lbin" + endif +endif + +# Verify the machine type. +echo "install iraf for machine type $mach" +# Document the old root pathnames. +echo "old iraf root = $o_iraf, old imdir = $o_imdir" + +# Cannot have iraf and imdir the same. +if ($iraf == $imdir) then + echo "imdir cannot be the same as the iraf root, try again" + exit 1 +endif + +# The following is partially system dependent. +# ------------------------------------------ +# Set the BINDIRS pathnames - directories where the HSI executables go. +set host = "$iraf/unix" +set hbin = "$iraf/unix/bin.$mach" # "mach" is SUN specific!! +set hlib = "$iraf/unix/hlib" +set fbin = "$iraf/bin" + +# Replace any // by /. +set host = `echo $host | sed -e "s+//+/+g"` +set hbin = `echo $hbin | sed -e "s+//+/+g"` +set fbin = `echo $fbin | sed -e "s+//+/+g"` +set hlib = `echo $hlib | sed -e "s+//+/+g"` + +# Strip any trailing /. +set host = `echo $host | sed -e 's+/\(["]*\)$+\1+'` +set hbin = `echo $hbin | sed -e 's+/\(["]*\)$+\1+'` +set fbin = `echo $fbin | sed -e 's+/\(["]*\)$+\1+'` +set hlib = `echo $hlib | sed -e 's+/\(["]*\)$+\1+'` +set BINDIRS = "$hbin $hlib $fbin" + +# The following file lists are partially system dependent. +set PATHFILES = "mkiraf.csh libc/iraf.h cl.csh" +set MODEFILES = "mkiraf.csh mkmlist.csh generic.e mkpkg.e rmbin.e rmfiles.e rpp.e rtar.e wtar.e xc.e xpp.e xyacc.e sgidispatch.e $hbin/sgi2*.e cl.csh mkfloat.csh fc.csh $host/reboot" +set LINKFILES = "cl.e generic.e mkiraf.csh mkmlist.csh mkpkg.e rmbin.e rmfiles.e rtar.e sgidispatch.e wtar.e rpp.e xpp.e xyacc.e xc.e" +# ------------------------------------------ + +# Begin installation. +# ------------------ + +echo "installing iraf at $iraf, imdir=$imdir, lbindir=$lbin" +echo -n "proceed with installation? (yes): "; set temp = $< +if (! ($temp == "" || $temp == "y" || $temp == "yes")) then + echo "installation terminated" + exit 1 +else + echo "" +endif + +# Create the root imdir as a public scratch directory, if not already created. +if (! -d $imdir) then + echo "creating root imdir at $imdir" + if ($exec == yes) then + mkdir $imdir; chmod 777 $imdir + endif +else + if ($exec == yes) then + chmod 777 $imdir + endif + echo "default root imdir is ok" +endif + +# Allow deletion of files in /tmp - needed for multiuser tape allocation. +if ($exec == yes) then + echo "set delete permission on /tmp" + chmod -t /tmp +endif + +# Initialize permissions of tape devices. +if ($exec == yes) then + echo "set mode 0666 on magtape devices to permit tape allocation" + chmod 666 /dev/*st[0-4]* +endif + +# Set owner=root for the device allocation task, alloc.e. + +#foreach i ($BINDIRS) +# if (-e $i/alloc.e) then +# if ("`$LS -l $i/alloc.e | grep 'rwsr-.*root'`" != "") then +# echo "device allocation task $i/alloc.e is ok" +# else +# echo "chown $i/alloc.e to root, set uid modebit" +# if ($exec == yes) then +# chown 0 $i/alloc.e +# chmod u+s $i/alloc.e +# endif +# endif +# break +# else +# echo "cannot find alloc.e" +# endif +#end + +# Edit the $iraf pathname in the .login file for user 'iraf'. +cd $iraf/local + +if (-e .login) then + rm -f $TEMP >& /dev/null + sed -e "s+$W$o_iraf+\1$iraf+" .login > $TEMP + cmp -s .login $TEMP + if ($status) then + echo "updating $iraf/local/.login" + PUT $TEMP .login + else + echo "iraf .login file is ok" + rm -f $TEMP + endif +else + echo "cannot find the iraf .login file" +endif + +# Edit the $iraf and $imdir pathnames in the mkiraf.csh and libc/iraf.h files. +cd $iraf/unix/hlib + +foreach i ($PATHFILES) + if (-e $i) then + rm -f $TEMP >& /dev/null + sed -e "s+$W$o_iraf+\1$iraf+" $i |\ + sed -e "s+$W$o_imdir+\1$imdir+" > $TEMP + cmp -s $i $TEMP + if ($status) then + echo "updating $i" + PUT $TEMP $i + if ($exec == yes) then + chmod 755 $i + endif + else + echo "$i is ok" + rm -f $TEMP + endif + else + echo "cannot find $i" + endif +end + +# Set default file permissions for the executable files in the BINDIRS, +# in case the file mode has somehow been changed, e.g., in a file restore +# or copy. + +echo "--------------- Check File Permissions ----------------" + +#foreach i ($MODEFILES) +# set file = $i +# if (! -e $file) then +# foreach j ($BINDIRS) +# if (-e $j/$i) then +# set file = $j/$i +# break +# endif +# end +# endif +# +# if (-e $file) then +# if ("`$LS -l $file | grep '^.rwxr.xr.x'`" != "") then +# echo "file $file exists with the correct permissions" +# else +# echo "set mode for $file to 0755" +# if ($exec == yes) then +# chmod 755 $file +# endif +# endif +# else +# echo "cannot find $file" +# endif +#end + +# Link $hlib/libc/iraf.h to <iraf.h>. This is needed not only to compile C +# source files in iraf, but also to define $iraf, $host, etc. for iraf tasks. + +echo "---------------- Check Symbolic Links -----------------" +set file1 = /usr/include/iraf.h +set file2 = $iraf/unix/hlib/libc/iraf.h + +if (-e $file1) then + if ("`$LS -l $file1 | grep $file2`" != "") then + echo "symbolic link $file1 is ok" + else + echo "link $file1 exists but is invalid; unlink $file1" + if ($exec == yes) then + rm -f $file1 + endif + echo "make symbolic link $file1 -> $file2" + if ($exec == yes) then + rm -f $file1 + ln -s $file2 $file1 + endif + endif +else + echo "make symbolic link $file1 -> $file2" + if ($exec == yes) then + rm -f $file1 + ln -s $file2 $file1 + endif +endif + +# Establish the remaining symbolic links to HSI tasks. +echo "directory $lbin" +cd $lbin + +foreach i ($LINKFILES) + # Locate the file to be linked to. + set file1 = $i:r + foreach j ($BINDIRS) + set file2 = $j/$file1.csh + if (-e $file2) then + break + endif + set file2 = $j/$i + if (-e $file2) then + break + endif + end + + # Verify or set the link. + if ("`$LS $file1`" == "$file1") then + if ("`$LS -l $file1 | grep $file2`" != "") then + echo "symbolic link $file1 is ok" + else + echo "link $file1 exists but is invalid; unlink $file1" + if ($exec == yes) then + rm -f $file1 + endif + echo "make symbolic link $file1 -> $file2" + if ($exec == yes) then + rm -f $file1 + ln -s $file2 $file1 + endif + endif + else + echo "make symbolic link $file1 -> $file2" + if ($exec == yes) then + rm -f $file1 + ln -s $file2 $file1 + endif + endif +end + +# Mark the system update time. +echo 'touch hlib$utime' +if ($exec == yes) then + touch $hlib/utime +endif + +#exit 0 # COMMENT OUT FOR SUN/IRAF + +# SUN/IRAF specific stuff. +# ------------------------------ + +if ($mach == linux || $mach == redhat || $mach == suse || \ + $mach == freebsd || $mach == sunos || $mach == linuxppc) then + set pciraf = yes +else + set pciraf = no +endif + +# If PC-IRAF only do X. +if ($pciraf == yes) then + goto xconfig +endif + +# Install custom suntools (GTERM and IMTOOL). + +if ("`grep Release.4 /etc/motd`" != "" || `mach` == "i386") then + set SUNOS4 = yes +else + set SUNOS4 = no +endif + +echo "" +echo "------------ Custom Suntools Installation -------------" + +if ($SUNOS4 == "yes") then + # SunOS 4.0 and later versions. + # Install GTERM and IMTOOL executables in /usr/bin. + # ---------------------------------- + + # Get the path to the user bin directory. + set usrbin = /usr/bin + if ($mach != `mach`) then + echo -n "/usr/bin directory for machine type $mach ($usrbin): " + set usrbin = "$<" + if ("$usrbin" == "") then + set usrbin = "$usrbin" + endif + endif + + # Install the executables. + cd $usrbin + foreach i (gterm imtool) + set file2 = $hbin/$i.e + # Check if installed executable, if any, is up to date. + if (-e $i) then + rm -f $TEMP.[12] >& /dev/null + size $i > $TEMP.1; size $file2 > $TEMP.2 + cmp -s $TEMP.1 $TEMP.2 + if ($status || "`find $file2 -newer $i -print`" != "") then + set uptodate = no + else + set uptodate = yes + endif + rm $TEMP.[12] + else + set uptodate = no + endif + + # Update file if necessary. + if ($uptodate == no) then + echo "copy $file2 to $usrbin/$i" + if (-e $file2) then + if ($exec == yes) then + if (-e $i) then + rm -f $i + endif + cp $file2 $i + endif + else + echo "file $file2 not found" + endif + else + echo "installed version of $i is up to date" + endif + end + + # Add entries for GTERM and IMTOOL to rootmenu file, if necessary. + set file = /usr/lib/rootmenu + if ("`grep gterm $file`" != "" &&\ + "`grep imtool $file`" != "") then + echo "standard rootmenu file is ok (has gterm, imtool entries)" + else + echo -n "add entries for gterm and imtool to rootmenu file? (yes): " + set temp = "$<" + + if ("$temp" == "" || "$temp" == "y" || "$temp" == "yes") then + (rm -f $TEMP; rm -f $TEMP.s) >& /dev/null + if ("`grep gterm $file`" == "") then + echo '7a\' > $TEMP.s + echo '"Gterm" gterm' >> $TEMP.s + sed -f $TEMP.s < $file > $TEMP + PUT $TEMP $file; rm $TEMP.s + endif + if ("`grep imtool $file`" == "") then + echo '8a\' > $TEMP.s + echo '"ImTool" imtool' >> $TEMP.s + sed -f $TEMP.s < $file > $TEMP + PUT $TEMP $file; rm $TEMP.s + endif + endif + endif + +else + # Install the custom Suntools - SunOS versions prior to 4.0. + # ------------------------------- + echo -n "install custom suntools (GTERM, IMTOOL)? (yes): "; set temp = "$<" + if (! ("$temp" == "" || "$temp" == "y" || "$temp" == "yes")) then + echo "suntools installation skipped" + exit 0 + endif + + # The custom suntools executable is upwards compatible with standard + # suntools. If the answer to the query below is yes, the new executable + # replaces /usr/bin/suntools, which is renamed /usr/bin/suntools.BAK. + # If the answer is no, GTERM and IMTOOL will be linked to the uninstalled + # IRAF version of suntools, $iraf/local/suntools, which will work, but + # runtime memory requirements will be 800 Kb or so greater than otherwise. + # The main reason one would not want to use the IRAF /usr/bin/suntools is + # if a custom version of /usr/bin/suntools containing tools not in the + # standard SUN version of suntools has already been installed. + + echo -n "install custom version of /usr/bin/suntools executable? (yes): " + set temp = "$<" + + if ("$temp" == "" || "$temp" == "y" || "$temp" == "yes") then + # Install custom version of /usr/bin/suntools, and make links for gterm + # and imtool in /usr/bin, like the other suntools. + + set usrbin = /usr/bin + set file2 = $hbin/suntools.e + + if ($mach != `mach`) then + echo -n "/usr/bin directory for machine type $mach ($usrbin): " + set usrbin = "$<" + if ("$usrbin" == "") then + set usrbin = "$usrbin" + endif + endif + + set suntools = $usrbin/suntools + + # Check if installed executable is up to date. + rm -f $TEMP.[12] >& /dev/null + size $suntools > $TEMP.1; size $file2 > $TEMP.2 + cmp -s $TEMP.1 $TEMP.2 + if ($status || "`find $file2 -newer $suntools -print`" != "") then + set uptodate = no + else + set uptodate = yes + endif + + rm $TEMP.[12] + + # Update file if necessary. + if ($uptodate == no) then + if (! -e $suntools.BAK) then + echo "rename standard suntools ($suntools) to $suntools.BAK" + if ($exec == yes) then + cp $suntools $suntools.BAK + endif + endif + + echo "copy $file2 to $suntools" + if (-e $file2) then + if ($exec == yes) then + cp $file2 temp + mv -f temp $suntools + endif + else + echo "file $file2 not found" + endif + else + echo "installed version of $suntools is up to date" + endif + + # Add entries for GTERM and IMTOOL to rootmenu file, if necessary. + set file = /usr/lib/rootmenu + if ("`grep gterm $file`" != "" &&\ + "`grep imtool $file`" != "") then + echo "standard rootmenu file is ok (has gterm, imtool entries)" + else + echo -n "add entries for gterm and imtool to rootmenu file? (yes): " + set temp = "$<" + + if ("$temp" == "" || "$temp" == "y" || "$temp" == "yes") then + (rm -f $TEMP; rm -f $TEMP.s) >& /dev/null + if ("`grep gterm $file`" == "") then + echo '7a\' > $TEMP.s + echo '"Gterm" gterm' >> $TEMP.s + sed -f $TEMP.s < $file > $TEMP + PUT $TEMP $file; rm $TEMP.s + endif + if ("`grep imtool $file`" == "") then + echo '8a\' > $TEMP.s + echo '"ImTool" imtool' >> $TEMP.s + sed -f $TEMP.s < $file > $TEMP + PUT $TEMP $file; rm $TEMP.s + endif + endif + endif + + # Make sure GTERM and IMTOOL links are in place. + echo "directory $usrbin" + cd $usrbin + + # Note that the following is resolved at runtime, hence the /usr/bin + # is correct regardless of the physical directory. + set exe = /usr/bin/suntools + + foreach i (gterm imtool) + if (-e $lbin/$i) then + echo "remove old symbolic link $lbin/$i" + if ($exec == yes) then + /bin/rm -f $lbin/$i + endif + endif + if (-e $i) then + if ("`$LS -l $i | grep $exe`" != "") then + echo "symbolic link $i is ok" + else + echo "link $i exists but is invalid; unlink it" + if ($exec == yes) then + /bin/rm -f $i + endif + echo "make symbolic link '$i' pointing to $exe" + if ($exec == yes) then + /bin/ln -s $exe $i + endif + endif + else + echo "make symbolic link '$i' pointing to $exe" + if ($exec == yes) then + ln -s $exe $i + endif + endif + end + + else + # Do not install custom suntools and rootmenu files; leave these in + # $hbin, but add links to $lbin for gterm, and imtool, pointing to + # local iraf version of suntools. + + set file = $hbin/suntools.e + if (! -e $file) then + echo "custom suntools executable $file is missing!!" + endif + + echo "directory $lbin" + cd $lbin + foreach i (gterm imtool) + if (-e /usr/bin/$i) then + echo "remove old symbolic link /usr/bin/$i" + if ($exec == yes) then + rm -f /usr/bin/$i + endif + endif + if (-e $i) then + if ("`$LS -l $i | grep iraf`" != "") then + echo "symbolic link $i is ok" + else + echo "link $i exists but is invalid; unlink it" + if ($exec == yes) then + rm -f $i + endif + echo "make symbolic link '$i' -> $file" + if ($exec == yes) then + ln -s $file $i + endif + endif + else + echo "make symbolic link '$i' -> $file" + if ($exec == yes) then + ln -s $file $i + endif + endif + end + endif +endif + +# Common code for GTERM/IMTOOL installation. +# ------------------------------------------- + +xconfig: + +# Make sure special device entries for the IMTOOL display server exist +# in /dev. + +foreach i (/dev/imt1i /dev/imt1o) + if (-e $i) then + echo "imtool device entry $i is ok" + else + echo "make device entry $i for imtool" + if ($exec == yes) then + if ($mach == linux || $mach == redhat || $mach == suse || \ + $mach == linuxppc) then + mknod $i p + else if ($mach == freebsd) then + mkfifo $i + else + mknod $i p + endif + chmod 777 $i + endif + endif +end + +# The old /dev/imt1 entry is now just a link to /dev/imt1o. +set file = /dev/imt1 +if (-e $file) then + if ("`$LS -l $file | grep imt1o`" != "") then + echo "imtool device entry $file is ok" + else + echo "make device entry $file for imtool" + if ($exec == yes) then + rm -f $file + ln -s /dev/imt1o $file + endif + endif +else + echo "make device entry $file for imtool" + if ($exec == yes) then + ln -s /dev/imt1o $file + endif +endif + +# Install the default IMTOOLRC frame buffer configuration file. The path +# /usr/local/lib path hardwired in to imtool and cannot easily be changed, but +# if installation of the default imtoolrc in this directory is not possible, +# the file can be installed in each imtool user's login directory as .imtoolrc, +# or the environment variable IMTOOLRC can be defined in each imtool user's +# .login or .cshrc to define the path to the file. + +# Verify imtoolrc link. +cd /usr/local/lib +set file1 = imtoolrc +set file2 = $iraf/dev/imtoolrc + +# Verify or set the link. +if ("`$LS $file1`" == "$file1") then + if ("`$LS -l $file1 | grep $file2`" != "") then + echo "symbolic link $file1 is ok" + else + echo "link $file1 exists but is invalid; unlink $file1" + if ($exec == yes) then + rm -f $file1 + endif + echo "make symbolic link $file1 -> $file2" + if ($exec == yes) then + rm -f $file1 + ln -s $file2 $file1 + endif + endif +else + echo "make symbolic link $file1 -> $file2" + if ($exec == yes) then + rm -f $file1 + ln -s $file2 $file1 + endif +endif + +# Make sure there are entries in the the termcap and graphcap files for xgterm +# and imtool. + +set temp = `grep -l xgterm $iraf/dev/termcap | grep -v "^#"` +if ("$temp" == "") then + echo "WARNING: no xgterm entry in termcap file" +else + echo "termcap file is ok (contains xgterm entry)" +endif + +set gcok = yes +set temp = `grep -l xgterm $iraf/dev/graphcap | grep -v "^#"` +if ("$temp" == "") then + echo "WARNING: no xgterm entry in graphcap file" + set gcok = no +endif +set temp = `grep -l imtool $iraf/dev/graphcap | grep -v "^#"` +if ("$temp" == "") then + echo "WARNING: no imtool entry in graphcap file" + set gcok = no +endif +if ($gcok == yes) then + echo "graphcap file is ok (contains xgterm, imtool entries)" +endif + +# Install or update the XGTERM and XIMTOOL manual pages. +if ($pciraf == no && -e /usr/man/mann) then + cd /usr/man/mann + set src = $iraf/unix/x11 + + foreach i (xgterm ximtool) + set file1 = $i.n + set file2 = $src/$i.man + + # Install or update the manpage source file. + if (-e $file1) then + cmp -s $file1 $file2 + if ($status) then + echo "update $i manual page" + if ($exec == yes) then + cp $file2 $file1 + endif + else + echo "$i manual page is up to date" + endif + else + echo "install $i manual page in /usr/man/mann" + if ($exec == yes) then + cp $file2 $file1 + endif + endif + + # Rerun catman if necessary. + if (-e /usr/man/catl) then + set file2 = /usr/man/catl/$i.n + if (! -e $file2 || "`find $file1 -newer $file2 -print`" != "") then + echo "rerun catman on section n" + if ($exec == yes) then + /usr/etc/catman n + endif + endif + endif + end +endif diff --git a/unix/hlib/iraf.h b/unix/hlib/iraf.h new file mode 120000 index 00000000..2ad69d48 --- /dev/null +++ b/unix/hlib/iraf.h @@ -0,0 +1 @@ +iraf32.h
\ No newline at end of file diff --git a/unix/hlib/iraf32.h b/unix/hlib/iraf32.h new file mode 100644 index 00000000..e2d29a8c --- /dev/null +++ b/unix/hlib/iraf32.h @@ -0,0 +1,162 @@ +# IRAF.H -- Basic IRAF Definitions. These definitions are automatically +# included in every SPP program. See also lib$mach.h. + +# Generic constants. +define ARB 999999999 +define ERR -1 +define EOF -2 +define BOF -3 +define EOT -4 +define BOFL BOF +define EOFL EOF +define EOS 0 +define NO 0 +define YES 1 +define OK 0 +define NULL 0 + +# File I/O. +define READ_ONLY 1 # file access modes +define READ_WRITE 2 +define WRITE_ONLY 3 +define APPEND 4 +define NEW_FILE 5 +define TEMP_FILE 6 +define NEW_COPY 7 +define NEW_IMAGE 5 # nice synonyms for NEW_FILE +define NEW_STRUCT 5 +define NEW_TAPE 5 +define TEXT_FILE 11 # file types +define BINARY_FILE 12 +define DIRECTORY_FILE 13 +define STATIC_FILE 14 +define SYMLINK_FILE 15 +define SPOOL_FILE (-2) +define RANDOM 1 # advice for imagefiles +define SEQUENTIAL 2 +define CLIN 1 # STDIN of the ptask +define CLOUT 2 # STDOUT of the ptask +define STDIN 3 # pseudo files (MAXOFILES + i) +define STDOUT 4 +define STDERR 5 +define STDGRAPH 6 +define STDIMAGE 7 +define STDPLOT 8 + + +# Language Datatypes. +define SZ_BOOL 2 # sizes of the primitive types in chars +define SZ_CHAR 1 +define SZ_SHORT 1 +define SZ_INT 2 +define SZ_LONG 2 +define SZ_REAL 2 +define SZ_DOUBLE 4 +define SZ_COMPLEX 4 +define SZ_POINTER 2 +define SZ_STRUCT 2 +define SZ_USHORT 1 +define SZ_FNAME 255 # max chars in a file name +define SZ_PATHNAME 511 # OS dependent file names +define SZ_LINE 1023 # max chars in a line +define SZ_COMMAND 2047 # max size command block + +define SZ_MII_SHORT 1 # size of MII data in SPP chars +define SZ_MII_LONG 2 +define SZ_MII_REAL 2 +define SZ_MII_DOUBLE 4 +define SZ_MII_INT SZ_MII_LONG + +define SZ_INT32 2 # FIXED -- Do not change! +define SZ_LONG32 2 +define SZ_STRUCT32 2 + +define TY_BOOL 1 # codes for type arguments, sizeof +define TY_CHAR 2 +define TY_SHORT 3 +define TY_INT 4 +define TY_LONG 5 +define TY_REAL 6 +define TY_DOUBLE 7 +define TY_COMPLEX 8 +define TY_POINTER 9 +define TY_STRUCT 10 # last (regular) type code +define TY_USHORT 11 # for image i/o +define TY_UBYTE 12 # (special) for image i/o + +# Indefinite values. +define INDEFS (-32767) +define INDEFL (-2147483647) +define INDEFI INDEFL +define INDEFR 1.6e38 +define INDEFD 1.6d308 +define INDEFX (INDEF,INDEF) +define INDEF INDEFR + +define IS_INDEFS (($1)==INDEFS) +define IS_INDEFL (($1)==INDEFL) +define IS_INDEFI (($1)==INDEFI) +define IS_INDEFR (($1)==INDEFR) +define IS_INDEFD (($1)==INDEFD) +define IS_INDEFX (real($1)==INDEFR) +define IS_INDEF (($1)==INDEFR) + +# Useful macros for pointer conversions in data structures. +define P2C ((($1)-1)*2+1) +define P2S ((($1)-1)*2+1) +define P2I ($1) +define P2L ($1) +define P2R ($1) +define P2D ((($1)-1)/2+1) +define P2X ((($1)-1)/2+1) + +define P2P ($1) # no-op + +# Map the following onto host Fortran intrinsic functions if possible, +# else onto the andi, ori, etc. portable VOS functions. + +# define and andi +# define or ori +# define xor xori +# define not noti + +# Name conversions (to avoid conflicts with host system). Must agree with +# defines in hlib$libc/xnames.h. + +define access xfaccs +define calloc xcallc +define close xfcloe +define delete xfdele +define error xerror +define flush xffluh +define getc xfgetc +define getchar xfgetr +define malloc xmallc +define mfree xmfree +define mktemp xmktep +define note xfnote +define open xfopen +define poll xfpoll +define printf xprinf +define putc xfputc +define putchar xfputr +define qsort xqsort +define read xfread +define realloc xrealc +define seek xfseek +define sizeof xsizef +define strcat xstrct +define strcmp xstrcp +define strcpy xstrcy +define strlen xstrln +define ungetc xfungc +define write xfwrie +define fatal xfatal +define fchdir xfchdr +define fscan xfscan +define getopt xgtopt +define getpid xgtpid +define getuid xgtuid +define rename xfrnam +define reset xreset +define scan xxscan diff --git a/unix/hlib/iraf64.h b/unix/hlib/iraf64.h new file mode 100644 index 00000000..31198fdc --- /dev/null +++ b/unix/hlib/iraf64.h @@ -0,0 +1,164 @@ +# IRAF.H -- Basic IRAF Definitions. These definitions are automatically +# included in every SPP program. See also lib$mach.h. + +# Generic constants. +define ARB 999999999 +define ERR -1 +define EOF -2 +define BOF -3 +define EOT -4 +define BOFL BOF +define EOFL EOF +define EOS 0 +define NO 0 +define YES 1 +define OK 0 +define NULL 0 + +# File I/O. +define READ_ONLY 1 # file access modes +define READ_WRITE 2 +define WRITE_ONLY 3 +define APPEND 4 +define NEW_FILE 5 +define TEMP_FILE 6 +define NEW_COPY 7 +define NEW_IMAGE 5 # nice synonyms for NEW_FILE +define NEW_STRUCT 5 +define NEW_TAPE 5 +define TEXT_FILE 11 # file types +define BINARY_FILE 12 +define DIRECTORY_FILE 13 +define STATIC_FILE 14 +define SYMLINK_FILE 15 +define SPOOL_FILE (-2) +define RANDOM 1 # advice for imagefiles +define SEQUENTIAL 2 +define CLIN 1 # STDIN of the ptask +define CLOUT 2 # STDOUT of the ptask +define STDIN 3 # pseudo files (MAXOFILES + i) +define STDOUT 4 +define STDERR 5 +define STDGRAPH 6 +define STDIMAGE 7 +define STDPLOT 8 + + +# Language Datatypes. +define SZ_BOOL 4 # sizes of the primitive types in chars +define SZ_CHAR 1 +define SZ_SHORT 1 +define SZ_INT 4 +define SZ_LONG 4 +define SZ_REAL 2 +define SZ_DOUBLE 4 +define SZ_COMPLEX 4 +define SZ_POINTER 4 +define SZ_STRUCT 4 +define SZ_USHORT 1 +define SZ_FNAME 511 # max chars in a file name/URL +define SZ_PATHNAME 511 # OS dependent file names +define SZ_LINE 1023 # max chars in a line +define SZ_COMMAND 2047 # max size command block + +define TY_BOOL 1 # codes for type arguments, sizeof +define TY_CHAR 2 +define TY_SHORT 3 +define TY_INT 4 +define TY_LONG 5 +define TY_REAL 6 +define TY_DOUBLE 7 +define TY_COMPLEX 8 +define TY_POINTER 9 +define TY_STRUCT 10 # last (regular) type code +define TY_USHORT 11 # for image i/o +define TY_UBYTE 12 # (special) for image i/o + +define SZ_MII_SHORT 1 # size of MII data in SPP chars +define SZ_MII_LONG 2 +define SZ_MII_REAL 2 +define SZ_MII_DOUBLE 4 +define SZ_MII_INT SZ_MII_LONG + +define SZ_INT32 2 # FIXED -- Do not change ! +define SZ_LONG32 2 +define SZ_STRUCT32 2 + +# Indefinite values. +define INDEFS (-32767) +define INDEFL (-2147483647) +#define INDEFL (-9223372036854775807) +define INDEFI INDEFL +define INDEFR 1.6e38 +define INDEFD 1.6d308 +define INDEFX (INDEF,INDEF) +define INDEF INDEFR + +define IS_INDEFS (($1)==INDEFS) +define IS_INDEFL (($1)==INDEFL) +define IS_INDEFI (($1)==INDEFI) +define IS_INDEFR (($1)==INDEFR) +define IS_INDEFD (($1)==INDEFD) +define IS_INDEFX (real($1)==INDEFR) +define IS_INDEF (($1)==INDEFR) + +# Useful macros for pointer conversions in data structures. +define P2C ((($1)-1)*4+1) +define P2S ((($1)-1)*4+1) +define P2I ($1) +define P2L ($1) +define P2B ($1) +define P2R ((($1)-1)*2+1) +define P2D ($1) +define P2X ($1) + +define P2P ($1) # no-op + +# Map the following onto host Fortran intrinsic functions if possible, +# else onto the andi, ori, etc. portable VOS functions. + +# define and andi +# define or ori +# define xor xori +# define not noti + +# Name conversions (to avoid conflicts with host system). Must agree with +# defines in hlib$libc/xnames.h. + +define access xfaccs +define calloc xcallc +define close xfcloe +define delete xfdele +define error xerror +define flush xffluh +define getc xfgetc +define getchar xfgetr +define malloc xmallc +define mfree xmfree +define mktemp xmktep +define note xfnote +define open xfopen +define poll xfpoll +define printf xprinf +define putc xfputc +define putchar xfputr +define qsort xqsort +define read xfread +define realloc xrealc +define seek xfseek +define sizeof xsizef +define strcat xstrct +define strcmp xstrcp +define strcpy xstrcy +define strlen xstrln +define ungetc xfungc +define write xfwrie +define fatal xfatal +define fchdir xfchdr +define fscan xfscan +define getopt xgtopt +define getpid xgtpid +define getuid xgtuid +define rename xfrnam +define reset xreset +define scan xxscan diff --git a/unix/hlib/irafarch.csh b/unix/hlib/irafarch.csh new file mode 100755 index 00000000..a998aa01 --- /dev/null +++ b/unix/hlib/irafarch.csh @@ -0,0 +1,270 @@ +#!/bin/csh -f +# +# IRAFARCH -- Determine or set the current platform architecture parameters. +# +# Usage: irafarch +# irafarch -set [<arch>] [opts] +# irafarch [ -hsi | -nbits | -pipe | -tapecap | -tape ] +# +# -mach print the iraf architecture name [default] +# -hsi print the HSI arch +# -nbits print number of bits in an int (32 or 64) +# -pipe does platform support display fifo pipes? +# -tapecap does platform require tapecap changes? +# -tape does platform support tape drives? +# -shlib does platform support iraf shared libs? +# +# -actual print actual architecture name regardless of IRAFARCH +# -set <arch> manually reset the iraf environment architecture +# +# ---------------------------------------------------------------------------- + + +unset noclobber +onintr cleanup_ +unalias cd cp cmp echo ln mv rm sed set grep ls chmod chown pwd touch sort which + +setenv path "(/sbin /usr/sbin /bin /usr/bin /usr/5bin /usr/ucb /etc /usr/etc $path /usr/local/bin /opt/local/bin /local/bin /home/local/bin /usr/openwin/bin /usr/X11R6/bin /usr/X11/bin)" + +# set echo + + +############################################################################## +# START OF MACHDEP DEFINITIONS. +############################################################################## + +set VERSION = "V2.16.1" +set hmach = "INDEF" +set nbits = 32 +set pipes = 1 +set shlibs = 0 +set tapecaps = 0 +set tapes = 1 + +set debug = 0 + + +#---------------------------------- +# Determine platform architecture. +#---------------------------------- + +if (-e /usr/bin/uname) then + set uname_cmd = /usr/bin/uname +else if (-e /bin/uname) then + set uname_cmd = /bin/uname +else + WARNING "No 'uname' command found to determine architecture." + exit 1 +endif + +setenv UNAME `$uname_cmd | tr '[A-Z]' '[a-z]'` +if ($UNAME == "sunos") then + setenv UNAME_M `$uname_cmd -m | cut -c2- | tr '[A-Z]' '[a-z]'` +else + setenv UNAME_M `$uname_cmd -m | tr '[A-Z]' '[a-z]' | tr ' ' '_'` +endif +setenv OSVERSION `$uname_cmd -r | cut -c1` + + + +# Allow an IRAFARCH definition in the environment to override. +if ($#argv == 1 && "$1" == "-actual") then + setenv MNAME $UNAME + setenv MNAME_M $UNAME_M + unsetenv IRAFARCH + +else if ($#argv == 1 && "$1" == "-current") then + setenv MNAME `/bin/ls -lad $iraf/bin | \ + awk '{ printf ("%s\n", $11) }' | \ + sed -e 's/bin.//g'` + setenv MNAME_M $UNAME_M + setenv IRAFARCH $MNAME + goto repeat_ + +else + if ($#argv == 0) then + if ($?IRAFARCH) then + repeat_: + setenv MNAME $IRAFARCH + setenv MNAME_M $UNAME_M + else + setenv MNAME $UNAME + setenv MNAME_M $UNAME_M + endif + + else + if ($#argv != 0 && "$1" == "-set") then + setenv MNAME $2 + setenv MNAME_M $2 + else + setenv MNAME $UNAME + setenv MNAME_M $UNAME_M + endif + endif +endif + + +# Set some common defaults for most platforms +set shlib = 0 # no shared lib support +set nbits = 32 # 32-bit architecture +set tapecaps = 1 # platform supports tapecaps +set tapes = 1 # platform support tape drives +set pipes = 1 # supports display fifo pipes + +set pciraf = 1 # PC-IRAF system +set suniraf = 0 # SUN-IRAF system + + +if ($debug == 1) then # DEBUG PRINT + if ($?IRAFARCH) then + echo " IRAFARCH = $IRAFARCH" + endif + echo " MNAME = $MNAME" + echo " MNAME_M = $MNAME_M" + echo "OSVERSION = $OSVERSION" +endif + +# Determine parameters for each architecture. +switch ($MNAME) + case darwin: # Mac OS X + case ipad: + case macosx: + case macintel: + if ($?IRAFARCH) then + set mach = "$IRAFARCH" + set hmach = "$IRAFARCH" + if ("$mach" == "macintel") then + set nbits = 64 + endif + else + if ("$MNAME_M" == "x86_64") then # 64-bit + set mach = "macintel" + set hmach = "macintel" + set nbits = 64 + else if ($MNAME_M == "x86" || $MNAME_M == "i386" || $MNAME_M == "ppc" || $MNAME_M == "power_macintosh") then + set mach = "macosx" + set hmach = "macosx" + set nbits = 32 + else + set mach = "ipad" # iOS Device + set hmach = "ipad" + set nbits = 32 + endif + endif + set tapecaps = 0 + set tapes = 0 + set pipes = 0 + breaksw + + case redhat: + case linux: + case linux64: + if ($?IRAFARCH) then + set mach = "$IRAFARCH" + set hmach = "$IRAFARCH" + if ("$mach" == "linux64") then + set nbits = 64 + endif + else + if ("$MNAME_M" == "x86_64") then # Linux x86_64 + set mach = "linux64" + set hmach = "linux64" + set nbits = 64 + else # Linux + set mach = "linux" + set hmach = "linux" + set nbits = 32 + endif + endif + breaksw + + case ssun: + case sparc: + case sunos: + set tapecaps = 1 + if ($UNAME_M != "86pc") then + set suniraf = 1 + set pciraf = 0 + if ($OSVERSION == 5) then # Sparc Solaris + set mach = "ssun" + set hmach = "ssol" + else # Sparc SunOS 4.x + set mach = "sparc" + set hmach = "sparc" + endif + else + set mach = "sunos" # Intel Solaris x86 + set hmach = "sunos" + set tapecaps = 0 + set tapes = 0 + set pipes = 0 + endif + breaksw + + case freebsd: # FreeBSD + set mach = "freebsd" + set hmach = "freebsd" + set tapecaps = 0 + set tapes = 0 + set pipes = 0 + breaksw + + default: + # We don't want to be limited by the CYGWIN version numbering so + # look for a truncated match here before punting. + set os_mach = `echo $UNAME | cut -c1-6` + if ("$os_mach" == "cygwin") then + set mach = "cygwin" + set hmach = "cygwin" + set shlib = 0 + set tapecaps = 0 + set tapes = 0 + set pipes = 0 + breaksw + + else + echo "Unable to configure platform IRAFARCH='$MNAME'." + exit 1 + endif +endsw + +############################################################################## +# END OF MACHDEP DEFINITIONS. +############################################################################## + + +if ($#argv == 0) then + echo $mach +else + + if ("$1" == "-mach") then + echo $mach + else if ("$1" == "-actual") then + echo $mach + else if ("$1" == "-current") then + echo $mach + else if ("$1" == "-hsi") then + echo $hmach + else if ("$1" == "-nbits") then + echo $nbits + else if ("$1" == "-pipes") then + echo $pipes + else if ("$1" == "-tapecap") then + echo $tapecaps + else if ("$1" == "-tapes") then + echo $tapes + else if ("$1" == "-shlib") then + echo $shlib + + else if ("$1" == "-set") then + if ("$2" != "") then + setenv IRAFARCH $2 + shift ; shift + endif + goto repeat_ + else + echo "Invalid option '"$1"'" + endif +endif + +exit 0 diff --git a/unix/hlib/irafarch.sh b/unix/hlib/irafarch.sh new file mode 100755 index 00000000..f42b61d2 --- /dev/null +++ b/unix/hlib/irafarch.sh @@ -0,0 +1,270 @@ +#!/bin/bash +# +# IRAFARCH -- Determine or set the current platform architecture parameters. +# +# Usage: irafarch +# irafarch -set [<arch>] [opts] +# irafarch [ -hsi | -nbits | -pipe | -tapecap | -tape ] +# +# -mach print the iraf architecture name [default] +# -hsi print the HSI arch +# -nbits print number of bits in an int (32 or 64) +# -pipe does platform support display fifo pipes? +# -tapecap does platform require tapecap changes? +# -tape does platform support tape drives? +# -shlib does platform support iraf shared libs? +# +# -actual print actual architecture name regardless of IRAFARCH +# -set <arch> manually reset the iraf environment architecture +# +# ---------------------------------------------------------------------------- + + +export PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/5bin:/usr/ucb:/etc:/usr/etc:$PATH:/usr/local/bin:/opt/local/bin:/local/bin:/home/local/bin + + +############################################################################## +# START OF MACHDEP DEFINITIONS. +############################################################################## + +hmach="INDEF" +nbits=32 +pipes=1 +shlibs=0 +tapecaps=0 +tapes=1 + +debug=0 + +# Get the Utility aliases. +# Initialize the $iraf and environment. +if [ -z "$iraf" ]; then + bindir="`dirname $0`" # get iraf root directory + iraf=${bindir%/*}/../ +fi +source ${iraf}/unix/hlib/util.sh + + +#---------------------------------- +# Determine platform architecture. +#---------------------------------- + +if [ -e /usr/bin/uname ]; then + uname_cmd=/usr/bin/uname +elif [ -e /bin/uname ]; then + uname_cmd=/bin/uname +else + WARNING "No 'uname' command found to determine architecture." + exit 1 +fi + +export UNAME=`$uname_cmd | tr '[A-Z]' '[a-z]'` +if [ $UNAME == "sunos" ]; then + export UNAME_M=`$uname_cmd -m | cut -c2- | tr '[A-Z]' '[a-z]'` +else + export UNAME_M=`$uname_cmd -m | tr '[A-Z]' '[a-z]' | tr ' ' '_'` +fi +export OSVERSION=`$uname_cmd -r | cut -c1` + + +# Allow an IRAFARCH definition in the environment to override. + +_setmname() { + export MNAME=$1 + export MNAME_M=$2 +} + +if (( $# > 1 )); then + if [ "$1" == "-actual" ]; then + _setmname $UNAME $UNAME_M + unset IRAFARCH + + elif [ "$1" == "-current" ]; then + export MNAME=`/bin/ls -lad $iraf/bin | \ + awk '{ printf ("%s\n", $11) }' | \ + sed -e 's/bin.//g'` + export MNAME_M=$UNAME_M + export IRAFARCH=$MNAME + _setmname $IRAFARCH $UNAME_M + fi +else + if (( $# == 0 )); then + if [ -n "$IRAFARCH" ]; then + _setmname $IRAFARCH $UNAME_M + else + _setmname $UNAME $UNAME_M + fi + else + if [ "$1" == "-set" ]; then + _setmname $2 $2 + else + _setmname $UNAME $UNAME_M + fi + fi +fi + + +# Set some common defaults for most platforms +shlib=0 # no shared lib support +nbits=32 # 32-bit architecture +tapecaps=1 # platform supports tapecaps +tapes=1 # platform support tape drives +pipes=1 # supports display fifo pipes + +pciraf=1 # PC-IRAF system +suniraf=0 # SUN-IRAF system + +if (( $debug == 1 )); then # DEBUG PRINT + if [ -n "$IRAFARCH" ]; then + ECHO " IRAFARCH=$IRAFARCH" + fi + ECHO " MNAME=$MNAME" + ECHO " MNAME_M=$MNAME_M" + ECHO "OSVERSION=$OSVERSION" +fi + + +# Determine parameters for each architecture. +case "$MNAME" in + "darwin"|"ipad"|"macosx"|"macintel") # Mac OS X + if [ -n "$IRAFARCH" ]; then + mach="$IRAFARCH" + hmach="$IRAFARCH" + if [ "$mach" == "macintel" ]; then + nbits=64 + fi + else + if [ "$MNAME_M" == "x86_64" ]; then # 64-bit + mach="macintel" + hmach="macintel" + nbits=64 + elif [ "$MNAME_M" == "x86" -o "$MNAME_M" == "i386" ]; then + mach="macosx" + hmach="macosx" + nbits=32 + else + mach="ipad" # iOS Device + hmach="ipad" + nbits=32 + fi + fi + tapecaps=0 + tapes=0 + pipes=0 + ;; + + "redhat"|"linux"|"linux64") + if [ -n "$IRAFARCH" ]; then + mach="$IRAFARCH" + hmach="$IRAFARCH" + if [ "$mach" == "linux64" ]; then + nbits=64 + fi + else + if [ "$MNAME_M" == "x86_64" ]; then # Linux x86_64 + mach="linux64" + hmach="linux64" + nbits=64 + else # Linux + mach="linux" + hmach="linux" + nbits=32 + fi + fi + ;; + + "ssun"|"sparc"|"sunos") + tapecaps=1 + if [ $UNAME_M != "86pc" ]; then + suniraf=1 + pciraf=0 + if [ $OSVERSION == 5 ]; then # Sparc Solaris + mach= "ssun" + hmach= "ssol" + else # Sparc SunOS 4.x + mach="sparc" + hmach="sparc" + fi + else + mach="sunos" # Intel Solaris x86 + hmach="sunos" + tapecaps=0 + tapes=0 + pipes=0 + fi + ;; + + "freebsd") # FreeBSD + mach="freebsd" + hmach="freebsd" + tapecaps=0 + tapes=0 + pipes=0 + ;; + + *) + # We don't want to be limited by the CYGWIN version numbering so + # look for a truncated match here before punting. + os_mach=`ECHO $UNAME | cut -c1-6` + if [ "$os_mach" == "cygwin" ]; then + mach="cygwin" + hmach="cygwin" + shlib=0 + tapecaps=0 + tapes=0 + pipes=0 + else + ECHO 'Unable to determine platform architecture for ($MNAME).' + exit 1 + fi + ;; +esac + +############################################################################## +# END OF MACHDEP DEFINITIONS. +############################################################################## + +# Handle any command-line options. +if (( $# == 0 )); then + ECHO $mach +else + case "$1" in + "-mach") + ECHO $mach + ;; + "-actual") + ECHO $mach + ;; + "-current") + ECHO $mach + ;; + "-hsi") + ECHO $hmach + ;; + "-nbits") + ECHO $nbits + ;; + "-pipes") + ECHO $pipes + ;; + "-tapecap") + ECHO $tapecaps + ;; + "-tapes") + ECHO $tapes + ;; + "-shlib") + ECHO $shlib + ;; + "-set") + if [ -n $2 ]; then + export IRAFARCH=$2 + fi + _setmname $IRAFARCH $UNAME_M + ;; + *) + ECHO 'Invalid option '$1 + ;; + esac +fi + diff --git a/unix/hlib/irafuser.csh b/unix/hlib/irafuser.csh new file mode 100755 index 00000000..b150100d --- /dev/null +++ b/unix/hlib/irafuser.csh @@ -0,0 +1,215 @@ +#!/bin/csh -f +# +# IRAF definitions for the UNIX/csh user. The additional variables iraf$ and +# home$ should be defined in the user's .login file. + + +set old_method = 0 + +if ($old_method == 1) then + +setenv OS_MACH `uname -s | tr '[A-Z]' '[a-z]' | cut -c1-6` + +if (`uname -m` == "x86_64") then + if ($OS_MACH == "darwin") then + setenv MACH darwin + setenv IRAFARCH darwin + else + setenv MACH linux64 + setenv IRAFARCH linux64 + endif +else if (-f /etc/redhat-release) then + setenv MACH redhat +else + setenv MACH `uname -s | tr '[A-Z]' '[a-z]'` +endif + +if ($MACH == "darwin") then + # Let the IRAFARCH override the machine to support cross compilation. + if ($?IRAFARCH) then + if ("$IRAFARCH" == "macosx") then + setenv MACH macosx + else if ("$IRAFARCH" == "macintel") then + setenv MACH macintel + endif + else + if ("`uname -m`" == "i386") then + setenv MACH macosx + setenv IRAFARCH macosx + else if ("`uname -m`" == "x86_64") then + setenv MACH macintel + setenv IRAFARCH macintel + else + setenv MACH ipad + setenv IRAFARCH ipad + endif + endif +else if ($OS_MACH == "cygwin") then + setenv MACH cygwin +endif + +else # old_method + + set a = `$iraf/unix/hlib/irafarch.csh` + if ($status == 0) then + setenv MACH $a + setenv IRAFARCH $a + else + echo "Error: "$a + exit 1 + endif + +endif # old_method + + +setenv hostid unix +setenv host ${iraf}unix/ +setenv hlib ${iraf}unix/hlib/ +setenv hbin ${iraf}unix/bin.$MACH/ +setenv tmp /tmp/ + +# Default to GCC for compilation. +setenv CC gcc +setenv F77 $hlib/f77.sh +setenv F2C $hbin/f2c.e +setenv RANLIB ranlib + +switch ($MACH) +case freebsd: + setenv HSI_CF "-O -DBSD -DPOSIX -w -Wunused -m32" + setenv HSI_XF "-Inolibc -/DBSD -w -/Wunused -/m32" + setenv HSI_FF "-O -DBLD_KERNEL -m32" + setenv HSI_LF "-static -m32 -B/usr/lib32 -L/usr/lib32" + setenv HSI_F77LIBS "" + setenv HSI_LFLAGS "" + setenv HSI_OSLIBS "-lcompat" + set mkzflags = "'lflags=-z' -/static" + breaksw + +case macosx: + setenv HSI_CF "-O -DMACOSX -w -Wunused -arch i386 -m32 -mmacosx-version-min=10.4" + setenv HSI_XF "-Inolibc -/DMACOSX -w -/Wunused -/m32 -/arch -//i386" + setenv HSI_FF "-O -arch i386 -m32 -DBLD_KERNEL -mmacosx-version-min=10.4" + setenv HSI_LF "-arch i386 -m32 -mmacosx-version-min=10.4" + setenv HSI_F77LIBS "" + setenv HSI_LFLAGS "" + setenv HSI_OSLIBS "" + set mkzflags = "'lflags=-z'" + breaksw + +case macintel: + setenv HSI_CF "-O -DMACOSX -DMACINTEL -DMACH64 -w -Wunused -m64 -g" + setenv HSI_XF "-Inolibc -/DMACOSX -/DMACINTEL -w -/Wunused -/DMACH64 -/m64" + setenv HSI_FF "-O -m64 -DMACH64 -DBLD_KERNEL" + setenv HSI_LF "-m64 -DMACH64" + setenv HSI_F77LIBS "" + setenv HSI_LFLAGS "" + setenv HSI_OSLIBS "" + set mkzflags = "'lflags=-z'" + breaksw + +case ipad: + setenv XC_CFLAGS "-I/var/include" + setenv HSI_CF "-O -I/var/include -DMACOSX -DMACINTEL -DIPAD -w -Wunused" + setenv HSI_XF "-Inolibc -/DMACOSX -/DMACINTEL -/DIPAD -w -/Wunused" + setenv HSI_FF "-O -DBLD_KERNEL" + setenv HSI_LF "" + setenv HSI_F77LIBS "" + setenv HSI_LFLAGS "" + setenv HSI_OSLIBS "" + set mkzflags = "'lflags=-z'" + breaksw + +case linux64: + setenv HSI_CF "-g -DLINUX -DREDHAT -DPOSIX -DSYSV -DLINUX64 -DMACH64 -w -m64" + setenv HSI_XF "-g -Inolibc -w -/m64 -/Wunused" + setenv HSI_FF "-g -m64 -DBLD_KERNEL" + setenv HSI_LF "-m64 " + setenv HSI_F77LIBS "" + setenv HSI_LFLAGS "" + setenv HSI_OSLIBS "" + set mkzflags = "'lflags=-Nxz -/Wl,-Bstatic'" + breaksw + +case linux: +case redhat: + setenv HSI_CF "-O -DLINUX -DREDHAT -DPOSIX -DSYSV -w -m32 -Wunused" + setenv HSI_XF "-Inolibc -w -/Wunused -/m32" + setenv HSI_FF "-O -DBLD_KERNEL -m32" + setenv HSI_LF "-m32" + setenv HSI_F77LIBS "" + setenv HSI_LFLAGS "" + setenv HSI_OSLIBS "" + set mkzflags = "'lflags=-Nxz -/Wl,-Bstatic'" + breaksw + +case sunos: + setenv HSI_CF "-O -DSOLARIS -DX86 -DPOSIX -DSYSV -w -Wunused" + setenv HSI_XF "-Inolibc -w -/Wunused" + setenv HSI_FF "-O" + #setenv HSI_LF "-t -Wl,-Bstatic" + #setenv HSI_LFLAGS "-t -Wl,-Bstatic" + #setenv HSI_OSLIBS \ + # "-lsocket -lnsl -lintl -Wl,-Bdynamic -ldl -Wl,-Bstatic -lelf" + setenv HSI_LF "-t" + setenv HSI_F77LIBS "" + setenv HSI_LFLAGS "-t" + setenv HSI_OSLIBS "-lsocket -lnsl -lintl -ldl -lelf" + set mkzflags = "'lflags=-Nxz -/Wl,-Bstatic'" + breaksw + +case cygwin: + setenv HSI_CF "-O -DCYGWIN -DLINUX -DREDHAT -DPOSIX -DSYSV -w -Wunused" + setenv HSI_XF "-Inolibc -w -/Wunused -/DCYGWIN" + setenv HSI_FF "-O" + #setenv HSI_LF "-Wl,-Bstatic" + setenv HSI_LF "" + setenv HSI_F77LIBS "" + setenv HSI_LFLAGS "" + setenv HSI_OSLIBS "${iraf}unix/bin.cygwin/libcompat.a" + set mkzflags = "'lflags=-Nxz -/Wl,-Bstatic'" + breaksw + +default: + echo 'Warning in hlib$irafuser.csh: unknown platform '"$MACH" + exit 1 + breaksw +endsw + + +# Prepend a user <iraf.h> file to the compile flags in case we don't +# install as root. +# +set FAKEHOME="$iraf/fakehome" +setenv HSI_CF "-I${FAKEHOME}/.iraf/ $HSI_CF" +setenv HSI_FF "-I${FAKEHOME}/.iraf/ $HSI_FF" +setenv HSI_LF "-I${FAKEHOME}/.iraf/ $HSI_LF" +setenv HSI_XF "-I${FAKEHOME}/.iraf/ $HSI_XF" +setenv XC_CFLAGS "-I${FAKEHOME}/.iraf/" +unset FAKEHOME + + +# The following determines whether or not the VOS is used for filename mapping. +if (-f ${iraf}lib/libsys.a) then + setenv HSI_LIBS\ + "${hlib}libboot.a ${iraf}lib/libsys.a ${iraf}lib/libvops.a ${hlib}libos.a ${hbin}libf2c.a -lm" +else + setenv HSI_CF "$HSI_CF -DNOVOS" + setenv HSI_LIBS "${hlib}libboot.a ${hlib}libos.a" +endif + +setenv HSI_LIBS "$HSI_LIBS $HSI_OSLIBS" + +alias mkiraf ${hlib}mkiraf.csh +alias mkmlist ${hlib}mkmlist.csh +alias mkz ${hbin}mkpkg.e "$mkzflags" + +alias edsym ${hbin}edsym.e +alias generic ${hbin}generic.e +alias mkpkg ${hbin}mkpkg.e +alias rmbin ${hbin}rmbin.e +alias rmfiles ${hbin}rmfiles.e +alias rtar ${hbin}rtar.e +alias wtar ${hbin}wtar.e +alias xc ${hbin}xc.e +alias xyacc ${hbin}xyacc.e diff --git a/unix/hlib/irafuser.sh b/unix/hlib/irafuser.sh new file mode 100755 index 00000000..a4d036cc --- /dev/null +++ b/unix/hlib/irafuser.sh @@ -0,0 +1,158 @@ +#!/bin/bash +# +# IRAF definitions for the UNIX/bash user. The additional variables iraf$ and +# home$ should be defined in the user's .login file. + + +export MACH=`$iraf/unix/hlib/irafarch.sh` +export IRAFARCH=`$iraf/unix/hlib/irafarch.sh` + + + +export hostid=unix +export host=${iraf}unix/ +export hlib=${iraf}unix/hlib/ +export hbin=${iraf}unix/bin.$MACH/ +export tmp=/tmp/ + +# Default to GCC for compilation. +export CC=gcc +export F77=$hlib/f77.sh +export F2C=$hbin/f2c.e +export RANLIB=ranlib + +case "$MACH" in + "freebsd") + export HSI_CF="-O -DBSD -DPOSIX -Wall -Wunused -m32" + export HSI_XF="-Inolibc -/DBSD -w -/Wunused -/m32" + export HSI_FF="-O -DBLD_KERNEL -m32" + export HSI_LF="-static -m32 -B/usr/lib32 -L/usr/lib32" + export HSI_F77LIBS="" + export HSI_LFLAGS="" + export HSI_OSLIBS="-lcompat" + #mkzflags="'lflags=-z' -/static" + ;; + + "macosx") + export HSI_CF="-O -DMACOSX -Wall -Wunused -arch i386 -m32 -mmacosx-version-min=10.4" + export HSI_XF="-Inolibc -/DMACOSX -w -/Wunused -/m32 -/arch -//i386" + export HSI_FF="-O -arch i386 -m32 -DBLD_KERNEL -mmacosx-version-min=10.4" + export HSI_LF="-arch i386 -m32 -mmacosx-version-min=10.4" + export HSI_F77LIBS="" + export HSI_LFLAGS="" + export HSI_OSLIBS="" + #mkzflags="lflags=-z" + ;; + + "macintel") + export HSI_CF="-O -DMACOSX -DMACINTEL -DMACH64 -Wall -Wunused -m64 -g" + export HSI_XF="-Inolibc -/DMACOSX -/DMACINTEL -w -/Wunused -/DMACH64 -/m64" + export HSI_FF="-O -m64 -DMACH64 -DBLD_KERNEL" + export HSI_LF="-m64 -DMACH64" + export HSI_F77LIBS="" + export HSI_LFLAGS="" + export HSI_OSLIBS="" + #mkzflags="lflags=-z" + ;; + + "ipad") + export XC_CFLAGS="-I/var/include" + export HSI_CF="-O -I/var/include -DMACOSX -DMACINTEL -DIPAD -Wall -Wunused" + export HSI_XF="-Inolibc -/DMACOSX -/DMACINTEL -/DIPAD -w -/Wunused" + export HSI_FF="-O -DBLD_KERNEL" + export HSI_LF="" + export HSI_F77LIBS="" + export HSI_LFLAGS="" + export HSI_OSLIBS="" + #mkzflags="lflags=-z" + ;; + + "linux64") + export HSI_CF="-g -DLINUX -DREDHAT -DPOSIX -DSYSV -DLINUX64 -DMACH64 -Wall -m64" + export HSI_XF="-g -Inolibc -w -/m64 -/Wunused" + export HSI_FF="-g -m64 -DBLD_KERNEL" + export HSI_LF="-m64 " + export HSI_F77LIBS="" + export HSI_LFLAGS="" + export HSI_OSLIBS="" + #mkzflags="lflags=-Nxz -/Wl,-Bstatic" + ;; + + "linux" | "redhat") + export HSI_CF="-O -DLINUX -DREDHAT -DPOSIX -DSYSV -w -m32 -Wunused" + export HSI_XF="-Inolibc -w -/Wunused -/m32" + export HSI_FF="-O -DBLD_KERNEL -m32" + export HSI_LF="-m32" + export HSI_F77LIBS="" + export HSI_LFLAGS="" + export HSI_OSLIBS="" + #mkzflags="lflags=-Nxz -/Wl,-Bstatic" + ;; + + "sunos") + export HSI_CF="-O -DSOLARIS -DX86 -DPOSIX -DSYSV -w -Wunused" + export HSI_XF="-Inolibc -w -/Wunused" + export HSI_FF="-O" + #export HSI_LF="-t -Wl,-Bstatic" + #export HSI_LFLAGS="-t -Wl,-Bstatic" + #export HSI_OSLIBS=\ + # "-lsocket -lnsl -lintl -Wl,-Bdynamic -ldl -Wl,-Bstatic -lelf" + export HSI_LF="-t" + export HSI_F77LIBS="" + export HSI_LFLAGS="-t" + export HSI_OSLIBS="-lsocket -lnsl -lintl -ldl -lelf" + #mkzflags="lflags=-Nxz -/Wl,-Bstatic" + ;; + + "cygwin") + export HSI_CF="-O -DCYGWIN -DLINUX -DREDHAT -DPOSIX -DSYSV -w -Wunused" + export HSI_XF="-Inolibc -w -/Wunused -/DCYGWIN" + export HSI_FF="-O" + #export HSI_LF="-Wl,-Bstatic" + export HSI_LF="" + export HSI_F77LIBS="" + export HSI_LFLAGS="" + export HSI_OSLIBS="${iraf}unix/bin.cygwin/libcompat.a" + #mkzflags="lflags=-Nxz -/Wl,-Bstatic" + ;; + +*) + echo 'Warning in hlib$irafuser.csh: unknown platform '"$MACH" + exit 1 + ;; +esac + + +# Prepend a user <iraf.h> file to the compile flags in case we don't +# install as root. +# +FAKEHOME=$iraf/fakehome +export HSI_CF="-I${FAKEHOME}/.iraf/ $HSI_CF" +export HSI_FF="-I${FAKEHOME}/.iraf/ $HSI_FF" +export HSI_LF="-I${FAKEHOME}/.iraf/ $HSI_LF" +export HSI_XF="-I${FAKEHOME}/.iraf/ $HSI_XF" +unset FAKEHOME + +# The following determines whether or not the VOS is used for filename mapping. +if [ -f ${iraf}lib/libsys.a ]; then + export HSI_LIBS="${hlib}libboot.a ${iraf}lib/libsys.a ${iraf}lib/libvops.a ${hlib}libos.a ${hbin}libf2c.a -lm" +else + export HSI_CF="$HSI_CF -DNOVOS" + export HSI_LIBS="${hlib}libboot.a ${hlib}libos.a" +fi + +export HSI_LIBS="$HSI_LIBS $HSI_OSLIBS" + +alias mkiraf=${hlib}mkiraf.sh +alias mkmlist=${hlib}mkmlist.sh +#alias mkz=${hbin}mkpkg.e "$mkzflags" + +alias edsym=${hbin}edsym.e +alias generic=${hbin}generic.e +alias mkpkg=${hbin}mkpkg.e +alias rmbin=${hbin}rmbin.e +alias rmfiles=${hbin}rmfiles.e +alias rtar=${hbin}rtar.e +alias wtar=${hbin}wtar.e +alias xc=${hbin}xc.e +alias xyacc=${hbin}xyacc.e diff --git a/unix/hlib/knet.h b/unix/hlib/knet.h new file mode 100644 index 00000000..f1555162 --- /dev/null +++ b/unix/hlib/knet.h @@ -0,0 +1,93 @@ +# KNET.H -- Include in source files which access the IRAF kernel if network +# capabilities are desired. This include file should be permanently referenced +# in such source files. If a system is to be configured without networking +# capabilities, define KNET to be false and comment out the remaining defines +# before compilation of the system libraries. + +define KNET true + +define zardbf kardbf +define zardgd kardgd +define zardlp kardlp +define zardpl kardpl +define zardpr kardpr +define zardsf kardsf +define zawrbf kawrbf +define zawrgd kawrgd +define zawrlp kawrlp +define zawrpl kawrpl +define zawrpr kawrpr +define zawrsf kawrsf +define zawtbf kawtbf +define zawtgd kawtgd +define zawtlp kawtlp +define zawtpl kawtpl +define zawtpr kawtpr +define zawtsf kawtsf +define zclcpr kclcpr +define zcldir kcldir +define zcldpr kcldpr +define zclsbf kclsbf +define zclsgd kclsgd +define zclslp kclslp +define zclspl kclspl +define zclspr kclspr +define zclssf kclssf +define zclstx kclstx +define zclsty kclsty +define zdvall kdvall +define zdvown kdvown +define zfacss kfacss +define zfaloc kfaloc +define zfchdr kfchdr +define zfdele kfdele +define zfgcwd kfgcwd +define zfinfo kfinfo +define zflstx kflstx +define zflsty kflsty +define zfmkcp kfmkcp +define zfmkdr kfmkdr +define zfpath kfpath +define zfprot kfprot +define zfrnam kfrnam +define zfrmdr kfrmdr +define zfsubd kfsubd +define zfutim kfutim +define zfxdir kfxdir +define zgettx kgettx +define zgetty kgetty +define zgfdir kgfdir +define zintpr kintpr +define znottx knottx +define znotty knotty +define zopcpr kopcpr +define zopdir kopdir +define zopdpr kopdpr +define zopnbf kopnbf +define zopngd kopngd +define zopnlp kopnlp +define zopnpl kopnpl +define zopnpr kopnpr +define zopnsf kopnsf +define zopntx kopntx +define zopnty kopnty +define zoscmd koscmd +define zputtx kputtx +define zputty kputty +define zsektx ksektx +define zsekty ksekty +define zsttbf ksttbf +define zsttgd ksttgd +define zsttlp ksttlp +define zsttpl ksttpl +define zsttpr ksttpr +define zsttsf ksttsf +define zstttx kstttx +define zsttty ksttty +define zzclmt kzclmt +define zzopmt kzopmt +define zzrdmt kzrdmt +define zzrwmt kzrwmt +define zzstmt kzstmt +define zzwrmt kzwrmt +define zzwtmt kzwtmt diff --git a/unix/hlib/libboot.a b/unix/hlib/libboot.a new file mode 120000 index 00000000..3083e005 --- /dev/null +++ b/unix/hlib/libboot.a @@ -0,0 +1 @@ +../bin/libboot.a
\ No newline at end of file diff --git a/unix/hlib/libc/README b/unix/hlib/libc/README new file mode 100644 index 00000000..a95c47eb --- /dev/null +++ b/unix/hlib/libc/README @@ -0,0 +1,25 @@ +LIBC (C library) include files + + ctype character classes, conversions + error c_erract actions + finfo c_finfo data structure + fset FIO set/stat parameter + knames external kernel names + libc must be included by all files which use libc + math UNIX math functions + spp SPP language definitions + stdio UNIX standard i/o + xnames SPP external names + xwhen c_xwhen (exception handling) + kernel kernel constants, tables + protect file protection + prtype process types + setjmp non-local goto + zfstat FIO driver file status codes + +The file "iraf.h" is referenced as <iraf.h> in IRAF C source files, and is used +to load all other IRAF/LIBC C header files via "#define import_XXX" defines in +these files. In order for the C compiler to find <iraf.h>, one should either +[1] add the directory $hlib/libc to the list of directories to be searched by +the C compiler for include files, or [2] make a link to, or copy of, +libc/iraf.h in the system directory /usr/include. diff --git a/unix/hlib/libc/alloc.h b/unix/hlib/libc/alloc.h new file mode 100644 index 00000000..e40ca1be --- /dev/null +++ b/unix/hlib/libc/alloc.h @@ -0,0 +1,8 @@ +/* ALLOC.H -- Status returns for ZDVALL, ZDVOWN. + */ +#define DV_DEVFREE 1 /* device is free and can be allocated */ +#define DV_DEVALLOC 2 /* device is already allocated */ +#define DV_DEVINUSE 3 /* device is in use by someone else */ +#define DV_ERROR 9 /* software error from alloc.e */ + +#define D_alloc diff --git a/unix/hlib/libc/ctype.h b/unix/hlib/libc/ctype.h new file mode 100644 index 00000000..e2d3fb59 --- /dev/null +++ b/unix/hlib/libc/ctype.h @@ -0,0 +1,32 @@ +#define _U 01 +#define _L 02 +#define _N 04 +#define _S 010 +#define _P 020 +#define _C 040 +#define _X 0100 + +#ifdef vms +globalvalue vms_ctype_defs; +#endif +extern char u_ctype_[]; + +#define isalpha(c) ((u_ctype_+1)[(unsigned int)(c)]&(_U|_L)) +#define isupper(c) ((u_ctype_+1)[(unsigned int)(c)]&_U) +#define islower(c) ((u_ctype_+1)[(unsigned int)(c)]&_L) +#define isdigit(c) ((u_ctype_+1)[(unsigned int)(c)]&_N) +#define isxdigit(c) ((u_ctype_+1)[(unsigned int)(c)]&(_N|_X)) +#define isspace(c) ((u_ctype_+1)[(unsigned int)(c)]&_S) +#define ispunct(c) ((u_ctype_+1)[(unsigned int)(c)]&_P) +#define isalnum(c) ((u_ctype_+1)[(unsigned int)(c)]&(_U|_L|_N)) +#define isprint(c) ((u_ctype_+1)[(unsigned int)(c)]&(_P|_U|_L|_N)) +#define iscntrl(c) ((u_ctype_+1)[(unsigned int)(c)]&_C) +#define isascii(c) ((unsigned)((int)(c))<=0177) + +#define toupper(c) ((c)-'a'+'A') +#define tolower(c) ((c)-'A'+'a') +#define toascii(c) ((c)&0177) +#define tointeg(c) ((c)-'0') +#define todigit(c) ((c)+'0') + +#define D_ctype diff --git a/unix/hlib/libc/error.h b/unix/hlib/libc/error.h new file mode 100644 index 00000000..c02e7e36 --- /dev/null +++ b/unix/hlib/libc/error.h @@ -0,0 +1,12 @@ +/* Error handling. + */ +#define EA_FATAL 1 +#define EA_ERROR 2 +#define EA_WARN 3 +#define EA_RESTART (-99) + +#define SYS_XACV 501 +#define SYS_XARITH 502 +#define SYS_XINT 503 + +#define D_error diff --git a/unix/hlib/libc/finfo.h b/unix/hlib/libc/finfo.h new file mode 100644 index 00000000..b4c57e70 --- /dev/null +++ b/unix/hlib/libc/finfo.h @@ -0,0 +1,19 @@ +/* File info structure definitions (c_finfo). + */ +#define SZ_OWNERSTR 16 +#define FI_REGULAR 1 /* file types */ +#define FI_DIRECTORY 2 +#define FI_EXECUTABLE 3 +#define FI_SPECIAL 4 + +struct _finfo { + XLONG fi_type; /* file type */ + XLONG fi_size; /* file size, machine bytes */ + XLONG fi_atime; /* time of last access */ + XLONG fi_mtime; /* time of last modify */ + XLONG fi_ctime; /* time of file creation */ + XLONG fi_perm; /* file permission bits */ + char fi_owner[SZ_OWNERSTR*sizeof(XLONG)]; +}; + +#define D_finfo diff --git a/unix/hlib/libc/fpoll.h b/unix/hlib/libc/fpoll.h new file mode 100644 index 00000000..52e6f4d5 --- /dev/null +++ b/unix/hlib/libc/fpoll.h @@ -0,0 +1,59 @@ +/* File poll structure definitions (c_fpoll). + */ +#ifndef D_fpoll +#define D_fpoll + +#define IRAF_POLLIN 0x0001 /* There is data to read */ +#define IRAF_POLLPRI 0x0002 /* There is urgent data to read */ +#define IRAF_POLLOUT 0x0004 /* Writing now will not block */ +#define IRAF_POLLERR 0x0008 /* Error condition */ +#define IRAF_POLLHUP 0x0010 /* Hung up */ +#define IRAF_POLLNVAL 0x0020 /* Invalid request: fd not open */ + +#define SZ_POLLFD 3 /* size of pollfd SPP struct */ +#define MAX_POLL_FD 32 /* max number of polling fds */ +#define INFTIM -1 /* poll indefinitely (block) */ + +struct _fpoll { + XINT fp_fd; /* file type */ + XSHORT fp_events; /* file size, machine bytes */ + XSHORT fp_revents; /* time of last access */ +} poll_fds[MAX_POLL_FD]; + +#ifndef NOLIBCNAMES +#define _IRAF_FPOLL_LIBCNAMES + + +#ifdef POLLIN +#undef POLLIN +#endif +#define POLLIN IRAF_POLLIN + +#ifdef POLLPRI +#undef POLLPRI +#endif + +#define POLLPRI IRAF_POLLPRI +#ifdef POLLOUT +#undef POLLOUT +#endif + +#define POLLOUT IRAF_POLLOUT +#ifdef POLLERR +#undef POLLERR +#endif +#define POLLERR IRAF_POLLERR + +#ifdef POLLHUP +#undef POLLHUP +#endif +#define POLLHUP IRAF_POLLHUP + +#ifdef POLLNVAL +#undef POLLNVAL +#endif +#define POLLNVAL IRAF_POLLNVAL + +#endif /* ! NOLIBCNAMES */ + +#endif diff --git a/unix/hlib/libc/fset.h b/unix/hlib/libc/fset.h new file mode 100644 index 00000000..5d5fb33e --- /dev/null +++ b/unix/hlib/libc/fset.h @@ -0,0 +1,64 @@ +/* + * FSET.H -- FSET/FSTATUS parameters (r = read_only, * = internal to FIO). + * Some of these parameters provide access to the guts of the i/o system and + * should not be used by packages outside FIO, to avoid a dependence on the + * inner workings of FIO. Parameters affecting the file buffer number, types, + * or sizes are read-only after the first i/o to the file. + */ + +#define F_ADVICE 1 /* advice on type of access (rand,seq,def) */ +#define F_ASYNC 2 /* enable asynchronous i/o [y/n] */ +#define F_BLKSIZE 3 /*r device block size, chars */ +#define F_BUFPTR 4 /** install externally created file buffer */ +#define F_BUFSIZE 5 /* file buffer size, chars */ +#define F_BUFTOP 6 /** set pointer to top of buffer */ +#define F_BUFTYPE 7 /* file buffer type (F_LOCAL or F_GLOBAL) */ +#define F_CANCEL 8 /* cancel buffered data */ +#define F_CHANNEL 9 /*r channel number */ +#define F_CLOBBER 10 /* is file clobber enabled [y/n] */ +#define F_CLOSEFD 11 /* close host channel when inactive */ +#define F_DEVCODE 12 /** device driver code (index in devtab) */ +#define F_DEVICE 13 /** address of device read/get routine */ +#define F_EOF 14 /*r is file positioned at EOF [y/n] */ +#define F_FFIOMODE 15 /*r is i/o in progress on channel */ +#define F_FILENAME 16 /*r get file name (fstats) */ +#define F_FILESIZE 17 /*r get file size (fstatl) */ +#define F_FILEWAIT 18 /* is file wait on open enabled [y/n] */ +#define F_FIODES 19 /** struct pointer to file descrip. structure */ +#define F_FIRSTBUFOFF 20 /* file offset of first FIO buf (default=1) */ +#define F_FLUSHNL 21 /* is flush on newline enabled [y/n] */ +#define F_IOMODE 22 /* raw (vs "cooked") mode for terminal i/o */ +#define F_KEEP 23 /* keep file after task completion? */ +#define F_LASTREFFILE 24 /*r get FD of last referenced (active) file */ +#define F_MAXBUFSIZE 25 /*r maximum file buffer size */ +#define F_MODE 26 /*r file access mode (ro,wo,rw) */ +#define F_NBUFS 27 /* number of file buffers */ +#define F_NCHARS 28 /*r nchars last transfer */ +#define F_ONEVERSION 29 /* keep only one version of a file */ +#define F_OPEN 30 /*r is file open */ +#define F_OPTBUFSIZE 31 /*r optimal buffer size for device (chars) */ +#define F_PBBSIZE 32 /* push back buffer size, chars */ +#define F_RAW 33 /*r set/stat raw mode (see F_IOMODE) */ +#define F_READ 34 /*r does file have read access [y/n] */ +#define F_REDIR 35 /*r i/o is redirected */ +#define F_SETREDRAW 36 /*w enable screen redraw code (suspend proc) */ +#define F_SZBBLK 37 /*r size in bytes of last dev block r|w */ +#define F_TYPE 38 /*r file type (text, binary) */ +#define F_UNREAD 39 /*r number of unread chars in FIO buffer */ +#define F_VALIDATE 40 /* validate FIO buffer contents (fseti) */ +#define F_WRITE 41 /*r does file have write access [y/n] */ + +#define F_LOCAL 1 /* allocate local file buffers */ +#define F_GLOBAL 2 /* take file buffers from global pool */ +#define F_GETPROT 2 /* is file protected? */ +#define F_FFIOINACT 0 /* no i/o in progress */ +#define F_FFIOREAD 1 /* read in progress */ +#define F_FFIOWRITE 2 /* write in progress */ + +/* Terminal mode stuff. I/O mode flags maybe combined, e.g., IO_RAW+IO_NDELAY. + */ +#define IO_NORMAL 0 /* "normal" terminal i/o */ +#define IO_RAW 001B /* enables raw mode i/o */ +#define IO_NDELAY 100B /* enables nonblocking i/o */ + +#define D_fset diff --git a/unix/hlib/libc/iraf.h b/unix/hlib/libc/iraf.h new file mode 100644 index 00000000..85c0c60a --- /dev/null +++ b/unix/hlib/libc/iraf.h @@ -0,0 +1,192 @@ +/* + * IRAF.H -- Index to the IRAF/C include files and to the major IRAF + * directories. All directory references in the IRAF system are relative + * to the root directories defined in this file. The UNIX version of IRAF + * scans this file at run time to get the logical directory definitions. + */ + +#ifndef D_iraf +/* ### Start of run time definitions */ +#define HOST "/iraf/iraf/unix/" +#define IRAF "/iraf/iraf/" +#define TMP "/tmp/" +/* ### End of run time definitions */ + +/* Compile time definitions (for C #ifdefs). + */ +/* #define BSDUNIX */ +/* #define SUNOS4 */ + +#define D_iraf +#endif + +/* Include any header files specified in "#define import_XXX" statements + * before we were called. + */ +#ifdef import_libc +#ifndef D_libc +#include "/iraf/iraf/unix/hlib/libc/libc.h" +#endif +#undef import_libc +#endif + +#ifdef import_spp +#ifndef D_spp +#include "/iraf/iraf/unix/hlib/libc/spp.h" +#endif +#undef import_spp +#endif + +#ifdef import_main +#ifndef D_main +#include "/iraf/iraf/unix/hlib/libc/main.h" +#endif +#undef import_main +#endif + +#ifdef import_stdio +#ifndef D_stdio +#include "/iraf/iraf/unix/hlib/libc/stdio.h" +#endif +#undef import_stdio +#endif + +#ifdef import_error +#ifndef D_error +#include "/iraf/iraf/unix/hlib/libc/error.h" +#endif +#undef import_error +#endif + +#ifdef import_ctype +#ifndef D_ctype +#include "/iraf/iraf/unix/hlib/libc/ctype.h" +#endif +#undef import_ctype +#endif + +#ifdef import_finfo +#ifndef D_finfo +#include "/iraf/iraf/unix/hlib/libc/finfo.h" +#endif +#undef import_finfo +#endif + +#ifdef import_fset +#ifndef D_fset +#include "/iraf/iraf/unix/hlib/libc/fset.h" +#endif +#undef import_fset +#endif + +#ifdef import_fpoll +#ifndef D_fpoll +#include "/iraf/iraf/unix/hlib/libc/fpoll.h" +#endif +#undef import_fpoll +#endif + +#ifdef import_kernel +#ifndef D_kernel +#include "/iraf/iraf/unix/hlib/libc/kernel.h" +#endif +#undef import_kernel +#endif + +#ifdef import_xnames +#ifndef D_xnames +#include "/iraf/iraf/unix/hlib/libc/xnames.h" +#endif +#undef import_xnames +#endif + +#ifdef import_knames +#ifndef D_knames +#include "/iraf/iraf/unix/hlib/libc/knames.h" +#endif +#undef import_knames +#endif + +#ifdef import_kproto +#ifndef D_kproto +#include "/iraf/iraf/unix/hlib/libc/kproto.h" +#endif +#undef import_kproto +#endif + +#ifdef import_setjmp +#ifndef D_setjmp +#include "/iraf/iraf/unix/hlib/libc/setjmp.h" +#endif +#undef import_setjmp +#endif + +#ifdef import_xwhen +#ifndef D_xwhen +#include "/iraf/iraf/unix/hlib/libc/xwhen.h" +#endif +#undef import_xwhen +#endif + +#ifdef import_protect +#ifndef D_protect +#include "/iraf/iraf/unix/hlib/libc/protect.h" +#endif +#undef import_protect +#endif + +#ifdef import_prtype +#ifndef D_prtype +#include "/iraf/iraf/unix/hlib/libc/prtype.h" +#endif +#undef import_prtype +#endif + +#ifdef import_zfstat +#ifndef D_zfstat +#include "/iraf/iraf/unix/hlib/libc/zfstat.h" +#endif +#undef import_zfstat +#endif + +#ifdef import_alloc +#ifndef D_alloc +#include "/iraf/iraf/unix/hlib/libc/alloc.h" +#endif +#undef import_alloc +#endif + +#ifdef import_math +#ifndef D_math +#include "/iraf/iraf/unix/hlib/libc/math.h" +#endif +#undef import_math +#endif + +#ifdef import_prstat +#ifndef D_prstat +#include "/iraf/iraf/unix/hlib/libc/prstat.h" +#endif +#undef import_prstat +#endif + +#ifdef import_lexnum +#ifndef D_lexnum +#include "/iraf/iraf/unix/hlib/libc/lexnum.h" +#endif +#undef import_lexnum +#endif + +#ifdef import_ttset +#ifndef D_ttset +#include "/iraf/iraf/unix/hlib/libc/ttset.h" +#endif +#undef import_ttset +#endif + +#ifdef import_stdarg +#ifndef D_stdarg +#include "/iraf/iraf/unix/hlib/libc/stdarg.h" +#endif +#undef import_stdarg +#endif diff --git a/unix/hlib/libc/kernel.h b/unix/hlib/libc/kernel.h new file mode 100644 index 00000000..3b240025 --- /dev/null +++ b/unix/hlib/libc/kernel.h @@ -0,0 +1,107 @@ +/* + * KERNEL.H -- Machine dependent definitions for the 4.1BSD UNIX IRAF Kernel. + * The UNIX include file <stdio.h> must also be loaded by any program which + * references "kernel.h". The companion include file "language.h" defines + * the (generally) machine independent kernel definitions. + */ + +#include <stdlib.h> +#include <unistd.h> +#include <sys/types.h> +#include <string.h> + + + +#ifndef NOKNET +#define NOKNET /* no networking desired in kernel */ +#endif + +/* Tunable kernel parameters. All buffer sizes are in units of bytes. + * Buffer lengths are in units of whatever the buffer contains. + */ +#define SZ_DISKBLOCK 512 /* used in zsttbf if dev block invar. */ +#define FILE_MODEBITS 0666 /* protection bits for new files */ +#define MAXOFILES 256 /* maximum open files (see <stdio.h>) */ +#define MAXPROCS 20 /* maximum subprocesses per process */ +#define SZ_DEFWORKSET 67108864 /* default working set size, bytes */ +#define SZ_MAXWORKSET 268435456 /* maximum working set (max physmem) */ +#define CLKFREQ 60 /* clock frequency (see zgtime.c) */ + +#define TX_OPTBUFSIZE SZ_LINE /* optimum buffer size for text file */ +#define TX_MAXBUFSIZE 0 /* maximum buffer size for text file */ +#define BF_OPTBUFSIZE 65536 /* optimum buffer size for binary file */ +#define BF_MAXBUFSIZE 0 /* maximum buffer size for binary file */ +#define SF_OPTBUFSIZE 65536 /* optimum buffer size for static file */ +#define SF_MAXBUFSIZE 0 /* maximum buffer size for static file */ +#define KS_OPTBUFSIZE 65536 /* optimal buffer size for KS i/o */ +#define KS_MAXBUFSIZE 0 /* maximum buffer size for KS i/o */ +#define PR_OPTBUFSIZE 65536 /* optimal buffer size for IPC i/o */ +#define PR_MAXBUFSIZE 4096 /* maximum buffer size for IPC i/o */ +#define ND_OPTBUFSIZE 65536 /* optimal buffer size for ND i/o */ +#define ND_MAXBUFSIZE 0 /* maximum buffer size for ND i/o */ +#define PL_OPTBUFSIZE 1024 /* optimum buffer size for plotter */ +#define PL_MAXBUFSIZE 0 /* maximum buffer size for plotter */ +#define LP_OPTBUFSIZE 1024 /* optimum buffer size for line printer */ +#define LP_MAXBUFSIZE 0 /* maximum buffer size for line printer */ + +/* ZLOCVA style pointer to address conversions. These macros are used to + * convert host pointer addresses (in bytes) to/from iraf pointer values + * in units of XCHAR. + */ +#define ADDR_TO_LOC(addr) (((XINT)((XCHAR *)(addr)))>>(sizeof(XCHAR)-1)) +#define LOC_TO_ADDR(loc,type) ((type *)((XCHAR *)((loc)<<(sizeof(XCHAR)-1)))) + + +/* Kernel file descriptor for accessing UNIX files. A static array ZFD of + * descriptor structures is used, indexed by UNIX file descriptor numbers + * numbered beginning at 0, the standard input. + */ +struct fiodes { + FILE *fp; /* file pointer if text file */ + long fpos; /* file offset, bytes */ + long filesize; /* file size at open time */ + int nbytes; /* last nbytes r|w */ + int io_flags; /* fcntl flags */ + short flags; /* access mode flags */ + char *port; /* tty port if tty */ +}; +extern struct fiodes zfd[]; /* array of descriptors */ + +#define KF_CHARMODE 01 /* char input mode, text files */ +#define KF_NOSEEK 02 /* seeks are illegal on device */ +#define KF_NOSTTY 04 /* stty,gtty calls illegal */ +#define KF_NDELAY 010 /* nonblocking reads */ +#define KF_DIRECTIO 020 /* use direct (unbuffered) i/o */ +#define TTYNAME "/dev/tty" /* user terminal (for ZFIOTY) */ +#define U_STDIN "unix-stdin" /* special filename for stdin */ +#define U_STDOUT "unix-stdout" /* special filename for stdout */ +#define U_STDERR "unix-stderr" /* special filename for stderr */ +#define LEN_RAWCMD 5 /* nchars in rawcmd string */ +#define RAWOFF "\033-rAw" /* turn raw mode off */ +#define RAWON "\033+rAw" /* turn raw mode on */ +#define LEN_SETREDRAW 6 /* nchars in setredraw string */ +#define SETREDRAW "\033=rDw" /* set/enable screenredraw code */ + + +#ifdef AUX +#define SIGFUNC sigfunc_t +#else +typedef void (*SIGFUNC)(); +#endif + +typedef void (*PFV)(); +#ifdef MACH64 +typedef long (*PFI)(); +#else +typedef int (*PFI)(); +#endif + + +#ifdef SOLARIS +#define bzero(a,n) memset(a,0,n) +#define bcopy(a,b,n) memmove(b,a,n) +#endif + +extern char *irafpath(); + +#define D_kernel diff --git a/unix/hlib/libc/knames.h b/unix/hlib/libc/knames.h new file mode 100644 index 00000000..a67d302b --- /dev/null +++ b/unix/hlib/libc/knames.h @@ -0,0 +1,371 @@ +/* + * KNAMES.H -- External names of the kernel procedures. These are defined + * because the trailing underscore is peculiar to this version of UNIX. + * On some other system the underscore might not be necessary. UNIX uses + * the underscore to avoid name collisions between Fortran names and C/UNIX + * names. If your system does not employ such a convention, delete the _ but + * do not delete the defines - there will probably be name collisions and + * some of the names will have to be changed. To change the external name + * change the define given here. + */ + +#define IRAF_MAIN irafmn_ +#define ZZSETK zzsetk_ +#define USHLIB ushlib_ +#define VSHLIB vshlib_ +#define VSHEND vshend_ +#define VLIBINIT vlibinit_ +#define KI_CONNECT kicont_ +#define KI_GETHOSTS kigets_ +#define KI_SEND kisend_ +#define KI_RECEIVE kirece_ + +#define ZARDBF zardbf_ +#define ZARDGD zardgd_ +#define ZARDKS zardks_ +#define ZARDLP zardlp_ +#define ZARDND zardnd_ +#define ZARDPL zardpl_ +#define ZARDPR zardpr_ +#define ZARDSF zardsf_ +#define ZAWRBF zawrbf_ +#define ZAWRGD zawrgd_ +#define ZAWRKS zawrks_ +#define ZAWRLP zawrlp_ +#define ZAWRND zawrnd_ +#define ZAWRPL zawrpl_ +#define ZAWRPR zawrpr_ +#define ZAWRSF zawrsf_ +#define ZAWSET zawset_ +#define ZAWTBF zawtbf_ +#define ZAWTGD zawtgd_ +#define ZAWTKS zawtks_ +#define ZAWTLP zawtlp_ +#define ZAWTND zawtnd_ +#define ZAWTPL zawtpl_ +#define ZAWTPR zawtpr_ +#define ZAWTSF zawtsf_ +#define ZCALL0 zcall0_ +#define ZCALL1 zcall1_ +#define ZCALL2 zcall2_ +#define ZCALL3 zcall3_ +#define ZCALL4 zcall4_ +#define ZCALL5 zcall5_ +#define ZCALL6 zcall6_ +#define ZCALL7 zcall7_ +#define ZCALL8 zcall8_ +#define ZCALL9 zcall9_ +#define ZCALLA zcalla_ +#define ZCLCPR zclcpr_ +#define ZCLDIR zcldir_ +#define ZCLDPR zcldpr_ +#define ZCLSBF zclsbf_ +#define ZCLSGD zclsgd_ +#define ZCLSKS zclsks_ +#define ZCLSLP zclslp_ +#define ZCLSND zclsnd_ +#define ZCLSPL zclspl_ +#define ZCLSSF zclssf_ +#define ZCLSTX zclstx_ +#define ZCLSTY zclsty_ +#define ZDOJMP zdojmp_ +#define ZDVALL zdvall_ +#define ZDVOWN zdvown_ +#define ZFACSS zfacss_ +#define ZFALOC zfaloc_ +#define ZFCHDR zfchdr_ +#define ZFDELE zfdele_ +#define ZFGCWD zfgcwd_ +#define ZFINFO zfinfo_ +#define ZFLSTX zflstx_ +#define ZFLSTY zflsty_ +#define ZFLINK zflink_ +#define ZFMKCP zfmkcp_ +#define ZFMKDR zfmkdr_ +#define ZFNBRK zfnbrk_ +#define ZFPATH zfpath_ +#define ZFPROT zfprot_ +#define ZFPOLL zfpoll_ +#define ZFREE zfree_ +#define ZFRNAM zfrnam_ +#define ZFRMDR zfrmdr_ +#define ZFSUBD zfsubd_ +#define ZFULNK zfulnk_ +#define ZFUNC0 zfunc0_ +#define ZFUNC1 zfunc1_ +#define ZFUNC2 zfunc2_ +#define ZFUNC3 zfunc3_ +#define ZFUNC4 zfunc4_ +#define ZFUNC5 zfunc5_ +#define ZFUNC6 zfunc6_ +#define ZFUNC7 zfunc7_ +#define ZFUNC8 zfunc8_ +#define ZFUNC9 zfunc9_ +#define ZFUNCA zfunca_ +#define ZFUTIM zfutim_ +#define ZFXDIR zfxdir_ +#define ZGCMDL zgcmdl_ +#define ZGETTT zgettt_ +#define ZGETTX zgettx_ +#define ZGETTY zgetty_ +#define ZGFDIR zgfdir_ +#define ZGHOST zghost_ +#define ZGMTCO zgmtco_ +#define ZGTENV zgtenv_ +#define ZGTIME zgtime_ +#define ZGTPID zgtpid_ +#define ZINTPR zintpr_ +#define ZLOCPR zlocpr_ +#define ZLOCVA zlocva_ +#define ZMALOC zmaloc_ +#define ZMEMCK zmemck_ +#define ZMFREE zmfree_ +#define ZNOTTX znottx_ +#define ZNOTTY znotty_ +#define ZOPCPR zopcpr_ +#define ZOPDIR zopdir_ +#define ZOPDPR zopdpr_ +#define ZOPNBF zopnbf_ +#define ZOPNGD zopngd_ +#define ZOPNKS zopnks_ +#define ZOPNLP zopnlp_ +#define ZOPNND zopnnd_ +#define ZOPNPL zopnpl_ +#define ZOPNSF zopnsf_ +#define ZOPNTX zopntx_ +#define ZOPNTY zopnty_ +#define ZOSCMD zoscmd_ +#define ZPANIC zpanic_ +#define ZPUTTX zputtx_ +#define ZPUTTY zputty_ +#define ZRALOC zraloc_ +#define ZSEKTX zsektx_ +#define ZSEKTY zsekty_ +#define ZSTTBF zsttbf_ +#define ZSTTGD zsttgd_ +#define ZSTTKS zsttks_ +#define ZSTTLP zsttlp_ +#define ZSTTND zsttnd_ +#define ZSTTPL zsttpl_ +#define ZSTTPR zsttpr_ +#define ZSTTSF zsttsf_ +#define ZSTTTX zstttx_ +#define ZSTTTY zsttty_ +#define ZSVJMP zsvjmp_ +#define ZTSLEE ztslee_ +#define ZWMSEC zwmsec_ +#define ZXGMES zxgmes_ +#define ZXWHEN zxwhen_ +#define ZZCLMT zzclmt_ +#define ZZEPRO zzepro_ +#define ZZOPMT zzopmt_ +#define ZZRDMT zzrdmt_ +#define ZZRWMT zzrwmt_ +#define ZZSETK zzsetk_ +#define ZZSTMT zzstmt_ +#define ZZSTOP zzstop_ +#define ZZSTRT zzstrt_ +#define ZZWRMT zzwrmt_ +#define ZZWTMT zzwtmt_ + + + +/* If KNET name mapping is enabled selected machine level kernel names are + * mapped into procedures in the KI (kernel interface) package. This is + * necessary if the high level code is to have networking capabilities. + * Define NOKNET to disable this mapping, e.g., in the kernel itself. + */ + +#ifndef NOKNET + +#define zardnd_ kardnd_ +#define zawrnd_ kawrnd_ +#define zawtnt_ kawtnd_ +#define zclsnd_ kclsnd_ +#define zfchdr_ kfchdr_ +#define zfgcwd_ kfgcwd_ +#define zfpath_ kfpath_ +#define zfsubd_ kfsubd_ +#define zopnnd_ kopnnd_ +#define zsttnd_ ksttnd_ +#define zardbf_ kardbf_ +#define zardlp_ kardlp_ +#define zardpl_ kardpl_ +#define zardpr_ kardpr_ +#define zardsf_ kardsf_ +#define zawrbf_ kawrbf_ +#define zawrlp_ kawrlp_ +#define zawrpl_ kawrpl_ +#define zawrpr_ kawrpr_ +#define zawrsf_ kawrsf_ +#define zawtbf_ kawtbf_ +#define zawtlp_ kawtlp_ +#define zawtpl_ kawtpl_ +#define zawtpr_ kawtpr_ +#define zawtsf_ kawtsf_ +#define zclcpr_ kclcpr_ +#define zcldir_ kcldir_ +#define zcldpr_ kcldpr_ +#define zclsbf_ kclsbf_ +#define zclslp_ kclslp_ +#define zclspl_ kclspl_ +#define zclspr_ kclspr_ +#define zclssf_ kclssf_ +#define zclstx_ kclstx_ +#define zclsty_ kclsty_ +#define zdvall_ kdvall_ +#define zdvown_ kdvown_ +#define zfacss_ kfacss_ +#define zfaloc_ kfaloc_ +#define zfdele_ kfdele_ +#define zfinfo_ kfinfo_ +#define zflstx_ kflstx_ +#define zflsty_ kflsty_ +#define zfmkcp_ kfmkcp_ +#define zfmkdr_ kfmkdr_ +#define zfprot_ kfprot_ +#define zfrnam_ kfrnam_ +#define zfrmdr_ kfrmdr_ +#define zfutim_ kfutim_ +#define zgettx_ kgettx_ +#define zgetty_ kgetty_ +#define zgfdir_ kgfdir_ +#define zintpr_ kintpr_ +#define znottx_ knottx_ +#define znotty_ knotty_ +#define zopcpr_ kopcpr_ +#define zopdir_ kopdir_ +#define zopdpr_ kopdpr_ +#define zopnbf_ kopnbf_ +#define zopnlp_ kopnlp_ +#define zopnpl_ kopnpl_ +#define zopnpr_ kopnpr_ +#define zopnsf_ kopnsf_ +#define zopntx_ kopntx_ +#define zopnty_ kopnty_ +#define zoscmd_ koscmd_ +#define zputtx_ kputtx_ +#define zputty_ kputty_ +#define zsektx_ ksektx_ +#define zsekty_ ksekty_ +#define zsttbf_ ksttbf_ +#define zsttlp_ ksttlp_ +#define zsttpl_ ksttpl_ +#define zsttpr_ ksttpr_ +#define zsttsf_ ksttsf_ +#define zstttx_ kstttx_ +#define zsttty_ ksttty_ +#define zzclmt_ kzclmt_ +#define zzopmt_ kzopmt_ +#define zzrdmt_ kzrdmt_ +#define zzrwmt_ kzrwmt_ +#define zzstmt_ kzstmt_ +#define zzwrmt_ kzwrmt_ +#define zzwtmt_ kzwtmt_ + + +#endif + +/* Procedure names of miscellaneous potentially machine dependent Bit and Byte + * Primitives. + */ +#define ACLRB aclrb_ +#define ANDI andi_ +#define ANDL andl_ +#define ANDS ands_ +#define BITMOV bitmov_ +#define BITPAK bitpak_ +#define BITUPK bitupk_ +#define BSWAP2 bswap2_ +#define BSWAP4 bswap4_ +#define BSWAP8 bswap8_ +#define BYTMOV bytmov_ +#define CHRPAK chrpak_ +#define CHRUPK chrupk_ +#define D1MACH d1mach_ +#define I1MACH i1mach_ +#define MIILEN miilen_ +#define MIIPAK miipak_ +#define MIIUPK miiupk_ +#define NOTI noti_ +#define NOTL notl_ +#define NOTS nots_ +#define ORI ori_ +#define ORL orl_ +#define ORS ors_ +#define R1MACH r1mach_ +#define SHIFTI shifti_ +#define SHIFTS shifts_ +#define SHIFTL shiftl_ +#define STRPAK strpak_ +#define STRUPK strupk_ +#define XORI xori_ +#define XORL xorl_ +#define XORS xors_ +#define I32TO64 i32to4_ +#define I64TO32 i64to2_ +#define IPAK32 ipak32_ +#define IUPK32 iupk32_ +#define IPAK16 ipak16_ +#define IUPK16 iupk16_ +#define IMUL32 imul32_ +#define ISCL32 iscl32_ +#define ISCL64 iscl64_ +#define STRSUM strsum_ + +#define ACLRC aclrc_ +#define ACLRD aclrd_ +#define ACLRI aclri_ +#define ACLRL aclrl_ +#define ACLRR aclrr_ +#define ACLRS aclrs_ +#define AMOVC amovc_ +#define AMOVD amovd_ +#define AMOVI amovi_ +#define AMOVL amovl_ +#define AMOVR amovr_ +#define AMOVS amovs_ + +/* Procedure names for the potentially machine dependent VOPS vector + * primitives. The ACHT stands for change datatype, the B suffix refers + * to primitives which deal with unsigned machine bytes, and the U suffix + * refers to primitives which deal with unsigned short (16 bit) integers. + */ +#define ACHTBB achtbb_ +#define ACHTBC achtbc_ +#define ACHTBD achtbd_ +#define ACHTBI achtbi_ +#define ACHTBL achtbl_ +#define ACHTBR achtbr_ +#define ACHTBS achtbs_ +#define ACHTBU achtbu_ +#define ACHTBX achtbx_ +#define ACHTCB achtcb_ +#define ACHTCU achtcu_ +#define ACHTDB achtdb_ +#define ACHTDU achtdu_ +#define ACHTIB achtib_ +#define ACHTIU achtiu_ +#define ACHTLB achtlb_ +#define ACHTLU achtlu_ +#define ACHTRB achtrb_ +#define ACHTRU achtru_ +#define ACHTSB achtsb_ +#define ACHTSU achtsu_ +#define ACHTUB achtub_ +#define ACHTUC achtuc_ +#define ACHTUD achtud_ +#define ACHTUI achtui_ +#define ACHTUL achtul_ +#define ACHTUR achtur_ +#define ACHTUS achtus_ +#define ACHTUU achtuu_ +#define ACHTUX achtux_ +#define ACHTXB achtxb_ +#define ACHTXU achtxu_ + +/* +#define import_kproto +*/ + +#define D_knames diff --git a/unix/hlib/libc/kproto.h b/unix/hlib/libc/kproto.h new file mode 100644 index 00000000..df300f81 --- /dev/null +++ b/unix/hlib/libc/kproto.h @@ -0,0 +1,496 @@ +/* + * KPROTO.H -- IRAF Kernel prototype definitions. + */ + +#include <stdio.h> +#include <time.h> /* for time_t */ +#include <signal.h> /* for siginfo_t */ + +#ifndef MACH64 + + +/* alloc.c */ +extern int main(int argc, char *argv[]); +extern int alloc(char *argv[], int statonly); +extern int dealloc(char *argv[]); +extern int findsfs(char *argv[]); +/* dio.c */ +extern int directio(int fd, int advice); +/* getproc.c */ +extern int uid_executing(int uid); +/* gmttolst.c */ +extern time_t gmt_to_lst(time_t gmt); +/* irafpath.c */ +extern char *irafpath(char *fname); +/* prwait.c */ +extern void pr_enter(int pid, int inchan, int outchan); +extern int pr_wait(int pid); +extern int pr_getipc(int pid, int *inchan, int *outchan); +extern struct proctable *pr_findpid(int pid); +extern void pr_release(int pid); +/* tape.c */ +extern int main(int argc, char *argv[]); +extern void mtop(int op, int count); +extern char *nextcmd(FILE *in); +extern char *gettok(void); +extern char *prompt(void); +extern void pstatus(void); +extern void output(char *text); +extern void phelp(void); +/* zalloc.c */ +extern int zdvall_(shortint *aliases, int *allflg, int *status); +extern int zdvown_(shortint *device, shortint *owner, int *maxch, int *status); +extern int loggedin(int uid); +/* zawset.c */ +extern int zawset_(int *best_size, int *new_size, int *old_size, int *max_size); +/* zcall.c */ +extern int zcall0_(int *proc); +extern int zcall1_(int *proc, void *arg1); +extern int zcall2_(int *proc, void *arg1, void *arg2); +extern int zcall3_(int *proc, void *arg1, void *arg2, void *arg3); +extern int zcall4_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4); +extern int zcall5_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5); +extern int zcall6_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6); +extern int zcall7_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7); +extern int zcall8_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8); +extern int zcall9_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8, void *arg9); +extern int zcalla_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8, void *arg9, void *arg10); +/* zdojmp.c */ +extern void zdojmp_(int *jmpbuf, int *status); +/* zfacss.c */ +extern int zfacss_(shortint *fname, int *mode, int *type, int *status); +/* zfaloc.c */ +extern int zfaloc_(shortint *fname, int *nbytes, int *status); +/* zfchdr.c */ +extern int zfchdr_(shortint *newdir, int *status); +/* zfdele.c */ +extern int zfdele_(shortint *fname, int *status); +/* zfgcwd.c */ +extern int zfgcwd_(shortint *outstr, int *maxch, int *status); +/* zfinfo.c */ +extern int zfinfo_(shortint *fname, int *finfo_struct, int *status); +/* zfiobf.c */ +extern int zopnbf_(shortint *osfn, int *mode, int *chan); +extern int zclsbf_(int *fd, int *status); +extern int zardbf_(int *chan, shortint *buf, int *maxbytes, int *offset); +extern int zawrbf_(int *chan, shortint *buf, int *nbytes, int *offset); +extern int zawtbf_(int *fd, int *status); +extern int zsttbf_(int *fd, int *param, int *lvalue); +extern int _u_fmode(int mode); +extern int vm_access(char *fname, int mode); +extern int vm_delete(char *fname, int force); +extern int vm_reservespace(long nbytes); +extern int vm_largefile(long nbytes); +extern int vm_directio(int fd, int flag); +/* zfioks.c */ +extern int zopnks_(shortint *x_server, int *mode, int *chan); +extern int zclsks_(int *chan, int *status); +extern int zardks_(int *chan, shortint *buf, int *totbytes, int *loffset); +extern int zawrks_(int *chan, shortint *buf, int *totbytes, int *loffset); +extern int zawtks_(int *chan, int *status); +extern int zsttks_(int *chan, int *param, int *lvalue); +extern void pr_mask(char *str); +/* zfiolp.c */ +extern int zopnlp_(shortint *printer, int *mode, int *chan); +extern int zclslp_(int *chan, int *status); +extern int zardlp_(int *chan, shortint *buf, int *maxbytes, int *offset); +extern int zawrlp_(int *chan, shortint *buf, int *nbytes, int *offset); +extern int zawtlp_(int *chan, int *status); +extern int zsttlp_(int *chan, int *param, int *lvalue); +/* zfiomt.c */ +extern int zzopmt_(shortint *device, int *acmode, shortint *devcap, int *devpos, int *newfile, int *chan); +extern int zzclmt_(int *chan, int *devpos, int *o_status); +extern int zzrdmt_(int *chan, shortint *buf, int *maxbytes, int *offset); +extern int zzwrmt_(int *chan, shortint *buf, int *nbytes, int *offset); +extern int zzwtmt_(int *chan, int *devpos, int *o_status); +extern int zzstmt_(int *chan, int *param, int *lvalue); +extern int zzrwmt_(shortint *device, shortint *devcap, int *o_status); +/* zfiond.c */ +extern int zopnnd_(shortint *pk_osfn, int *mode, int *chan); +extern int zclsnd_(int *fd, int *status); +extern int zardnd_(int *chan, shortint *buf, int *maxbytes, int *offset); +extern int zawrnd_(int *chan, shortint *buf, int *nbytes, int *offset); +extern int zawtnd_(int *fd, int *status); +extern int zsttnd_(int *fd, int *param, int *lvalue); +/* zfiopl.c */ +extern int zopnpl_(shortint *plotter, int *mode, int *chan); +extern int zclspl_(int *chan, int *status); +extern int zardpl_(int *chan, shortint *buf, int *maxbytes, int *offset); +extern int zawrpl_(int *chan, shortint *buf, int *nbytes, int *offset); +extern int zawtpl_(int *chan, int *status); +extern int zsttpl_(int *chan, int *param, int *lvalue); +/* zfiopr.c */ +extern int zopcpr_(shortint *osfn, int *inchan, int *outchan, int *pid); +extern int zclcpr_(int *pid, int *exit_status); +extern int zardpr_(int *chan, shortint *buf, int *maxbytes, int *loffset); +extern int zawrpr_(int *chan, shortint *buf, int *nbytes, int *loffset); +extern int zawtpr_(int *chan, int *status); +extern int zsttpr_(int *chan, int *param, int *lvalue); +/* zfiosf.c */ +extern int zopnsf_(shortint *osfn, int *mode, int *chan); +extern int zclssf_(int *fd, int *status); +extern int zardsf_(int *chan, shortint *buf, int *maxbytes, int *offset); +extern int zawrsf_(int *chan, shortint *buf, int *nbytes, int *offset); +extern int zawtsf_(int *fd, int *status); +extern int zsttsf_(int *fd, int *param, int *lvalue); +/* zfiotx.c */ +extern int zopntx_(shortint *osfn, int *mode, int *chan); +extern int zclstx_(int *fd, int *status); +extern int zflstx_(int *fd, int *status); +extern int zgettx_(int *fd, shortint *buf, int *maxchars, int *status); +extern int znottx_(int *fd, int *offset); +extern int zputtx_(int *fd, shortint *buf, int *nchars, int *status); +extern int zsektx_(int *fd, int *znottx_offset, int *status); +extern int zstttx_(int *fd, int *param, int *value); +/* zfioty.c */ +extern int zopnty_(shortint *osfn, int *mode, int *chan); +extern int zclsty_(int *fd, int *status); +extern int zflsty_(int *fd, int *status); +extern int zgetty_(int *fd, shortint *buf, int *maxchars, int *status); +extern int znotty_(int *fd, int *offset); +extern int zputty_(int *fd, shortint *buf, int *nchars, int *status); +extern int zsekty_(int *fd, int *znotty_offset, int *status); +extern int zsttty_(int *fd, int *param, int *value); +/* zfmkcp.c */ +extern int zfmkcp_(shortint *osfn, shortint *new_osfn, int *status); +/* zfmkdr.c */ +extern int zfmkdr_(shortint *newdir, int *status); +/* zfnbrk.c */ +extern int zfnbrk_(shortint *vfn, int *uroot_offset, int *uextn_offset); +/* zfpath.c */ +extern int zfpath_(shortint *osfn, shortint *pathname, int *maxch, int *nchars); +/* zfpoll.c */ +extern int zfpoll_(int *pfds, int *nfds, int *timeout, int *npoll, int *status); +/* zfprot.c */ +extern int zfprot_(shortint *fname, int *action, int *status); +/* zfrnam.c */ +extern int zfrnam_(shortint *oldname, shortint *newname, int *status); +/* zfrmdr.c */ +extern int zfrmdr_(shortint *dir, int *status); +/* zfsubd.c */ +extern int zfsubd_(shortint *osdir, int *maxch, shortint *subdir, int *nchars); +/* zfunc.c */ +extern int zfunc0_(int *proc); +extern int zfunc1_(int *proc, void *arg1); +extern int zfunc2_(int *proc, void *arg1, void *arg2); +extern int zfunc3_(int *proc, void *arg1, void *arg2, void *arg3); +extern int zfunc4_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4); +extern int zfunc5_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5); +extern int zfunc6_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6); +extern int zfunc7_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7); +extern int zfunc8_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8); +extern int zfunc9_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8, void *arg9); +extern int zfunca_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8, void *arg9, void *arg10); +/* zfutim.c */ +extern int zfutim_(shortint *fname, int *atime, int *mtime, int *status); +/* zfxdir.c */ +extern int zfxdir_(shortint *osfn, shortint *osdir, int *maxch, int *nchars); +/* zgcmdl.c */ +extern int zgcmdl_(shortint *cmd, int *maxch, int *status); +/* zghost.c */ +extern int zghost_(shortint *outstr, int *maxch); +/* zglobl.c */ +/* zgmtco.c */ +extern int zgmtco_(int *gmtcor); +/* zgtenv.c */ +extern int zgtenv_(shortint *envvar, shortint *outstr, int *maxch, int *status); +/* zgtime.c */ +extern int zgtime_(int *clock_time, int *cpu_time); +/* zgtpid.c */ +extern int zgtpid_(int *pid); +/* zintpr.c */ +extern int zintpr_(int *pid, int *exception, int *status); +/* zlocpr.c +extern int zlocpr_(PFI proc, int *o_epa); +*/ +/* zlocva.c */ +extern int zlocva_(shortint *variable, int *location); +/* zmain.c */ +extern int main(int argc, char *argv[]); +/* zmaloc.c */ +extern int zmaloc_(int *buf, int *nbytes, int *status); +/* zmfree.c */ +extern int zmfree_(int *buf, int *status); +/* zopdir.c */ +extern int zopdir_(shortint *fname, int *chan); +extern int zcldir_(int *chan, int *status); +extern int zgfdir_(int *chan, shortint *outstr, int *maxch, int *status); +/* zopdpr.c */ +extern int zopdpr_(shortint *osfn, shortint *bkgfile, shortint *queue, int *jobcode); +extern int zcldpr_(int *jobcode, int *killflag, int *exit_status); +/* zoscmd.c */ +extern int zoscmd_(shortint *oscmd, shortint *stdin_file, shortint *stdout_file, shortint *stderr_file, int *status); +extern int pr_onint(int usig, int *hwcode, int *scp); +/* zpanic.c */ +extern int zpanic_(int *errcode, shortint *errmsg); +extern int kernel_panic(char *errmsg); +/* zraloc.c */ +extern int zraloc_(int *buf, int *nbytes, int *status); +/* zshlib.c */ +extern void vlibinit_(void); +/* zwmsec.c */ +extern int zwmsec_(int *msec); +/* zxwhen.c */ +extern int zxwhen_(int *sig_code, int *epa, int *old_epa); +extern void ex_handler(int unix_signal, siginfo_t *info, void *ucp); +extern int zxgmes_(int *os_exception, shortint *errmsg, int *maxch); +/* zzepro.c */ +extern int zzepro_(void); +/* zzexit.c */ +extern int exit_(int *code); +/* zzpstr.c */ +extern int spp_debug(void); +extern int zzpstr_(shortint *s1, shortint *s2); +extern int zzlstr_(shortint *s1, shortint *s2); +extern void spp_printstr(shortint *s); +extern void spp_printmemc(int memc_ptr); +/* zzsetk.c */ +extern int zzsetk_(char *ospn, char *osbfn, int prtype, int isatty, int in, int out); +/* zzstrt.c */ +extern int zzstrt_(void); +extern int zzstop_(void); +extern void ready_(void); +extern void mdump_(int *buf, int *nbytes); + + + +#else + + + +/* dio.c */ +extern int directio(int fd, int advice); +/* getproc.c */ +extern int uid_executing(int uid); +/* gmttolst.c */ +extern time_t gmt_to_lst(time_t gmt); +/* irafpath.c */ +extern char *irafpath(char *fname); +/* prwait.c */ +extern void pr_enter(int pid, int inchan, int outchan); +extern int pr_wait(int pid); +extern int pr_getipc(int pid, int *inchan, int *outchan); +extern struct proctable *pr_findpid(int pid); +extern void pr_release(int pid); +/* zalloc.c */ +extern int zdvall_(shortint *aliases, long *allflg, long *status); +extern int zdvown_(shortint *device, shortint *owner, long *maxch, long *status); +extern int loggedin(int uid); +/* zawset.c */ +extern int zawset_(long *best_size, long *new_size, long *old_size, long *max_size); +/* zcall.c */ +/* +extern int zcall0_(long *proc); +extern int zcall1_(long *proc, void *arg1); +extern int zcall2_(long *proc, void *arg1, void *arg2); +extern int zcall3_(long *proc, void *arg1, void *arg2, void *arg3); +extern int zcall4_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4); +extern int zcall5_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5); +extern int zcall6_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6); +extern int zcall7_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7); +extern int zcall8_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8); +extern int zcall9_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8, void *arg9); +extern int zcalla_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8, void *arg9, void *arg10); +*/ +/* zdojmp.c */ +extern void zdojmp_(long *jmpbuf, long *status); +/* zfacss.c */ +extern int zfacss_(shortint *fname, long *mode, long *type, long *status); +/* zfaloc.c */ +extern int zfaloc_(shortint *fname, long *nbytes, long *status); +/* zfchdr.c */ +extern int zfchdr_(shortint *newdir, long *status); +/* zfdele.c */ +extern int zfdele_(shortint *fname, long *status); +/* zfgcwd.c */ +extern int zfgcwd_(shortint *outstr, long *maxch, long *status); +/* zfinfo.c */ +extern int zfinfo_(shortint *fname, long *finfo_struct, long *status); +/* zfiobf.c */ +extern int zopnbf_(shortint *osfn, long *mode, long *chan); +extern int zclsbf_(long *fd, long *status); +extern int zardbf_(long *chan, shortint *buf, long *maxbytes, long *offset); +extern int zawrbf_(long *chan, shortint *buf, long *nbytes, long *offset); +extern int zawtbf_(long *fd, long *status); +extern int zsttbf_(long *fd, long *param, long *lvalue); +extern int _u_fmode(int mode); +extern int vm_access(char *fname, int mode); +extern int vm_delete(char *fname, int force); +extern int vm_reservespace(long nbytes); +extern int vm_largefile(long nbytes); +extern int vm_directio(int fd, int flag); +/* zfioks.c */ +extern int zopnks_(shortint *x_server, long *mode, long *chan); +extern int zclsks_(long *chan, long *status); +extern int zardks_(long *chan, shortint *buf, long *totbytes, long *loffset); +extern int zawrks_(long *chan, shortint *buf, long *totbytes, long *loffset); +extern int zawtks_(long *chan, long *status); +extern int zsttks_(long *chan, long *param, long *lvalue); +extern void pr_mask(char *str); +/* zfiolp.c */ +extern int zopnlp_(shortint *printer, long *mode, long *chan); +extern int zclslp_(long *chan, long *status); +extern int zardlp_(long *chan, shortint *buf, long *maxbytes, long *offset); +extern int zawrlp_(long *chan, shortint *buf, long *nbytes, long *offset); +extern int zawtlp_(long *chan, long *status); +extern int zsttlp_(long *chan, long *param, long *lvalue); +/* zfiomt.c */ +extern int zzopmt_(shortint *device, long *acmode, shortint *devcap, long *devpos, long *newfile, long *chan); +extern int zzclmt_(long *chan, long *devpos, long *o_status); +extern int zzrdmt_(long *chan, shortint *buf, long *maxbytes, long *offset); +extern int zzwrmt_(long *chan, shortint *buf, long *nbytes, long *offset); +extern int zzwtmt_(long *chan, long *devpos, long *o_status); +extern int zzstmt_(long *chan, long *param, long *lvalue); +extern int zzrwmt_(shortint *device, shortint *devcap, long *o_status); +/* zfiond.c */ +extern int zopnnd_(shortint *pk_osfn, long *mode, long *chan); +extern int zclsnd_(long *fd, long *status); +extern int zardnd_(long *chan, shortint *buf, long *maxbytes, long *offset); +extern int zawrnd_(long *chan, shortint *buf, long *nbytes, long *offset); +extern int zawtnd_(long *fd, long *status); +extern int zsttnd_(long *fd, long *param, long *lvalue); +/* zfiopl.c */ +extern int zopnpl_(shortint *plotter, long *mode, long *chan); +extern int zclspl_(long *chan, long *status); +extern int zardpl_(long *chan, shortint *buf, long *maxbytes, long *offset); +extern int zawrpl_(long *chan, shortint *buf, long *nbytes, long *offset); +extern int zawtpl_(long *chan, long *status); +extern int zsttpl_(long *chan, long *param, long *lvalue); +/* zfiopr.c */ +extern int zopcpr_(shortint *osfn, long *inchan, long *outchan, long *pid); +extern int zclcpr_(long *pid, long *exit_status); +extern int zardpr_(long *chan, shortint *buf, long *maxbytes, long *loffset); +extern int zawrpr_(long *chan, shortint *buf, long *nbytes, long *loffset); +extern int zawtpr_(long *chan, long *status); +extern int zsttpr_(long *chan, long *param, long *lvalue); +/* zfiosf.c */ +extern int zopnsf_(shortint *osfn, long *mode, long *chan); +extern int zclssf_(long *fd, long *status); +extern int zardsf_(long *chan, shortint *buf, long *maxbytes, long *offset); +extern int zawrsf_(long *chan, shortint *buf, long *nbytes, long *offset); +extern int zawtsf_(long *fd, long *status); +extern int zsttsf_(long *fd, long *param, long *lvalue); +/* zfiotx.c */ +extern int zopntx_(shortint *osfn, long *mode, long *chan); +extern int zclstx_(long *fd, long *status); +extern int zflstx_(long *fd, long *status); +extern int zgettx_(long *fd, shortint *buf, long *maxchars, long *status); +extern int znottx_(long *fd, long *offset); +extern int zputtx_(long *fd, shortint *buf, long *nchars, long *status); +extern int zsektx_(long *fd, long *znottx_offset, long *status); +extern int zstttx_(long *fd, long *param, long *value); +/* zfioty.c */ +extern int zopnty_(shortint *osfn, long *mode, long *chan); +extern int zclsty_(long *fd, long *status); +extern int zflsty_(long *fd, long *status); +extern int zgetty_(long *fd, shortint *buf, long *maxchars, long *status); +extern int znotty_(long *fd, long *offset); +extern int zputty_(long *fd, shortint *buf, long *nchars, long *status); +extern int zsekty_(long *fd, long *znotty_offset, long *status); +extern int zsttty_(long *fd, long *param, long *value); +/* zfmkcp.c */ +extern int zfmkcp_(shortint *osfn, shortint *new_osfn, long *status); +/* zfmkdr.c */ +extern int zfmkdr_(shortint *newdir, long *status); +/* zfnbrk.c */ +extern int zfnbrk_(shortint *vfn, long *uroot_offset, long *uextn_offset); +/* zfpath.c */ +extern int zfpath_(shortint *osfn, shortint *pathname, long *maxch, long *nchars); +/* zfpoll.c */ +extern int zfpoll_(long *pfds, long *nfds, long *timeout, long *npoll, long *status); +/* zfprot.c */ +extern int zfprot_(shortint *fname, long *action, long *status); +/* zfrnam.c */ +extern int zfrnam_(shortint *oldname, shortint *newname, long *status); +/* zfsubd.c */ +extern int zfsubd_(shortint *osdir, long *maxch, shortint *subdir, long *nchars); +/* zfunc.c */ +extern long zfunc0_(long *proc); +extern long zfunc1_(long *proc, void *arg1); +extern long zfunc2_(long *proc, void *arg1, void *arg2); +extern long zfunc3_(long *proc, void *arg1, void *arg2, void *arg3); +extern long zfunc4_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4); +extern long zfunc5_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5); +extern long zfunc6_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6); +extern long zfunc7_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7); +extern long zfunc8_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8); +extern long zfunc9_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8, void *arg9); +extern long zfunca_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8, void *arg9, void *arg10); +/* zfutim.c */ +extern int zfutim_(shortint *fname, long *atime, long *mtime, long *status); +/* zfxdir.c */ +extern int zfxdir_(shortint *osfn, shortint *osdir, long *maxch, long *nchars); +/* zgcmdl.c */ +extern int zgcmdl_(shortint *cmd, long *maxch, long *status); +/* zghost.c */ +extern int zghost_(shortint *outstr, long *maxch); +/* zglobl.c */ +/* zgmtco.c */ +extern int zgmtco_(long *gmtcor); +/* zgtenv.c */ +extern int zgtenv_(shortint *envvar, shortint *outstr, long *maxch, long *status); +/* zgtime.c */ +extern int zgtime_(long *clock_time, long *cpu_time); +/* zgtpid.c */ +extern int zgtpid_(long *pid); +/* zintpr.c */ +extern int zintpr_(long *pid, long *exception, long *status); +/* zlocpr.c */ +/* +extern int zlocpr_(PFI proc, long *o_epa); +*/ +/* zlocva.c */ +extern int zlocva_(shortint *variable, long *location); +/* zmain.c */ +extern int main(int argc, char *argv[]); +/* zmaloc.c */ +extern int zmaloc_(long *buf, long *nbytes, long *status); +/* zmfree.c */ +extern int zmfree_(long *buf, long *status); +/* zopdir.c */ +extern int zopdir_(shortint *fname, long *chan); +extern int zcldir_(long *chan, long *status); +extern int zgfdir_(long *chan, shortint *outstr, long *maxch, long *status); +/* zopdpr.c */ +extern int zopdpr_(shortint *osfn, shortint *bkgfile, shortint *queue, long *jobcode); +extern int zcldpr_(long *jobcode, long *killflag, long *exit_status); +/* zoscmd.c */ +extern int zoscmd_(shortint *oscmd, shortint *stdin_file, shortint *stdout_file, shortint *stderr_file, long *status); +extern int pr_onint(int usig, int *hwcode, int *scp); +/* zpanic.c */ +extern int zpanic_(long *errcode, shortint *errmsg); +extern int kernel_panic(char *errmsg); +/* zraloc.c */ +extern int zraloc_(long *buf, long *nbytes, long *status); +/* zshlib.c */ +extern void vlibinit_(void); +/* zwmsec.c */ +extern int zwmsec_(long *msec); +/* zxwhen.c */ +extern int zxwhen_(long *sig_code, long *epa, long *old_epa); +extern void ex_handler(int unix_signal, siginfo_t *info, void *ucp); +extern int zxgmes_(long *os_exception, shortint *errmsg, long *maxch); +extern int gfpucw_(long *xcw); +extern int sfpucw_(long *xcw); +/* zzepro.c */ +/* +extern int zzepro_(void); +*/ +/* zzexit.c */ +extern int exit_(long *code); +/* zzpstr.c */ +extern int spp_debug(void); +extern int zzpstr_(shortint *s1, shortint *s2); +extern int zzlstr_(shortint *s1, shortint *s2); +extern void spp_printstr(shortint *s); +extern void spp_printmemc(int memc_ptr); +/* zzsetk.c */ +extern int zzsetk_(char *ospn, char *osbfn, int prtype, int isatty, int in, int out); +/* zzstrt.c */ +extern int zzstrt_(void); +extern int zzstop_(void); +extern void ready_(void); +extern void mdump_(long *buf, long *nbytes); + + +#endif diff --git a/unix/hlib/libc/kproto.h.bak b/unix/hlib/libc/kproto.h.bak new file mode 100644 index 00000000..adde5ecd --- /dev/null +++ b/unix/hlib/libc/kproto.h.bak @@ -0,0 +1,494 @@ +/* + * KPROTO.H -- IRAF Kernel prototype definitions. + */ + +#include <stdio.h> +#include <time.h> /* for time_t */ +#include <signal.h> /* for siginfo_t */ + +#ifndef MACH64 + + +/* alloc.c */ +extern int main(int argc, char *argv[]); +extern int alloc(char *argv[], int statonly); +extern int dealloc(char *argv[]); +extern int findsfs(char *argv[]); +/* dio.c */ +extern int directio(int fd, int advice); +/* getproc.c */ +extern int uid_executing(int uid); +/* gmttolst.c */ +extern time_t gmt_to_lst(time_t gmt); +/* irafpath.c */ +extern char *irafpath(char *fname); +/* prwait.c */ +extern void pr_enter(int pid, int inchan, int outchan); +extern int pr_wait(int pid); +extern int pr_getipc(int pid, int *inchan, int *outchan); +extern struct proctable *pr_findpid(int pid); +extern void pr_release(int pid); +/* tape.c */ +extern int main(int argc, char *argv[]); +extern void mtop(int op, int count); +extern char *nextcmd(FILE *in); +extern char *gettok(void); +extern char *prompt(void); +extern void pstatus(void); +extern void output(char *text); +extern void phelp(void); +/* zalloc.c */ +extern int zdvall_(short *aliases, int *allflg, int *status); +extern int zdvown_(short *device, short *owner, int *maxch, int *status); +extern int loggedin(int uid); +/* zawset.c */ +extern int zawset_(int *best_size, int *new_size, int *old_size, int *max_size); +/* zcall.c */ +extern int zcall0_(int *proc); +extern int zcall1_(int *proc, void *arg1); +extern int zcall2_(int *proc, void *arg1, void *arg2); +extern int zcall3_(int *proc, void *arg1, void *arg2, void *arg3); +extern int zcall4_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4); +extern int zcall5_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5); +extern int zcall6_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6); +extern int zcall7_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7); +extern int zcall8_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8); +extern int zcall9_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8, void *arg9); +extern int zcalla_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8, void *arg9, void *arg10); +/* zdojmp.c */ +extern void zdojmp_(int *jmpbuf, int *status); +/* zfacss.c */ +extern int zfacss_(short *fname, int *mode, int *type, int *status); +/* zfaloc.c */ +extern int zfaloc_(short *fname, int *nbytes, int *status); +/* zfchdr.c */ +extern int zfchdr_(short *newdir, int *status); +/* zfdele.c */ +extern int zfdele_(short *fname, int *status); +/* zfgcwd.c */ +extern int zfgcwd_(short *outstr, int *maxch, int *status); +/* zfinfo.c */ +extern int zfinfo_(short *fname, int *finfo_struct, int *status); +/* zfiobf.c */ +extern int zopnbf_(short *osfn, int *mode, int *chan); +extern int zclsbf_(int *fd, int *status); +extern int zardbf_(int *chan, short *buf, int *maxbytes, int *offset); +extern int zawrbf_(int *chan, short *buf, int *nbytes, int *offset); +extern int zawtbf_(int *fd, int *status); +extern int zsttbf_(int *fd, int *param, int *lvalue); +extern int _u_fmode(int mode); +extern int vm_access(char *fname, int mode); +extern int vm_delete(char *fname, int force); +extern int vm_reservespace(long nbytes); +extern int vm_largefile(long nbytes); +extern int vm_directio(int fd, int flag); +/* zfioks.c */ +extern int zopnks_(short *x_server, int *mode, int *chan); +extern int zclsks_(int *chan, int *status); +extern int zardks_(int *chan, short *buf, int *totbytes, int *loffset); +extern int zawrks_(int *chan, short *buf, int *totbytes, int *loffset); +extern int zawtks_(int *chan, int *status); +extern int zsttks_(int *chan, int *param, int *lvalue); +extern void pr_mask(char *str); +/* zfiolp.c */ +extern int zopnlp_(short *printer, int *mode, int *chan); +extern int zclslp_(int *chan, int *status); +extern int zardlp_(int *chan, short *buf, int *maxbytes, int *offset); +extern int zawrlp_(int *chan, short *buf, int *nbytes, int *offset); +extern int zawtlp_(int *chan, int *status); +extern int zsttlp_(int *chan, int *param, int *lvalue); +/* zfiomt.c */ +extern int zzopmt_(short *device, int *acmode, short *devcap, int *devpos, int *newfile, int *chan); +extern int zzclmt_(int *chan, int *devpos, int *o_status); +extern int zzrdmt_(int *chan, short *buf, int *maxbytes, int *offset); +extern int zzwrmt_(int *chan, short *buf, int *nbytes, int *offset); +extern int zzwtmt_(int *chan, int *devpos, int *o_status); +extern int zzstmt_(int *chan, int *param, int *lvalue); +extern int zzrwmt_(short *device, short *devcap, int *o_status); +/* zfiond.c */ +extern int zopnnd_(short *pk_osfn, int *mode, int *chan); +extern int zclsnd_(int *fd, int *status); +extern int zardnd_(int *chan, short *buf, int *maxbytes, int *offset); +extern int zawrnd_(int *chan, short *buf, int *nbytes, int *offset); +extern int zawtnd_(int *fd, int *status); +extern int zsttnd_(int *fd, int *param, int *lvalue); +/* zfiopl.c */ +extern int zopnpl_(short *plotter, int *mode, int *chan); +extern int zclspl_(int *chan, int *status); +extern int zardpl_(int *chan, short *buf, int *maxbytes, int *offset); +extern int zawrpl_(int *chan, short *buf, int *nbytes, int *offset); +extern int zawtpl_(int *chan, int *status); +extern int zsttpl_(int *chan, int *param, int *lvalue); +/* zfiopr.c */ +extern int zopcpr_(short *osfn, int *inchan, int *outchan, int *pid); +extern int zclcpr_(int *pid, int *exit_status); +extern int zardpr_(int *chan, short *buf, int *maxbytes, int *loffset); +extern int zawrpr_(int *chan, short *buf, int *nbytes, int *loffset); +extern int zawtpr_(int *chan, int *status); +extern int zsttpr_(int *chan, int *param, int *lvalue); +/* zfiosf.c */ +extern int zopnsf_(short *osfn, int *mode, int *chan); +extern int zclssf_(int *fd, int *status); +extern int zardsf_(int *chan, short *buf, int *maxbytes, int *offset); +extern int zawrsf_(int *chan, short *buf, int *nbytes, int *offset); +extern int zawtsf_(int *fd, int *status); +extern int zsttsf_(int *fd, int *param, int *lvalue); +/* zfiotx.c */ +extern int zopntx_(short *osfn, int *mode, int *chan); +extern int zclstx_(int *fd, int *status); +extern int zflstx_(int *fd, int *status); +extern int zgettx_(int *fd, short *buf, int *maxchars, int *status); +extern int znottx_(int *fd, int *offset); +extern int zputtx_(int *fd, short *buf, int *nchars, int *status); +extern int zsektx_(int *fd, int *znottx_offset, int *status); +extern int zstttx_(int *fd, int *param, int *value); +/* zfioty.c */ +extern int zopnty_(short *osfn, int *mode, int *chan); +extern int zclsty_(int *fd, int *status); +extern int zflsty_(int *fd, int *status); +extern int zgetty_(int *fd, short *buf, int *maxchars, int *status); +extern int znotty_(int *fd, int *offset); +extern int zputty_(int *fd, short *buf, int *nchars, int *status); +extern int zsekty_(int *fd, int *znotty_offset, int *status); +extern int zsttty_(int *fd, int *param, int *value); +/* zfmkcp.c */ +extern int zfmkcp_(short *osfn, short *new_osfn, int *status); +/* zfmkdr.c */ +extern int zfmkdr_(short *newdir, int *status); +/* zfnbrk.c */ +extern int zfnbrk_(short *vfn, int *uroot_offset, int *uextn_offset); +/* zfpath.c */ +extern int zfpath_(short *osfn, short *pathname, int *maxch, int *nchars); +/* zfpoll.c */ +extern int zfpoll_(int *pfds, int *nfds, int *timeout, int *npoll, int *status); +/* zfprot.c */ +extern int zfprot_(short *fname, int *action, int *status); +/* zfrnam.c */ +extern int zfrnam_(short *oldname, short *newname, int *status); +/* zfsubd.c */ +extern int zfsubd_(short *osdir, int *maxch, short *subdir, int *nchars); +/* zfunc.c */ +extern int zfunc0_(int *proc); +extern int zfunc1_(int *proc, void *arg1); +extern int zfunc2_(int *proc, void *arg1, void *arg2); +extern int zfunc3_(int *proc, void *arg1, void *arg2, void *arg3); +extern int zfunc4_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4); +extern int zfunc5_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5); +extern int zfunc6_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6); +extern int zfunc7_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7); +extern int zfunc8_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8); +extern int zfunc9_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8, void *arg9); +extern int zfunca_(int *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8, void *arg9, void *arg10); +/* zfutim.c */ +extern int zfutim_(short *fname, int *atime, int *mtime, int *status); +/* zfxdir.c */ +extern int zfxdir_(short *osfn, short *osdir, int *maxch, int *nchars); +/* zgcmdl.c */ +extern int zgcmdl_(short *cmd, int *maxch, int *status); +/* zghost.c */ +extern int zghost_(short *outstr, int *maxch); +/* zglobl.c */ +/* zgmtco.c */ +extern int zgmtco_(int *gmtcor); +/* zgtenv.c */ +extern int zgtenv_(short *envvar, short *outstr, int *maxch, int *status); +/* zgtime.c */ +extern int zgtime_(int *clock_time, int *cpu_time); +/* zgtpid.c */ +extern int zgtpid_(int *pid); +/* zintpr.c */ +extern int zintpr_(int *pid, int *exception, int *status); +/* zlocpr.c +extern int zlocpr_(PFI proc, int *o_epa); +*/ +/* zlocva.c */ +extern int zlocva_(short *variable, int *location); +/* zmain.c */ +extern int main(int argc, char *argv[]); +/* zmaloc.c */ +extern int zmaloc_(int *buf, int *nbytes, int *status); +/* zmfree.c */ +extern int zmfree_(int *buf, int *status); +/* zopdir.c */ +extern int zopdir_(short *fname, int *chan); +extern int zcldir_(int *chan, int *status); +extern int zgfdir_(int *chan, short *outstr, int *maxch, int *status); +/* zopdpr.c */ +extern int zopdpr_(short *osfn, short *bkgfile, short *queue, int *jobcode); +extern int zcldpr_(int *jobcode, int *killflag, int *exit_status); +/* zoscmd.c */ +extern int zoscmd_(short *oscmd, short *stdin_file, short *stdout_file, short *stderr_file, int *status); +extern int pr_onint(int usig, int *hwcode, int *scp); +/* zpanic.c */ +extern int zpanic_(int *errcode, short *errmsg); +extern int kernel_panic(char *errmsg); +/* zraloc.c */ +extern int zraloc_(int *buf, int *nbytes, int *status); +/* zshlib.c */ +extern void vlibinit_(void); +/* zwmsec.c */ +extern int zwmsec_(int *msec); +/* zxwhen.c */ +extern int zxwhen_(int *sig_code, int *epa, int *old_epa); +extern void ex_handler(int unix_signal, siginfo_t *info, void *ucp); +extern int zxgmes_(int *os_exception, short *errmsg, int *maxch); +/* zzepro.c */ +extern int zzepro_(void); +/* zzexit.c */ +extern int exit_(int *code); +/* zzpstr.c */ +extern int spp_debug(void); +extern int zzpstr_(short *s1, short *s2); +extern int zzlstr_(short *s1, short *s2); +extern void spp_printstr(short *s); +extern void spp_printmemc(int memc_ptr); +/* zzsetk.c */ +extern int zzsetk_(char *ospn, char *osbfn, int prtype, int isatty, int in, int out); +/* zzstrt.c */ +extern int zzstrt_(void); +extern int zzstop_(void); +extern void ready_(void); +extern void mdump_(int *buf, int *nbytes); + + + +#else + + + +/* dio.c */ +extern int directio(int fd, int advice); +/* getproc.c */ +extern int uid_executing(int uid); +/* gmttolst.c */ +extern time_t gmt_to_lst(time_t gmt); +/* irafpath.c */ +extern char *irafpath(char *fname); +/* prwait.c */ +extern void pr_enter(int pid, int inchan, int outchan); +extern int pr_wait(int pid); +extern int pr_getipc(int pid, int *inchan, int *outchan); +extern struct proctable *pr_findpid(int pid); +extern void pr_release(int pid); +/* zalloc.c */ +extern int zdvall_(short *aliases, long *allflg, long *status); +extern int zdvown_(short *device, short *owner, long *maxch, long *status); +extern int loggedin(int uid); +/* zawset.c */ +extern int zawset_(long *best_size, long *new_size, long *old_size, long *max_size); +/* zcall.c */ +/* +extern int zcall0_(long *proc); +extern int zcall1_(long *proc, void *arg1); +extern int zcall2_(long *proc, void *arg1, void *arg2); +extern int zcall3_(long *proc, void *arg1, void *arg2, void *arg3); +extern int zcall4_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4); +extern int zcall5_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5); +extern int zcall6_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6); +extern int zcall7_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7); +extern int zcall8_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8); +extern int zcall9_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8, void *arg9); +extern int zcalla_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8, void *arg9, void *arg10); +*/ +/* zdojmp.c */ +extern void zdojmp_(long *jmpbuf, long *status); +/* zfacss.c */ +extern int zfacss_(short *fname, long *mode, long *type, long *status); +/* zfaloc.c */ +extern int zfaloc_(short *fname, long *nbytes, long *status); +/* zfchdr.c */ +extern int zfchdr_(short *newdir, long *status); +/* zfdele.c */ +extern int zfdele_(short *fname, long *status); +/* zfgcwd.c */ +extern int zfgcwd_(short *outstr, long *maxch, long *status); +/* zfinfo.c */ +extern int zfinfo_(short *fname, long *finfo_struct, long *status); +/* zfiobf.c */ +extern int zopnbf_(short *osfn, long *mode, long *chan); +extern int zclsbf_(long *fd, long *status); +extern int zardbf_(long *chan, short *buf, long *maxbytes, long *offset); +extern int zawrbf_(long *chan, short *buf, long *nbytes, long *offset); +extern int zawtbf_(long *fd, long *status); +extern int zsttbf_(long *fd, long *param, long *lvalue); +extern int _u_fmode(int mode); +extern int vm_access(char *fname, int mode); +extern int vm_delete(char *fname, int force); +extern int vm_reservespace(long nbytes); +extern int vm_largefile(long nbytes); +extern int vm_directio(int fd, int flag); +/* zfioks.c */ +extern int zopnks_(short *x_server, long *mode, long *chan); +extern int zclsks_(long *chan, long *status); +extern int zardks_(long *chan, short *buf, long *totbytes, long *loffset); +extern int zawrks_(long *chan, short *buf, long *totbytes, long *loffset); +extern int zawtks_(long *chan, long *status); +extern int zsttks_(long *chan, long *param, long *lvalue); +extern void pr_mask(char *str); +/* zfiolp.c */ +extern int zopnlp_(short *printer, long *mode, long *chan); +extern int zclslp_(long *chan, long *status); +extern int zardlp_(long *chan, short *buf, long *maxbytes, long *offset); +extern int zawrlp_(long *chan, short *buf, long *nbytes, long *offset); +extern int zawtlp_(long *chan, long *status); +extern int zsttlp_(long *chan, long *param, long *lvalue); +/* zfiomt.c */ +extern int zzopmt_(short *device, long *acmode, short *devcap, long *devpos, long *newfile, long *chan); +extern int zzclmt_(long *chan, long *devpos, long *o_status); +extern int zzrdmt_(long *chan, short *buf, long *maxbytes, long *offset); +extern int zzwrmt_(long *chan, short *buf, long *nbytes, long *offset); +extern int zzwtmt_(long *chan, long *devpos, long *o_status); +extern int zzstmt_(long *chan, long *param, long *lvalue); +extern int zzrwmt_(short *device, short *devcap, long *o_status); +/* zfiond.c */ +extern int zopnnd_(short *pk_osfn, long *mode, long *chan); +extern int zclsnd_(long *fd, long *status); +extern int zardnd_(long *chan, short *buf, long *maxbytes, long *offset); +extern int zawrnd_(long *chan, short *buf, long *nbytes, long *offset); +extern int zawtnd_(long *fd, long *status); +extern int zsttnd_(long *fd, long *param, long *lvalue); +/* zfiopl.c */ +extern int zopnpl_(short *plotter, long *mode, long *chan); +extern int zclspl_(long *chan, long *status); +extern int zardpl_(long *chan, short *buf, long *maxbytes, long *offset); +extern int zawrpl_(long *chan, short *buf, long *nbytes, long *offset); +extern int zawtpl_(long *chan, long *status); +extern int zsttpl_(long *chan, long *param, long *lvalue); +/* zfiopr.c */ +extern int zopcpr_(short *osfn, long *inchan, long *outchan, long *pid); +extern int zclcpr_(long *pid, long *exit_status); +extern int zardpr_(long *chan, short *buf, long *maxbytes, long *loffset); +extern int zawrpr_(long *chan, short *buf, long *nbytes, long *loffset); +extern int zawtpr_(long *chan, long *status); +extern int zsttpr_(long *chan, long *param, long *lvalue); +/* zfiosf.c */ +extern int zopnsf_(short *osfn, long *mode, long *chan); +extern int zclssf_(long *fd, long *status); +extern int zardsf_(long *chan, short *buf, long *maxbytes, long *offset); +extern int zawrsf_(long *chan, short *buf, long *nbytes, long *offset); +extern int zawtsf_(long *fd, long *status); +extern int zsttsf_(long *fd, long *param, long *lvalue); +/* zfiotx.c */ +extern int zopntx_(short *osfn, long *mode, long *chan); +extern int zclstx_(long *fd, long *status); +extern int zflstx_(long *fd, long *status); +extern int zgettx_(long *fd, short *buf, long *maxchars, long *status); +extern int znottx_(long *fd, long *offset); +extern int zputtx_(long *fd, short *buf, long *nchars, long *status); +extern int zsektx_(long *fd, long *znottx_offset, long *status); +extern int zstttx_(long *fd, long *param, long *value); +/* zfioty.c */ +extern int zopnty_(short *osfn, long *mode, long *chan); +extern int zclsty_(long *fd, long *status); +extern int zflsty_(long *fd, long *status); +extern int zgetty_(long *fd, short *buf, long *maxchars, long *status); +extern int znotty_(long *fd, long *offset); +extern int zputty_(long *fd, short *buf, long *nchars, long *status); +extern int zsekty_(long *fd, long *znotty_offset, long *status); +extern int zsttty_(long *fd, long *param, long *value); +/* zfmkcp.c */ +extern int zfmkcp_(short *osfn, short *new_osfn, long *status); +/* zfmkdr.c */ +extern int zfmkdr_(short *newdir, long *status); +/* zfnbrk.c */ +extern int zfnbrk_(short *vfn, long *uroot_offset, long *uextn_offset); +/* zfpath.c */ +extern int zfpath_(short *osfn, short *pathname, long *maxch, long *nchars); +/* zfpoll.c */ +extern int zfpoll_(long *pfds, long *nfds, long *timeout, long *npoll, long *status); +/* zfprot.c */ +extern int zfprot_(short *fname, long *action, long *status); +/* zfrnam.c */ +extern int zfrnam_(short *oldname, short *newname, long *status); +/* zfsubd.c */ +extern int zfsubd_(short *osdir, long *maxch, short *subdir, long *nchars); +/* zfunc.c */ +extern long zfunc0_(long *proc); +extern long zfunc1_(long *proc, void *arg1); +extern long zfunc2_(long *proc, void *arg1, void *arg2); +extern long zfunc3_(long *proc, void *arg1, void *arg2, void *arg3); +extern long zfunc4_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4); +extern long zfunc5_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5); +extern long zfunc6_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6); +extern long zfunc7_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7); +extern long zfunc8_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8); +extern long zfunc9_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8, void *arg9); +extern long zfunca_(long *proc, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5, void *arg6, void *arg7, void *arg8, void *arg9, void *arg10); +/* zfutim.c */ +extern int zfutim_(short *fname, long *atime, long *mtime, long *status); +/* zfxdir.c */ +extern int zfxdir_(short *osfn, short *osdir, long *maxch, long *nchars); +/* zgcmdl.c */ +extern int zgcmdl_(short *cmd, long *maxch, long *status); +/* zghost.c */ +extern int zghost_(short *outstr, long *maxch); +/* zglobl.c */ +/* zgmtco.c */ +extern int zgmtco_(long *gmtcor); +/* zgtenv.c */ +extern int zgtenv_(short *envvar, short *outstr, long *maxch, long *status); +/* zgtime.c */ +extern int zgtime_(long *clock_time, long *cpu_time); +/* zgtpid.c */ +extern int zgtpid_(long *pid); +/* zintpr.c */ +extern int zintpr_(long *pid, long *exception, long *status); +/* zlocpr.c */ +/* +extern int zlocpr_(PFI proc, long *o_epa); +*/ +/* zlocva.c */ +extern int zlocva_(short *variable, long *location); +/* zmain.c */ +extern int main(int argc, char *argv[]); +/* zmaloc.c */ +extern int zmaloc_(long *buf, long *nbytes, long *status); +/* zmfree.c */ +extern int zmfree_(long *buf, long *status); +/* zopdir.c */ +extern int zopdir_(short *fname, long *chan); +extern int zcldir_(long *chan, long *status); +extern int zgfdir_(long *chan, short *outstr, long *maxch, long *status); +/* zopdpr.c */ +extern int zopdpr_(short *osfn, short *bkgfile, short *queue, long *jobcode); +extern int zcldpr_(long *jobcode, long *killflag, long *exit_status); +/* zoscmd.c */ +extern int zoscmd_(short *oscmd, short *stdin_file, short *stdout_file, short *stderr_file, long *status); +extern int pr_onint(int usig, int *hwcode, int *scp); +/* zpanic.c */ +extern int zpanic_(long *errcode, short *errmsg); +extern int kernel_panic(char *errmsg); +/* zraloc.c */ +extern int zraloc_(long *buf, long *nbytes, long *status); +/* zshlib.c */ +extern void vlibinit_(void); +/* zwmsec.c */ +extern int zwmsec_(long *msec); +/* zxwhen.c */ +extern int zxwhen_(long *sig_code, long *epa, long *old_epa); +extern void ex_handler(int unix_signal, siginfo_t *info, void *ucp); +extern int zxgmes_(long *os_exception, short *errmsg, long *maxch); +extern int gfpucw_(long *xcw); +extern int sfpucw_(long *xcw); +/* zzepro.c */ +/* +extern int zzepro_(void); +*/ +/* zzexit.c */ +extern int exit_(long *code); +/* zzpstr.c */ +extern int spp_debug(void); +extern int zzpstr_(short *s1, short *s2); +extern int zzlstr_(short *s1, short *s2); +extern void spp_printstr(short *s); +extern void spp_printmemc(int memc_ptr); +/* zzsetk.c */ +extern int zzsetk_(char *ospn, char *osbfn, int prtype, int isatty, int in, int out); +/* zzstrt.c */ +extern int zzstrt_(void); +extern int zzstop_(void); +extern void ready_(void); +extern void mdump_(long *buf, long *nbytes); + + +#endif diff --git a/unix/hlib/libc/lexnum.h b/unix/hlib/libc/lexnum.h new file mode 100644 index 00000000..d83ef138 --- /dev/null +++ b/unix/hlib/libc/lexnum.h @@ -0,0 +1,9 @@ +/* Lexnum.h + */ +#define LEX_OCTAL (-4) +#define LEX_DECIMAL (-3) +#define LEX_HEX (-2) +#define LEX_REAL (-1) +#define LEX_NONNUM 0 + +#define D_lexnum diff --git a/unix/hlib/libc/libc.h b/unix/hlib/libc/libc.h new file mode 100644 index 00000000..83c2f136 --- /dev/null +++ b/unix/hlib/libc/libc.h @@ -0,0 +1,330 @@ +/* + * LIBC.H -- Definitions which should be included by all C source files which + * use the IRAF runtime C library. + */ + +#ifndef D_libc +#ifndef D_spp +#ifndef import_spp +#include "spp.h" +#endif +#endif + +#define XCHAR short +#ifdef MACH64 +#define XINT long +#define XLONG long +#else +#define XINT int +#define XLONG int +#endif +#define SZ_DEFIOBUF 1024 +#define FIO_MAXFD 4096 + +#define FIOCOM fiocom_ /* [MACHDEP] */ +#define MEMCOM mem_ +#define XERPSH xerpsh_ +#define XERPOP xerpop_ +#define XERPOPI xerpoi_ +#define c_main cmain_ + +/* Error handling. + */ +#define iferr(stmt) {XERPSH();stmt;}if(XERPOPI()) + +/* SPP/C pointer conversions. + */ +extern char MEMCOM[]; +#define Memc (((XCHAR *)MEMCOM)-1) +#define Memi (((XINT *)MEMCOM)-1) +#define Memcptr(addr) ((XCHAR *)(addr) - Memc) +#define Memiptr(addr) ((XINT *)(addr) - Memi) + +/* External names. + */ +#ifndef NOLIBCNAMES + +#define getenv envget +#define sys_nerr u_sysnerr +#define sys_errlist u_syserrlist + +#define atof u_atof +#define atoi u_atoi +#define atol u_atol +#define calloc u_calloc +#define envget u_envget +#define eprintf u_eprintf +#define fclose u_fclose +#define fdopen u_fdopen +#define fflush u_fflush +#define fgetc u_fgetc +#define fgets u_fgets +#define fopen u_fopen +#define fprintf u_fprintf +#define fputc u_fputc +#define fputs u_fputs +#define fread u_fread +#define freadline u_readline +#define free u_free +#define freopen u_freopen +#define fscanf u_fscanf +#define fseek u_fseek +#define ftell u_ftell +#define fwrite u_fwrite +#define gets u_gets +#define getw u_getw +#define index u_index +#define isatty u_isatty +#define malloc u_malloc +#define mktemp u_mktemp +#define perror u_perror +#define printf u_printf +#define puts u_puts +#define putw u_putw +#define qsort u_qsort +#define realloc u_realloc +#define rewind u_rewind +#define rindex u_rindex +#define scanf u_scanf +#define setbuf u_setbuf +#define setbuffer u_setfbf /* collision */ +#define setlinebuf u_setlinebuf +#define sprintf u_sprintf +#define sscanf u_sscanf +#define strcat u_strcat +#define strchr u_index +#define strcmp u_strcmp +#define strdup u_strdup +#define strcpy u_strcpy +#define strlen u_strlen +#define strncat u_strnt /* collision */ +#define strncmp u_strnp /* collision */ +#define strncpy u_strny /* collision */ +#define strrchr u_rindex +#define system u_system +#define ungetc u_ungetc + +/* C_SPP names not unique in the first seven characters. + */ +#define c_envgetb c_envgb +#define c_envgeti c_envgi +#define c_envgets c_envgs +#define c_ttyclear c_ttycr +#define c_ttyclearln c_ttycn +#define c_ttygetb c_ttygb +#define c_ttygeti c_ttygi +#define c_ttygetr c_ttygr +#define c_ttygets c_ttygs +#define c_ttyputline c_ttype +#define c_ttyputs c_ttyps +#define c_ungetc c_ungec +#define c_ungetstr c_unges + + +/* + * Prototype definitions for the IRAF runtime C library. + */ + +/*extern long XERPSH(), XERPOPI();*/ /* standard for iferr use */ + +extern struct _iobuf *fdopen (XINT fd, char *mode); +extern struct _iobuf *fopen (char *fname, char *modestr); +extern struct _iobuf *freopen (char *fname, char *modestr, struct _iobuf *fp); +extern char *c_cnvdate (long clktime, char *outstr, int maxch); +extern char *c_cnvtime (long clktime, char *outstr, int maxch); +extern char *c_getuid (char *outstr, int maxch); +extern char *c_salloc (unsigned nbytes); +extern char *c_strpak (short *sppstr, char *cstr, int maxch); +extern char *calloc (unsigned int nelems, unsigned int elsize); +extern char *envget (char *var); +extern char *fgets (char *buf, int maxch, struct _iobuf *fp); +extern char *gets (char *buf); +extern char *index (char *str, int ch); +extern char *malloc (unsigned nbytes); +extern char *mktemp (char *template); +extern char *freadline (char *prompt); +extern char *realloc (char *buf, unsigned newsize); +extern char *rindex (char *str, int ch); +extern char *sprintf (char *str, char *format, ...); +extern char *strcat (char *s1, char *s2); +extern char *strdup (char *str); +extern char *strcpy (char *s1, char *s2); +extern char *strncat (char *s1, char *s2, int n); +extern char *strncpy (char *s1, char *s2, int n); +extern int strncmp (char *s1, char *s2, int n); + +extern double atof (char *str); +extern float c_ttygr (XINT tty, char *cap); +extern int atoi (char *str); +extern int c_access (char *fname, int mode, int type); +extern int c_allocate (char *device); +extern int c_close (XINT fd); +extern int c_deallocate (char *device, int rewind); +extern int c_delete (char *fname); +extern int c_devowner (char *device, char *owner, int maxch); +extern int c_envfind (char *var, char *outstr, int maxch); +extern int c_envfree (int envp, int userfcn); +extern int c_envgb (char *var); +extern int c_envgi (char *var); +extern int c_envgs (char *var, char *outstr, int maxch); +extern int c_envscan (char *input_source); +extern int c_errcode (void); +extern int c_errget (char *outstr, int maxch); +extern int c_fchdir (char *newdir); +extern int c_filbuf (struct _iobuf *fp); +extern int c_flsbuf (unsigned int ch, struct _iobuf *fp); +extern int c_fmapfn (char *vfn, char *osfn, int maxch); +extern int c_fmkdir (char *newdir); +extern int c_fnextn (char *vfn, char *extn, int maxch); +extern int c_fnldir (char *vfn, char *ldir, int maxch); +extern int c_fnroot (char *vfn, char *root, int maxch); +extern int c_fpathname (char *vfn, char *osfn, int maxch); +extern int c_fprintf (XINT fd, char *format); +extern int c_fredir (XINT fd, char *fname, int mode, int type); +extern int c_frediro (XINT fd, XINT newfd); +extern int c_fstati (XINT fd, int param); +extern int c_getpid (void); +extern int c_imaccess (char *imname, int mode); +extern int c_imdrcur (char *device, float *x, float *y, int *wcs, + int *key, char *strval, int maxch, int d_wcs, int pause); +extern int c_kimapchan (int chan, char *nodename, int maxch); +extern int c_lexnum (char *str, int *toklen); +extern int c_mktemp (char *root, char *temp_filename, int maxch); +extern int c_ndopen (char *fname, int mode); +extern int c_open (char *fname, int mode, int type); +extern int c_oscmd (char *cmd, char *infile, char *outfile, char *errfile); +extern int c_poll (XINT fds, int nfds, int timeout); +extern int c_poll_get_nfds (XINT fds); +extern XINT c_poll_open (void); +extern int c_poll_test (XINT fds, XINT fd, int type); +extern int c_prchdir (int pid, char *newdir); +extern int c_prcldpr (unsigned job); +extern int c_prclose (unsigned int pid); +extern int c_prdone (unsigned job); +extern int c_prenvfree (int pid, int envp); +extern int c_prenvset (int pid, char *envvar, char *value); +extern int c_printf (char *format); +extern int c_prkill (unsigned job); +extern int c_prredir (unsigned pid, int stream, int new_fd); +extern int c_prsignal (unsigned pid, int signal); +extern int c_prstati (int pid, int param); +extern int c_rcursor (int fd, char *outstr, int maxch); +extern int c_rdukey (char *obuf, int maxch); +extern int c_read (XINT fd, char *buf, int maxbytes); +extern int c_rename (char *old_fname, char *new_fname); +extern int c_reopen (XINT fd, int mode); +extern int c_seek (XINT fd, long offset); +extern int c_stggetline (XINT fd, char *buf, int maxch); +extern int c_stgputline (XINT fd, char *buf); +extern int c_stropen (short *obuf, int maxch, int mode); +extern int c_ttstati (XINT fd, int param); +extern int c_ttstats (XINT fd, int param, char *outstr, int maxch); +extern int c_ttyctrl (XINT fd, XINT tty, char *cap, int afflncnt); +extern int c_ttygb (XINT tty, char *cap); +extern XINT c_ttygi (XINT tty, char *cap); +extern int c_ttygs (XINT tty, char *cap, char *outstr, int maxch); +extern XINT c_ttyodes (char *ttyname); +extern int c_ttyps (XINT fd, XINT tty, char *cap, int afflncnt); +extern XINT c_ttystati (XINT tty, int param); +extern int c_ungec (XINT fd, int ch); +extern int c_ungetline (XINT fd, char *str); +extern int c_write (XINT fd, char *buf, int nbytes); +extern int fclose (struct _iobuf *fp); +extern int fflush (struct _iobuf *fp); +extern int fgetc (struct _iobuf *fp); +extern int fputc (char ch, struct _iobuf *fp); +extern int fread (char *bp, int szelem, int nelem, struct _iobuf *fp); +extern int fscanf (struct _iobuf *fp, char *format, ...); +extern int fseek (struct _iobuf *fp, long offset, int mode); +extern int fwrite (char *bp, int szelem, int nelem, struct _iobuf *fp); +extern int getw (struct _iobuf *fp); +extern int isatty (XINT fd); +extern int puts (char *str); +extern int putw (int word, struct _iobuf *fp); +extern int scanf (char *format, ...); +extern int spf_open (char *buf, int maxch); +extern int sscanf (char *str, char *format, ...); +extern int strcmp (char *s1, char *s2); +extern int strlen (char *s); +extern int system (char *cmd); +extern int ungetc (int ch, struct _iobuf *fp); +extern long atol (char *str); +extern long c_clktime (long reftime); +extern long c_cputime (long reftime); +extern long c_note (XINT fd); +extern long ftell (struct _iobuf *fp); +extern long rewind (struct _iobuf *fp); +extern short *c_sppstr (char *str); +extern short *c_strupk (char *str, short *outstr, int maxch); +extern unsigned int c_propdpr (char *process, char *bkgfile, char *bkgmsg); +extern unsigned int c_propen (char *process, int *in, int *out); +extern void c_devstatus (char *device, int out); +extern void c_envlist (XINT fd, char *prefix, int show_redefs); +extern void c_envmark (XINT *envp); +extern void c_envputs (char *var, char *value); +extern void c_envreset (char *var, char *value); +extern void c_erract (int action); +extern void c_error (int errcode, char *errmsg); +extern void c_flush (XINT fd); +extern void c_fseti (XINT fd, int param, int value); +extern void c_gflush (int stream); +extern void c_pargb (int ival); +extern void c_pargc (int ival); +extern void c_pargd (double dval); +extern void c_pargi (int ival); +extern void c_pargl (long lval); +extern void c_pargr (float rval); +extern void c_pargs (short sval); +extern void c_pargstr (char *strval); +extern void c_poll_clear (XINT fds, XINT fd, int type); +extern void c_poll_close (XINT fds); +extern void c_poll_print (XINT fds); +extern void c_poll_set (XINT fds, XINT fd, int type); +extern void c_poll_zero (XINT fds); +extern void c_sfree (int sp); +extern void c_smark (int *sp); +extern void c_sttyco (char *args, XINT ttin, XINT ttout, XINT outfd); +extern void c_tsleep (int nseconds); +extern void c_ttseti (XINT fd, int param, int value); +extern void c_ttsets (XINT fd, int param, char *value); +extern void c_ttycdes (XINT tty); +extern void c_ttycn (XINT fd, XINT tty); +extern void c_ttycr (XINT fd, XINT tty); +extern void c_ttygoto (XINT fd, XINT tty, int col, int line); +extern void c_ttyinit (XINT fd, XINT tty); +extern void c_ttype (XINT fd, XINT tty, char *line, int map_cc); +extern void c_ttyseti (XINT tty, int param, int value); +extern void c_ttyso (XINT fd, XINT tty, int onoff); +extern void c_vfnbrk (char *vfn, int *root, int *extn); +extern void c_wmsec (int msec); +extern void c_xgmes (int *oscode, char *oserrmsg, int maxch); +extern void c_xonerr (int errcode); +extern void c_xttysize (int *ncols, int *nlines); +extern void eprintf (char *format, ...); +extern void fprintf (struct _iobuf *fp, char *format, ...); +extern void fputs (char *str, struct _iobuf *fp); +extern void free (char *buf); +extern void perror (char *prefix); +extern void printf (char *format, ...); +extern void qsort (char *base, int n, int size, int (*compar) (void)); +extern void setbuf (struct _iobuf *fp, char *buf); +extern void setfbf (struct _iobuf *fp, char *buf, int size); +extern void setlinebuf (struct _iobuf *fp); +extern void spf_close (XINT fd); + +/* The following have conflicts because of the order in which the +** include files are done in iraf.h. Commented out for now. +extern int c_finfo (char *fname, struct _finfo *fi); +extern void c_xwhen (int exception, PFI new_handler, PFI *old_handler); +*/ + +#endif + +/* +*/ +#include "/iraf/iraf/unix/bin/f2c.h" +#include "/iraf/iraf/unix/hlib/libc/vosproto.h" + +#define D_libc +#define D_libc_proto +#endif diff --git a/unix/hlib/libc/main.h b/unix/hlib/libc/main.h new file mode 100644 index 00000000..ad5fe71e --- /dev/null +++ b/unix/hlib/libc/main.h @@ -0,0 +1,6 @@ +/* MAIN.H -- For files which have a c_main. + */ +#define PR_NOEXIT 0 /* run interpreter */ +#define PR_EXIT 1 /* skip interpreter */ + +#define D_main diff --git a/unix/hlib/libc/math.h b/unix/hlib/libc/math.h new file mode 100644 index 00000000..6d151faf --- /dev/null +++ b/unix/hlib/libc/math.h @@ -0,0 +1,24 @@ +/* + * MATH.H -- Math functions for C. + */ + +double XEXP(), XLOG(), XLOG10(), XPOW(), XSQRT(); +double XSIN(), XCOS(), XASIN(), XACOS(), XTAN(), XATAN(), XATAN2(); + +static double um_x, um_y; + +#define nint(x) XNINT((um_x=(x),&um_x)) +#define exp(x) XEXP((um_x=(x),&um_x)) +#define log(x) XLOG((um_x=(x),&um_x)) +#define log10(x) XLOG10((um_x=(x),&um_x)) +#define pow(x,y) XPOW((um_x=(x),&um_x),(um_y=(y),&um_y)) +#define sqrt(x) XSQRT((um_x=(x),&um_x)) +#define sin(x) XSIN((um_x=(x),&um_x)) +#define cos(x) XCOS((um_x=(x),&um_x)) +#define tan(x) XTAN((um_x=(x),&um_x)) +#define asin(x) XASIN((um_x=(x),&um_x)) +#define acos(x) XACOS((um_x=(x),&um_x)) +#define atan(x) XATAN((um_x=(x),&um_x)) +#define atan2(x,y) XATAN2((um_x=(x),&um_x),(um_y=(y),&um_y)) + +#define D_math diff --git a/unix/hlib/libc/protect.h b/unix/hlib/libc/protect.h new file mode 100644 index 00000000..fe9c1a31 --- /dev/null +++ b/unix/hlib/libc/protect.h @@ -0,0 +1,7 @@ +/* File protection. + */ +#define REMOVE_PROTECTION 0 +#define SET_PROTECTION 1 +#define QUERY_PROTECTION 2 + +#define D_protect diff --git a/unix/hlib/libc/prstat.h b/unix/hlib/libc/prstat.h new file mode 100644 index 00000000..3bd5dbf3 --- /dev/null +++ b/unix/hlib/libc/prstat.h @@ -0,0 +1,19 @@ +/* PRSTAT parameters. + */ +#define PR_STATUS 1 /* process status (OK, P_DEAD) */ +#define PR_INCHAN 2 /* input channel */ +#define PR_INFD 3 /* FD of input stream */ +#define PR_OUTCHAN 4 /* output channel */ +#define PR_OUTFD 5 /* FD of output stream */ +#define PR_STDIN 7 /* FD's assigned to pseudofile streams */ +#define PR_STDERR 8 +#define PR_STDOUT 9 +#define PR_STDGRAPH 10 +#define PR_STDIMAGE 11 + +#define P_RUNNING 0 /* process status */ +#define P_BUSY 1 /* process is busy */ +#define P_DONE 2 /* process terminated normally */ +#define P_DEAD 3 /* process died and sent us X_IPC */ + +#define D_prstat diff --git a/unix/hlib/libc/prtype.h b/unix/hlib/libc/prtype.h new file mode 100644 index 00000000..04433abc --- /dev/null +++ b/unix/hlib/libc/prtype.h @@ -0,0 +1,7 @@ +/* Process control. + */ +#define PR_CONNECTED 1 /* types of processes */ +#define PR_DETACHED 2 +#define PR_HOST 3 + +#define D_prtype diff --git a/unix/hlib/libc/setjmp.h b/unix/hlib/libc/setjmp.h new file mode 100644 index 00000000..a92d6b47 --- /dev/null +++ b/unix/hlib/libc/setjmp.h @@ -0,0 +1,25 @@ +/* SETJMP, LONGJMP -- Non local goto. Requires libc.h and knames.h. + * Note that jmp_buf must be at least one int larger than necessary to + */ +#ifndef D_libc +#ifndef import_libc +#include "libc.h" +#endif +#ifndef import_knames +#include "knames.h" +#endif +#endif + +typedef int jmp_buf[LEN_JUMPBUF]; +static int u_jmpstat; + +#define setjmp(e) (ZSVJMP((e),&u_jmpstat),u_jmpstat) +#define longjmp(e,v) (u_jmpstat=(v),ZDOJMP((e),&u_jmpstat)) + +/* The following is necessary to prevent to prevent the optimizer from + * doing unwise things with setjmp on a Sun-4. + */ +extern int zsvjmp_(); +#pragma unknown_control_flow(zsvjmp_) + +#define D_setjmp diff --git a/unix/hlib/libc/spp.h b/unix/hlib/libc/spp.h new file mode 100644 index 00000000..23005007 --- /dev/null +++ b/unix/hlib/libc/spp.h @@ -0,0 +1,161 @@ +/* + * SPP.H -- Language definitions for interfacing SPP to C and C to UNIX. + * Note that many of the definitions must agree with those in the SPP + * compiler and with <iraf.h> and <mach.h>. + */ + +#ifndef D_spp + +/* Assorted machine constants. [MACHDEP] + * Use osb$zzeps.f to compute the machine epsilon. + */ +#define OSOK 0 /* normal successful completion */ +#define LEN_JUMPBUF 1024 /* C "jmp_buf" len + 1 (or larger) */ +#define EPSILON (1.192e-7) /* smallest real E s.t. (1.0+E > 1.0) */ +#define EPSILOND (2.220d-16) /* double precision epsilon */ +#define MAX_LONG 2147483647 +#define FNNODE_CHAR '!' /* node name delimiter character */ + + +/* Indefinite valued numbers. (potentially MACHDEP) + */ +#define INDEFS (-32767) +#define INDEFL (0x80000001) +#define INDEFI INDEFL +#define INDEFR 1.6e38 +#define INDEFD 1.6e308 +#define INDEFX (INDEF,INDEF) +#define INDEF INDEFR + + +/* Oft used constants. + */ +#define SZ_LINE 1023 +#define SZ_FNAME 255 +#define SZ_PATHNAME 511 +#define SZ_COMMAND 2047 +#define EOS '\0' +#define ERR (-1) +#define OK 0 +#define YES 1 +#define NO 0 +#define MAX_DIGITS 25 + +#ifndef min +#define min(a,b) (((a)<(b))?(a):(b)) +#endif +#ifndef max +#define max(a,b) (((a)>(b))?(a):(b)) +#endif + +#ifndef NULL +#define NULL 0 +#endif + +#ifndef EOF +#define EOF (-1) +#endif + +/* SPP constants. + */ +#define XEOS 0 +#define XERR (-1) +#define XEOF (-2) +#define XBOF (-3) +#define XOK 0 +#define XNO 0 +#define XYES 1 + +#define BOFL (-3L) +#define EOFL (-2L) + + +/* SPP datatypes. (potentially MACHDEP) + * Must match sizes in hlib$iraf.h + */ +#ifndef XCHAR +#define XCHAR short +#endif + +#ifdef MACH64 +#define XINT long /* ILP64 */ +#define XLONG long +#define XSTRUCT long +#define XPOINTER long +#define XBOOL long +#else +#define XINT int /* ILP32 */ +#define XLONG int +#define XSTRUCT int +#define XPOINTER int +#define XBOOL int +#endif + +#define PKCHAR XCHAR +#define XUBYTE unsigned char +#define XSHORT short +#define XUSHORT unsigned short +#define XREAL float +#define XDOUBLE double +#define XCOMPLEX struct cplx + +struct cplx { + float r; + float i; +}; + +#define TY_BOOL 1 /* SPP datatype codes */ +#define TY_CHAR 2 +#define TY_SHORT 3 +#define TY_INT 4 +#define TY_LONG 5 +#define TY_REAL 6 +#define TY_DOUBLE 7 +#define TY_COMPLEX 8 +#define TY_STRUCT 9 +#define TY_POINTER 10 + + +/* File I/O constants. + */ +#define READ_ONLY 1 /* file access modes */ +#define READ_WRITE 2 +#define WRITE_ONLY 3 +#define APPEND 4 +#define NEW_FILE 5 + +#define TEXT_FILE 11 /* file types */ +#define BINARY_FILE 12 +#define DIRECTORY_FILE 13 +#define STATIC_FILE 14 +#define SYMLINK_FILE 15 +#define SPOOL_FILE (-2) + +#define CLIN 1 +#define CLOUT 2 +#define STDIN 3 +#define STDOUT 4 +#define STDERR 5 +#define STDGRAPH 6 +#define STDIMAGE 7 +#define STDPLOT 8 +#define PSIOCTRL 9 + +/* Filename Mapping definitions. + */ + +#define VFN_READ 1 /* VFN access modes for VFNOPEN */ +#define VFN_WRITE 2 +#define VFN_UNMAP 3 + +#define VFN_NOUPDATE 0 /* update flag for VFNCLOSE */ +#define VFN_UPDATE 1 + +/* Oft referenced functions. + */ +XCHAR *c_sppstr(); +XCHAR *c_strupk(); +char *c_strpak(); + +#define D_spp +#endif diff --git a/unix/hlib/libc/stdarg-cygwin.h b/unix/hlib/libc/stdarg-cygwin.h new file mode 100755 index 00000000..965c2aa7 --- /dev/null +++ b/unix/hlib/libc/stdarg-cygwin.h @@ -0,0 +1,135 @@ +/* Copyright (C) 1989, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* As a special exception, if you include this header file into source + files compiled by GCC, this header file does not by itself cause + the resulting executable to be covered by the GNU General Public + License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General + Public License. */ + +/* + * ISO C Standard: 7.15 Variable arguments <stdarg.h> + */ + +#ifndef _STDARG_H +#ifndef _ANSI_STDARG_H_ +#ifndef RC_INVOKED +#ifndef __need___va_list +#define _STDARG_H +#define _ANSI_STDARG_H_ +#endif /* not __need___va_list */ +#undef __need___va_list + +/* Define __gnuc_va_list. */ + +#ifndef __GNUC_VA_LIST +#define __GNUC_VA_LIST +typedef __builtin_va_list __gnuc_va_list; +#endif + +/* Define the standard macros for the user, + if this invocation was from the user program. */ +#ifdef _STDARG_H + +#define va_start(v,l) __builtin_va_start(v,l) +#define va_end(v) __builtin_va_end(v) +#define va_arg(v,l) __builtin_va_arg(v,l) +#if !defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L +#define va_copy(d,s) __builtin_va_copy(d,s) +#endif +#define __va_copy(d,s) __builtin_va_copy(d,s) + +/* Define va_list, if desired, from __gnuc_va_list. */ +/* We deliberately do not define va_list when called from + stdio.h, because ANSI C says that stdio.h is not supposed to define + va_list. stdio.h needs to have access to that data type, + but must not use that name. It should use the name __gnuc_va_list, + which is safe because it is reserved for the implementation. */ + +#ifdef _HIDDEN_VA_LIST /* On OSF1, this means varargs.h is "half-loaded". */ +#undef _VA_LIST +#endif + +#ifdef _BSD_VA_LIST +#undef _BSD_VA_LIST +#endif + +#if defined(__svr4__) || (defined(_SCO_DS) && !defined(__VA_LIST)) +/* SVR4.2 uses _VA_LIST for an internal alias for va_list, + so we must avoid testing it and setting it here. + SVR4 uses _VA_LIST as a flag in stdarg.h, but we should + have no conflict with that. */ +#ifndef _VA_LIST_ +#define _VA_LIST_ +#ifdef __i860__ +#ifndef _VA_LIST +#define _VA_LIST va_list +#endif +#endif /* __i860__ */ +typedef __gnuc_va_list va_list; +#ifdef _SCO_DS +#define __VA_LIST +#endif +#endif /* _VA_LIST_ */ +#else /* not __svr4__ || _SCO_DS */ + +/* The macro _VA_LIST_ is the same thing used by this file in Ultrix. + But on BSD NET2 we must not test or define or undef it. + (Note that the comments in NET 2's ansi.h + are incorrect for _VA_LIST_--see stdio.h!) */ +#if !defined (_VA_LIST_) || defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__) || defined(WINNT) +/* The macro _VA_LIST_DEFINED is used in Windows NT 3.5 */ +#ifndef _VA_LIST_DEFINED +/* The macro _VA_LIST is used in SCO Unix 3.2. */ +#ifndef _VA_LIST +/* The macro _VA_LIST_T_H is used in the Bull dpx2 */ +#ifndef _VA_LIST_T_H +/* The macro __va_list__ is used by BeOS. */ +#ifndef __va_list__ +typedef __gnuc_va_list va_list; +#endif /* not __va_list__ */ +#endif /* not _VA_LIST_T_H */ +#endif /* not _VA_LIST */ +#endif /* not _VA_LIST_DEFINED */ +#if !(defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__)) +#define _VA_LIST_ +#endif +#ifndef _VA_LIST +#define _VA_LIST +#endif +#ifndef _VA_LIST_DEFINED +#define _VA_LIST_DEFINED +#endif +#ifndef _VA_LIST_T_H +#define _VA_LIST_T_H +#endif +#ifndef __va_list__ +#define __va_list__ +#endif + +#endif /* not _VA_LIST_, except on certain systems */ + +#endif /* not __svr4__ */ + +#endif /* _STDARG_H */ + +#endif /* not RC_INVOKED */ +#endif /* not _ANSI_STDARG_H_ */ +#endif /* not _STDARG_H */ diff --git a/unix/hlib/libc/stdarg-freebsd.h b/unix/hlib/libc/stdarg-freebsd.h new file mode 100644 index 00000000..6cf6b69d --- /dev/null +++ b/unix/hlib/libc/stdarg-freebsd.h @@ -0,0 +1,90 @@ +/*- + * Copyright (c) 2002 David E. O'Brien. All rights reserved. + * Copyright (c) 1991, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)stdarg.h 8.1 (Berkeley) 6/10/93 + * $FreeBSD: src/sys/i386/include/stdarg.h,v 1.20 2005/03/02 21:33:26 joerg Exp $ + */ + +#ifndef _MACHINE_STDARG_H_ +#define _MACHINE_STDARG_H_ + +#include <sys/cdefs.h> +#include <sys/_types.h> + +#ifndef _VA_LIST_DECLARED +#define _VA_LIST_DECLARED +typedef __va_list va_list; +#endif + +#ifdef __GNUCLIKE_BUILTIN_STDARG + +#define va_start(ap, last) \ + __builtin_stdarg_start((ap), (last)) + +#define va_arg(ap, type) \ + __builtin_va_arg((ap), type) + +#if __ISO_C_VISIBLE >= 1999 +#define va_copy(dest, src) \ + __builtin_va_copy((dest), (src)) +#endif + +#define va_end(ap) \ + __builtin_va_end(ap) + +#else /* !__GNUCLIKE_BUILTIN_STDARG */ + +#define __va_size(type) \ + (((sizeof(type) + sizeof(int) - 1) / sizeof(int)) * sizeof(int)) + +#ifdef __GNUCLIKE_BUILTIN_NEXT_ARG +#define va_start(ap, last) \ + ((ap) = (va_list)__builtin_next_arg(last)) +#else /* !__GNUCLIKE_BUILTIN_NEXT_ARG */ +#define va_start(ap, last) \ + ((ap) = (va_list)&(last) + __va_size(last)) +#endif /* __GNUCLIKE_BUILTIN_NEXT_ARG */ + +#define va_arg(ap, type) \ + (*(type *)((ap) += __va_size(type), (ap) - __va_size(type))) + +#if __ISO_C_VISIBLE >= 1999 +#define va_copy(dest, src) \ + ((dest) = (src)) +#endif + +#define va_end(ap) + +#endif /* __GNUCLIKE_BUILTIN_STDARG */ + +#endif /* !_MACHINE_STDARG_H_ */ diff --git a/unix/hlib/libc/stdarg-linux.h b/unix/hlib/libc/stdarg-linux.h new file mode 100644 index 00000000..f95367b4 --- /dev/null +++ b/unix/hlib/libc/stdarg-linux.h @@ -0,0 +1,142 @@ +/* Copyright (C) 1989, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + +This file is part of GNU CC. + +GNU CC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU CC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU CC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* As a special exception, if you include this header file into source + files compiled by GCC, this header file does not by itself cause + the resulting executable to be covered by the GNU General Public + License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General + Public License. */ + +/* + * ISO C Standard: 7.15 Variable arguments <stdarg.h> + */ + +#ifndef _STDARG_H +#ifndef _ANSI_STDARG_H_ +#ifndef __need___va_list +#define _STDARG_H +#define _ANSI_STDARG_H_ +#endif /* not __need___va_list */ +#undef __need___va_list + +/* Define __gnuc_va_list. */ + +#ifndef __GNUC_VA_LIST +#define __GNUC_VA_LIST +typedef __builtin_va_list __gnuc_va_list; +#endif + +/* Define the standard macros for the user, + if this invocation was from the user program. */ +#ifdef _STDARG_H + +/* Note that the type used in va_arg is supposed to match the + actual type **after default promotions**. + Thus, va_arg (..., short) is not valid. */ + +#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) +#define va_start(v,l) __builtin_va_start((v),l) +#else +#define va_start(v,l) __builtin_stdarg_start((v),l) +#endif +#define va_end __builtin_va_end +#define va_arg __builtin_va_arg +#if !defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L +#define va_copy(d,s) __builtin_va_copy((d),(s)) +#endif +#define __va_copy(d,s) __builtin_va_copy((d),(s)) + + +/* Define va_list, if desired, from __gnuc_va_list. */ +/* We deliberately do not define va_list when called from + stdio.h, because ANSI C says that stdio.h is not supposed to define + va_list. stdio.h needs to have access to that data type, + but must not use that name. It should use the name __gnuc_va_list, + which is safe because it is reserved for the implementation. */ + +#ifdef _HIDDEN_VA_LIST /* On OSF1, this means varargs.h is "half-loaded". */ +#undef _VA_LIST +#endif + +#ifdef _BSD_VA_LIST +#undef _BSD_VA_LIST +#endif + +#if defined(__svr4__) || (defined(_SCO_DS) && !defined(__VA_LIST)) +/* SVR4.2 uses _VA_LIST for an internal alias for va_list, + so we must avoid testing it and setting it here. + SVR4 uses _VA_LIST as a flag in stdarg.h, but we should + have no conflict with that. */ +#ifndef _VA_LIST_ +#define _VA_LIST_ +#ifdef __i860__ +#ifndef _VA_LIST +#define _VA_LIST va_list +#endif +#endif /* __i860__ */ +typedef __gnuc_va_list va_list; +#ifdef _SCO_DS +#define __VA_LIST +#endif +#endif /* _VA_LIST_ */ +#else /* not __svr4__ || _SCO_DS */ + +/* The macro _VA_LIST_ is the same thing used by this file in Ultrix. + But on BSD NET2 we must not test or define or undef it. + (Note that the comments in NET 2's ansi.h + are incorrect for _VA_LIST_--see stdio.h!) */ +#if !defined (_VA_LIST_) || defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__) || defined(WINNT) +/* The macro _VA_LIST_DEFINED is used in Windows NT 3.5 */ +#ifndef _VA_LIST_DEFINED +/* The macro _VA_LIST is used in SCO Unix 3.2. */ +#ifndef _VA_LIST +/* The macro _VA_LIST_T_H is used in the Bull dpx2 */ +#ifndef _VA_LIST_T_H +/* The macro __va_list__ is used by BeOS. */ +#ifndef __va_list__ +typedef __gnuc_va_list va_list; +#endif /* not __va_list__ */ +#endif /* not _VA_LIST_T_H */ +#endif /* not _VA_LIST */ +#endif /* not _VA_LIST_DEFINED */ +#if !(defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__)) +#define _VA_LIST_ +#endif +#ifndef _VA_LIST +#define _VA_LIST +#endif +#ifndef _VA_LIST_DEFINED +#define _VA_LIST_DEFINED +#endif +#ifndef _VA_LIST_T_H +#define _VA_LIST_T_H +#endif +#ifndef __va_list__ +#define __va_list__ +#endif + +#endif /* not _VA_LIST_, except on certain systems */ + +#endif /* not __svr4__ */ + +#endif /* _STDARG_H */ + +#endif /* not _ANSI_STDARG_H_ */ +#endif /* not _STDARG_H */ diff --git a/unix/hlib/libc/stdarg-osx.h b/unix/hlib/libc/stdarg-osx.h new file mode 100644 index 00000000..f178505e --- /dev/null +++ b/unix/hlib/libc/stdarg-osx.h @@ -0,0 +1,133 @@ +/* Copyright (C) 1989, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* As a special exception, if you include this header file into source + files compiled by GCC, this header file does not by itself cause + the resulting executable to be covered by the GNU General Public + License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General + Public License. */ + +/* + * ISO C Standard: 7.15 Variable arguments <stdarg.h> + */ + +#ifndef _STDARG_H +#ifndef _ANSI_STDARG_H_ +#ifndef __need___va_list +#define _STDARG_H +#define _ANSI_STDARG_H_ +#endif /* not __need___va_list */ +#undef __need___va_list + +/* Define __gnuc_va_list. */ + +#ifndef __GNUC_VA_LIST +#define __GNUC_VA_LIST +typedef __builtin_va_list __gnuc_va_list; +#endif + +/* Define the standard macros for the user, + if this invocation was from the user program. */ +#ifdef _STDARG_H + +#define va_start(v,l) __builtin_va_start(v,l) +#define va_end(v) __builtin_va_end(v) +#define va_arg(v,l) __builtin_va_arg(v,l) +#if !defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L +#define va_copy(d,s) __builtin_va_copy(d,s) +#endif +#define __va_copy(d,s) __builtin_va_copy(d,s) + +/* Define va_list, if desired, from __gnuc_va_list. */ +/* We deliberately do not define va_list when called from + stdio.h, because ANSI C says that stdio.h is not supposed to define + va_list. stdio.h needs to have access to that data type, + but must not use that name. It should use the name __gnuc_va_list, + which is safe because it is reserved for the implementation. */ + +#ifdef _HIDDEN_VA_LIST /* On OSF1, this means varargs.h is "half-loaded". */ +#undef _VA_LIST +#endif + +#ifdef _BSD_VA_LIST +#undef _BSD_VA_LIST +#endif + +#if defined(__svr4__) || (defined(_SCO_DS) && !defined(__VA_LIST)) +/* SVR4.2 uses _VA_LIST for an internal alias for va_list, + so we must avoid testing it and setting it here. + SVR4 uses _VA_LIST as a flag in stdarg.h, but we should + have no conflict with that. */ +#ifndef _VA_LIST_ +#define _VA_LIST_ +#ifdef __i860__ +#ifndef _VA_LIST +#define _VA_LIST va_list +#endif +#endif /* __i860__ */ +typedef __gnuc_va_list va_list; +#ifdef _SCO_DS +#define __VA_LIST +#endif +#endif /* _VA_LIST_ */ +#else /* not __svr4__ || _SCO_DS */ + +/* The macro _VA_LIST_ is the same thing used by this file in Ultrix. + But on BSD NET2 we must not test or define or undef it. + (Note that the comments in NET 2's ansi.h + are incorrect for _VA_LIST_--see stdio.h!) */ +#if !defined (_VA_LIST_) || defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__) || defined(WINNT) +/* The macro _VA_LIST_DEFINED is used in Windows NT 3.5 */ +#ifndef _VA_LIST_DEFINED +/* The macro _VA_LIST is used in SCO Unix 3.2. */ +#ifndef _VA_LIST +/* The macro _VA_LIST_T_H is used in the Bull dpx2 */ +#ifndef _VA_LIST_T_H +/* The macro __va_list__ is used by BeOS. */ +#ifndef __va_list__ +typedef __gnuc_va_list va_list; +#endif /* not __va_list__ */ +#endif /* not _VA_LIST_T_H */ +#endif /* not _VA_LIST */ +#endif /* not _VA_LIST_DEFINED */ +#if !(defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__)) +#define _VA_LIST_ +#endif +#ifndef _VA_LIST +#define _VA_LIST +#endif +#ifndef _VA_LIST_DEFINED +#define _VA_LIST_DEFINED +#endif +#ifndef _VA_LIST_T_H +#define _VA_LIST_T_H +#endif +#ifndef __va_list__ +#define __va_list__ +#endif + +#endif /* not _VA_LIST_, except on certain systems */ + +#endif /* not __svr4__ */ + +#endif /* _STDARG_H */ + +#endif /* not _ANSI_STDARG_H_ */ +#endif /* not _STDARG_H */ diff --git a/unix/hlib/libc/stdarg-solaris.h b/unix/hlib/libc/stdarg-solaris.h new file mode 100644 index 00000000..c35c5ce2 --- /dev/null +++ b/unix/hlib/libc/stdarg-solaris.h @@ -0,0 +1,64 @@ +/* Copyright (c) 1988 AT&T */ +/* All Rights Reserved */ + +/* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T */ +/* The copyright notice above does not evidence any */ +/* actual or intended publication of such source code. */ + +/* + * Copyright 2004 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * An application should not include this header directly. Instead it + * should be included only through the inclusion of other Sun headers. + * + * The contents of this header is limited to identifiers specified in the + * C Standard. Any new identifiers specified in future amendments to the + * C Standard must be placed in this header. If these new identifiers + * are required to also be in the C++ Standard "std" namespace, then for + * anything other than macro definitions, corresponding "using" directives + * must also be added to <stdarg.h>. + */ + +#ifndef _ISO_STDARG_ISO_H +#define _ISO_STDARG_ISO_H + +#pragma ident "@(#)stdarg_iso.h 1.4 04/11/19 SMI" /* SVr4.0 1.8 */ + +/* + * This header defines the ISO C 1989 and ISO C++ 1998 variable + * argument definitions. + * + * The varargs definitions within this header are defined in terms of + * implementation definitions. These implementation definitions reside + * in <sys/va_impl.h>. This organization enables protected use of + * the implementation by other standard headers without introducing + * names into the users' namespace. + */ + +#include <sys/va_impl.h> + +#ifdef __cplusplus +extern "C" { +#endif + +#if __cplusplus >= 199711L +namespace std { +typedef __va_list va_list; +} +#elif !defined(_VA_LIST) +#define _VA_LIST +typedef __va_list va_list; +#endif + +#define va_start(list, name) __va_start(list, name) +#define va_arg(list, type) __va_arg(list, type) +#define va_end(list) __va_end(list) + +#ifdef __cplusplus +} +#endif + +#endif /* _ISO_STDARG_ISO_H */ diff --git a/unix/hlib/libc/stdarg.h b/unix/hlib/libc/stdarg.h new file mode 100644 index 00000000..a52889d8 --- /dev/null +++ b/unix/hlib/libc/stdarg.h @@ -0,0 +1,40 @@ +/* STDARG.H -- Interface to the Unix variable argument-list interface. + * This version replaces <varargs.h>, but is NOT backwards compatible. + * + * We pick up the local UNIX definitions for dealing with a variable + * number of arguments. This is done via indirection through this file so + * that any problems can be dealt with by changing only this file. + * + * Usage: Include this file using import_stdarg. If USE_STDARG is + * defined use the stdarg interface, otherwise use the varargs + * interface (ifdef the code accordingly). Old code which uses + * varargs directly is unaffected. + */ +#ifndef D_stdarg + + +#ifdef MACOSX +#include "stdarg-osx.h" +#else +#ifdef __CYGWIN__ +#include "stdarg-cygwin.h" +#else +#ifdef LINUX +#include "stdarg-linux.h" +#else +#ifdef SOLARIS +#include "stdarg-solaris.h" +#else +#ifdef BSD +#include "stdarg-freebsd.h" +#else +#include <stdarg.h> +#endif +#endif +#endif +#endif +#endif + + +#define D_stdarg +#endif diff --git a/unix/hlib/libc/stdio.h b/unix/hlib/libc/stdio.h new file mode 100644 index 00000000..c3cc0bd6 --- /dev/null +++ b/unix/hlib/libc/stdio.h @@ -0,0 +1,99 @@ +/* + * U_STDIO.H -- C defines used to emulate the UNIX standard i/o package upon + * IRAF file i/o. These definitions are portable, but highly dependent on + * the guts of IRAF FIO. + */ + +#ifndef D_libc +#ifndef import_libc +#include "libc.h" +#endif +#endif + +#define BUFSIZ SZ_DEFIOBUF +#define _NFILE FIO_MAXFD +#define FILE struct _iobuf + +# ifndef NULL +#define NULL 0 +# endif +# ifndef EOF +#define EOF (-1) +# endif + +/* Filler space is defined here to reduce clutter in the struct def below. + */ +#define _F1 _filler1[_NFILE-1] +#define _F2 _filler2[_NFILE-1] +#define _F3 _filler3[_NFILE-1] +#define _F4 _filler4[_NFILE-1] +#define _F5 _filler5[_NFILE-1] +#define _F6 _filler6[_NFILE-1] +#define _F7 _filler7[_NFILE-1] + +/* The _iobuf structure is the C version of the FIO common /fiocom/, which + * contains all the FIO buffer and i/o pointers. Each structure field is + * maintained in the common as an array of length _NFILE, hence in terms of + * C the structures are interleaved. The file pointers are indices into + * the array Memc, an array of XCHAR. + */ +struct _iobuf { + XLONG _boffset, _F1; /* XCHAR file offset of buffer */ + XINT _bufptr, _F2; /* buffer pointer */ + XINT _buftop, _F3; /* pointer to top of buffer + 1 */ + XINT _iop, _F4; /* pointer to next XCHAR */ + XINT _itop, _F5; /* call filbuf when _iop >= */ + XINT _otop, _F6; /* call flsbuf when _iop >= */ + XINT _fiodes, _F7; /* FIO file descriptor */ + XINT _fflags; /* bit flags */ +}; + +extern XINT FIOCOM[]; /* the FIO common */ + +#define _FFLUSHNL 01 /* flush buffer on newline */ +#define _FREAD 02 /* read perm on file */ +#define _FWRITE 04 /* read perm on file */ +#define _FEOF 010 /* file positioned to EOF */ +#define _FERR 020 /* i/o error on file */ +#define _FKEEP 040 /* keep file open at exit */ +#define _FFLUSH 0100 /* write to device on newline */ +#define _FRAW 0200 /* raw input mode */ +#define _FNDELAY 0400 /* nonblocking i/o */ +#define _FPUSH 01000 /* data is pushed back */ +#define _FIPC 02000 /* file is an IPC channel */ + +/* Convert FILE pointers to and from FIO integer file descriptors. + */ +#define FDTOFP(fd) ((FILE *)(&FIOCOM[(fd)-1])) +#define FPTOFD(fp) ((XINT)((XINT *)(fp) - FIOCOM + 1)) + +#define stdin (FDTOFP(3)) +#define stdout (FDTOFP(4)) +#define stderr (FDTOFP(5)) + + +/* I/O macro defines. I/O is assumed to be sequential, i.e., we do not check + * for _iop < _bufptr. This is consistent with UNIX usage. The getc and putc + * macros are quite efficient despite their complex appearance. + */ +#define getchar() fgetc(stdin) +#define getc(fp) \ +(((fp)->_iop >= (fp)->_itop) ? c_filbuf((fp)) : Memc[(fp)->_iop++] & 0377) + +#define putchar(ch) fputc((ch),stdout) +#define putc(ch,fp) \ +(((fp)->_iop >= (fp)->_otop || ((ch) == '\n' && (fp)->_fflags&_FFLUSH)) ? \ +c_flsbuf((unsigned)(ch),(fp)) : ((int)(Memc[(fp)->_iop++] = (unsigned)(ch)))) + +#define fileno(fp) (FPTOFD((fp))) +#define feof(fp) ((fp)->_fflags & _FEOF) +#define ferror(fp) ((fp)->_fflags & _FERR) +#define clearerr(fp) ((fp)->_fflags &= ~_FERR) + + +FILE *fopen(); +FILE *fdopen(); +char *fgets(); +char *gets(); + +#define D_stdio diff --git a/unix/hlib/libc/ttset.h b/unix/hlib/libc/ttset.h new file mode 100644 index 00000000..a70e5c99 --- /dev/null +++ b/unix/hlib/libc/ttset.h @@ -0,0 +1,27 @@ +/* TTSET.H -- Set terminal control options (TT logical terminal driver). + */ +#define TT_INITIALIZE 0 /* initialize TT driver status */ +#define TT_KINCHAN 101 /* kernel tty input channel */ +#define TT_KOUTCHAN 102 /* kernel tty output channel */ +#define TT_LOGINCHAN 103 /* login spoolfile channel */ +#define TT_LOGOUTCHAN 104 /* logout spoolfile channel */ +#define TT_PBINCHAN 105 /* playback spoolfile channel */ +#define TT_UCASEIN 106 /* map input to lower case */ +#define TT_UCASEOUT 107 /* map output to upper case */ +#define TT_SHIFTLOCK 108 /* software shiftlock */ +#define TT_RAWMODE 109 /* raw mode in effect */ +#define TT_LOGIO 110 /* log terminal i/o */ +#define TT_LOGIN 111 /* log terminal input */ +#define TT_LOGOUT 112 /* log terminal output */ +#define TT_PLAYBACK 113 /* take input from a spool file */ +#define TT_PBVERIFY 114 /* pause at \n during playback */ +#define TT_PBDELAY 115 /* msec delay/per record during playback */ +#define TT_PASSTHRU 116 /* passthru mode (direct i/o to device) */ +#define TT_IOFILE 117 /* logio file name */ +#define TT_INFILE 118 /* login file name */ +#define TT_OUTFILE 119 /* logout file name */ +#define TT_PBFILE 120 /* playback file name */ +#define TT_TDEVICE 121 /* terminal device at record time */ +#define TT_GDEVICE 122 /* stdgraph device at record time */ + +#define D_ttset diff --git a/unix/hlib/libc/vosproto.h b/unix/hlib/libc/vosproto.h new file mode 100644 index 00000000..031efd39 --- /dev/null +++ b/unix/hlib/libc/vosproto.h @@ -0,0 +1,4035 @@ +extern C_f ahivx_(complex * ret_val, complex *a, integer *npix); +extern C_f alovx_(complex * ret_val, complex *a, integer *npix); +extern C_f amedx_(complex * ret_val, complex *a, integer *npix); +extern C_f asokx_(complex * ret_val, complex *a, integer *npix, integer *ksel); +extern C_f assqx_(complex * ret_val, complex *a, integer *npix); +extern C_f asumx_(complex * ret_val, complex *a, integer *npix); +extern C_f clgetx_(complex * ret_val, shortint *param); +extern C_f clgpsx_(complex * ret_val, integer *pp, shortint *parnae); +extern C_f qpgetx_(complex * ret_val, integer *qp, shortint *param); +extern H_f agbnch_(char *ret_val, ftnlen ret_val_len, integer *idsh); +extern H_f agdshn_(char *ret_val, ftnlen ret_val_len, integer *idsh); +extern doublereal adotd_(doublereal *a, doublereal *b, integer *npix); +extern doublereal adotl_(integer *a, integer *b, integer *npix); +extern doublereal aelogd_(doublereal *x); +extern doublereal ahivd_(doublereal *a, integer *npix); +extern doublereal alovd_(doublereal *a, integer *npix); +extern doublereal amedd_(doublereal *a, integer *npix); +extern doublereal apold_(doublereal *x, doublereal *coeff, integer *ncoeff); +extern doublereal asokd_(doublereal *a, integer *npix, integer *ksel); +extern doublereal assqd_(doublereal *a, integer *npix); +extern doublereal assql_(integer *a, integer *npix); +extern doublereal asumd_(doublereal *a, integer *npix); +extern doublereal asuml_(integer *a, integer *npix); +extern doublereal clgetd_(shortint *param); +extern doublereal clgpsd_(integer *pp, shortint *parnae); +extern doublereal cqdged_(integer *cq, integer *record, shortint *field); +extern doublereal cqfged_(integer *cq, shortint *field); +extern doublereal cqistd_(integer *res, integer *param); +extern doublereal cqrstd_(integer *res, integer *param); +extern doublereal dtgetd_(integer *dt, integer *record, shortint *field); +extern doublereal dtmday_(integer *year, integer *month, integer *day, doublereal *t); +extern doublereal elogd_(doublereal *x); +extern doublereal envged_(shortint *varnae); +extern doublereal fpfixd_(doublereal *x); +extern doublereal icrmsd_(doublereal *x, doublereal *y, doublereal *fit, doublereal *wts, integer *npts); +extern doublereal imgetd_(integer *im, shortint *key); +extern doublereal ingdvd_(doublereal *x); +extern doublereal ingetd_(integer *in, integer *param); +extern doublereal inrmsd_(doublereal *y, doublereal *fit, doublereal *wts, integer *npts); +extern doublereal mefged_(integer *mef, shortint *key); +extern doublereal mwc1td_(integer *act, doublereal *x); +extern doublereal obsged_(integer *obs, shortint *param); +extern doublereal qpgetd_(integer *qp, shortint *param); +extern doublereal qpmaxd_(doublereal *x, doublereal *y); +extern doublereal qpmind_(doublereal *x, doublereal *y); +extern doublereal skstad_(integer *coo, integer *param); +extern doublereal wfgsdr_(integer *sf1, doublereal *x, doublereal *y, integer *nxd, integer *nyd); +extern doublereal wfgsel_(integer *sf, doublereal *x, doublereal *y); +extern doublereal wfmspi_(doublereal *coeff, doublereal *y, doublereal *x, doublereal *dydx); +extern doublereal wfmspl_(doublereal *coeff, doublereal *xin); +extern doublereal wlange_(integer *wd, integer *labels, integer *nlabes); +extern doublereal wlched_(doublereal *ex, doublereal *arr, integer *n); +extern doublereal wlcoon_(integer *wlct, integer *flip, doublereal *wx1, doublereal *wy1, doublereal *wx2, doublereal *wy2); +extern doublereal wldisd_(doublereal *x1, doublereal *y1, doublereal *x2, doublereal *y2); +extern doublereal wlroud_(doublereal *x, doublereal *y); +extern doublereal wlstre_(doublereal *angle, integer *rightp); +extern doublereal wlstrl_(shortint *input, integer *axiste, integer *whichs); +extern doublereal wlvece_(integer *gp, doublereal *x1, doublereal *y1, doublereal *x2, doublereal *y2); +extern doublereal xacos_(doublereal *x); +extern doublereal xasin_(doublereal *x); +extern doublereal xatan2_(doublereal *x, doublereal *y); +extern doublereal xatan_(doublereal *x); +extern doublereal xcos_(doublereal *x); +extern doublereal xexp_(doublereal *x); +extern doublereal xlog10_(doublereal *x); +extern doublereal xlog_(doublereal *x); +extern doublereal xpow_(doublereal *x, doublereal *y); +extern doublereal xsin_(doublereal *x); +extern doublereal xsqrt_(doublereal *x); +extern doublereal xtan_(doublereal *x); +extern doublereal xtargd_(integer *stp, shortint *key); +extern integer aabsd_(doublereal *a, doublereal *b, integer *npix); +extern integer aabsi_(integer *a, integer *b, integer *npix); +extern integer aabsl_(integer *a, integer *b, integer *npix); +extern integer aabsr_(real *a, real *b, integer *npix); +extern integer aabss_(shortint *a, shortint *b, integer *npix); +extern integer aabsx_(complex *a, complex *b, integer *npix); +extern integer aaddd_(doublereal *a, doublereal *b, doublereal *c__, integer *npix); +extern integer aaddi_(integer *a, integer *b, integer *c__, integer *npix); +extern integer aaddkd_(doublereal *a, doublereal *b, doublereal *c__, integer *npix); +extern integer aaddki_(integer *a, integer *b, integer *c__, integer *npix); +extern integer aaddkl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer aaddkr_(real *a, real *b, real *c__, integer *npix); +extern integer aaddks_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer aaddkx_(complex *a, complex *b, complex *c__, integer *npix); +extern integer aaddl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer aaddr_(real *a, real *b, real *c__, integer *npix); +extern integer aadds_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer aaddx_(complex *a, complex *b, complex *c__, integer *npix); +extern integer aandi_(integer *a, integer *b, integer *c__, integer *npix); +extern integer aandki_(integer *a, integer *b, integer *c__, integer *npix); +extern integer aandkl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer aandks_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer aandl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer aands_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer aavgd_(doublereal *a, integer *npix, doublereal *mean, doublereal *sigma); +extern integer aavgi_(integer *a, integer *npix, real *mean, real *sigma); +extern integer aavgl_(integer *a, integer *npix, doublereal *mean, doublereal *sigma); +extern integer aavgr_(real *a, integer *npix, real *mean, real *sigma); +extern integer aavgs_(shortint *a, integer *npix, real *mean, real *sigma); +extern integer aavgx_(complex *a, integer *npix, real *mean, real *sigma); +extern integer abavd_(doublereal *a, doublereal *b, integer *nblocs, integer *npixpk); +extern integer abavi_(integer *a, integer *b, integer *nblocs, integer *npixpk); +extern integer abavl_(integer *a, integer *b, integer *nblocs, integer *npixpk); +extern integer abavr_(real *a, real *b, integer *nblocs, integer *npixpk); +extern integer abavs_(shortint *a, shortint *b, integer *nblocs, integer *npixpk); +extern integer abavx_(complex *a, complex *b, integer *nblocs, integer *npixpk); +extern integer abeqc_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer abeqd_(doublereal *a, doublereal *b, integer *c__, integer *npix); +extern integer abeqi_(integer *a, integer *b, integer *c__, integer *npix); +extern integer abeqkc_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer abeqkd_(doublereal *a, doublereal *b, integer *c__, integer *npix); +extern integer abeqki_(integer *a, integer *b, integer *c__, integer *npix); +extern integer abeqkl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer abeqkr_(real *a, real *b, integer *c__, integer *npix); +extern integer abeqks_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer abeqkx_(complex *a, complex *b, integer *c__, integer *npix); +extern integer abeql_(integer *a, integer *b, integer *c__, integer *npix); +extern integer abeqr_(real *a, real *b, integer *c__, integer *npix); +extern integer abeqs_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer abeqx_(complex *a, complex *b, integer *c__, integer *npix); +extern integer abgec_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer abged_(doublereal *a, doublereal *b, integer *c__, integer *npix); +extern integer abgei_(integer *a, integer *b, integer *c__, integer *npix); +extern integer abgekc_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer abgekd_(doublereal *a, doublereal *b, integer *c__, integer *npix); +extern integer abgeki_(integer *a, integer *b, integer *c__, integer *npix); +extern integer abgekl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer abgekr_(real *a, real *b, integer *c__, integer *npix); +extern integer abgeks_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer abgekx_(complex *a, complex *b, integer *c__, integer *npix); +extern integer abgel_(integer *a, integer *b, integer *c__, integer *npix); +extern integer abger_(real *a, real *b, integer *c__, integer *npix); +extern integer abges_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer abgex_(complex *a, complex *b, integer *c__, integer *npix); +extern integer abgtc_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer abgtd_(doublereal *a, doublereal *b, integer *c__, integer *npix); +extern integer abgti_(integer *a, integer *b, integer *c__, integer *npix); +extern integer abgtkc_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer abgtkd_(doublereal *a, doublereal *b, integer *c__, integer *npix); +extern integer abgtki_(integer *a, integer *b, integer *c__, integer *npix); +extern integer abgtkl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer abgtkr_(real *a, real *b, integer *c__, integer *npix); +extern integer abgtks_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer abgtkx_(complex *a, complex *b, integer *c__, integer *npix); +extern integer abgtl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer abgtr_(real *a, real *b, integer *c__, integer *npix); +extern integer abgts_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer abgtx_(complex *a, complex *b, integer *c__, integer *npix); +extern integer ablec_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer abled_(doublereal *a, doublereal *b, integer *c__, integer *npix); +extern integer ablei_(integer *a, integer *b, integer *c__, integer *npix); +extern integer ablekc_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer ablekd_(doublereal *a, doublereal *b, integer *c__, integer *npix); +extern integer ableki_(integer *a, integer *b, integer *c__, integer *npix); +extern integer ablekl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer ablekr_(real *a, real *b, integer *c__, integer *npix); +extern integer ableks_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer ablekx_(complex *a, complex *b, integer *c__, integer *npix); +extern integer ablel_(integer *a, integer *b, integer *c__, integer *npix); +extern integer abler_(real *a, real *b, integer *c__, integer *npix); +extern integer ables_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer ablex_(complex *a, complex *b, integer *c__, integer *npix); +extern integer abltc_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer abltd_(doublereal *a, doublereal *b, integer *c__, integer *npix); +extern integer ablti_(integer *a, integer *b, integer *c__, integer *npix); +extern integer abltkc_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer abltkd_(doublereal *a, doublereal *b, integer *c__, integer *npix); +extern integer abltki_(integer *a, integer *b, integer *c__, integer *npix); +extern integer abltkl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer abltkr_(real *a, real *b, integer *c__, integer *npix); +extern integer abltks_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer abltkx_(complex *a, complex *b, integer *c__, integer *npix); +extern integer abltl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer abltr_(real *a, real *b, integer *c__, integer *npix); +extern integer ablts_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer abltx_(complex *a, complex *b, integer *c__, integer *npix); +extern integer abnec_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer abned_(doublereal *a, doublereal *b, integer *c__, integer *npix); +extern integer abnei_(integer *a, integer *b, integer *c__, integer *npix); +extern integer abnekc_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer abnekd_(doublereal *a, doublereal *b, integer *c__, integer *npix); +extern integer abneki_(integer *a, integer *b, integer *c__, integer *npix); +extern integer abnekl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer abnekr_(real *a, real *b, integer *c__, integer *npix); +extern integer abneks_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer abnekx_(complex *a, complex *b, integer *c__, integer *npix); +extern integer abnel_(integer *a, integer *b, integer *c__, integer *npix); +extern integer abner_(real *a, real *b, integer *c__, integer *npix); +extern integer abnes_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer abnex_(complex *a, complex *b, integer *c__, integer *npix); +extern integer abori_(integer *a, integer *b, integer *c__, integer *npix); +extern integer aborki_(integer *a, integer *b, integer *c__, integer *npix); +extern integer aborkl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer aborks_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer aborl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer abors_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer absud_(doublereal *a, doublereal *b, integer *nblocs, integer *npixpk); +extern integer absui_(integer *a, integer *b, integer *nblocs, integer *npixpk); +extern integer absul_(integer *a, integer *b, integer *nblocs, integer *npixpk); +extern integer absur_(real *a, real *b, integer *nblocs, integer *npixpk); +extern integer absus_(shortint *a, shortint *b, integer *nblocs, integer *npixpk); +extern integer acht_(shortint *a, shortint *b, integer *nelem, integer *tya, integer *tyb); +extern integer achtb_(shortint *a, shortint *b, integer *nelem, integer *tyb); +extern integer achtc_(shortint *a, shortint *b, integer *nelem, integer *tyb); +extern integer achtcc_(shortint *a, shortint *b, integer *npix); +extern integer achtcd_(shortint *a, doublereal *b, integer *npix); +extern integer achtci_(shortint *a, integer *b, integer *npix); +extern integer achtcl_(shortint *a, integer *b, integer *npix); +extern integer achtcr_(shortint *a, real *b, integer *npix); +extern integer achtcs_(shortint *a, shortint *b, integer *npix); +extern integer achtcx_(shortint *a, complex *b, integer *npix); +extern integer achtd_(doublereal *a, shortint *b, integer *nelem, integer *tyb); +extern integer achtdc_(doublereal *a, shortint *b, integer *npix); +extern integer achtdd_(doublereal *a, doublereal *b, integer *npix); +extern integer achtdi_(doublereal *a, integer *b, integer *npix); +extern integer achtdl_(doublereal *a, integer *b, integer *npix); +extern integer achtdr_(doublereal *a, real *b, integer *npix); +extern integer achtds_(doublereal *a, shortint *b, integer *npix); +extern integer achtdx_(doublereal *a, complex *b, integer *npix); +extern integer achti_(integer *a, shortint *b, integer *nelem, integer *tyb); +extern integer achtic_(integer *a, shortint *b, integer *npix); +extern integer achtid_(integer *a, doublereal *b, integer *npix); +extern integer achtii_(integer *a, integer *b, integer *npix); +extern integer achtil_(integer *a, integer *b, integer *npix); +extern integer achtir_(integer *a, real *b, integer *npix); +extern integer achtis_(integer *a, shortint *b, integer *npix); +extern integer achtix_(integer *a, complex *b, integer *npix); +extern integer achtl_(integer *a, shortint *b, integer *nelem, integer *tyb); +extern integer achtlc_(integer *a, shortint *b, integer *npix); +extern integer achtld_(integer *a, doublereal *b, integer *npix); +extern integer achtli_(integer *a, integer *b, integer *npix); +extern integer achtll_(integer *a, integer *b, integer *npix); +extern integer achtlr_(integer *a, real *b, integer *npix); +extern integer achtls_(integer *a, shortint *b, integer *npix); +extern integer achtlx_(integer *a, complex *b, integer *npix); +extern integer achtr_(real *a, shortint *b, integer *nelem, integer *tyb); +extern integer achtrc_(real *a, shortint *b, integer *npix); +extern integer achtrd_(real *a, doublereal *b, integer *npix); +extern integer achtri_(real *a, integer *b, integer *npix); +extern integer achtrl_(real *a, integer *b, integer *npix); +extern integer achtrr_(real *a, real *b, integer *npix); +extern integer achtrs_(real *a, shortint *b, integer *npix); +extern integer achtrx_(real *a, complex *b, integer *npix); +extern integer achts_(shortint *a, shortint *b, integer *nelem, integer *tyb); +extern integer achtsc_(shortint *a, shortint *b, integer *npix); +extern integer achtsd_(shortint *a, doublereal *b, integer *npix); +extern integer achtsi_(shortint *a, integer *b, integer *npix); +extern integer achtsl_(shortint *a, integer *b, integer *npix); +extern integer achtsr_(shortint *a, real *b, integer *npix); +extern integer achtss_(shortint *a, shortint *b, integer *npix); +extern integer achtsx_(shortint *a, complex *b, integer *npix); +extern integer achtu_(shortint *a, shortint *b, integer *nelem, integer *tyb); +extern integer achtx_(complex *a, shortint *b, integer *nelem, integer *tyb); +extern integer achtxc_(complex *a, shortint *b, integer *npix); +extern integer achtxd_(complex *a, doublereal *b, integer *npix); +extern integer achtxi_(complex *a, integer *b, integer *npix); +extern integer achtxl_(complex *a, integer *b, integer *npix); +extern integer achtxr_(complex *a, real *b, integer *npix); +extern integer achtxs_(complex *a, shortint *b, integer *npix); +extern integer achtxx_(complex *a, complex *b, integer *npix); +extern integer acjgx_(complex *a, complex *b, integer *npix); +extern integer acjgx_(complex *a, complex *b, integer *npix); +extern integer aclrc_(shortint *a, integer *npix); +extern integer aclrd_(doublereal *a, integer *npix); +extern integer aclri_(integer *a, integer *npix); +extern integer aclrl_(integer *a, integer *npix); +extern integer aclrr_(real *a, integer *npix); +extern integer aclrs_(shortint *a, integer *npix); +extern integer aclrx_(complex *a, integer *npix); +extern integer acnvd_(doublereal *in, doublereal *out, integer *npix, doublereal *kernel, integer *knpix); +extern integer acnvi_(integer *in, integer *out, integer *npix, integer *kernel, integer *knpix); +extern integer acnvl_(integer *in, integer *out, integer *npix, integer *kernel, integer *knpix); +extern integer acnvr_(real *in, real *out, integer *npix, real *kernel, integer *knpix); +extern integer acnvrd_(doublereal *in, doublereal *out, integer *npix, real *kernel, integer *knpix); +extern integer acnvri_(integer *in, integer *out, integer *npix, real *kernel, integer *knpix); +extern integer acnvrl_(integer *in, integer *out, integer *npix, real *kernel, integer *knpix); +extern integer acnvrr_(real *in, real *out, integer *npix, real *kernel, integer *knpix); +extern integer acnvrs_(shortint *in, shortint *out, integer *npix, real *kernel, integer *knpix); +extern integer acnvs_(shortint *in, shortint *out, integer *npix, shortint *kernel, integer *knpix); +extern integer adivd_(doublereal *a, doublereal *b, doublereal *c__, integer *npix); +extern integer adivi_(integer *a, integer *b, integer *c__, integer *npix); +extern integer adivkd_(doublereal *a, doublereal *b, doublereal *c__, integer *npix); +extern integer adivki_(integer *a, integer *b, integer *c__, integer *npix); +extern integer adivkl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer adivkr_(real *a, real *b, real *c__, integer *npix); +extern integer adivks_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer adivkx_(complex *a, complex *b, complex *c__, integer *npix); +extern integer adivl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer adivr_(real *a, real *b, real *c__, integer *npix); +extern integer adivs_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer adivx_(complex *a, complex *b, complex *c__, integer *npix); +extern integer advzd_(doublereal *a, doublereal *b, doublereal *c__, integer *npix, D_fp errfcn); +extern integer advzi_(integer *a, integer *b, integer *c__, integer *npix, I_fp errfcn); +extern integer advzl_(integer *a, integer *b, integer *c__, integer *npix, I_fp errfcn); +extern integer advzr_(real *a, real *b, real *c__, integer *npix, R_fp errfcn); +extern integer advzs_(shortint *a, shortint *b, shortint *c__, integer *npix, J_fp errfcn); +extern integer advzx_(complex *a, complex *b, complex *c__, integer *npix, C_fp errfcn); +extern integer aexpd_(doublereal *a, doublereal *b, doublereal *c__, integer *npix); +extern integer aexpi_(integer *a, integer *b, integer *c__, integer *npix); +extern integer aexpkd_(doublereal *a, doublereal *b, doublereal *c__, integer *npix); +extern integer aexpki_(integer *a, integer *b, integer *c__, integer *npix); +extern integer aexpkl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer aexpkr_(real *a, real *b, real *c__, integer *npix); +extern integer aexpks_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer aexpkx_(complex *a, complex *b, complex *c__, integer *npix); +extern integer aexpl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer aexpr_(real *a, real *b, real *c__, integer *npix); +extern integer aexps_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer aexpx_(complex *a, complex *b, complex *c__, integer *npix); +extern integer afftrr_(real *sr, real *si, real *fr, real *fi, integer *npix); +extern integer afftrr_(real *sr, real *si, real *fr, real *fi, integer *npix); +extern integer afftrx_(real *a, complex *b, integer *npix); +extern integer afftrx_(real *a, complex *b, integer *npix); +extern integer afftxr_(real *sr, real *si, real *fr, real *fi, integer *npix); +extern integer afftxr_(real *sr, real *si, real *fr, real *fi, integer *npix); +extern integer afftxx_(complex *a, complex *b, integer *npix); +extern integer afftxx_(complex *a, complex *b, integer *npix); +extern integer agaxis_(integer *iaxs, real *qtst, real *qspa, real *wcwp, real *hcwp, real *xbga, real *ybga, real *xnda, real *ynda, real *qlua, real *ubga, real *unda, real *funs, real *qbtp, real *base, real *qjdp, real *wmjl, real *wmjr, real *qmnt, real *qndp, real *wmnl, real *wmnr, real *qltp, real *qlex, real *qlfl, real *qlof, real *qlos, real *dnla, real *wclm, real *wcle, real *rfnl, real *qcim, real *qcie, real *wnll, real *wnlr, real *wnlb, real *wnle); +extern integer agback_(void); +extern integer agchax_(integer *iflg, integer *iaxs, integer *iprt, real *vils); +extern integer agchcu_(integer *iflg, integer *kdsh); +extern integer agchil_(integer *iflg, char *lbnm, integer *lnno, ftnlen lbnm_len); +extern integer agchnl_(integer *iaxs, real *vils, char *chrm, integer *mcim, integer *ncim, integer *ipxm, char *chre, integer *mcie, integer *ncie, ftnlen chrm_len, ftnlen chre_len); +extern integer agchnl_(integer *iaxs, real *vils, char *chrm, integer *mcim, integer *ncim, integer *ipxm, char *chre, integer *mcie, integer *ncie, ftnlen chrm_len, ftnlen chre_len); +extern integer agcorn_(integer *ntgr, char *bcrn, integer *ncrn, ftnlen bcrn_len); +extern integer agctcs_(char *tpid, integer *itcs, ftnlen tpid_len); +extern integer agctko_(real *xbga, real *ybga, real *xdca, real *ydca, real *cfax, real *cfay, real *csfa, integer *jaor, integer *nmmt, real *qmdp, real *wmml, real *wmmr, real *fnll, real *fnlr, integer *mm12, integer *mm34, real *xmmt, real *ymmt); +extern integer agcurv_(real *xvec, integer *iiex, real *yvec, integer *iiey, integer *nexy, integer *kdsh); +extern integer agdash_(real *dash, real *wodq, real *wocd, real *scwp); +extern integer agdflt_(void); +extern integer agdlch_(integer *idcs); +extern integer agexax_(integer *iaxs, real *sval, real *umin, real *umax, integer *nice, real *qlua, real *funs, real *qbtp, real *basd, real *base, real *qmjd, real *qmnd, real *qmnt, real *qltd, real *qltp, real *qled, real *qlex, real *qlfd, real *qlfl, real *qmin, real *qmax); +extern integer agexus_(real *sval, real *zmin, real *zmax, real *zlow, real *zhgh, real *zdra, integer *nviz, integer *iivz, integer *nevz, integer *iiez, real *umin, real *umax); +extern integer agezsu_(integer *itoc, real *xdra, real *ydra, integer *idxy, integer *many, integer *npts, char *labg, integer *iivx, integer *iiex, integer *iivy, integer *iiey, ftnlen labg_len); +extern integer agftol_(integer *iaxs, integer *idma, real *vinp, real *votp, real *vlcs, integer *llua, real *ubeg, real *udif, real *funs, integer *nbtp, real *sbse); +extern integer aggetc_(char *tpid, char *cusr, ftnlen tpid_len, ftnlen cusr_len); +extern integer aggetf_(char *tpid, real *fusr, ftnlen tpid_len); +extern integer aggeti_(char *tpid, integer *iusr, ftnlen tpid_len); +extern integer aggetp_(char *tpid, real *fura, integer *lura, ftnlen tpid_len); +extern integer aggtch_(integer *idcs, char *chst, integer *lncs, ftnlen chst_len); +extern integer aginit_(void); +extern integer agkurv_(real *xvec, integer *iiex, real *yvec, integer *iiey, integer *nexy, real *sval); +extern integer aglbls_(integer *itst, real *wcwp, real *hcwp, real *fllb, integer *lbim, real *flln, real *dbox, real *sbox, real *rbox); +extern integer agltc_(shortint *a, shortint *b, integer *npix, shortint *low, shortint *high, real *kmul, real *kadd, integer *nrange); +extern integer agltd_(doublereal *a, doublereal *b, integer *npix, doublereal *low, doublereal *high, doublereal *kmul, doublereal *kadd, integer *nrange); +extern integer aglti_(integer *a, integer *b, integer *npix, integer *low, integer *high, real *kmul, real *kadd, integer *nrange); +extern integer agltl_(integer *a, integer *b, integer *npix, integer *low, integer *high, doublereal *kmul, doublereal *kadd, integer *nrange); +extern integer agltr_(real *a, real *b, integer *npix, real *low, real *high, real *kmul, real *kadd, integer *nrange); +extern integer aglts_(shortint *a, shortint *b, integer *npix, shortint *low, shortint *high, real *kmul, real *kadd, integer *nrange); +extern integer agltx_(complex *a, complex *b, integer *npix, complex *low, complex *high, real *kmul, real *kadd, integer *nrange); +extern integer agnumb_(integer *nbtp, real *sbse, real *exmu, integer *nltp, integer *nlex, integer *nlfl, char *bfrm, integer *mcim, integer *ncim, integer *ipxm, char *bfre, integer *mcie, integer *ncie, ftnlen bfrm_len, ftnlen bfre_len); +extern integer agppid_(char *tpid, ftnlen tpid_len); +extern integer agpwrt_(real *xpos, real *ypos, char *chrs, integer *nchs, integer *isiz, integer *iori, integer *icen, ftnlen chrs_len); +extern integer agqurv_(real *xvec, integer *iiex, real *yvec, integer *iiey, integer *nexy, real *sval); +extern integer agrpch_(char *chst, integer *lncs, integer *idcs, ftnlen chst_len); +extern integer agrstr_(integer *ifno); +extern integer agsave_(integer *ifno); +extern integer agscan_(char *tpid, integer *lopa, integer *nipa, integer *iipa, ftnlen tpid_len); +extern integer agsetc_(char *tpid, char *cusr, ftnlen tpid_len, ftnlen cusr_len); +extern integer agsetf_(char *tpid, real *fusr, ftnlen tpid_len); +extern integer agseti_(char *tpid, integer *iusr, ftnlen tpid_len); +extern integer agsetp_(char *tpid, real *fura, integer *lura, ftnlen tpid_len); +extern integer agstch_(char *chst, integer *lncs, integer *idcs, ftnlen chst_len); +extern integer agstup_(real *xdra, integer *nvix, integer *iivx, integer *nevx, integer *iiex, real *ydra, integer *nviy, integer *iivy, integer *nevy, integer *iiey); +extern integer agutol_(integer *iaxs, real *funs, integer *idma, real *vinp, real *votp); +extern integer ahgmc_(shortint *data, integer *npix, integer *hgm, integer *nbins, shortint *z1, shortint *z2); +extern integer ahgmd_(doublereal *data, integer *npix, integer *hgm, integer *nbins, doublereal *z1, doublereal *z2); +extern integer ahgmi_(integer *data, integer *npix, integer *hgm, integer *nbins, integer *z1, integer *z2); +extern integer ahgml_(integer *data, integer *npix, integer *hgm, integer *nbins, integer *z1, integer *z2); +extern integer ahgmr_(real *data, integer *npix, integer *hgm, integer *nbins, real *z1, real *z2); +extern integer ahgms_(shortint *data, integer *npix, integer *hgm, integer *nbins, shortint *z1, shortint *z2); +extern integer aiftrr_(real *fr, real *fi, real *sr, real *si, integer *npix); +extern integer aiftrr_(real *fr, real *fi, real *sr, real *si, integer *npix); +extern integer aiftrx_(complex *a, real *b, integer *npix); +extern integer aiftrx_(complex *a, real *b, integer *npix); +extern integer aiftxr_(real *fr, real *fi, real *sr, real *si, integer *npix); +extern integer aiftxr_(real *fr, real *fi, real *sr, real *si, integer *npix); +extern integer aiftxx_(complex *a, complex *b, integer *npix); +extern integer aiftxx_(complex *a, complex *b, integer *npix); +extern integer aimgd_(complex *a, doublereal *b, integer *npix); +extern integer aimgi_(complex *a, integer *b, integer *npix); +extern integer aimgl_(complex *a, integer *b, integer *npix); +extern integer aimgr_(complex *a, real *b, integer *npix); +extern integer aimgs_(complex *a, shortint *b, integer *npix); +extern integer alani_(integer *a, integer *b, integer *c__, integer *npix); +extern integer alanki_(integer *a, integer *b, integer *c__, integer *npix); +extern integer alankl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer alanks_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer alanl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer alans_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer alimc_(shortint *a, integer *npix, shortint *minval, shortint *maxval); +extern integer alimd_(doublereal *a, integer *npix, doublereal *minval, doublereal *maxval); +extern integer alimi_(integer *a, integer *npix, integer *minval, integer *maxval); +extern integer aliml_(integer *a, integer *npix, integer *minval, integer *maxval); +extern integer alimr_(real *a, integer *npix, real *minval, real *maxval); +extern integer alims_(shortint *a, integer *npix, shortint *minval, shortint *maxval); +extern integer alimx_(complex *a, integer *npix, complex *minval, complex *maxval); +extern integer allnd_(doublereal *a, doublereal *b, integer *npix, D_fp errfcn); +extern integer allni_(integer *a, integer *b, integer *npix, I_fp errfcn); +extern integer allnl_(integer *a, integer *b, integer *npix, I_fp errfcn); +extern integer allnr_(real *a, real *b, integer *npix, R_fp errfcn); +extern integer allns_(shortint *a, shortint *b, integer *npix, J_fp errfcn); +extern integer allnx_(complex *a, complex *b, integer *npix, C_fp errfcn); +extern integer alogd_(doublereal *a, doublereal *b, integer *npix, D_fp errfcn); +extern integer alogi_(integer *a, integer *b, integer *npix, I_fp errfcn); +extern integer alogl_(integer *a, integer *b, integer *npix, I_fp errfcn); +extern integer alogr_(real *a, real *b, integer *npix, R_fp errfcn); +extern integer alogs_(shortint *a, shortint *b, integer *npix, J_fp errfcn); +extern integer alogx_(complex *a, complex *b, integer *npix, C_fp errfcn); +extern integer alori_(integer *a, integer *b, integer *c__, integer *npix); +extern integer alorki_(integer *a, integer *b, integer *c__, integer *npix); +extern integer alorkl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer alorks_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer alorl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer alors_(shortint *a, shortint *b, integer *c__, integer *npix); +extern integer altad_(doublereal *a, doublereal *b, integer *npix, doublereal *k1, doublereal *k2); +extern integer altai_(integer *a, integer *b, integer *npix, real *k1, real *k2); +extern integer altal_(integer *a, integer *b, integer *npix, doublereal *k1, doublereal *k2); +extern integer altar_(real *a, real *b, integer *npix, real *k1, real *k2); +extern integer altas_(shortint *a, shortint *b, integer *npix, real *k1, real *k2); +extern integer altax_(complex *a, complex *b, integer *npix, real *k1, real *k2); +extern integer altmd_(doublereal *a, doublereal *b, integer *npix, doublereal *k1, doublereal *k2); +extern integer altmi_(integer *a, integer *b, integer *npix, real *k1, real *k2); +extern integer altml_(integer *a, integer *b, integer *npix, doublereal *k1, doublereal *k2); +extern integer altmr_(real *a, real *b, integer *npix, real *k1, real *k2); +extern integer altms_(shortint *a, shortint *b, integer *npix, real *k1, real *k2); +extern integer altmx_(complex *a, complex *b, integer *npix, real *k1, real *k2); +extern integer altrd_(doublereal *a, doublereal *b, integer *npix, doublereal *k1, doublereal *k2, doublereal *k3); +extern integer altri_(integer *a, integer *b, integer *npix, real *k1, real *k2, real *k3); +extern integer altrl_(integer *a, integer *b, integer *npix, doublereal *k1, doublereal *k2, doublereal *k3); +extern integer altrr_(real *a, real *b, integer *npix, real *k1, real *k2, real *k3); +extern integer altrs_(shortint *a, shortint *b, integer *npix, real *k1, real *k2, real *k3); +extern integer altrx_(complex *a, complex *b, integer *npix, real *k1, real *k2, real *k3); +extern integer aluid_(doublereal *a, doublereal *b, real *x, integer *npix); +extern integer aluii_(integer *a, integer *b, real *x, integer *npix); +extern integer aluil_(integer *a, integer *b, real *x, integer *npix); +extern integer aluir_(real *a, real *b, real *x, integer *npix); +extern integer aluis_(shortint *a, shortint *b, real *x, integer *npix); +extern integer alutc_(shortint *a, shortint *b, integer *npix, shortint *lut); +extern integer alutd_(integer *a, doublereal *b, integer *npix, doublereal *lut); +extern integer aluti_(integer *a, integer *b, integer *npix, integer *lut); +extern integer alutl_(integer *a, integer *b, integer *npix, integer *lut); +extern integer alutr_(integer *a, real *b, integer *npix, real *lut); +extern integer aluts_(shortint *a, shortint *b, integer *npix, shortint *lut); +extern integer amagd_(doublereal *a, doublereal *b, doublereal *c__, integer *npix); +extern integer amagi_(integer *a, integer *b, integer *c__, integer *npix); +extern integer amagl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer amagr_(real *a, real *b, real *c__, integer *npix); +extern integer amags_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer amagx_(complex *a, complex *b, complex *c__, integer *npix); +extern integer amapd_(doublereal *a, doublereal *b, integer *npix, doublereal *a1, doublereal *a2, doublereal *b1, doublereal *b2); +extern integer amapi_(integer *a, integer *b, integer *npix, integer *a1, integer *a2, integer *b1, integer *b2); +extern integer amapl_(integer *a, integer *b, integer *npix, integer *a1, integer *a2, integer *b1, integer *b2); +extern integer amapr_(real *a, real *b, integer *npix, real *a1, real *a2, real *b1, real *b2); +extern integer amaps_(shortint *a, shortint *b, integer *npix, shortint *a1, shortint *a2, shortint *b1, shortint *b2); +extern integer amaxc_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer amaxd_(doublereal *a, doublereal *b, doublereal *c__, integer *npix); +extern integer amaxi_(integer *a, integer *b, integer *c__, integer *npix); +extern integer amaxkc_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer amaxkd_(doublereal *a, doublereal *b, doublereal *c__, integer *npix); +extern integer amaxki_(integer *a, integer *b, integer *c__, integer *npix); +extern integer amaxkl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer amaxkr_(real *a, real *b, real *c__, integer *npix); +extern integer amaxks_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer amaxkx_(complex *a, complex *b, complex *c__, integer *npix); +extern integer amaxl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer amaxr_(real *a, real *b, real *c__, integer *npix); +extern integer amaxs_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer amaxx_(complex *a, complex *b, complex *c__, integer *npix); +extern integer amed3c_(shortint *a, shortint *b, shortint *c__, shortint *m, integer *npix); +extern integer amed3d_(doublereal *a, doublereal *b, doublereal *c__, doublereal *m, integer *npix); +extern integer amed3i_(integer *a, integer *b, integer *c__, integer *m, integer *npix); +extern integer amed3l_(integer *a, integer *b, integer *c__, integer *m, integer *npix); +extern integer amed3r_(real *a, real *b, real *c__, real *m, integer *npix); +extern integer amed3s_(shortint *a, shortint *b, shortint *c__, shortint *m, integer *npix); +extern integer amed4c_(shortint *a, shortint *b, shortint *c__, shortint *d__, shortint *m, integer *npix); +extern integer amed4d_(doublereal *a, doublereal *b, doublereal *c__, doublereal *d__, doublereal *m, integer *npix); +extern integer amed4i_(integer *a, integer *b, integer *c__, integer *d__, integer *m, integer *npix); +extern integer amed4l_(integer *a, integer *b, integer *c__, integer *d__, integer *m, integer *npix); +extern integer amed4r_(real *a, real *b, real *c__, real *d__, real *m, integer *npix); +extern integer amed4s_(shortint *a, shortint *b, shortint *c__, shortint *d__, shortint *m, integer *npix); +extern integer amed5c_(shortint *a, shortint *b, shortint *c__, shortint *d__, shortint *e, shortint *m, integer *npix); +extern integer amed5d_(doublereal *a, doublereal *b, doublereal *c__, doublereal *d__, doublereal *e, doublereal *m, integer *npix); +extern integer amed5i_(integer *a, integer *b, integer *c__, integer *d__, integer *e, integer *m, integer *npix); +extern integer amed5l_(integer *a, integer *b, integer *c__, integer *d__, integer *e, integer *m, integer *npix); +extern integer amed5r_(real *a, real *b, real *c__, real *d__, real *e, real *m, integer *npix); +extern integer amed5s_(shortint *a, shortint *b, shortint *c__, shortint *d__, shortint *e, shortint *m, integer *npix); +extern integer amgsd_(doublereal *a, doublereal *b, doublereal *c__, integer *npix); +extern integer amgsi_(integer *a, integer *b, integer *c__, integer *npix); +extern integer amgsl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer amgsr_(real *a, real *b, real *c__, integer *npix); +extern integer amgss_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer amgsx_(complex *a, complex *b, complex *c__, integer *npix); +extern integer aminc_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer amind_(doublereal *a, doublereal *b, doublereal *c__, integer *npix); +extern integer amini_(integer *a, integer *b, integer *c__, integer *npix); +extern integer aminkc_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer aminkd_(doublereal *a, doublereal *b, doublereal *c__, integer *npix); +extern integer aminki_(integer *a, integer *b, integer *c__, integer *npix); +extern integer aminkl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer aminkr_(real *a, real *b, real *c__, integer *npix); +extern integer aminks_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer aminkx_(complex *a, complex *b, complex *c__, integer *npix); +extern integer aminl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer aminr_(real *a, real *b, real *c__, integer *npix); +extern integer amins_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer aminx_(complex *a, complex *b, complex *c__, integer *npix); +extern integer amodd_(doublereal *a, doublereal *b, doublereal *c__, integer *npix); +extern integer amodi_(integer *a, integer *b, integer *c__, integer *npix); +extern integer amodkd_(doublereal *a, doublereal *b, doublereal *c__, integer *npix); +extern integer amodki_(integer *a, integer *b, integer *c__, integer *npix); +extern integer amodkl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer amodkr_(real *a, real *b, real *c__, integer *npix); +extern integer amodks_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer amodl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer amodr_(real *a, real *b, real *c__, integer *npix); +extern integer amods_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer amovc_(shortint *a, shortint *b, integer *npix); +extern integer amovd_(doublereal *a, doublereal *b, integer *npix); +extern integer amovi_(integer *a, integer *b, integer *npix); +extern integer amovkc_(shortint *a, shortint *b, integer *npix); +extern integer amovkd_(doublereal *a, doublereal *b, integer *npix); +extern integer amovki_(integer *a, integer *b, integer *npix); +extern integer amovkl_(integer *a, integer *b, integer *npix); +extern integer amovkr_(real *a, real *b, integer *npix); +extern integer amovks_(shortint *a, shortint *b, integer *npix); +extern integer amovkx_(complex *a, complex *b, integer *npix); +extern integer amovl_(integer *a, integer *b, integer *npix); +extern integer amovr_(real *a, real *b, integer *npix); +extern integer amovs_(shortint *a, shortint *b, integer *npix); +extern integer amovx_(complex *a, complex *b, integer *npix); +extern integer amuld_(doublereal *a, doublereal *b, doublereal *c__, integer *npix); +extern integer amuli_(integer *a, integer *b, integer *c__, integer *npix); +extern integer amulkd_(doublereal *a, doublereal *b, doublereal *c__, integer *npix); +extern integer amulki_(integer *a, integer *b, integer *c__, integer *npix); +extern integer amulkl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer amulkr_(real *a, real *b, real *c__, integer *npix); +extern integer amulks_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer amulkx_(complex *a, complex *b, complex *c__, integer *npix); +extern integer amull_(integer *a, integer *b, integer *c__, integer *npix); +extern integer amulr_(real *a, real *b, real *c__, integer *npix); +extern integer amuls_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer amulx_(complex *a, complex *b, complex *c__, integer *npix); +extern integer anegd_(doublereal *a, doublereal *b, integer *npix); +extern integer anegi_(integer *a, integer *b, integer *npix); +extern integer anegl_(integer *a, integer *b, integer *npix); +extern integer anegr_(real *a, real *b, integer *npix); +extern integer anegs_(shortint *a, shortint *b, integer *npix); +extern integer anegx_(complex *a, complex *b, integer *npix); +extern integer anirs_(real *a, shortint *b, integer *n); +extern integer anotat_(char *labx, char *laby, integer *lbac, integer *lset, integer *ndsh, char *dshl, ftnlen labx_len, ftnlen laby_len, ftnlen dshl_len); +extern integer anoti_(integer *a, integer *b, integer *npix); +extern integer anotl_(integer *a, integer *b, integer *npix); +extern integer anots_(shortint *a, shortint *b, integer *npix); +extern integer apkxd_(doublereal *a, doublereal *b, complex *c__, integer *npix); +extern integer apkxi_(integer *a, integer *b, complex *c__, integer *npix); +extern integer apkxl_(integer *a, integer *b, complex *c__, integer *npix); +extern integer apkxr_(real *a, real *b, complex *c__, integer *npix); +extern integer apkxs_(shortint *a, shortint *b, complex *c__, integer *npix); +extern integer apkxx_(complex *a, complex *b, complex *c__, integer *npix); +extern integer apowd_(doublereal *a, integer *b, doublereal *c__, integer *npix); +extern integer apowi_(integer *a, integer *b, integer *c__, integer *npix); +extern integer apowkd_(doublereal *a, integer *b, doublereal *c__, integer *npix); +extern integer apowki_(integer *a, integer *b, integer *c__, integer *npix); +extern integer apowkl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer apowkr_(real *a, integer *b, real *c__, integer *npix); +extern integer apowks_(shortint *a, integer *b, shortint *c__, integer *npix); +extern integer apowkx_(complex *a, integer *b, complex *c__, integer *npix); +extern integer apowl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer apowr_(real *a, integer *b, real *c__, integer *npix); +extern integer apows_(shortint *a, integer *b, shortint *c__, integer *npix); +extern integer apowx_(complex *a, integer *b, complex *c__, integer *npix); +extern integer arcpd_(doublereal *a, doublereal *b, doublereal *c__, integer *npix); +extern integer arcpi_(integer *a, integer *b, integer *c__, integer *npix); +extern integer arcpl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer arcpr_(real *a, real *b, real *c__, integer *npix); +extern integer arcps_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer arcpx_(complex *a, complex *b, complex *c__, integer *npix); +extern integer arczd_(doublereal *a, doublereal *b, doublereal *c__, integer *npix, D_fp errfcn); +extern integer arczi_(integer *a, integer *b, integer *c__, integer *npix, I_fp errfcn); +extern integer arczl_(integer *a, integer *b, integer *c__, integer *npix, I_fp errfcn); +extern integer arczr_(real *a, real *b, real *c__, integer *npix, R_fp errfcn); +extern integer arczs_(shortint *a, shortint *b, shortint *c__, integer *npix, J_fp errfcn); +extern integer arczx_(complex *a, complex *b, complex *c__, integer *npix, C_fp errfcn); +extern integer aread_(integer *fd, shortint *buffer, integer *maxchs, integer *charot); +extern integer areadb_(integer *fd, shortint *buffer, integer *maxbys, integer *byteot); +extern integer argtd_(doublereal *a, integer *npix, doublereal *ceil, doublereal *newval); +extern integer argti_(integer *a, integer *npix, integer *ceil, integer *newval); +extern integer argtl_(integer *a, integer *npix, integer *ceil, integer *newval); +extern integer argtr_(real *a, integer *npix, real *ceil, real *newval); +extern integer argts_(shortint *a, integer *npix, shortint *ceil, shortint *newval); +extern integer argtx_(complex *a, integer *npix, complex *ceil, complex *newval); +extern integer arltd_(doublereal *a, integer *npix, doublereal *floor, doublereal *newval); +extern integer arlti_(integer *a, integer *npix, integer *floor, integer *newval); +extern integer arltl_(integer *a, integer *npix, integer *floor, integer *newval); +extern integer arltr_(real *a, integer *npix, real *floor, real *newval); +extern integer arlts_(shortint *a, integer *npix, shortint *floor, shortint *newval); +extern integer arltx_(complex *a, integer *npix, complex *floor, complex *newval); +extern integer aselc_(shortint *a, shortint *b, shortint *c__, integer *sel, integer *npix); +extern integer aseld_(doublereal *a, doublereal *b, doublereal *c__, integer *sel, integer *npix); +extern integer aseli_(integer *a, integer *b, integer *c__, integer *sel, integer *npix); +extern integer aselkc_(shortint *a, shortint *b, shortint *c__, integer *sel, integer *npix); +extern integer aselkd_(doublereal *a, doublereal *b, doublereal *c__, integer *sel, integer *npix); +extern integer aselki_(integer *a, integer *b, integer *c__, integer *sel, integer *npix); +extern integer aselkl_(integer *a, integer *b, integer *c__, integer *sel, integer *npix); +extern integer aselkr_(real *a, real *b, real *c__, integer *sel, integer *npix); +extern integer aselks_(shortint *a, shortint *b, shortint *c__, integer *sel, integer *npix); +extern integer aselkx_(complex *a, complex *b, complex *c__, integer *sel, integer *npix); +extern integer asell_(integer *a, integer *b, integer *c__, integer *sel, integer *npix); +extern integer aselr_(real *a, real *b, real *c__, integer *sel, integer *npix); +extern integer asels_(shortint *a, shortint *b, shortint *c__, integer *sel, integer *npix); +extern integer aselx_(complex *a, complex *b, complex *c__, integer *sel, integer *npix); +extern integer asqrd_(doublereal *a, doublereal *b, integer *npix, D_fp errfcn); +extern integer asqri_(integer *a, integer *b, integer *npix, I_fp errfcn); +extern integer asqrl_(integer *a, integer *b, integer *npix, I_fp errfcn); +extern integer asqrr_(real *a, real *b, integer *npix, R_fp errfcn); +extern integer asqrs_(shortint *a, shortint *b, integer *npix, J_fp errfcn); +extern integer asqrx_(complex *a, complex *b, integer *npix, C_fp errfcn); +extern integer asrtc_(shortint *a, shortint *b, integer *npix); +extern integer asrtd_(doublereal *a, doublereal *b, integer *npix); +extern integer asrti_(integer *a, integer *b, integer *npix); +extern integer asrtl_(integer *a, integer *b, integer *npix); +extern integer asrtr_(real *a, real *b, integer *npix); +extern integer asrts_(shortint *a, shortint *b, integer *npix); +extern integer asrtx_(complex *a, complex *b, integer *npix); +extern integer asubd_(doublereal *a, doublereal *b, doublereal *c__, integer *npix); +extern integer asubi_(integer *a, integer *b, integer *c__, integer *npix); +extern integer asubkd_(doublereal *a, doublereal *b, doublereal *c__, integer *npix); +extern integer asubki_(integer *a, integer *b, integer *c__, integer *npix); +extern integer asubkl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer asubkr_(real *a, real *b, real *c__, integer *npix); +extern integer asubks_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer asubkx_(complex *a, complex *b, complex *c__, integer *npix); +extern integer asubl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer asubr_(real *a, real *b, real *c__, integer *npix); +extern integer asubs_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer asubx_(complex *a, complex *b, complex *c__, integer *npix); +extern integer aupxd_(complex *a, doublereal *b, doublereal *c__, integer *npix); +extern integer aupxi_(complex *a, integer *b, integer *c__, integer *npix); +extern integer aupxl_(complex *a, integer *b, integer *c__, integer *npix); +extern integer aupxr_(complex *a, real *b, real *c__, integer *npix); +extern integer aupxs_(complex *a, shortint *b, shortint *c__, integer *npix); +extern integer aupxx_(complex *a, complex *b, complex *c__, integer *npix); +extern integer awritb_(integer *fd, shortint *buffer, integer *nbytes, integer *byteot); +extern integer awrite_(integer *fd, shortint *buffer, integer *nchars, integer *charot); +extern integer awsud_(doublereal *a, doublereal *b, doublereal *c__, integer *npix, doublereal *k1, doublereal *k2); +extern integer awsui_(integer *a, integer *b, integer *c__, integer *npix, real *k1, real *k2); +extern integer awsul_(integer *a, integer *b, integer *c__, integer *npix, real *k1, real *k2); +extern integer awsur_(real *a, real *b, real *c__, integer *npix, real *k1, real *k2); +extern integer awsus_(shortint *a, shortint *b, shortint *c__, integer *npix, real *k1, real *k2); +extern integer awsux_(complex *a, complex *b, complex *c__, integer *npix, complex *k1, complex *k2); +extern integer axori_(integer *a, integer *b, integer *c__, integer *npix); +extern integer axorki_(integer *a, integer *b, integer *c__, integer *npix); +extern integer axorkl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer axorks_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer axorl_(integer *a, integer *b, integer *c__, integer *npix); +extern integer axors_(shortint *a, shortint *b, shortint *c__, integer *npix); +extern integer bndary_(void); +extern integer bound_(real *z__, integer *mx, integer *nnx, integer *nny, real *ssp); +extern integer brktie_(integer *ltime, integer *tm); +extern integer c1dpas_(integer *interp, real *eps); +extern integer calcnt_(real *z__, integer *m, integer *n, real *a1, real *a2, real *a3, integer *i1, integer *i2, integer *i3); +extern integer ccpcag_(shortint *p, integer *npts, integer *ltype, integer *curplt, integer *segsie, integer *xseg, integer *yseg, integer *nsegps); +extern integer ccpcle_(void); +extern integer ccpclr_(integer *dummy); +extern integer ccpcls_(shortint *devnae, integer *n); +extern integer ccpcor_(integer *index); +extern integer ccpdrg_(real *xseg, real *yseg, integer *nsegps, integer *lwidth); +extern integer ccpdrr_(shortint *ch, integer *x, integer *y, integer *xsize, integer *ysize, integer *orien, integer *font, integer *qualiy); +extern integer ccpese_(integer *fn, shortint *instrn, integer *nwords); +extern integer ccpfat_(shortint *gki); +extern integer ccpfia_(shortint *p, integer *npts); +extern integer ccpfot_(integer *font); +extern integer ccpint_(integer *tty, shortint *devnae); +extern integer ccplie_(integer *index); +extern integer ccplwh_(integer *index); +extern integer ccpopn_(shortint *devnae, integer *dd); +extern integer ccpops_(shortint *devnae, integer *n, integer *mode); +extern integer ccpplt_(shortint *gki); +extern integer ccppmt_(shortint *gki); +extern integer ccppoe_(shortint *p, integer *npts); +extern integer ccppor_(shortint *p, integer *npts); +extern integer ccpret_(void); +extern integer ccptet_(integer *xc, integer *yc, shortint *text, integer *n); +extern integer ccptxt_(shortint *gki); +extern integer ccxadt_(real *x, real *y, integer *xseg, integer *yseg, integer *curset, integer *segsie); +extern integer ccxdah_(shortint *p, integer *npts, integer *curplt, real *cursen, integer *curset, integer *segsie, integer *xseg, integer *yseg, real *lastpx, real *lastpy); +extern integer ccxgap_(shortint *p, integer *npts, integer *curplt, real *cursen, real *matchn, real *lastpx, real *lastpy); +extern integer ccxinl_(real *x, real *y, real *xsize, real *ysize, shortint *ch, real *orien); +extern integer ccxiny_(real *x, real *y, integer *npts, integer *qualiy); +extern integer ccxofs_(real *p1x, real *p1y, real *p2x, real *p2y, real *p3x, real *p3y, real *delx, real *dely); +extern integer ccxpas_(integer *xc, integer *yc, integer *totlen, integer *x0, integer *y0, integer *dx, integer *dy, integer *polytt, integer *orien); +extern integer cfvld_(integer *ientry, integer *iix, integer *iiy); +extern integer chdept_(shortint *ch, shortint *str, integer *maxch, integer *op); +extern integer chkcyc_(real *u, real *v, integer *imax, integer *jptsy, integer *ier); +extern integer chstr_(char *label, integer *first, integer *last, ftnlen label_len); +extern integer clccos_(void); +extern integer clcenr_(shortint *param, shortint *value); +extern integer clcfre_(integer *marker); +extern integer clcint_(void); +extern integer clclit_(integer *fd, shortint *pset, shortint *format); +extern integer clcloe_(void); +extern integer clcmak_(integer *marker); +extern integer clcmd_(shortint *cmd); +extern integer clcmdw_(shortint *cmd); +extern integer clcnek_(shortint *taskne); +extern integer clcpst_(integer *pp); +extern integer clcscn_(shortint *cmd); +extern integer clepst_(integer *pp); +extern integer clgcut_(shortint *promp1, shortint *promp2, integer *curvee, integer *order); +extern integer clgen_(real *z__, integer *mx, integer *nx, integer *nny, real *cclo, real *chi, real *cinc, integer *nla, integer *nlm, real *cl, integer *ncl, integer *icnst); +extern integer clgpsa_(integer *pp, shortint *pname, shortint *outstr, integer *maxch); +extern integer clgpst_(integer *pp, shortint *pname, shortint *outstr, integer *maxch); +extern integer clgsec_(shortint *prompt, shortint *sectin, integer *x1, integer *x2, integer *step, integer *nsubss); +extern integer clgstr_(shortint *param, shortint *outstr, integer *maxch); +extern integer cllpst_(integer *pp, integer *fd, shortint *format); +extern integer clopen_(integer *stdinn, integer *stdoun, integer *stdern, integer *device, integer *devtye); +extern integer clpcls_(integer *list); +extern integer clppsa_(integer *pp, shortint *pname, shortint *sval); +extern integer clppsb_(integer *pp, shortint *parnae, logical *bval); +extern integer clppsc_(integer *pp, shortint *parnae, shortint *cval); +extern integer clppsd_(integer *pp, shortint *parnae, doublereal *dval); +extern integer clppsi_(integer *pp, shortint *parnae, integer *ival); +extern integer clppsl_(integer *pp, shortint *parnae, integer *lval); +extern integer clppsr_(integer *pp, shortint *parnae, real *rval); +extern integer clppss_(integer *pp, shortint *parnae, shortint *sval); +extern integer clppst_(integer *pp, shortint *pname, shortint *sval); +extern integer clppsx_(integer *pp, shortint *parnae, complex *xval); +extern integer clprew_(integer *list); +extern integer clprif_(shortint *param, shortint *formag); +extern integer clpstr_(shortint *param, shortint *value); +extern integer clputb_(shortint *param, logical *bval); +extern integer clputc_(shortint *param, shortint *cval); +extern integer clputd_(shortint *param, doublereal *dval); +extern integer clputi_(shortint *param, integer *value); +extern integer clputl_(shortint *param, integer *lval); +extern integer clputr_(shortint *param, real *rval); +extern integer clputs_(shortint *param, shortint *value); +extern integer clputx_(shortint *param, complex *xval); +extern integer clreqr_(shortint *param); +extern integer clset_(real *z__, integer *mx, integer *nx, integer *ny, real *chi, real *clo, real *cinc, integer *nla, integer *nlm, real *cl, integer *ncl, integer *icnst, integer *ioffp, real *spval, real *bigest); +extern integer clseti_(integer *paramr, integer *value); +extern integer clsgks_(void); +extern integer cnvdae_(integer *ltime, shortint *outstr, integer *maxch); +extern integer cnvtie_(integer *ltime, shortint *outstr, integer *maxch); +extern integer conbd_(void); +extern integer conbdn_(void); +extern integer concal_(real *xd, real *yd, real *zd, integer *nt, integer *ipt, integer *nl, integer *ipl, real *pdd, integer *iti, real *xii, real *yii, real *zii, integer *itpv); +extern integer concld_(integer *icase, integer *ioop); +extern integer concls_(real *zd, integer *ndp); +extern integer condet_(integer *ndp, real *xd, real *yd, integer *ncp, integer *ipc); +extern integer condrw_(real *scrarr); +extern integer condsd_(void); +extern integer conecd_(real *val, char *iout, integer *nused, ftnlen iout_len); +extern integer congen_(real *xi, real *yi, integer *ipack, real *scrarr, integer *ica); +extern integer conint_(integer *ndp, real *xd, real *yd, real *zd, integer *ncp, integer *ipc, real *pd); +extern integer conlin_(real *xd, real *yd, real *zd, integer *nt, integer *iwk, real *wk); +extern integer conloc_(integer *ndp, real *xd, real *yd, integer *nt, integer *ipt, integer *nl, integer *ipl, real *xii, real *yii, integer *iti, integer *iwk, real *wk); +extern integer conlod_(real *xd, real *yd, real *zd, integer *ndp, real *wk, integer *iwk, real *scrarr); +extern integer conop1_(char *iopt, ftnlen iopt_len); +extern integer conop2_(char *iopt, integer *isize, ftnlen iopt_len); +extern integer conop3_(char *iopt, real *array, integer *isize, ftnlen iopt_len); +extern integer conop4_(char *iopt, char *array, integer *isize, integer *ifort, ftnlen iopt_len, ftnlen array_len); +extern integer conot2_(integer *iver, integer *iunit); +extern integer conout_(integer *iver); +extern integer conpdv_(real *xd, real *yd, real *zd, integer *ndp); +extern integer conpmm_(real *scrarr); +extern integer conran_(real *xd, real *yd, real *zd, integer *ndp, real *wk, integer *iwk, real *scrarr); +extern integer conrec_(real *z__, integer *l, integer *m, integer *n, real *flo, real *hi, real *finc, integer *nset, integer *nhi, integer *ndot); +extern integer conreo_(integer *majlns); +extern integer consld_(real *scrarr); +extern integer conssd_(real *x, real *y, integer *ic); +extern integer constp_(real *xd, real *yd, integer *ndp); +extern integer contlk_(real *xd, real *yd, integer *ndp, integer *ipt); +extern integer contng_(integer *ndp, real *xd, real *yd, integer *nt, integer *ipt, integer *nl, integer *ipl, integer *iwl, integer *iwp, real *wk); +extern integer counmp_(integer *co); +extern integer cqccfe_(integer *cq); +extern integer cqccit_(integer *cq, integer *catno); +extern integer cqdgad_(integer *cq, integer *record, shortint *field, doublereal *array, integer *lenary, integer *npts); +extern integer cqdgai_(integer *cq, integer *record, shortint *field, integer *array, integer *lenary, integer *npts); +extern integer cqdgar_(integer *cq, integer *record, shortint *field, real *array, integer *lenary, integer *npts); +extern integer cqdgat_(integer *cq, integer *record, shortint *field, shortint *str, integer *maxchr, integer *nlines); +extern integer cqdgsr_(integer *cq, integer *record, shortint *field, shortint *str, integer *maxchr); +extern integer cqdgwd_(integer *cq, integer *record, shortint *field, shortint *str, integer *maxchr); +extern integer cqffms_(integer *res, shortint *field, shortint *format, integer *szfort); +extern integer cqfgsr_(integer *cq, shortint *field, shortint *str, integer *maxch); +extern integer cqfgwd_(integer *cq, shortint *field, shortint *str, integer *maxch); +extern integer cqfins_(shortint *linebf, integer *fields, integer *maxfis, integer *nfiels); +extern integer cqfuns_(integer *res, shortint *field, shortint *units, integer *szunis); +extern integer cqimce_(integer *res); +extern integer cqirfe_(integer *res); +extern integer cqists_(integer *res, integer *param, shortint *str, integer *maxch); +extern integer cqrcle_(integer *res); +extern integer cqrfre_(integer *res); +extern integer cqrsts_(integer *res, integer *param, shortint *str, integer *maxch); +extern integer cqstas_(integer *cq, integer *param, shortint *str, integer *maxch); +extern integer cqunmp_(integer *cq); +extern integer ctcell_(real *z__, integer *mx, integer *nx, integer *ny, integer *m, integer *i0, integer *j0); +extern integer curve3_(real *u, real *v, real *w, integer *n); +extern integer curve_(real *px, real *py, integer *np); +extern integer curved_(real *x, real *y, integer *n); +extern integer dashbd_(void); +extern integer dashdb_(integer *ipat); +extern integer dashdc_(char *ipat, integer *jcrt, integer *jsize, ftnlen ipat_len); +extern integer deletg_(shortint *fname, integer *versis, integer *subfis); +extern integer displa_(integer *lfra, integer *lrow, integer *ltyp); +extern integer drawi_(integer *ixa, integer *iya, integer *ixb, integer *iyb); +extern integer drawpv_(integer *ix, integer *iy, integer *ind); +extern integer draws_(integer *mx1, integer *my1, integer *mx2, integer *my2, integer *idraw, integer *imark); +extern integer drawt_(integer *ixa, integer *iya, integer *ixb, integer *iyb); +extern integer drcntr_(real *z__, integer *l, integer *mm, integer *nn); +extern integer drline_(real *z__, integer *l, integer *mm, integer *nn); +extern integer drwstr_(real *u, real *v, real *ux, real *vy, integer *imax, integer *jptsy); +extern integer drwvec_(integer *m1, integer *m2, integer *m3, integer *m4, char *label, integer *nc, ftnlen label_len); +extern integer dsulud_(shortint *utab, real *x, real *y, integer *nvalus); +extern integer dsulue_(integer *lut); +extern integer dsulut_(real *xvals, real *yvals, integer *nvals); +extern integer dtcscl_(doublereal *v, integer *e, integer *sense); +extern integer dtgad_(integer *dt, integer *record, shortint *field, doublereal *array, integer *lenary, integer *npts); +extern integer dtgar_(integer *dt, integer *record, shortint *field, real *array, integer *lenary, integer *npts); +extern integer dtgstr_(integer *dt, integer *record, shortint *field, shortint *str, integer *maxchr); +extern integer dtptie_(integer *dt); +extern integer dtput_(integer *dt, shortint *format); +extern integer dtremp_(integer *dt, shortint *dname, shortint *fname, integer *mode); +extern integer dtstrg_(integer *datate, shortint *str, integer *maxchr); +extern integer dtunmp_(integer *dt); +extern integer e9rin_(char *messg, integer *nerr, logical *save, ftnlen messg_len); +extern integer encd_(real *valu, real *ash, char *iout, integer *nc, integer *ioffd, ftnlen iout_len); +extern integer encode_(integer *nchars, char *ftnfmt, char *ftnout, real *rval, ftnlen ftnfmt_len, ftnlen ftnout_len); +extern integer entsr_(integer *irold, integer *irnew); +extern integer envinr_(shortint *envvar, shortint *outstr, integer *maxch); +extern integer envint_(void); +extern integer envlit_(integer *fd, shortint *prefix, integer *prints); +extern integer envmak_(integer *oldtop); +extern integer envret_(shortint *key, shortint *value); +extern integer eprin_(void); +extern integer eprinf_(shortint *formag); +extern integer erract_(integer *severy); +extern integer errof_(void); +extern integer evvfre_(integer *o); +extern integer exmpl1_(void); +extern integer exmpl2_(void); +extern integer exmpl3_(void); +extern integer exmpl4_(void); +extern integer exmpl5_(void); +extern integer exmpl6_(void); +extern integer exmpl7_(void); +extern integer exmpl8_(void); +extern integer exmplf_(void); +extern integer expand_(real *maxw); +extern integer ezcntr_(real *z__, integer *m, integer *n); +extern integer ezhftn_(real *z__, integer *m, integer *n); +extern integer ezisos_(real *t, integer *mu, integer *mv, integer *mw, real *eye, real *slab, real *tiso); +extern integer ezsrfc_(real *z__, integer *m, integer *n, real *angh, real *angv, real *work); +extern integer ezstrm_(real *u, real *v, real *work, integer *imax, integer *jmax); +extern integer ezvec_(real *u, real *v, integer *m, integer *n); +extern integer falloc_(shortint *fname, integer *filese); +extern integer fcanpb_(integer *fd); +extern integer fcldir_(integer *channl, integer *status); +extern integer fclobr_(shortint *fname); +extern integer fcopy_(shortint *oldfie, shortint *newfie); +extern integer fcopyo_(integer *in, integer *out); +extern integer fdebug_(integer *out, integer *fd1arg, integer *fd2arg); +extern integer fdirne_(shortint *vfn, shortint *path, integer *maxch); +extern integer fdum_(void); +extern integer fdvdld_(integer *ientry, integer *iix, integer *iiy); +extern integer fencd_(integer *nchars, shortint *fformt, shortint *sppour, real *rval); +extern integer fence3_(real *u, real *v, real *w, integer *n, integer *ior, real *bot); +extern integer fexbuf_(integer *fd); +extern integer ffilbf_(integer *fd, integer *bp, integer *bufsie, integer *buffet); +extern integer ffldir_(integer *chan, integer *status); +extern integer fflsbf_(integer *fd, integer *bp, integer *maxchs, integer *buffet); +extern integer fgdevm_(integer *fd); +extern integer fgtdir_(integer *chan, shortint *outlie, integer *maxch, integer *status); +extern integer filerr_(shortint *fname, integer *errcoe); +extern integer fillin_(void); +extern integer findz_(integer *im, real *z1, real *z2, real *zfrac, integer *maxcos, integer *nsamps); +extern integer finit_(void); +extern integer fioclp_(integer *status); +extern integer fioqfh_(integer *fd, integer *status); +extern integer fixmem_(integer *oldsie); +extern integer fl2int_(real *px, real *py, integer *ix, integer *iy); +extern integer flsbuf_(integer *fd, integer *nresee); +extern integer fmapfn_(shortint *vfn, shortint *osfn, integer *maxch); +extern integer fmcloe_(integer *fm); +extern integer fmcopo_(integer *old, integer *new__); +extern integer fmcopy_(shortint *dfname, shortint *newnae); +extern integer fmdebg_(integer *fm, integer *out, integer *what); +extern integer fmdele_(shortint *dfname); +extern integer fmfcdg_(integer *fm, integer *out, integer *what); +extern integer fmfcfe_(integer *fm); +extern integer fmfcit_(integer *fm, integer *cachee); +extern integer fmfcsc_(integer *fm); +extern integer fmiobd_(integer *fm); +extern integer fmioek_(integer *fm); +extern integer fmiopr_(integer *fm, integer *errcoe, shortint *opstr); +extern integer fmiorr_(integer *fm); +extern integer fmiosf_(integer *fm); +extern integer fmiotk_(integer *fm); +extern integer fmkbfs_(integer *fd); +extern integer fmkcoy_(shortint *oldfie, shortint *newfie); +extern integer fmkdir_(shortint *newdir); +extern integer fmkpbf_(integer *fd); +extern integer fmlfad_(integer *lf, shortint *buf, integer *maxbys, integer *offset); +extern integer fmlfae_(integer *lf, shortint *buf, integer *nbytes, integer *offset); +extern integer fmlfat_(integer *lf, integer *status); +extern integer fmlfbd_(integer *lf, shortint *buf, integer *maxbys, integer *offset); +extern integer fmlfbe_(integer *lf, shortint *buf, integer *nbytes, integer *offset); +extern integer fmlfbt_(integer *lf, integer *status); +extern integer fmlfce_(integer *lf, integer *status); +extern integer fmlfcy_(integer *old, integer *olfile, integer *new__, integer *nlfile); +extern integer fmlfde_(integer *fm, integer *lfile); +extern integer fmlfne_(integer *fm, integer *lfile, integer *type__, shortint *lfname, integer *maxch); +extern integer fmlfon_(shortint *pklfne, integer *mode, integer *chan); +extern integer fmlfsi_(integer *lf, integer *param, integer *lvalue); +extern integer fmlfue_(integer *fm, integer *lfile); +extern integer fmloct_(integer *fm, integer *lfile); +extern integer fmrebd_(shortint *dfname); +extern integer fmrene_(shortint *old, shortint *new__); +extern integer fmretd_(integer *fm, integer *lfile); +extern integer fmseti_(integer *fm, integer *param, integer *value); +extern integer fmsync_(integer *fm); +extern integer fmterr_(shortint *preame, shortint *format, integer *index); +extern integer fmtint_(integer *ftype); +extern integer fmtred_(void); +extern integer fmtsel_(shortint *ch, integer *col); +extern integer fmtstr_(integer *fd, shortint *str, integer *col, shortint *fillcr, integer *leftjy, integer *maxch, integer *width); +extern integer fmunlk_(integer *fm, integer *lfile); +extern integer fntclb_(integer *list); +extern integer fntcls_(integer *pp); +extern integer fntdir_(integer *chan, integer *offset); +extern integer fntmkt_(shortint *pat, shortint *patstr, integer *maxch, integer *ep, integer *nedit); +extern integer fntreb_(integer *list); +extern integer fopdir_(shortint *osfn, integer *mode, integer *channl); +extern integer four1_(real *data, integer *nn, integer *isign); +extern integer fowner_(shortint *fname, shortint *owner, integer *maxch); +extern integer fpathe_(shortint *vfn, shortint *outpue, integer *maxchs); +extern integer fpnord_(doublereal *x, doublereal *normx, integer *expon); +extern integer fpnorr_(real *x, real *normx, integer *expon); +extern integer fpradv_(void); +extern integer fprinf_(integer *fd, shortint *formag); +extern integer fprntf_(integer *newfd, shortint *formag, integer *filete); +extern integer fptdir_(integer *chan, shortint *line, integer *nchars, integer *status); +extern integer fputtx_(integer *fd, shortint *buf, integer *nchars, integer *status); +extern integer frame_(void); +extern integer fredio_(integer *fd, integer *newfd); +extern integer fredir_(integer *fd, shortint *fname, integer *mode, integer *type__); +extern integer frenae_(shortint *oldfne, shortint *newfne); +extern integer frmbfs_(integer *fd); +extern integer frmtmp_(void); +extern integer frst3_(real *u, real *v, real *w); +extern integer frstc_(integer *mx, integer *my, integer *ient); +extern integer frstd_(real *x, real *y); +extern integer frstpt_(real *px, real *py); +extern integer frsts_(real *xx, real *yy, integer *ient); +extern integer frtnfd_(integer *fd); +extern integer fsetev_(shortint *envvar, integer *value); +extern integer fseti_(integer *fd, integer *param, integer *value); +extern integer fsfdee_(shortint *fname); +extern integer fsfgee_(shortint *fname, shortint *fsffie, integer *maxch); +extern integer fskdir_(integer *chan, integer *offset, integer *status); +extern integer fstats_(integer *fd, integer *what, shortint *outstr, integer *maxch); +extern integer fstdir_(integer *chan, integer *param, integer *lvalue); +extern integer fstrfp_(integer *newfp); +extern integer fsvtfn_(shortint *fname); +extern integer fswapd_(integer *fd1, integer *fd2); +extern integer fulib_(integer *errcoe, shortint *upkmsg, integer *msglen); +extern integer fwatio_(integer *fd); +extern integer fwtacc_(integer *fd, shortint *fname); +extern integer fxfacp_(shortint *line, integer *tpt, integer *nbkw, integer *nbl); +extern integer fxfacs_(integer *kernel, shortint *root, shortint *extn, integer *acmode, integer *status); +extern integer fxfact_(shortint *line, integer *tst, integer *nsb); +extern integer fxfadr_(integer *im, shortint *pname, integer *dtype, shortint *pval); +extern integer fxfakb_(shortint *keywod, integer *value, shortint *commet, integer *pn); +extern integer fxfakc_(shortint *keywod, shortint *value, integer *len, shortint *commet, integer *pn); +extern integer fxfakd_(shortint *keywod, doublereal *value, shortint *commet, integer *precin, integer *pn); +extern integer fxfaki_(shortint *keywod, integer *value, shortint *commet, integer *pn); +extern integer fxfakr_(shortint *keywod, real *value, shortint *commet, integer *precin, integer *pn); +extern integer fxfalc_(integer *fit); +extern integer fxfald_(integer *a, doublereal *b, integer *npix, doublereal *bscale, doublereal *bzero); +extern integer fxfalr_(integer *a, real *b, integer *npix, doublereal *bscale, doublereal *bzero); +extern integer fxfalu_(shortint *a, shortint *b, integer *npix); +extern integer fxfasr_(shortint *a, real *b, integer *npix, doublereal *bscale, doublereal *bzero); +extern integer fxfbls_(integer *nbl, integer *po); +extern integer fxfbyt_(integer *im, shortint *fname); +extern integer fxfche_(integer *im); +extern integer fxfchm_(integer *im); +extern integer fxfchp_(integer *im, shortint *ksectn, integer *acmode, integer *group, integer *ksinh); +extern integer fxfcle_(integer *im, integer *status); +extern integer fxfcll_(integer *im); +extern integer fxfcnx_(integer *im, integer *totpix, shortint *obuf, integer *nbytes, integer *boffst); +extern integer fxfcoj_(integer *im, integer *infd, integer *hdroff, integer *poff, integer *datase); +extern integer fxfcoy_(integer *kernel, shortint *oroot, shortint *oextn, shortint *nroot, shortint *nextn, integer *status); +extern integer fxfdae_(shortint *datesr, integer *limtie); +extern integer fxfdee_(integer *kernel, shortint *root, shortint *extn, integer *status); +extern integer fxfdiw_(integer *im); +extern integer fxfdur_(integer *im, integer *status); +extern integer fxfenb_(shortint *keywod, integer *param, shortint *card, shortint *commet); +extern integer fxfenc_(shortint *keywod, shortint *param, integer *maxch, shortint *card, shortint *commet); +extern integer fxfend_(shortint *keywod, doublereal *param, shortint *card, shortint *commet, integer *precin); +extern integer fxfene_(integer *ctime, shortint *datesr, integer *maxch, shortint *format, integer *cutovr); +extern integer fxfeni_(shortint *keywod, integer *param, shortint *card, shortint *commet); +extern integer fxfenl_(shortint *keywod, integer *param, shortint *card, shortint *commet); +extern integer fxfenr_(shortint *keywod, real *param, shortint *card, shortint *commet, integer *precin); +extern integer fxfens_(shortint *root, shortint *keywod, integer *axisno); +extern integer fxfexh_(integer *infd, integer *outfd, integer *nlines, integer *group, integer *nbks, integer *hdroff, integer *pixoff); +extern integer fxffac_(shortint *fname, integer *size); +extern integer fxffcr_(shortint *file); +extern integer fxffiw_(integer *im, shortint *key); +extern integer fxffog_(integer *fit, shortint *messg); +extern integer fxfgas_(integer *im, logical *fsec); +extern integer fxfgeb_(shortint *card, integer *bval); +extern integer fxfged_(shortint *card, doublereal *dval); +extern integer fxfgei_(shortint *card, integer *ival); +extern integer fxfgen_(integer *im, integer *oim, integer *acmode, shortint *outstr, integer *maxch); +extern integer fxfger_(shortint *card, real *rval); +extern integer fxfget_(shortint *card, shortint *commet, integer *maxch); +extern integer fxfglm_(shortint *time, shortint *date, integer *limtie); +extern integer fxfgsr_(shortint *card, shortint *outstr, integer *maxch); +extern integer fxfhef_(integer *im, integer *group, integer *acmode, integer *hdroff, integer *diff, integer *ualen); +extern integer fxfint_(void); +extern integer fxfkse_(integer *param, shortint *ksectn, integer *ip, integer *fit); +extern integer fxfksl_(shortint *outstr, integer *param, integer *fit); +extern integer fxfksm_(shortint *pm, integer *param, integer *fit); +extern integer fxfksn_(shortint *ksectn, integer *fit, integer *group); +extern integer fxfkss_(integer *fit, integer *acmode); +extern integer fxfkst_(integer *fit); +extern integer fxflor_(integer *in, integer *fit, integer *spool, integer *nrec10, integer *dataln); +extern integer fxfmad_(shortint *instr, integer *ip, shortint *card, integer *colout, integer *maxcos, integer *delim); +extern integer fxfmar_(integer *pat, integer *plines, integer *str, integer *slines, integer *merge, integer *po); +extern integer fxfmas_(integer *im, integer *nheads); +extern integer fxfmay_(integer *infd, integer *outfd, integer *hdroff, integer *pixoff, integer *charsa); +extern integer fxfmea_(integer *im, integer *userh, integer *fitsln); +extern integer fxfnoe_(integer *im); +extern integer fxfnul_(void); +extern integer fxfopn_(integer *kernel, integer *im, integer *oim, shortint *root, shortint *extn, shortint *ksectn, integer *group, integer *gcarg, integer *acmode, integer *status); +extern integer fxfopx_(integer *im, integer *status); +extern integer fxfove_(integer *im); +extern integer fxfovt_(integer *fit, integer *im); +extern integer fxfpaa_(shortint *ibuf, shortint *obuf, integer *npix, integer *pixtye); +extern integer fxfpld_(integer *im); +extern integer fxfple_(integer *im, integer *fd); +extern integer fxfplf_(integer *im); +extern integer fxfplo_(integer *im, integer *maxlen, integer *pcount, integer *depth); +extern integer fxfplp_(integer *im, integer *hdrfd, integer *pcount); +extern integer fxfprr_(integer *im, integer *group); +extern integer fxfree_(integer *kernel, shortint *oroot, shortint *oextn, shortint *nroot, shortint *nextn, integer *status); +extern integer fxfrek_(integer *im); +extern integer fxfren_(integer *im, integer *cfit, integer *igroup, integer *hoff, integer *poff, integer *extn, integer *extv); +extern integer fxfrep_(shortint *in, shortint *out, shortint *tmp, integer *ntry, integer *nsleep); +extern integer fxfrfr_(integer *im, integer *group, integer *poff); +extern integer fxfrhr_(integer *im, integer *group, integer *acmode); +extern integer fxfsee_(integer *im, logical *overwe); +extern integer fxfsev_(integer *im); +extern integer fxfsex_(integer *im, integer *fit); +extern integer fxfskn_(integer *im, integer *group, integer *cfit, integer *hoff, integer *poff, integer *extn, integer *extv, integer *spool); +extern integer fxfuna_(shortint *cbuf, integer *npix, integer *pixtye, doublereal *bscale, doublereal *bzero); +extern integer fxfupd_(integer *im); +extern integer fxfupr_(integer *im, integer *status); +extern integer fxfwrr_(integer *im, integer *fit, integer *hdrfd, integer *nchara, integer *group); +extern integer fxfwrs_(integer *fd, integer *size); +extern integer fxfxhd_(integer *in, integer *out, shortint *buf, integer *bufsie, integer *hoffst, integer *poffst, integer *hsize); +extern integer fxfzad_(doublereal *data, integer *npix, doublereal *bscale, doublereal *bzero); +extern integer fxfzar_(real *data, integer *npix, doublereal *bscale, doublereal *bzero); +extern integer fxfzcl_(integer *chan, integer *status); +extern integer fxfzop_(shortint *pkfn, integer *mode, integer *status); +extern integer fxfzrd_(integer *chan, shortint *obuf, integer *nbytes, integer *boffst); +extern integer fxfzst_(integer *chan, integer *param, integer *value); +extern integer fxfzwr_(integer *chan, shortint *ibuf, integer *nbytes, integer *boffst); +extern integer fxfzwt_(integer *chan, integer *status); +extern integer gactie_(integer *gp, integer *flags); +extern integer gacwk_(integer *wkid); +extern integer gadraw_(integer *gp, real *wx, real *wy); +extern integer gamove_(integer *gp, real *x, real *y); +extern integer gargb_(logical *bval); +extern integer gargc_(shortint *cval); +extern integer gargd_(doublereal *dval); +extern integer gargi_(integer *ival); +extern integer gargl_(integer *lval); +extern integer gargr_(real *rval); +extern integer gargrd_(integer *lval, integer *radix); +extern integer gargs_(shortint *sval); +extern integer gargsr_(shortint *outstr, integer *maxch); +extern integer gargtk_(integer *token, shortint *outstr, integer *maxch); +extern integer gargwd_(shortint *outstr, integer *maxch); +extern integer gargx_(complex *xval); +extern integer gascae_(integer *gp, real *v, integer *npts, integer *axis); +extern integer gaxdrw_(real *wx, real *wy); +extern integer gaxfis_(integer *w, real *wx1, real *wx2, real *wy1, real *wy2, real *x1, real *dx, integer *xt, real *y1, real *dy, integer *yt); +extern integer gaxflh_(integer *stream); +extern integer gaxndc_(real *wx, real *wy, real *sx, real *sy); +extern integer gaxstt_(real *wx, real *wy); +extern integer gaxtet_(integer *stream, real *sx, real *sy, shortint *text, integer *hjusty, integer *vjusty); +extern integer gaxtik_(real *dx, real *dy); +extern integer gbytes_(integer *bufin, integer *bufout, integer *index, integer *size, integer *skip, integer *count); +extern integer gca_(real *px, real *py, real *qx, real *qy, integer *dimx, integer *dimy, integer *ncs, integer *nrs, integer *dx, integer *dy, integer *colia); +extern integer gcancl_(integer *gp); +extern integer gcas_(real *px, real *py, real *qx, real *qy, integer *dimx, integer *dimy, integer *ncs, integer *nrs, integer *dx, integer *dy, shortint *colia); +extern integer gclear_(integer *gp); +extern integer gclks_(void); +extern integer gclose_(integer *gp); +extern integer gclrwk_(integer *wkid, integer *cofl); +extern integer gclwk_(integer *wkid); +extern integer gctran_(integer *gp, real *x1, real *y1, real *x2, real *y2, integer *wcsa, integer *wcsb); +extern integer gcurps_(integer *gp, real *x, real *y); +extern integer gdawk_(integer *wkid); +extern integer gdeace_(integer *gp, integer *flags); +extern integer gescae_(integer *gp, integer *fn, shortint *instrn, integer *nwords); +extern integer gethot_(shortint *outstr, integer *maxch); +extern integer getsen_(shortint *image, shortint *sectin, integer *maxch); +extern integer getset_(real *vl, real *vr, real *vb, real *vt, real *wl, real *wr, real *wb, real *wt, integer *lf); +extern integer getsi_(integer *ix, integer *iy); +extern integer getusv_(char *vn, integer *iv, ftnlen vn_len); +extern integer gexflr_(integer *stream); +extern integer gexfls_(void); +extern integer gexflt_(integer *stream, integer *gpvale, integer *epagfh); +extern integer gfa_(integer *n, real *px, real *py); +extern integer gfill_(integer *gp, real *x, real *y, integer *npts, integer *style); +extern integer gflush_(integer *gp); +extern integer gframe_(integer *gp); +extern integer gfrint_(integer *gp); +extern integer ggcell_(integer *gp, shortint *m, integer *nx, integer *ny, real *x1, real *y1, real *x2, real *y2); +extern integer ggscae_(integer *gp, real *x, real *y, real *dx, real *dy); +extern integer ggview_(integer *gp, real *x1, real *x2, real *y1, real *y2); +extern integer ggwind_(integer *gp, real *x1, real *x2, real *y1, real *y2); +extern integer gimcor_(integer *gp, integer *rop, integer *src, integer *st, real *sx, real *sy, real *sw, real *sh, integer *dst, integer *dt, real *dx, real *dy, real *dw, real *dh); +extern integer gimcrr_(integer *gp, integer *raster, integer *type__, integer *width, integer *height, integer *depth); +extern integer gimder_(integer *gp, integer *raster); +extern integer gimdig_(integer *gp, integer *mappig, integer *erase); +extern integer gimeng_(integer *gp, integer *mappig, integer *refreh); +extern integer gimfrg_(integer *gp, integer *mappig); +extern integer gimfrp_(integer *gp, integer *colorp); +extern integer gimins_(integer *gp); +extern integer gimiod_(integer *gp, integer *iomap, integer *first, integer *nelem); +extern integer gimioe_(integer *gp, integer *iomap, integer *first, integer *nelem); +extern integer gimlop_(integer *gp, integer *colorp, real *offset, real *slope); +extern integer gimrat_(integer *gp); +extern integer gimreg_(integer *gp, integer *mappig); +extern integer gimres_(integer *gp, integer *raster, shortint *data, integer *nbits, integer *x1, integer *y1, integer *nx, integer *ny); +extern integer gimrex_(integer *gp, integer *raster, integer *ct, real *x1, real *y1, real *width, real *height); +extern integer gimseg_(integer *gp, integer *mappig, integer *rop, integer *src, integer *st, real *sx, real *sy, real *sw, real *sh, integer *dst, integer *dt, real *dx, real *dy, real *dw, real *dh); +extern integer gimser_(integer *gp, integer *raster); +extern integer gimsex_(integer *gp, integer *raster, integer *ct, real *x1, real *y1, real *width, real *height, integer *color, integer *rop); +extern integer gimwrp_(integer *gp, integer *colorp, integer *first, integer *nelem, integer *r__, integer *g, integer *b); +extern integer gimwrs_(integer *gp, integer *raster, shortint *data, integer *nbits, integer *x1, integer *y1, integer *nx, integer *ny); +extern integer giotr_(integer *stream); +extern integer giotrt_(integer *vex, integer *nexthr); +extern integer gkical_(integer *fd); +extern integer gkiclr_(integer *fd); +extern integer gkicls_(integer *fd, shortint *device); +extern integer gkides_(integer *fd, integer *flags); +extern integer gkieof_(integer *fd); +extern integer gkiese_(integer *fd, integer *fn, shortint *instrn, integer *nwords); +extern integer gkiexe_(shortint *gki, integer *dd); +extern integer gkifat_(integer *fd, integer *ap); +extern integer gkiffh_(integer *fd); +extern integer gkifia_(integer *fd, shortint *points, integer *npts); +extern integer gkiflh_(integer *fd); +extern integer gkiger_(integer *fd, integer *cursor, integer *cn, integer *key, integer *sx, integer *sy, integer *raster, integer *rx, integer *ry); +extern integer gkiges_(integer *fd, integer *wcs, integer *lenwcs); +extern integer gkigey_(integer *fd, shortint *m, integer *nx, integer *ny, integer *x1, integer *y1, integer *x2, integer *y2); +extern integer gkiinl_(integer *stream, integer *dd); +extern integer gkiint_(integer *stream); +extern integer gkimfe_(integer *fd, shortint *title); +extern integer gkiops_(integer *fd, shortint *device, integer *mode); +extern integer gkiplt_(integer *fd, integer *ap); +extern integer gkipmt_(integer *fd, integer *ap); +extern integer gkipoe_(integer *fd, shortint *points, integer *npts); +extern integer gkipor_(integer *fd, shortint *points, integer *npts); +extern integer gkipuy_(integer *fd, shortint *m, integer *nx, integer *ny, integer *x1, integer *y1, integer *x2, integer *y2); +extern integer gkiree_(integer *fd, integer *cn, integer *key, integer *sx, integer *sy, integer *raster, integer *rx, integer *ry); +extern integer gkirer_(integer *stream, integer *fd, integer *oldfd, integer *oldtye); +extern integer gkires_(integer *fd, integer *flags); +extern integer gkirey_(integer *fd, shortint *m, integer *np); +extern integer gkiser_(integer *fd, integer *x, integer *y, integer *cursor); +extern integer gkises_(integer *fd, integer *wcs, integer *lenwcs); +extern integer gkisul_(integer *stream, integer *pid, integer *prpsia); +extern integer gkitet_(integer *fd, integer *x, integer *y, shortint *text); +extern integer gkitxt_(integer *fd, integer *ap); +extern integer gkiwee_(integer *fd, integer *fn, shortint *hdr, integer *hdrlen, shortint *data, integer *dataln); +extern integer gkiwre_(integer *fd, shortint *gki); +extern integer gkpcal_(integer *dummy); +extern integer gkpcle_(void); +extern integer gkpclr_(integer *dummy); +extern integer gkpcls_(shortint *devnae, integer *n); +extern integer gkpdes_(integer *flags); +extern integer gkpdup_(integer *fd, shortint *data, integer *nwords); +extern integer gkpese_(integer *fn, shortint *instrn, integer *nwords); +extern integer gkpfat_(shortint *gki); +extern integer gkpfia_(shortint *p, integer *npts); +extern integer gkpflh_(integer *dummy); +extern integer gkpger_(integer *cursor); +extern integer gkpges_(shortint *wcs, integer *nwords); +extern integer gkpgey_(integer *nx, integer *ny, integer *x1, integer *y1, integer *x2, integer *y2); +extern integer gkpgrm_(integer *graphm); +extern integer gkpinl_(integer *dd, integer *outfd, integer *verbot, integer *usegks); +extern integer gkpmfe_(shortint *title, integer *n); +extern integer gkpops_(shortint *devnae, integer *n, integer *mode); +extern integer gkpplt_(shortint *gki); +extern integer gkppmt_(shortint *gki); +extern integer gkppoe_(shortint *p, integer *npts); +extern integer gkppor_(shortint *p, integer *npts); +extern integer gkppst_(integer *fd, shortint *p, integer *npts, shortint *label, integer *verboe, integer *gkiuns); +extern integer gkppuy_(shortint *m, integer *nx, integer *ny, integer *x1, integer *y1, integer *x2, integer *y2); +extern integer gkpres_(integer *flags); +extern integer gkpser_(integer *x, integer *y, integer *cursor); +extern integer gkpses_(shortint *wcs, integer *nwords); +extern integer gkptet_(integer *x, integer *y, shortint *text, integer *n); +extern integer gkptxg_(shortint *code); +extern integer gkptxt_(shortint *gki); +extern integer gkpunn_(shortint *gki); +extern integer glabax_(integer *gp, shortint *title, shortint *xlabel, shortint *ylabel); +extern integer glbdrd_(integer *gp, integer *ax1, integer *ax2); +extern integer glbene_(real *x, shortint *out, integer *maxch, shortint *format, real *step); +extern integer glbfis_(integer *gp, integer *ap, integer *ax1, integer *ax2, integer *angle); +extern integer glblas_(integer *gp, integer *ax, shortint *xlabel, shortint *ylabel); +extern integer glblob_(integer *gp, real *sx, real *sy, real *val, shortint *fmt, integer *scalig); +extern integer glbple_(integer *gp, shortint *title, integer *ntitls); +extern integer glbsep_(integer *gp, integer *axes, integer *ntitls, shortint *xlabel, shortint *ylabel); +extern integer glbses_(integer *gp, integer *ap, integer *ax1, integer *ax2, integer *angle); +extern integer glbset_(integer *gp, integer *ntitls, shortint *xlabel, shortint *ylabel); +extern integer glbveg_(integer *gp); +extern integer gline_(integer *gp, real *x1, real *y1, real *x2, real *y2); +extern integer gmark_(integer *gp, real *x, real *y, integer *markte, real *xsize, real *ysize); +extern integer gmftie_(integer *gp, shortint *mftite); +extern integer gmprif_(integer *gp, shortint *object, shortint *format); +extern integer gmsg_(integer *gp, shortint *object, shortint *messae); +extern integer gmsgb_(integer *gp, shortint *object, logical *value); +extern integer gmsgc_(integer *gp, shortint *object, shortint *value); +extern integer gmsgd_(integer *gp, shortint *object, doublereal *value); +extern integer gmsgi_(integer *gp, shortint *object, integer *value); +extern integer gmsgl_(integer *gp, shortint *object, integer *value); +extern integer gmsgr_(integer *gp, shortint *object, real *value); +extern integer gmsgs_(integer *gp, shortint *object, shortint *value); +extern integer gmsgx_(integer *gp, shortint *object, complex *value); +extern integer gnewpt_(real *ux, real *vy, integer *imax, integer *jptsy); +extern integer gopks_(integer *errfil); +extern integer gopwk_(integer *wkid, integer *conid, integer *wtype); +extern integer gpagee_(integer *gp, shortint *fname, shortint *prompt); +extern integer gpcell_(integer *gp, shortint *m, integer *nx, integer *ny, real *x1, real *y1, real *x2, real *y2); +extern integer gpl_(integer *n, real *px, real *py); +extern integer gplcae_(integer *gp); +extern integer gplcal_(void); +extern integer gplclb_(integer *pen, integer *mx, integer *my); +extern integer gplcll_(integer *pen, integer *mx, integer *my); +extern integer gplclr_(integer *pen, integer *mx, integer *my); +extern integer gplclt_(integer *pen, integer *mx, integer *my); +extern integer gplflh_(void); +extern integer gpline_(integer *gp, real *x, real *y, integer *npts); +extern integer gploto_(integer *gp, real *v, integer *npts, real *x1, real *x2, shortint *title); +extern integer gplotv_(real *v, integer *npts, real *x1, real *x2, shortint *title); +extern integer gplret_(void); +extern integer gplsee_(integer *gp, integer *type__); +extern integer gplwci_(integer *gp, real *wx, real *wy, real *mx, real *my); +extern integer gpm_(integer *n, real *px, real *py); +extern integer gpmark_(integer *gp, real *x, real *y, integer *npts, integer *markte, real *xsize, real *ysize); +extern integer gptclb_(integer *pen, integer *mx, integer *my); +extern integer gptcll_(integer *pen, integer *mx, integer *my); +extern integer gptclr_(integer *pen, integer *mx, integer *my); +extern integer gptclt_(integer *pen, integer *mx, integer *my); +extern integer gptflh_(void); +extern integer gqasf_(integer *ierror, integer *lasf); +extern integer gqchh_(integer *ierror, real *chh); +extern integer gqchup_(integer *ierror, real *chupx, real *chupy); +extern integer gqclip_(integer *errind, integer *iclip, real *iar); +extern integer gqcntn_(integer *errind, integer *cntr); +extern integer gqmk_(integer *ierr, integer *mtype); +extern integer gqnt_(integer *ntnr, integer *errind, real *window, real *vport); +extern integer gqopwk_(integer *n, integer *errind, integer *ol, integer *wkid); +extern integer gqplci_(integer *errind, integer *coli); +extern integer gqpmci_(integer *errind, integer *coli); +extern integer gqpmi_(integer *errind, real *index); +extern integer gqsort_(integer *x, integer *nelem, I_fp compae, integer *arg); +extern integer gqtxal_(integer *ierror, integer *txalh, integer *txalv); +extern integer gqtxci_(integer *ierror, integer *coli); +extern integer gqtxp_(integer *ierror, integer *path); +extern integer gqwks_(integer *wkid, integer *errind, integer *state); +extern integer gray_(void); +extern integer grcaxs_(integer *stream, real *sx, real *sy, integer *raster, real *rx, real *ry); +extern integer grccle_(integer *fd, integer *rc); +extern integer grcint_(integer *rc); +extern integer grckes_(integer *rc, shortint *opstr, integer *ip, integer *onoff); +extern integer grcmee_(integer *stream, shortint *messae); +extern integer grcndr_(real *mx, real *my, real *sx, real *sy); +extern integer grcnds_(real *ct, real *mx, real *my, real *wx, real *wy); +extern integer grcpcr_(integer *stream, real *sx, real *sy, integer *raster, real *rx, real *ry); +extern integer grcpoe_(integer *stream, real *v, integer *npts); +extern integer grcred_(integer *tr, integer *stream, shortint *fname); +extern integer grcres_(integer *stream, real *x, real *y); +extern integer grcrew_(integer *rc, integer *stream, real *sx, real *sy, integer *raster, real *rx, real *ry); +extern integer grcscc_(real *sx, real *sy, real *mx, real *my); +extern integer grcscs_(integer *stream, real *sx, real *sy, integer *raster, real *rx, real *ry, real *wx, real *wy, integer *wcs); +extern integer grcsen_(integer *w, real *ct); +extern integer grcsts_(integer *fd, integer *rc); +extern integer grctet_(integer *stream, real *x, real *y, shortint *text); +extern integer grcvit_(integer *tr, integer *stream, real *sx, real *sy, integer *raster, real *rx, real *ry, shortint *opstr, integer *ip); +extern integer grcwan_(integer *fd); +extern integer grcwcc_(real *ct, real *wx, real *wy, real *mx, real *my); +extern integer grcwod_(shortint *opstr, integer *ip, shortint *outstr, integer *maxch); +extern integer grcwre_(integer *tr, integer *stream, shortint *fname, logical *clobbr, logical *fullfe); +extern integer grdraw_(integer *gp, real *x, real *y); +extern integer greace_(integer *gp, integer *flags); +extern integer greset_(integer *gp, integer *flags); +extern integer grid_(integer *majrx, integer *minrx, integer *majry, integer *minry); +extern integer gridal_(integer *majrx, integer *minrx, integer *majry, integer *minry, integer *ixlab, integer *iylab, integer *igph, real *x, real *y); +extern integer gridl_(integer *majrx, integer *minrx, integer *majry, integer *minry); +extern integer gridt_(void); +extern integer grmove_(integer *gp, real *x, real *y); +extern integer grscae_(integer *gp, real *v, integer *npts, integer *axis); +extern integer gsasf_(integer *lasf); +extern integer gsawi_(integer *param, integer *value); +extern integer gsawr_(integer *param, real *value); +extern integer gscan_(integer *gp, shortint *commad); +extern integer gschh_(real *chh); +extern integer gschup_(real *chux, real *chuy); +extern integer gsclip_(integer *iclip); +extern integer gscur_(integer *gp, real *x, real *y); +extern integer gselnt_(integer *wcs); +extern integer gseti_(integer *gp, integer *param, integer *value); +extern integer gsetr_(integer *gp, integer *param, real *rval); +extern integer gsets_(integer *gp, integer *param, shortint *value); +extern integer gsfaci_(integer *index); +extern integer gsfais_(integer *ints); +extern integer gslwsc_(real *width); +extern integer gsmk_(integer *mtype); +extern integer gsmksc_(real *width); +extern integer gsplci_(integer *coli); +extern integer gspmci_(integer *coli); +extern integer gspmi_(integer *index); +extern integer gstrsb_(integer *tabs, integer *maxtas, integer *firstp, integer *tabsie); +extern integer gstsei_(integer *newvae, integer *value, integer *state); +extern integer gstser_(real *newvae, real *value, integer *state); +extern integer gstxal_(integer *txalh, integer *txalv); +extern integer gstxci_(integer *coli); +extern integer gstxp_(integer *txp); +extern integer gsview_(integer *gp, real *x1, real *x2, real *y1, real *y2); +extern integer gsvp_(integer *wcs, real *x1, real *x2, real *y1, real *y2); +extern integer gswind_(integer *gp, real *x1, real *x2, real *y1, real *y2); +extern integer gswn_(integer *wcs, real *x1, real *x2, real *y1, real *y2); +extern integer gtasce_(integer *gp, integer *gt, real *x, real *y, integer *npts); +extern integer gtcol1_(shortint *cmdstr, integer *gp, integer *gt, integer *newgrh); +extern integer gtcoln_(shortint *cmdstr, integer *gp, integer *gt, integer *newgrh); +extern integer gtcopy_(integer *gt1, integer *gt2); +extern integer gtext_(integer *gp, real *x, real *y, shortint *text, shortint *format); +extern integer gtfree_(integer *gt); +extern integer gtgets_(integer *gt, integer *param, shortint *str, integer *szstr); +extern integer gthelp_(shortint *file); +extern integer gtickr_(real *x1, real *x2, integer *roughs, integer *logflg, real *xtick1, real *step); +extern integer gtiret_(integer *gp, integer *gt); +extern integer gtlabx_(integer *gp, integer *gt); +extern integer gtrbap_(integer *stream); +extern integer gtrcol_(integer *stream, shortint *gki, integer *sourcd); +extern integer gtrctn_(integer *mx, integer *my, integer *sx, integer *sy); +extern integer gtrdee_(integer *tr, integer *gki); +extern integer gtrdit_(integer *pid, integer *in, integer *out, integer *stream); +extern integer gtrest_(integer *gp, integer *gt); +extern integer gtrfre_(integer *tr, integer *gki, integer *stream); +extern integer gtrgfh_(integer *stream); +extern integer gtrgtn_(integer *fd, real *x1, real *x2, real *y1, real *y2); +extern integer gtrmee_(integer *fd, integer *stream, shortint *name__); +extern integer gtrops_(shortint *devspc, integer *mode, integer *stream, integer *sourcd); +extern integer gtrpae_(integer *fd, integer *stream); +extern integer gtrpon_(shortint *gki); +extern integer gtrptn_(integer *stream, real *x1, real *x2, real *y1, real *y2); +extern integer gtrret_(integer *status); +extern integer gtrrew_(integer *stream); +extern integer gtrset_(integer *fd, real *x1, real *x2, real *y1, real *y2); +extern integer gtrsts_(integer *fd); +extern integer gtrtre_(integer *tr, integer *gki); +extern integer gtruno_(integer *stream); +extern integer gtrwae_(integer *fd, integer *stream); +extern integer gtrwrr_(integer *fd, real *x, real *y); +extern integer gtrwsn_(shortint *gki); +extern integer gtseti_(integer *gt, integer *param, integer *ival); +extern integer gtsetr_(integer *gt, integer *param, real *rval); +extern integer gtsets_(integer *gt, integer *param, shortint *str); +extern integer gtswid_(integer *gp, integer *gt); +extern integer gtuivs_(integer *gp, integer *gt); +extern integer gtvplt_(integer *gp, integer *gt, real *v, integer *npts, real *x1, real *x2); +extern integer gtwin1_(integer *gt, integer *gp, real *wx, real *wy, integer *wcs, integer *key, shortint *cmd, integer *redraw); +extern integer gtwin2_(integer *gt, integer *gp, real *wx1, real *wy1, integer *wcs1, integer *key1, shortint *cmd1, real *wx2, real *wy2, integer *wcs2, integer *key2, shortint *cmd2, integer *redraw); +extern integer gtwinw_(integer *gt, integer *gp, shortint *cursor, integer *redraw); +extern integer gtx_(real *px, real *py, char *f77chars, ftnlen f77chars_len); +extern integer gtxset_(integer *tx, shortint *format, integer *ip); +extern integer gtycle_(integer *tty); +extern integer gtyfey_(integer *fd, shortint *device, integer *tty); +extern integer gtyins_(integer *tty, integer *tcapce, integer *tcapix, integer *ncaps); +extern integer gtysce_(integer *tty, shortint *termce, shortint *devnae); +extern integer gumark_(integer *gp, real *x, real *y, integer *npts, real *xcen, real *ycen, real *xsize, real *ysize, integer *fill); +extern integer gvline_(integer *gp, real *v, integer *npts, real *x1, real *x2); +extern integer gvmark_(integer *gp, real *v, integer *npts, real *x1, real *x2, integer *markte, real *xsize, real *ysize); +extern integer gwcsme_(shortint *devnae, shortint *fname, integer *maxch); +extern integer gwrwcs_(shortint *devnae, integer *wcs, integer *lenwcs); +extern integer gxgtx_(real *px, real *py, shortint *chars); +extern integer hafton_(real *z__, integer *l, integer *m, integer *n, real *flo, real *hi, integer *nlev, integer *nopt, integer *nprm, integer *ispv, real *spval); +extern integer halfax_(integer *majrx, integer *minrx, integer *majry, integer *minry, real *x, real *y, integer *ixlab, integer *iylab); +extern integer hfinit_(void); +extern integer iccled_(integer *ic, integer *cv, doublereal *x, doublereal *y, doublereal *w, integer *npts); +extern integer icclen_(integer *ic, integer *cv, real *x, real *y, real *w, integer *npts); +extern integer icclod_(integer *ic); +extern integer icclor_(integer *ic); +extern integer iccopy_(integer *icin, integer *icout); +extern integer icdevd_(integer *cv, doublereal *x, doublereal *y, doublereal *w, integer *rejpts, integer *npts, real *lowret, real *highrt, real *grow, integer *refit, integer *nrejet, integer *newret); +extern integer icdevr_(integer *cv, real *x, real *y, real *w, integer *rejpts, integer *npts, real *lowret, real *highrt, real *grow, integer *refit, integer *nrejet, integer *newret); +extern integer icdosd_(integer *ic, integer *cv, doublereal *x, doublereal *wts, integer *npts, integer *newx, integer *newwts, integer *newfun, integer *refit); +extern integer icdosr_(integer *ic, integer *cv, real *x, real *wts, integer *npts, integer *newx, integer *newwts, integer *newfun, integer *refit); +extern integer icerrd_(integer *ic, shortint *file, integer *cv, doublereal *x, doublereal *y, doublereal *wts, integer *npts); +extern integer icerrs_(integer *ic, shortint *file, integer *cv, real *x, real *y, real *wts, integer *npts); +extern integer icferd_(integer *ic, integer *cv, doublereal *x, doublereal *y, doublereal *wts, integer *npts, integer *fd); +extern integer icferr_(integer *ic, integer *cv, real *x, real *y, real *wts, integer *npts, integer *fd); +extern integer icfit_(integer *ic, integer *cv, real *x, real *y, real *wts, integer *npts, integer *newx, integer *newy, integer *newwts, integer *newfun); +extern integer icfitd_(integer *ic, integer *cv, doublereal *x, doublereal *y, doublereal *wts, integer *npts, integer *newx, integer *newy, integer *newwts, integer *newfun); +extern integer icfshw_(integer *ic, integer *fd); +extern integer icfvsd_(integer *ic, integer *cv, doublereal *x, doublereal *y, doublereal *wts, integer *npts, integer *fd); +extern integer icfvsr_(integer *ic, integer *cv, real *x, real *y, real *wts, integer *npts, integer *fd); +extern integer icfxyd_(integer *ic, integer *cv, doublereal *x, doublereal *y, doublereal *w, integer *npts, integer *fd); +extern integer icfxyr_(integer *ic, integer *cv, real *x, real *y, real *w, integer *npts, integer *fd); +extern integer ichelp_(integer *ic); +extern integer iclisr_(integer *ic, integer *cv, real *x, real *y, real *wts, integer *npts, shortint *file); +extern integer icopen_(integer *ic); +extern integer icpkey_(integer *ic, integer *key, integer *xaxis, integer *yaxis); +extern integer icpstr_(integer *ic, shortint *param, shortint *str); +extern integer icputi_(integer *ic, shortint *param, integer *ival); +extern integer icputr_(integer *ic, shortint *param, real *rval); +extern integer icrejd_(integer *cv, doublereal *x, doublereal *y, doublereal *w, integer *rejpts, integer *npts, real *lowret, real *highrt, integer *nitere, real *grow, integer *nrejet); +extern integer icrejr_(integer *cv, real *x, real *y, real *w, integer *rejpts, integer *npts, real *lowret, real *highrt, integer *nitere, real *grow, integer *nrejet); +extern integer icshow_(integer *ic, shortint *file, integer *gt); +extern integer icvshd_(integer *ic, shortint *file, integer *cv, doublereal *x, doublereal *y, doublereal *wts, integer *npts, integer *gt); +extern integer icvshr_(integer *ic, shortint *file, integer *cv, real *x, real *y, real *wts, integer *npts, integer *gt); +extern integer icxysd_(integer *ic, shortint *file, integer *cv, doublereal *x, doublereal *y, doublereal *w, integer *npts); +extern integer icxysr_(integer *ic, shortint *file, integer *cv, real *x, real *y, real *w, integer *npts); +extern integer idbcle_(integer *idb); +extern integer idiot_(real *xdra, real *ydra, integer *npts, integer *ltyp, integer *ldsh, char *labx, char *laby, char *labg, integer *lfra, ftnlen labx_len, ftnlen laby_len, ftnlen labg_len); +extern integer idkcle_(integer *fd); +extern integer idkdrw_(integer *fd, integer *ax, integer *ay); +extern integer idkflh_(integer *fd); +extern integer idkfre_(integer *fd); +extern integer idklih_(integer *fd, integer *width); +extern integer idkmoe_(integer *fd, integer *x, integer *y); +extern integer idkver_(integer *ax1, integer *ay1, integer *ax2, integer *ay2); +extern integer iisblk_(integer *chan1, integer *chan2, integer *chan3, integer *chan4, integer *nframs, real *rate); +extern integer iiscls_(integer *chan, integer *status); +extern integer iisers_(integer *chan); +extern integer iisgop_(integer *frame, integer *mode, integer *chan); +extern integer iishdr_(integer *id, integer *count, integer *subunt, integer *x, integer *y, integer *z__, integer *t); +extern integer iisio_(shortint *buf, integer *nbytes, integer *status); +extern integer iislpe_(shortint *y, integer *npts, integer *xc, integer *height, integer *width); +extern integer iislps_(shortint *lutb, shortint *lutg, shortint *lutr); +extern integer iismtc_(integer *chan1, integer *chan2); +extern integer iisofm_(shortint *map); +extern integer iisopn_(shortint *devino, integer *mode, integer *chan); +extern integer iispio_(shortint *buf, integer *nx, integer *ny); +extern integer iisrcr_(integer *status, integer *xcur, integer *ycur); +extern integer iisrd_(integer *chan, shortint *buf, integer *nbytes, integer *offset); +extern integer iisrgb_(integer *redchn, integer *greenn, integer *bluecn); +extern integer iisrlt_(integer *chan, shortint *lut); +extern integer iisrm_(integer *zfactr); +extern integer iisrom_(integer *color, shortint *lut); +extern integer iissee_(integer *frame); +extern integer iisstt_(integer *chan, integer *what, integer *lvalue); +extern integer iiswcr_(integer *status, integer *xcur, integer *ycur); +extern integer iiswlt_(integer *chan, shortint *lut); +extern integer iiswn3_(integer *chan1, integer *chan2, integer *chan3); +extern integer iiswom_(integer *color, shortint *lut); +extern integer iiswr_(integer *chan, shortint *buf, integer *nbytes, integer *offset); +extern integer iiswt_(integer *chan, integer *nbytes); +extern integer iiszm_(integer *zfactr, integer *x, integer *y); +extern integer ikicle_(integer *im); +extern integer ikicoy_(shortint *old, shortint *new__); +extern integer ikidee_(shortint *image); +extern integer ikideg_(shortint *str, integer *fd, integer *flags); +extern integer ikiint_(void); +extern integer ikimke_(shortint *root, shortint *extn, shortint *fname, integer *maxch); +extern integer ikiopn_(integer *nim, shortint *image, shortint *ksectn, integer *clindx, integer *clsize, integer *acmode, integer *oim); +extern integer ikiopx_(integer *im); +extern integer ikipae_(shortint *image, shortint *root, shortint *extn); +extern integer ikiree_(shortint *old, shortint *new__); +extern integer ikiupr_(integer *im); +extern integer imaddb_(integer *im, shortint *key, logical *value); +extern integer imaddd_(integer *im, shortint *key, doublereal *value); +extern integer imaddf_(integer *im, shortint *key, shortint *datate); +extern integer imaddi_(integer *im, shortint *key, integer *value); +extern integer imaddl_(integer *im, shortint *key, integer *value); +extern integer imaddr_(integer *im, shortint *key, real *value); +extern integer imadds_(integer *im, shortint *key, shortint *value); +extern integer imaflp_(shortint *a, integer *npix, integer *szpixl); +extern integer imakbc_(integer *im, shortint *key, logical *value, shortint *commet); +extern integer imakbi_(integer *im, shortint *key, logical *value, shortint *commet, shortint *pkey, integer *baf); +extern integer imakdc_(integer *im, shortint *key, doublereal *value, shortint *commet); +extern integer imakdi_(integer *im, shortint *key, doublereal *value, shortint *commet, shortint *pkey, integer *baf); +extern integer imakic_(integer *im, shortint *key, integer *value, shortint *commet); +extern integer imakii_(integer *im, shortint *key, integer *value, shortint *commet, shortint *pkey, integer *baf); +extern integer imaklc_(integer *im, shortint *key, integer *value, shortint *commet); +extern integer imakli_(integer *im, shortint *key, integer *value, shortint *commet, shortint *pkey, integer *baf); +extern integer imakrc_(integer *im, shortint *key, real *value, shortint *commet); +extern integer imakri_(integer *im, shortint *key, real *value, shortint *commet, shortint *pkey, integer *baf); +extern integer imaksc_(integer *im, shortint *key, shortint *value, shortint *commet); +extern integer imaksi_(integer *im, shortint *key, shortint *value, shortint *commet, shortint *pkey, integer *baf); +extern integer imalin_(integer *offset, integer *blksie); +extern integer imaplv_(integer *im, integer *lv, integer *pv, integer *ndim); +extern integer imastc_(integer *im, shortint *key, shortint *value, shortint *commet); +extern integer imasti_(integer *im, shortint *key, shortint *value, shortint *commet, shortint *pkey, integer *baf); +extern integer imastr_(integer *im, shortint *key, shortint *value); +extern integer imbln1_(integer *imdes, integer *nx); +extern integer imbln2_(integer *imdes, integer *nx, integer *ny); +extern integer imbln3_(integer *imdes, integer *nx, integer *ny, integer *nz); +extern integer imbtrn_(integer *im, integer *v1, integer *v2, integer *ndim); +extern integer imcfnl_(integer *fn); +extern integer imcopy_(shortint *old, shortint *new__); +extern integer imctrt_(integer *imdes, integer *dim, integer *x1arg, integer *x2arg, integer *step); +extern integer imdbcl_(shortint *m, integer *nx, integer *ny, integer *ax1, integer *ay1, integer *ax2, integer *ay2); +extern integer imdcal_(integer *dummy); +extern integer imdcle_(void); +extern integer imdclr_(integer *dummy); +extern integer imdcls_(shortint *devnae, integer *n); +extern integer imdcor_(integer *index); +extern integer imddae_(integer *gout, shortint *p, integer *npts, integer *ltype); +extern integer imddrr_(shortint *ch, integer *x, integer *y, integer *xsize, integer *ysize, integer *orien, integer *font); +extern integer imdect_(shortint *sectin, integer *ip, integer *x1, integer *x2, integer *step); +extern integer imdele_(shortint *image); +extern integer imdelf_(integer *im, shortint *key); +extern integer imdese_(integer *fn, shortint *instrn, integer *nwords); +extern integer imdfat_(shortint *gki); +extern integer imdfia_(shortint *p, integer *npts); +extern integer imdflh_(integer *dummy); +extern integer imdfot_(integer *font); +extern integer imdgey_(integer *nx, integer *ny, integer *x1, integer *y1, integer *x2, integer *y2); +extern integer imdint_(integer *tty, shortint *devnae); +extern integer imdlie_(integer *index); +extern integer imdmcl_(shortint *m, integer *nx, integer *ny, integer *ax1, integer *ay1, integer *ax2, integer *ay2); +extern integer imdops_(shortint *devnae, integer *n, integer *mode); +extern integer imdopv_(shortint *devnae, integer *frame, integer *color, integer *dd); +extern integer imdplt_(shortint *gki); +extern integer imdpmt_(shortint *gki); +extern integer imdpoe_(shortint *p, integer *npts); +extern integer imdpor_(shortint *p, integer *npts); +extern integer imdpus_(integer *ds, integer *frame, shortint *str1, shortint *str2, real *a, real *b, real *c__, real *d__, real *tx, real *ty, real *z1, real *z2, integer *ztr); +extern integer imdpuy_(shortint *m, integer *nx, integer *ny, integer *ax1, integer *ay1, integer *ax2, integer *ay2); +extern integer imdrco_(integer *tty, shortint *outstr, integer *maxch, integer *wcs, integer *pause); +extern integer imdret_(void); +extern integer imdseg_(shortint *reg, real *sx, real *sy, integer *snx, integer *sny, integer *dx, integer *dy, integer *dnx, integer *dny, shortint *objref); +extern integer imdses_(integer *chan, shortint *wcstet); +extern integer imdtet_(integer *xc, integer *yc, shortint *text, integer *n); +extern integer imdtxt_(shortint *gki); +extern integer imerr_(shortint *imagee, integer *errcoe); +extern integer imflpl_(integer *a, integer *npix); +extern integer imflps_(shortint *a, integer *npix); +extern integer imflsd_(integer *imdes); +extern integer imflsh_(integer *im, integer *bp, integer *vs, integer *ve, integer *ndim); +extern integer imflsi_(integer *imdes); +extern integer imflsl_(integer *imdes); +extern integer imflsr_(integer *imdes); +extern integer imflss_(integer *imdes); +extern integer imflsx_(integer *imdes); +extern integer imfluh_(integer *imdes); +extern integer imfnpy_(shortint *key, integer *strp, integer *nstr, integer *nextch, integer *sbuf); +extern integer imfnss_(integer *im, shortint *patcoe, integer *strp, integer *nstr, integer *nextch, integer *sbuf); +extern integer imgclr_(shortint *imspec, shortint *clustr, integer *maxch); +extern integer imgcom_(integer *im, shortint *key, shortint *commet); +extern integer imgime_(shortint *imspec, shortint *image, integer *maxch); +extern integer imgsen_(shortint *imspec, shortint *sectin, integer *maxch); +extern integer imgstr_(integer *im, shortint *key, shortint *outstr, integer *maxch); +extern integer iminfi_(integer *im, shortint *key, shortint *pkey, shortint *datate, integer *baf); +extern integer iminie_(integer *im, integer *lenimr); +extern integer imioff_(integer *im, integer *pixoff, integer *comprs, integer *devblz); +extern integer imisec_(integer *imdes, shortint *sectin); +extern integer immaky_(integer *im, integer *oim); +extern integer imopsf_(integer *im); +extern integer impakd_(doublereal *a, integer *b, integer *npix, integer *dtype); +extern integer impaki_(integer *a, integer *b, integer *npix, integer *dtype); +extern integer impakl_(integer *a, integer *b, integer *npix, integer *dtype); +extern integer impakr_(real *a, integer *b, integer *npix, integer *dtype); +extern integer impaks_(shortint *a, integer *b, integer *npix, integer *dtype); +extern integer impakx_(complex *a, integer *b, integer *npix, integer *dtype); +extern integer impare_(shortint *imspec, shortint *clustr, integer *szclur, shortint *ksectn, integer *szksen, shortint *sectin, integer *szsecn, integer *clindx, integer *clsize); +extern integer imphis_(integer *im, shortint *key, shortint *text, shortint *pkey, integer *baf); +extern integer impkbc_(integer *im, shortint *key, logical *bval, shortint *commet); +extern integer impkdc_(integer *im, shortint *key, doublereal *dval, shortint *commet); +extern integer impkic_(integer *im, shortint *key, integer *ival, shortint *commet); +extern integer impklc_(integer *im, shortint *key, integer *lval, shortint *commet); +extern integer impkrc_(integer *im, shortint *key, real *rval, shortint *commet); +extern integer impksc_(integer *im, shortint *key, shortint *value, shortint *commet); +extern integer impmlr_(integer *im, integer *bp); +extern integer impstc_(integer *im, shortint *key, shortint *value, shortint *commet); +extern integer impstr_(integer *im, shortint *key, shortint *value); +extern integer imputb_(integer *im, shortint *key, logical *bval); +extern integer imputd_(integer *im, shortint *key, doublereal *dval); +extern integer imputf_(integer *im, shortint *file, shortint *pkey, integer *baf); +extern integer imputh_(integer *im, shortint *key, shortint *text); +extern integer imputi_(integer *im, shortint *key, integer *ival); +extern integer imputl_(integer *im, shortint *key, integer *lval); +extern integer imputr_(integer *im, shortint *key, real *rval); +extern integer imputs_(integer *im, shortint *key, shortint *value); +extern integer imrart_(integer *piv, shortint *fname, integer *nlines, integer *insert); +extern integer imrbpx_(integer *im, shortint *obuf, integer *totpix, integer *v, integer *vinc); +extern integer imrdpx_(integer *im, shortint *obuf, integer *npix, integer *v, integer *xstep); +extern integer imrene_(shortint *old, shortint *new__); +extern integer imrenf_(integer *im, shortint *oldkey, shortint *newkey); +extern integer imrmbs_(integer *im); +extern integer imsamp_(shortint *a, shortint *b, integer *npix, integer *szpixl, integer *step); +extern integer imsetf_(integer *fd, integer *im); +extern integer imseti_(integer *im, integer *param, integer *value); +extern integer imsetr_(integer *im, integer *param, real *value); +extern integer imsmpl_(integer *a, integer *b, integer *npix, integer *step); +extern integer imsmps_(shortint *a, shortint *b, integer *npix, integer *step); +extern integer imsslv_(integer *im, integer *vs, integer *ve, integer *v, integer *vinc, integer *npix); +extern integer imstas_(integer *im, integer *option, shortint *outstr, integer *maxch); +extern integer imtcle_(integer *imt); +extern integer imtrew_(integer *imt); +extern integer imunmp_(integer *im); +extern integer imupkd_(integer *a, doublereal *b, integer *npix, integer *dtype); +extern integer imupki_(integer *a, integer *b, integer *npix, integer *dtype); +extern integer imupkl_(integer *a, integer *b, integer *npix, integer *dtype); +extern integer imupkr_(integer *a, real *b, integer *npix, integer *dtype); +extern integer imupks_(integer *a, shortint *b, integer *npix, integer *dtype); +extern integer imupkx_(integer *a, complex *b, integer *npix, integer *dtype); +extern integer imwbpx_(integer *im, shortint *ibuf, integer *totpix, integer *v, integer *vinc); +extern integer imwrie_(integer *imdes, shortint *buf, integer *nchars, integer *offset); +extern integer imwrpx_(integer *im, shortint *buf, integer *npix, integer *v, integer *xstep); +extern integer inbfid_(integer *in, integer *npts, integer *nvars__); +extern integer inbfir_(integer *in, integer *npts, integer *nvars__); +extern integer incopd_(integer *insrc, integer *indst); +extern integer incopr_(integer *insrc, integer *indst); +extern integer indevd_(integer *nl, doublereal *x, doublereal *y, doublereal *w, integer *rejpts, integer *npts, integer *nvars__, doublereal *lowret, doublereal *highrt, doublereal *grow, integer *nrejet, integer *newret); +extern integer indevr_(integer *nl, real *x, real *y, real *w, integer *rejpts, integer *npts, integer *nvars__, real *lowret, real *highrt, real *grow, integer *nrejet, integer *newret); +extern integer indumd_(integer *fd, integer *in); +extern integer indumr_(integer *fd, integer *in); +extern integer inerrd_(integer *in, integer *nl, doublereal *x, doublereal *y, doublereal *wts, integer *npts, integer *nvars__, doublereal *variae, doublereal *chisqr, doublereal *scattr, doublereal *rms, doublereal *errors); +extern integer inerrr_(integer *in, integer *nl, real *x, real *y, real *wts, integer *npts, integer *nvars__, real *variae, real *chisqr, real *scattr, real *rms, real *errors); +extern integer infitd_(integer *in, integer *nl, doublereal *x, doublereal *y, doublereal *wts, integer *npts, integer *nvars__, integer *wtflag, integer *stat); +extern integer infitr_(integer *in, integer *nl, real *x, real *y, real *wts, integer *npts, integer *nvars__, integer *wtflag, integer *stat); +extern integer infred_(integer *in); +extern integer infrer_(integer *in); +extern integer ingaxd_(integer *in, integer *gt, integer *nl, integer *axis, doublereal *x, doublereal *y, doublereal *z__, integer *npts, integer *nvars__); +extern integer ingaxr_(integer *in, integer *gt, integer *nl, integer *axis, real *x, real *y, real *z__, integer *npts, integer *nvars__); +extern integer ingchd_(integer *in, integer *type__); +extern integer ingchr_(integer *in, integer *type__); +extern integer ingcod_(integer *in, shortint *cmdstr, integer *gp, integer *gt, integer *nl, doublereal *x, doublereal *y, doublereal *wts, shortint *names, integer *npts, integer *nvars__, integer *lennae, integer *newgrh); +extern integer ingcor_(integer *in, shortint *cmdstr, integer *gp, integer *gt, integer *nl, real *x, real *y, real *wts, shortint *names, integer *npts, integer *nvars__, integer *lennae, integer *newgrh); +extern integer ingd1d_(integer *in, integer *gp, doublereal *x, doublereal *y, doublereal *wts, integer *npts, real *wx, real *wy); +extern integer ingd1r_(integer *in, integer *gp, real *x, real *y, real *wts, integer *npts, real *wx, real *wy); +extern integer ingdad_(integer *in, shortint *file, doublereal *x, shortint *names, integer *npts, integer *nvars__, integer *lennae); +extern integer ingdar_(integer *in, shortint *file, real *x, shortint *names, integer *npts, integer *nvars__, integer *lennae); +extern integer ingded_(integer *in, integer *gp, integer *gt, integer *nl, doublereal *x, doublereal *y, doublereal *wts, integer *npts, integer *nvars__, real *wx, real *wy); +extern integer ingder_(integer *in, integer *gp, integer *gt, integer *nl, real *x, real *y, real *wts, integer *npts, integer *nvars__, real *wx, real *wy); +extern integer ingdey_(integer *in, integer *nvars__, integer *newgrh); +extern integer ingerd_(integer *in, shortint *file, integer *nl, doublereal *x, doublereal *y, doublereal *wts, integer *npts, integer *nvars__); +extern integer ingerr_(integer *in, shortint *file, integer *nl, real *x, real *y, real *wts, integer *npts, integer *nvars__); +extern integer ingfid_(integer *in, integer *gp, shortint *cursor, integer *gt, integer *nl, doublereal *x, doublereal *y, doublereal *wts, shortint *names, integer *npts, integer *nvars__, integer *lennae, integer *wtflag, integer *stat); +extern integer ingfir_(integer *in, integer *gp, shortint *cursor, integer *gt, integer *nl, real *x, real *y, real *wts, shortint *names, integer *npts, integer *nvars__, integer *lennae, integer *wtflag, integer *stat); +extern integer ingg1d_(integer *in, integer *gp, integer *gt, doublereal *x, doublereal *y, doublereal *wts, integer *npts); +extern integer ingg1r_(integer *in, integer *gp, integer *gt, real *x, real *y, real *wts, integer *npts); +extern integer ingg2d_(integer *in, integer *gp, integer *gt, doublereal *x, doublereal *y, integer *npts); +extern integer ingg2r_(integer *in, integer *gp, integer *gt, real *x, real *y, integer *npts); +extern integer inggel_(integer *in, integer *xtype, integer *xnum, shortint *label, shortint *units, integer *maxch); +extern integer inggfd_(integer *in, integer *gp, integer *gt, integer *nl, doublereal *xin, doublereal *wts, integer *npts, integer *nvars__); +extern integer inggfr_(integer *in, integer *gp, integer *gt, integer *nl, real *xin, real *wts, integer *npts, integer *nvars__); +extern integer inggrd_(integer *in, integer *gp, integer *gt, integer *nl, doublereal *x, doublereal *y, doublereal *wts, integer *npts, integer *nvars__); +extern integer inggrr_(integer *in, integer *gp, integer *gt, integer *nl, real *x, real *y, real *wts, integer *npts, integer *nvars__); +extern integer ingkey_(integer *in, integer *key, integer *axis, integer *type__, integer *varnum); +extern integer ingpad_(integer *in, integer *nl, doublereal *x, doublereal *y, doublereal *wts, integer *npts, integer *nvars__, integer *gt); +extern integer ingpar_(integer *in, integer *nl, real *x, real *y, real *wts, integer *npts, integer *nvars__, integer *gt); +extern integer ingred_(integer *in, shortint *file, integer *nl, doublereal *x, doublereal *y, doublereal *wts, shortint *names, integer *npts, integer *nvars__, integer *lennae); +extern integer ingrer_(integer *in, shortint *file, integer *nl, real *x, real *y, real *wts, shortint *names, integer *npts, integer *nvars__, integer *lennae); +extern integer ingshd_(integer *in, shortint *file); +extern integer ingshr_(integer *in, shortint *file); +extern integer ingstr_(integer *in, integer *param, shortint *str, integer *maxch); +extern integer ingtie_(integer *in, shortint *file, integer *gt); +extern integer ingu1d_(integer *in, integer *gp, doublereal *x, doublereal *y, doublereal *wts, doublereal *userws, integer *npts, real *wx, real *wy); +extern integer ingu1r_(integer *in, integer *gp, real *x, real *y, real *wts, real *userws, integer *npts, real *wx, real *wy); +extern integer inguad_(integer *keynum, integer *in, integer *nl, doublereal *x, doublereal *y, doublereal *z__, integer *npts, integer *nvars__); +extern integer inguar_(integer *keynum, integer *in, integer *nl, real *x, real *y, real *z__, integer *npts, integer *nvars__); +extern integer ingucd_(integer *in, integer *gp, integer *gt, integer *nl, doublereal *x, doublereal *y, doublereal *wts, integer *npts, integer *nvars__, integer *newgrh); +extern integer ingucr_(integer *in, integer *gp, integer *gt, integer *nl, real *x, real *y, real *wts, integer *npts, integer *nvars__, integer *newgrh); +extern integer inguft_(integer *in, integer *gp, integer *gt, integer *nl, real *wx, real *wy, integer *wcs, integer *key, shortint *cmd); +extern integer ingund_(integer *in, integer *gp, integer *gt, integer *nl, doublereal *x, doublereal *y, doublereal *wts, doublereal *userws, integer *npts, integer *nvars__, real *wx, real *wy); +extern integer ingunr_(integer *in, integer *gp, integer *gt, integer *nl, real *x, real *y, real *wts, real *userws, integer *npts, integer *nvars__, real *wx, real *wy); +extern integer ingvad_(integer *in, shortint *file, integer *nvars__); +extern integer ingvar_(integer *in, shortint *file, integer *nvars__); +extern integer ingvsd_(integer *in, shortint *file, integer *nl, doublereal *x, doublereal *y, doublereal *wts, shortint *names, integer *npts, integer *nvars__, integer *lennae, integer *gt); +extern integer ingvsr_(integer *in, shortint *file, integer *nl, real *x, real *y, real *wts, shortint *names, integer *npts, integer *nvars__, integer *lennae, integer *gt); +extern integer ininid_(integer *in, integer *func, integer *dfunc, doublereal *param, doublereal *dparam, integer *nparas, integer *plist, integer *nfpars); +extern integer ininir_(integer *in, integer *func, integer *dfunc, real *param, real *dparam, integer *nparas, integer *plist, integer *nfpars); +extern integer initag_(void); +extern integer initut_(void); +extern integer initzi_(integer *ix, integer *iy, integer *iz, integer *lin3, integer *itop, integer *ient); +extern integer initzs_(integer *ix, integer *iy, integer *iz, integer *lin3, integer *itop, integer *ient); +extern integer initzt_(integer *ix, integer *iy, integer *iz, integer *lin3, integer *itop, integer *ient); +extern integer inlimd_(integer *in, doublereal *x, integer *npts, integer *nvars__); +extern integer inlimr_(integer *in, real *x, integer *npts, integer *nvars__); +extern integer innlid_(integer *in, integer *nl); +extern integer innlir_(integer *in, integer *nl); +extern integer inpkey_(integer *in, integer *key, integer *axis, integer *type__, integer *varnum); +extern integer inpstr_(integer *in, integer *param, shortint *str); +extern integer inputd_(integer *in, integer *param, doublereal *dval); +extern integer inputi_(integer *in, integer *param, integer *ival); +extern integer inputp_(integer *in, integer *param, integer *pval); +extern integer inputr_(integer *in, integer *param, real *rval); +extern integer inrefd_(integer *in, integer *nl, doublereal *x, doublereal *y, doublereal *wts, integer *npts, integer *nvars__, integer *wtflag); +extern integer inrefr_(integer *in, integer *nl, real *x, real *y, real *wts, integer *npts, integer *nvars__, integer *wtflag); +extern integer inrejd_(integer *in, integer *nl, doublereal *x, doublereal *y, doublereal *w, integer *npts, integer *nvars__, integer *wtflag); +extern integer inrejr_(integer *in, integer *nl, real *x, real *y, real *w, integer *npts, integer *nvars__, integer *wtflag); +extern integer intrde_(void); +extern integer intree_(void); +extern integer intrrt_(void); +extern integer intzi_(real *xx, real *yy, real *zz, integer *lin3, integer *itop); +extern integer intzs_(real *xx, real *yy, real *zz, integer *lin3, integer *itop); +extern integer intzt_(real *xx, real *yy, real *zz, integer *lin3, integer *itop); +extern integer isosrb_(void); +extern integer isosrf_(real *t, integer *lu, integer *mu, integer *lv, integer *mv, integer *mw, real *eye, integer *muvwp2, real *slab, real *tiso, integer *iflag); +extern integer iwcfis_(integer *iw); +extern integer iwcloe_(integer *iw); +extern integer iwents_(integer *mw, integer *iw, integer *ndim); +extern integer iwfb2m_(integer *iw, real *fbx, real *fby, real *imx, real *imy); +extern integer iwim2b_(integer *iw, real *imx, real *imy, real *fbx, real *fby); +extern integer iwputr_(integer *fd, integer *iw, integer *axis, integer *ctype, shortint *fmt1, shortint *fmt2, integer *maxinx); +extern integer iwputy_(integer *iw, doublereal *new__, doublereal *old, integer *ndim, shortint *kwfort, integer *kwtype, integer *kwindx); +extern integer iwsetp_(integer *mw, integer *im); +extern integer kardbf_(integer *chan, shortint *buf, integer *maxbys, integer *offset); +extern integer kardgd_(integer *chan, shortint *buf, integer *maxbys, integer *offset); +extern integer kardlp_(integer *chan, shortint *buf, integer *maxbys, integer *offset); +extern integer kardpl_(integer *chan, shortint *buf, integer *maxbys, integer *offset); +extern integer kardpr_(integer *chan, shortint *buf, integer *maxbys, integer *offset); +extern integer kardsf_(integer *chan, shortint *buf, integer *maxbys, integer *offset); +extern integer kawrbf_(integer *chan, shortint *buf, integer *nbytes, integer *offset); +extern integer kawrgd_(integer *chan, shortint *buf, integer *nbytes, integer *offset); +extern integer kawrlp_(integer *chan, shortint *buf, integer *nbytes, integer *offset); +extern integer kawrpl_(integer *chan, shortint *buf, integer *nbytes, integer *offset); +extern integer kawrpr_(integer *chan, shortint *buf, integer *nbytes, integer *offset); +extern integer kawrsf_(integer *chan, shortint *buf, integer *nbytes, integer *offset); +extern integer kawtbf_(integer *chan, integer *status); +extern integer kawtgd_(integer *chan, integer *status); +extern integer kawtlp_(integer *chan, integer *status); +extern integer kawtpl_(integer *chan, integer *status); +extern integer kawtpr_(integer *chan, integer *status); +extern integer kawtsf_(integer *chan, integer *status); +extern integer kbzard_(integer *device, integer *chan, shortint *obuf, integer *maxbys, integer *loffst); +extern integer kbzawr_(integer *device, integer *chan, shortint *ibuf, integer *nbytes, integer *loffst); +extern integer kbzawt_(integer *device, integer *chan, integer *status); +extern integer kbzcls_(integer *device, integer *chan, integer *status); +extern integer kbzopn_(integer *device, shortint *osfn, integer *mode, integer *chan); +extern integer kbzstt_(integer *device, integer *chan, integer *what, integer *lvalue); +extern integer kclcpr_(integer *pid, integer *exitss); +extern integer kcldir_(integer *chan, integer *status); +extern integer kcldpr_(integer *jobcoe, integer *killfg, integer *exitss); +extern integer kclsbf_(integer *chan, integer *status); +extern integer kclsgd_(integer *chan, integer *status); +extern integer kclslp_(integer *chan, integer *status); +extern integer kclspl_(integer *chan, integer *status); +extern integer kclssf_(integer *chan, integer *status); +extern integer kclstx_(integer *chan, integer *status); +extern integer kclsty_(integer *chan, integer *status); +extern integer kdvall_(shortint *device, integer *allflg, integer *status); +extern integer kdvown_(shortint *device, shortint *owner, integer *maxch, integer *status); +extern integer kfacss_(shortint *osfn, integer *mode, integer *type__, integer *status); +extern integer kfaloc_(shortint *osfn, integer *nbytes, integer *status); +extern integer kfchdr_(shortint *dirnae, integer *status); +extern integer kfdele_(shortint *osfn, integer *status); +extern integer kfgcwd_(shortint *outstr, integer *maxch, integer *nchars); +extern integer kfinfo_(shortint *osfn, integer *fi, integer *status); +extern integer kflstx_(integer *chan, integer *status); +extern integer kflsty_(integer *chan, integer *status); +extern integer kfmkcp_(shortint *oldosn, shortint *newosn, integer *status); +extern integer kfmkdr_(shortint *osfn, integer *status); +extern integer kfpath_(shortint *vfn, shortint *osfn, integer *maxch, integer *nchars); +extern integer kfprot_(shortint *osfn, integer *protfg, integer *status); +extern integer kfrnam_(shortint *oldosn, shortint *newosn, integer *status); +extern integer kfsubd_(shortint *osdir, integer *maxch, shortint *subdir, integer *nchars); +extern integer kfutim_(shortint *osfn, integer *atime, integer *mtime, integer *status); +extern integer kfxdir_(shortint *vfn, shortint *osdir, integer *maxch, integer *nchars); +extern integer kgettx_(integer *chan, shortint *text, integer *maxch, integer *status); +extern integer kgetty_(integer *chan, shortint *text, integer *maxch, integer *status); +extern integer kgfdir_(integer *chan, shortint *osfn, integer *maxch, integer *status); +extern integer kience_(integer *data, shortint *str, integer *nchars); +extern integer kienvt_(shortint *name__, shortint *value); +extern integer kierrr_(integer *server); +extern integer kiflux_(integer *device, integer *chan, integer *status); +extern integer kifman_(shortint *vfn, shortint *pkosfn, integer *maxch); +extern integer kifren_(integer *chan); +extern integer kiinit_(integer *inchan, integer *outchn, integer *errchn, integer *device, integer *devtye); +extern integer kintpr_(integer *pid, integer *vex, integer *status); +extern integer kishot_(integer *fd); +extern integer kixnoe_(shortint *r1, shortint *r2, integer *maxch); +extern integer knottx_(integer *chan, integer *loffst); +extern integer knotty_(integer *chan, integer *loffst); +extern integer kopcpr_(shortint *proces, integer *inchan, integer *outchn, integer *pid); +extern integer kopdir_(shortint *osfn, integer *chan); +extern integer kopdpr_(shortint *proces, shortint *bkgfie, shortint *bkgmsg, integer *jobcoe); +extern integer kopnbf_(shortint *osfn, integer *mode, integer *chan); +extern integer kopngd_(shortint *osfn, integer *mode, integer *chan); +extern integer kopnlp_(shortint *osfn, integer *mode, integer *chan); +extern integer kopnpl_(shortint *osfn, integer *mode, integer *chan); +extern integer kopnsf_(shortint *osfn, integer *mode, integer *chan); +extern integer kopntx_(shortint *osfn, integer *mode, integer *chan); +extern integer kopnty_(shortint *osfn, integer *mode, integer *chan); +extern integer koscmd_(shortint *oscmd, shortint *stdine, shortint *stdoue, shortint *stdere, integer *status); +extern integer kputtx_(integer *chan, shortint *text, integer *nchars, integer *status); +extern integer kputty_(integer *chan, shortint *text, integer *nchars, integer *status); +extern integer ksared_(integer *server, shortint *buf, integer *maxbys); +extern integer ksawat_(integer *server, integer *status); +extern integer ksawre_(integer *server, shortint *buf, integer *nbytes); +extern integer ksektx_(integer *chan, integer *loffst, integer *status); +extern integer ksekty_(integer *chan, integer *loffst, integer *status); +extern integer kserrr_(integer *errcoe, shortint *errmsg); +extern integer kservr_(integer *in, integer *out, integer *buflen); +extern integer ksfman_(shortint *vfn, shortint *osfn, integer *maxch); +extern integer ksloaf_(integer *bfdd); +extern integer ksloax_(integer *txdd); +extern integer ksop2r_(integer *opcode, integer *subcoe, shortint *ostr, shortint *sstr); +extern integer ksttbf_(integer *chan, integer *what, integer *lvalue); +extern integer ksttgd_(integer *chan, integer *what, integer *lvalue); +extern integer ksttlp_(integer *chan, integer *what, integer *lvalue); +extern integer ksttpl_(integer *chan, integer *what, integer *lvalue); +extern integer ksttpr_(integer *chan, integer *what, integer *lvalue); +extern integer ksttsf_(integer *chan, integer *what, integer *lvalue); +extern integer kstttx_(integer *chan, integer *what, integer *lvalue); +extern integer ksttty_(integer *chan, integer *what, integer *lvalue); +extern integer kszfif_(integer *in, integer *out, integer *iobuf, integer *leniof, integer *bfdd); +extern integer kszfit_(integer *in, integer *out, integer *iobuf, integer *leniof); +extern integer kszfix_(integer *in, integer *out, integer *iobuf, integer *leniof, integer *txdd); +extern integer ktzcls_(integer *device, integer *chan, integer *status); +extern integer ktzfls_(integer *device, integer *chan, integer *status); +extern integer ktzget_(integer *device, integer *chan, shortint *obuf, integer *maxch, integer *status); +extern integer ktznot_(integer *device, integer *chan, integer *loffst); +extern integer ktzopn_(integer *device, shortint *osfn, integer *mode, integer *chan); +extern integer ktzput_(integer *device, integer *chan, shortint *ibuf, integer *nchars, integer *status); +extern integer ktzsek_(integer *device, integer *chan, integer *loffst, integer *status); +extern integer ktzstt_(integer *device, integer *chan, integer *what, integer *lvalue); +extern integer kurv1s_(integer *n, real *x, real *y, real *slop1, real *slopn, real *xp, real *yp, real *temp, real *s, real *sigma, integer *islpsw); +extern integer kurv2s_(real *t, real *xs, real *ys, integer *n, real *x, real *y, real *xp, real *yp, real *s, real *sigma, integer *nslpsw, real *slp); +extern integer labmod_(char *fmtx, char *fmty, integer *numx, integer *numy, integer *isizx, integer *isizy, integer *ixdec, integer *iydec, integer *ixor, ftnlen fmtx_len, ftnlen fmty_len); +extern integer lastd_(void); +extern integer line3_(real *ua, real *va, real *wa, real *ub, real *vb, real *wb); +extern integer line3w_(real *xa, real *ya, real *xb, real *yb); +extern integer line_(real *x1, real *y1, real *x2, real *y2); +extern integer lined_(real *xa, real *ya, real *xb, real *yb); +extern integer lnocle_(integer *lp); +extern integer lnosae_(integer *lp, integer *line, integer *loffst, integer *ltag); +extern integer lpzard_(integer *chan, shortint *buf, integer *maxbys, integer *offset); +extern integer lpzawe_(integer *chan, shortint *buf, integer *nbytes, integer *offset); +extern integer lpzawt_(integer *chan, integer *nbytes); +extern integer lubksb_(real *a, integer *n, integer *np, integer *indx, real *b); +extern integer ludcmp_(real *a, integer *n, integer *np, integer *indx, real *d__); +extern integer luminv_(real *a, integer *n, integer *np); +extern integer maideh_(void); +extern integer maskce_(integer *colors); +extern integer masken_(integer *colors, integer *maskvs, integer *nmasks); +extern integer maskfc_(integer *data, shortint *func, integer *args, integer *nargs, integer *val); +extern integer maskod_(integer *op, shortint *operad, integer *o); +extern integer maxmin_(integer *im, real *zmin, real *zmax, integer *nsamps); +extern integer mcflsh_(void); +extern integer mefakb_(shortint *keywod, integer *value, shortint *commet, integer *pn); +extern integer mefakc_(shortint *keywod, shortint *value, integer *len, shortint *commet, integer *pn); +extern integer mefakd_(shortint *keywod, doublereal *value, shortint *commet, integer *precin, integer *pn); +extern integer mefaki_(shortint *keywod, integer *value, shortint *commet, integer *pn); +extern integer mefakr_(shortint *keywod, real *value, shortint *commet, integer *precin, integer *pn); +extern integer mefape_(integer *mefi, integer *mefo); +extern integer mefcle_(integer *mef); +extern integer mefcon_(integer *mefi, integer *mefo, integer *gn); +extern integer mefcpl_(integer *spool, integer *mef); +extern integer mefdur_(integer *out, shortint *hdrfne); +extern integer mefenb_(shortint *keywod, integer *param, shortint *card, shortint *commet); +extern integer mefenc_(shortint *keywod, shortint *param, integer *maxch, shortint *card, shortint *commet); +extern integer mefend_(shortint *keywod, doublereal *param, shortint *card, shortint *commet, integer *precin); +extern integer mefene_(shortint *datesr, integer *szdate); +extern integer mefeni_(shortint *keywod, integer *param, shortint *card, shortint *commet); +extern integer mefenl_(shortint *keywod, integer *param, shortint *card, shortint *commet); +extern integer mefenr_(shortint *keywod, real *param, shortint *card, shortint *commet, integer *precin); +extern integer mefens_(shortint *root, shortint *keywod, integer *axisno); +extern integer meffis_(shortint *fname, integer *acmode); +extern integer meffiw_(integer *hdrp, shortint *key, shortint *keywvl); +extern integer mefget_(shortint *card, shortint *commet, integer *maxch); +extern integer mefglm_(shortint *time, shortint *date, integer *limtie); +extern integer mefgsr_(integer *mef, shortint *key, shortint *outstr, integer *maxch); +extern integer mefgvb_(shortint *card, integer *bval); +extern integer mefgvd_(shortint *card, doublereal *dval); +extern integer mefgvi_(shortint *card, integer *ival); +extern integer mefgvr_(shortint *card, real *rval); +extern integer mefgvt_(shortint *card, shortint *outstr, integer *maxch); +extern integer mefksn_(shortint *ksectn, shortint *extnae, integer *extver); +extern integer mefkve_(shortint *outstr, integer *lextye, shortint *extnae, integer *extver); +extern integer mefpae_(integer *fd, integer *offset); +extern integer mefpar_(integer *out, shortint *card); +extern integer mefsel_(integer *versin, integer *plsize, shortint *imhdr, shortint *title, integer *ctime, integer *mtime, integer *limtie, real *minval, real *maxval, integer *mef); +extern integer mefskt_(integer *mef); +extern integer mefwcb_(shortint *kname, integer *kvalue, shortint *kcomm, integer *fd); +extern integer mefwcc_(shortint *kname, shortint *kvalue, shortint *kcomm, integer *fd); +extern integer mefwci_(shortint *kname, integer *kvalue, shortint *kcomm, integer *fd); +extern integer mefwcr_(shortint *kname, real *kvalue, shortint *kcomm, integer *fd); +extern integer mefwrk_(integer *out, integer *olines); +extern integer mefwrl_(integer *mef, shortint *title, integer *ctime, integer *mtime, integer *limtie, real *minval, real *maxval, shortint *plbuf, integer *naxis, integer *axlen); +extern integer mefwrr_(integer *mefi, integer *mefo, logical *inphdu); +extern integer mefwrt_(integer *out); +extern integer miiwrc_(integer *fd, integer *spp, integer *nchars); +extern integer miiwrd_(integer *fd, integer *spp, integer *nelem); +extern integer miiwri_(integer *fd, integer *spp, integer *nelem); +extern integer miiwrl_(integer *fd, integer *spp, integer *nelem); +extern integer miiwrr_(integer *fd, integer *spp, integer *nelem); +extern integer miiwrs_(integer *fd, integer *spp, integer *nelem); +extern integer minmax_(real *z__, integer *l, integer *mm, integer *nn, integer *issizm, real *aash, integer *joffdt); +extern integer miocle_(integer *mp); +extern integer miosee_(integer *mp, integer *vs, integer *ve, integer *ndim); +extern integer miosei_(integer *mp, integer *param, integer *value); +extern integer mmask_(void); +extern integer mrinvt_(real *a, real *b, integer *n); +extern integer mtalle_(shortint *mtname); +extern integer mtclen_(integer *level, integer *stale, integer *out); +extern integer mtclre_(void); +extern integer mtdeae_(shortint *mtname, integer *rewine); +extern integer mtence_(shortint *outstr, integer *maxch, shortint *device, integer *fileno, integer *recno, shortint *attrl); +extern integer mtfnae_(shortint *mtname, integer *fileno, shortint *outstr, integer *maxch); +extern integer mtgets_(shortint *mtname, integer *mt); +extern integer mtglok_(shortint *mtname, shortint *lockfe, integer *maxch); +extern integer mtloce_(shortint *device, shortint *lockfe, integer *maxch); +extern integer mtpare_(shortint *mtname, shortint *device, integer *szdeve, integer *file, integer *record, shortint *attrl, integer *szattl); +extern integer mtposn_(shortint *mtname, integer *file, integer *record); +extern integer mtpute_(integer *fd, shortint *text); +extern integer mtreae_(shortint *mtname, integer *mt); +extern integer mtrewd_(shortint *mtname, integer *initce); +extern integer mtsavd_(integer *fd, shortint *keywod, integer *value); +extern integer mtsavs_(integer *mt); +extern integer mtstas_(integer *out, shortint *mtname); +extern integer mtsync_(integer *status); +extern integer mtupde_(integer *mt); +extern integer mwaxtn_(doublereal *oltm, doublereal *oltv, doublereal *nltm, doublereal *nltv, integer *pdim, doublereal *ltm, doublereal *ltv, integer *ax, integer *ndim); +extern integer mwc2td_(integer *act, doublereal *x1, doublereal *y1, doublereal *x2, doublereal *y2); +extern integer mwc2tr_(integer *act, real *x1, real *y1, real *x2, real *y2); +extern integer mwcloe_(integer *mw); +extern integer mwctfe_(integer *ct); +extern integer mwctrd_(integer *act, doublereal *p1, doublereal *p2, integer *ndim); +extern integer mwctrr_(integer *act, real *p1, real *p2, integer *ndim); +extern integer mwgaxp_(integer *mw, integer *axno, integer *axval, integer *ndim); +extern integer mwgaxt_(integer *mw, integer *axbits, integer *axis, integer *naxes); +extern integer mwgltd_(integer *mw, doublereal *ltm, doublereal *ltv, integer *ndim); +extern integer mwgltr_(integer *mw, real *ltm, real *ltv, integer *ndim); +extern integer mwgsym_(integer *mw, shortint *outstr, integer *maxch); +extern integer mwgwas_(integer *mw, integer *axis, shortint *attrie, shortint *valstr, integer *maxch); +extern integer mwgwsd_(integer *mw, integer *axis, doublereal *pv, doublereal *wv, integer *npts); +extern integer mwgwsr_(integer *mw, integer *axis, real *pv, real *wv, integer *npts); +extern integer mwgwtd_(integer *mw, doublereal *r__, doublereal *w, doublereal *cd, integer *ndim); +extern integer mwgwtr_(integer *mw, real *r__, real *w, real *cd, integer *ndim); +extern integer mwinvd_(doublereal *oltm, doublereal *nltm, integer *ndim); +extern integer mwinvr_(real *oltm, real *nltm, integer *ndim); +extern integer mwload_(integer *mw, integer *bp); +extern integer mwloam_(integer *mw, integer *im); +extern integer mwltrd_(doublereal *p1, doublereal *p2, doublereal *ltm, doublereal *ltv, integer *ndim); +extern integer mwltrr_(real *p1, real *p2, real *ltm, real *ltv, integer *ndim); +extern integer mwlubb_(doublereal *a, integer *ix, doublereal *b, integer *ndim); +extern integer mwlude_(doublereal *a, integer *ix, integer *ndim); +extern integer mwmkid_(doublereal *ltm, integer *ndim); +extern integer mwmkir_(real *ltm, integer *ndim); +extern integer mwmmud_(doublereal *a, doublereal *b, doublereal *c__, integer *ndim); +extern integer mwmmur_(real *a, real *b, real *c__, integer *ndim); +extern integer mwnewm_(integer *mw, shortint *system, integer *ndim); +extern integer mwrote_(integer *mw, real *theta, real *center, integer *axbits); +extern integer mwsavm_(integer *mw, integer *im); +extern integer mwsaxp_(integer *mw, integer *axno, integer *axval, integer *ndim); +extern integer mwscae_(integer *mw, real *scale, integer *axbits); +extern integer mwsdes_(integer *mw); +extern integer mwseti_(integer *mw, integer *param, integer *value); +extern integer mwshit_(integer *mw, real *shift, integer *axbits); +extern integer mwshow_(integer *mw, integer *fd, integer *what); +extern integer mwsltd_(integer *mw, doublereal *ltm, doublereal *ltv, integer *ndim); +extern integer mwsltr_(integer *mw, real *ltm, real *ltv, integer *ndim); +extern integer mwssym_(integer *mw, shortint *system); +extern integer mwswas_(integer *mw, integer *axis, shortint *attrie, shortint *valstr); +extern integer mwswsd_(integer *mw, integer *axis, doublereal *pv, doublereal *wv, integer *npts); +extern integer mwswsr_(integer *mw, integer *axis, real *pv, real *wv, integer *npts); +extern integer mwswtd_(integer *mw, doublereal *r__, doublereal *w, doublereal *cd, integer *ndim); +extern integer mwswte_(integer *mw, integer *axis, integer *naxes, shortint *wtype, shortint *wattr); +extern integer mwswtr_(integer *mw, real *r__, real *w, real *cd, integer *ndim); +extern integer mwtrad_(integer *mw, doublereal *ltv1, doublereal *ltm, doublereal *ltv2, integer *ndim); +extern integer mwtrar_(integer *mw, real *ltv1, real *ltm, real *ltv2, integer *ndim); +extern integer mwv1td_(integer *act, doublereal *x1, doublereal *x2, integer *npts); +extern integer mwv1tr_(integer *act, real *x1, real *x2, integer *npts); +extern integer mwv2td_(integer *act, doublereal *x1, doublereal *y1, doublereal *x2, doublereal *y2, integer *npts); +extern integer mwv2tr_(integer *act, real *x1, real *y1, real *x2, real *y2, integer *npts); +extern integer mwvmud_(doublereal *a, doublereal *b, doublereal *c__, integer *ndim); +extern integer mwvmur_(real *a, real *b, real *c__, integer *ndim); +extern integer mwvtrd_(integer *ct, doublereal *v1, doublereal *v2, integer *ndim, integer *npts); +extern integer mwvtrr_(integer *ct, real *v1, real *v2, integer *ndim, integer *npts); +extern integer mxmy_(integer *ix, integer *iy); +extern integer mzscae_(integer *im, integer *zpm, integer *bpm, real *contrt, integer *maxpix, real *z1, real *z2); +extern integer newpie_(shortint *param, integer *im); +extern integer newtie_(shortint *param, integer *im); +extern integer obscle_(integer *obs); +extern integer obsgsr_(integer *obs, shortint *param, shortint *str, integer *maxchr); +extern integer obsimn_(integer *obs, integer *im, shortint *obsery, integer *verboe, logical *newobs, logical *obshed); +extern integer obsino_(integer *obs, integer *fd); +extern integer obslog_(integer *obs, shortint *task, shortint *params, integer *fd); +extern integer oifacs_(integer *kernel, shortint *root, shortint *extn, integer *acmode, integer *status); +extern integer oifcle_(integer *im, integer *status); +extern integer oifcoy_(integer *kernel, shortint *oldrot, shortint *oldexn, shortint *newrot, shortint *newexn, integer *status); +extern integer oifdee_(integer *kernel, shortint *root, shortint *extn, integer *status); +extern integer oifgpe_(shortint *pixfie, shortint *hdrfie, shortint *path, integer *maxch); +extern integer oifmke_(integer *im, shortint *pixfie, integer *maxch); +extern integer oifopn_(integer *kernel, integer *im, integer *oim, shortint *root, shortint *extn, shortint *ksectn, integer *clindx, integer *clsize, integer *acmode, integer *status); +extern integer oifopx_(integer *im, integer *status); +extern integer oifree_(integer *kernel, shortint *oldrot, shortint *oldexn, shortint *newrot, shortint *newexn, integer *status); +extern integer oiftrm_(shortint *s, integer *nchars); +extern integer oifupr_(integer *im, integer *status); +extern integer oifwrr_(integer *fd, integer *im, integer *htype); +extern integer ord1_(integer *m, real *b); +extern integer ord2_(integer *m, real *b); +extern integer osfnik_(shortint *osfn); +extern integer osfnms_(shortint *osfn, shortint *lockfe, shortint *timel1, shortint *timel2, integer *maxch); +extern integer osfnpe_(shortint *spposn, shortint *hoston, integer *maxch); +extern integer osfnrk_(shortint *osfn); +extern integer pagefe_(shortint *fname, shortint *prompt); +extern integer pagefs_(shortint *files); +extern integer pargb_(logical *bval); +extern integer pargc_(shortint *cval); +extern integer pargd_(doublereal *dval); +extern integer pargg_(doublereal *value, integer *dtype); +extern integer pargi_(integer *ival); +extern integer pargl_(integer *lval); +extern integer pargr_(real *rval); +extern integer pargs_(shortint *sval); +extern integer pargsr_(shortint *str); +extern integer pargx_(complex *xval); +extern integer patfit_(integer *delim, shortint *patstr, integer *ip, shortint *patbuf, integer *szpat, integer *op); +extern integer perim3_(integer *magr1, integer *mini1, integer *magr2, integer *mini2, integer *iwhich, real *var); +extern integer perim_(integer *majrx, integer *minrx, integer *majry, integer *minry); +extern integer periml_(integer *majrx, integer *minrx, integer *majry, integer *minry); +extern integer pggetr_(shortint *strval, integer *maxch); +extern integer pgpusd_(integer *cmd); +extern integer pgsett_(shortint *prompt, shortint *upromt, shortint *fname); +extern integer plascp_(integer *pl, integer *vs, integer *ve, integer *outfd); +extern integer plbox_(integer *pl, integer *x1, integer *y1, integer *x2, integer *y2, integer *rop); +extern integer plcire_(integer *pl, integer *x, integer *y, integer *radius, integer *rop); +extern integer plcler_(integer *pl); +extern integer plcloe_(integer *pl); +extern integer plcoms_(integer *pl); +extern integer pldebg_(integer *pl, integer *fd, integer *width, integer *what); +extern integer pldebt_(integer *fd, shortint *buf, integer *col, integer *firstl, integer *maxcol); +extern integer plfacs_(integer *kernel, shortint *root, shortint *extn, integer *acmode, integer *status); +extern integer plfcle_(integer *im, integer *status); +extern integer plfcoy_(integer *kernel, shortint *oldrot, shortint *oldexn, shortint *newrot, shortint *newexn, integer *status); +extern integer plfdee_(integer *kernel, shortint *root, shortint *extn, integer *status); +extern integer plfnul_(void); +extern integer plfopn_(integer *kernel, integer *im, integer *oim, shortint *root, shortint *extn, shortint *ksectn, integer *clindx, integer *clsize, integer *acmode, integer *status); +extern integer plfree_(integer *kernel, shortint *oldrot, shortint *oldexn, shortint *newrot, shortint *newexn, integer *status); +extern integer plfupr_(integer *im, integer *status); +extern integer plgete_(integer *pl, integer *v); +extern integer plglls_(integer *pl, integer *v, shortint *lldst, integer *lldeph, integer *npix, integer *rop); +extern integer plglpi_(integer *pl, integer *v, integer *pxdst, integer *pxdeph, integer *npix, integer *rop); +extern integer plglpl_(integer *pl, integer *v, integer *pxdst, integer *pxdeph, integer *npix, integer *rop); +extern integer plglps_(integer *pl, integer *v, shortint *pxdst, integer *pxdeph, integer *npix, integer *rop); +extern integer plglri_(integer *pl, integer *v, integer *rldst, integer *rldeph, integer *npix, integer *rop); +extern integer plglrl_(integer *pl, integer *v, integer *rldst, integer *rldeph, integer *npix, integer *rop); +extern integer plglrs_(integer *pl, integer *v, shortint *rldst, integer *rldeph, integer *npix, integer *rop); +extern integer plgsie_(integer *pl, integer *naxes, integer *axlen, integer *depth); +extern integer plline_(integer *pl, integer *x1, integer *y1, integer *x2, integer *y2, integer *width, integer *rop); +extern integer pllinl_(shortint *llsrc, integer *xs, integer *srcmal, shortint *lldst, integer *ds, integer *dstmal, shortint *llstn, integer *ss, shortint *llout, integer *npix, integer *rop); +extern integer pllinp_(shortint *llsrc, integer *xs, integer *srcmal, shortint *lldst, integer *ds, integer *dstmal, shortint *llout, integer *npix, integer *rop); +extern integer pllneg_(shortint *ll, integer *ld); +extern integer plload_(integer *pl, integer *bp); +extern integer plloaf_(integer *pl, shortint *mask, shortint *title, integer *maxch); +extern integer plloam_(integer *pl, shortint *imname, shortint *title, integer *maxch); +extern integer pllprs_(shortint *ll, integer *fd, shortint *label, integer *firstl, integer *maxcos); +extern integer plotif_(real *fx, real *fy, integer *ip); +extern integer plotit_(integer *ix, integer *iy, integer *ip); +extern integer plpixi_(integer *pxsrc, integer *xs, integer *srcmal, integer *pxdst, integer *ds, integer *dstmal, integer *npix, integer *rop); +extern integer plpixl_(integer *pxsrc, integer *xs, integer *srcmal, integer *pxdst, integer *ds, integer *dstmal, integer *npix, integer *rop); +extern integer plpixs_(shortint *pxsrc, integer *xs, integer *srcmal, shortint *pxdst, integer *ds, integer *dstmal, integer *npix, integer *rop); +extern integer plplls_(integer *pl, integer *v, shortint *llsrc, integer *lldeph, integer *npix, integer *rop); +extern integer plplpi_(integer *pl, integer *v, integer *pxsrc, integer *pxdeph, integer *npix, integer *rop); +extern integer plplpl_(integer *pl, integer *v, integer *pxsrc, integer *pxdeph, integer *npix, integer *rop); +extern integer plplps_(integer *pl, integer *v, shortint *pxsrc, integer *pxdeph, integer *npix, integer *rop); +extern integer plplri_(integer *pl, integer *v, integer *rlsrc, integer *rldeph, integer *npix, integer *rop); +extern integer plplrl_(integer *pl, integer *v, integer *rlsrc, integer *rldeph, integer *npix, integer *rop); +extern integer plplrs_(integer *pl, integer *v, shortint *rlsrc, integer *rldeph, integer *npix, integer *rop); +extern integer plpoit_(integer *pl, integer *x, integer *y, integer *rop); +extern integer plpoln_(integer *pl, integer *x, integer *y, integer *npts, integer *rop); +extern integer plrani_(integer *rlsrc, integer *xs, integer *srcmal, integer *rldst, integer *ds, integer *dstmal, integer *rlout, integer *npix, integer *rop); +extern integer plranl_(integer *rlsrc, integer *xs, integer *srcmal, integer *rldst, integer *ds, integer *dstmal, integer *rlout, integer *npix, integer *rop); +extern integer plrans_(shortint *rlsrc, integer *xs, integer *srcmal, shortint *rldst, integer *ds, integer *dstmal, shortint *rlout, integer *npix, integer *rop); +extern integer plrcle_(integer *plr); +extern integer plregp_(integer *pl, L_fp ufcn, integer *ufd, integer *y1, integer *y2, integer *rop); +extern integer plrget_(integer *plr, integer *bufp, integer *xsize, integer *ysize, integer *xblock, integer *yblock); +extern integer plrop_(integer *plsrc, integer *vssrc, integer *pldst, integer *vsdst, integer *vn, integer *rop); +extern integer plrpri_(integer *rl, integer *fd, shortint *label, integer *firstl, integer *maxcol); +extern integer plrprl_(integer *rl, integer *fd, shortint *label, integer *firstl, integer *maxcol); +extern integer plrprs_(shortint *rl, integer *fd, shortint *label, integer *firstl, integer *maxcol); +extern integer plrset_(integer *plr, integer *x1, integer *y1, integer *x2, integer *y2); +extern integer plsavf_(integer *pl, shortint *fname, shortint *title, integer *flags); +extern integer plsavm_(integer *pl, shortint *imname, shortint *title, integer *flags); +extern integer plsete_(integer *pl, integer *v); +extern integer plseti_(integer *pl, integer *param, integer *value); +extern integer plssie_(integer *pl, integer *naxes, integer *axlen, integer *depth); +extern integer plsslv_(integer *pl, integer *vs, integer *vn, integer *v, integer *ve); +extern integer plstel_(integer *plsrc, integer *vssrc, integer *pldst, integer *vsdst, integer *plstn, integer *vsstn, integer *vn, integer *rop); +extern integer plupde_(integer *pl, integer *v, shortint *ll); +extern integer plvald_(integer *pl); +extern integer pmascp_(integer *pl, integer *vs, integer *ve, integer *outfd); +extern integer pmbox_(integer *pl, integer *x1, integer *y1, integer *x2, integer *y2, integer *rop); +extern integer pmcire_(integer *pl, integer *x, integer *y, integer *radius, integer *rop); +extern integer pmcler_(integer *pl); +extern integer pmglls_(integer *pl, integer *v, shortint *lldst, integer *lldeph, integer *npix, integer *rop); +extern integer pmglpi_(integer *pl, integer *v, integer *pxdst, integer *pxdeph, integer *npix, integer *rop); +extern integer pmglpl_(integer *pl, integer *v, integer *pxdst, integer *pxdeph, integer *npix, integer *rop); +extern integer pmglps_(integer *pl, integer *v, shortint *pxdst, integer *pxdeph, integer *npix, integer *rop); +extern integer pmglri_(integer *pl, integer *v, integer *rldst, integer *rldeph, integer *npix, integer *rop); +extern integer pmglrl_(integer *pl, integer *v, integer *rldst, integer *rldeph, integer *npix, integer *rop); +extern integer pmglrs_(integer *pl, integer *v, shortint *rldst, integer *rldeph, integer *npix, integer *rop); +extern integer pmline_(integer *pl, integer *x1, integer *y1, integer *x2, integer *y2, integer *width, integer *rop); +extern integer pmplls_(integer *pl, integer *v, shortint *llraw, integer *lldeph, integer *npix, integer *rop); +extern integer pmplpi_(integer *pl, integer *v, integer *pxsrc, integer *pxdeph, integer *npix, integer *rop); +extern integer pmplpl_(integer *pl, integer *v, integer *pxsrc, integer *pxdeph, integer *npix, integer *rop); +extern integer pmplps_(integer *pl, integer *v, shortint *pxsrc, integer *pxdeph, integer *npix, integer *rop); +extern integer pmplri_(integer *pl, integer *v, integer *rlsrc, integer *rldeph, integer *npix, integer *rop); +extern integer pmplrl_(integer *pl, integer *v, integer *rlsrc, integer *rldeph, integer *npix, integer *rop); +extern integer pmplrs_(integer *pl, integer *v, shortint *rlsrc, integer *rldeph, integer *npix, integer *rop); +extern integer pmpoit_(integer *pl, integer *x, integer *y, integer *rop); +extern integer pmpoln_(integer *pl, integer *x, integer *y, integer *npts, integer *rop); +extern integer pmrcle_(integer *pmr); +extern integer pmrop_(integer *pmsrc, integer *vssrc, integer *pmdst, integer *vsdst, integer *vn, integer *rop); +extern integer pmrset_(integer *pmr, integer *x1, integer *y1, integer *x2, integer *y2); +extern integer pmsete_(integer *pl, integer *v); +extern integer pmseti_(integer *pl, integer *param, integer *value); +extern integer pmstel_(integer *pmsrc, integer *vssrc, integer *pmdst, integer *vsdst, integer *pmstn, integer *vsstn, integer *vn, integer *rop); +extern integer point3_(real *u, real *v, real *w); +extern integer point_(real *px, real *py); +extern integer points_(real *px, real *py, integer *np, integer *ic, integer *il); +extern integer pollce_(integer *fds); +extern integer pollcr_(integer *fds, integer *fd, integer *type__); +extern integer pollpt_(integer *fds); +extern integer pollst_(integer *fds, integer *fd, integer *type__); +extern integer pollzo_(integer *fds); +extern integer prchdr_(integer *pid, shortint *newdir); +extern integer prdumn_(shortint *osfn, integer *mode, integer *chan); +extern integer preal_(shortint *tval, real *rval); +extern integer prenvt_(integer *pid, shortint *envvar, shortint *valuer); +extern integer prkill_(integer *job); +extern integer pronic_(integer *vex, integer *nexthr); +extern integer proscd_(integer *pr, shortint *cmd); +extern integer prpsit_(void); +extern integer prredr_(integer *pid, integer *stream, integer *newfd); +extern integer prseti_(integer *pid, integer *param, integer *value); +extern integer prsigl_(integer *pid, integer *signal); +extern integer prupde_(integer *pid, shortint *messae, integer *flusht); +extern integer prvret_(shortint *name__, shortint *value); +extern integer przclr_(integer *chan, integer *status); +extern integer pscenr_(integer *ps, shortint *str); +extern integer pscloe_(integer *ps); +extern integer psdept_(integer *ps, shortint *line); +extern integer psesct_(shortint *in, shortint *out, integer *maxch); +extern integer psfone_(integer *ps, integer *fontse); +extern integer psfoor_(integer *ps, shortint *ledge, shortint *center, shortint *redge); +extern integer pshear_(integer *ps, shortint *ledge, shortint *center, shortint *redge); +extern integer psindt_(integer *ps, integer *nchars); +extern integer psioxr_(integer *fd, shortint *buf, integer *nchars); +extern integer pslink_(integer *ps, integer *fillfg); +extern integer psnewe_(integer *ps); +extern integer psoutt_(integer *ps, shortint *str, integer *fillfg); +extern integer pspage_(integer *ps, integer *page); +extern integer pspagk_(integer *ps); +extern integer psrigy_(integer *ps, shortint *str); +extern integer pssets_(integer *ps, real *left, real *right, real *top, real *bottom); +extern integer pssett_(integer *ps, integer *font); +extern integer pssety_(integer *ps, integer *justiy); +extern integer psspft_(integer *ps, integer *font); +extern integer pstese_(integer *ps, integer *nlines); +extern integer pstr_(shortint *sppstg); +extern integer pstrar_(integer *ps); +extern integer pswrig_(integer *ps); +extern integer pswrtk_(integer *ps, integer *curpos, shortint *str); +extern integer psxpos_(integer *ps, integer *xpos); +extern integer psym3_(real *u, real *v, real *w, integer *ichar, real *size, integer *idir, integer *itop, integer *iup); +extern integer psypos_(integer *ps, integer *ypos); +extern integer putcc_(integer *fd, shortint *ch); +extern integer putci_(integer *fd, integer *ch); +extern integer putlie_(integer *fd, shortint *linebf); +extern integer pwrit_(real *px, real *py, char *ch, integer *nc, integer *is, integer *io, integer *ic, ftnlen ch_len); +extern integer pwrity_(real *x, real *y, char *id, integer *n, integer *isize, integer *itheta, integer *icnt, ftnlen id_len); +extern integer pwry_(real *x, real *y, integer *id, integer *n, real *size, real *theta, integer *icnt); +extern integer pwrybd_(void); +extern integer pwrygt_(char *kchar, char *jchar, integer *index, integer *nsize, integer *ipoint, ftnlen kchar_len, ftnlen jchar_len); +extern integer pwryso_(char *jchar, integer *index, integer *nsize, ftnlen jchar_len); +extern integer pwrz_(real *x, real *y, real *z__, integer *id, integer *n, integer *isize, integer *lin3, integer *itop, integer *icnt); +extern integer pwrzgi_(char *kchar, char *jchar, integer *index, integer *nsize, integer *ipoint, ftnlen kchar_len, ftnlen jchar_len); +extern integer pwrzgs_(char *kchar, char *jchar, integer *index, integer *nsize, integer *ipoint, ftnlen kchar_len, ftnlen jchar_len); +extern integer pwrzgt_(char *kchar, char *jchar, integer *index, integer *nsize, integer *ipoint, ftnlen kchar_len, ftnlen jchar_len); +extern integer pwrzi_(real *x, real *y, real *z__, char *id, integer *n, integer *isize, integer *lin3, integer *itop, integer *icnt, ftnlen id_len); +extern integer pwrzoi_(char *jchar, integer *index, integer *nsize, ftnlen jchar_len); +extern integer pwrzos_(char *jchar, integer *index, integer *nsize, ftnlen jchar_len); +extern integer pwrzot_(char *jchar, integer *index, integer *nsize, ftnlen jchar_len); +extern integer pwrzs_(real *x, real *y, real *z__, char *id, integer *n, integer *isize, integer *lin3, integer *itop, integer *icnt, ftnlen id_len); +extern integer pwrzt_(real *x, real *y, real *z__, char *id, integer *n, integer *isize, integer *lin3, integer *itop, integer *icnt, ftnlen id_len); +extern integer q8qst4_(char *name__, char *lbrary, char *entry__, char *vrsion, ftnlen name_len, ftnlen lbrary_len, ftnlen entry_len, ftnlen vrsion_len); +extern integer qmscan_(integer *qm, shortint *fname, integer *flags); +extern integer qmscao_(integer *qm, integer *fd, integer *flags); +extern integer qmsetm_(integer *qm, shortint *param, shortint *valstr); +extern integer qmsets_(integer *qm, integer *qp); +extern integer qmupds_(integer *qm, integer *qp); +extern integer qpaddb_(integer *qp, shortint *param, logical *value, shortint *commet); +extern integer qpaddc_(integer *qp, shortint *param, shortint *value, shortint *commet); +extern integer qpaddd_(integer *qp, shortint *param, doublereal *value, shortint *commet); +extern integer qpaddf_(integer *qp, shortint *param, shortint *datate, integer *maxelm, shortint *commet, integer *flags); +extern integer qpaddi_(integer *qp, shortint *param, integer *value, shortint *commet); +extern integer qpaddl_(integer *qp, shortint *param, integer *value, shortint *commet); +extern integer qpaddr_(integer *qp, shortint *param, real *value, shortint *commet); +extern integer qpadds_(integer *qp, shortint *param, shortint *value, shortint *commet); +extern integer qpaddx_(integer *qp, shortint *param, complex *value, shortint *commet); +extern integer qpastr_(integer *qp, shortint *param, shortint *value, shortint *commet); +extern integer qpbind_(integer *qp); +extern integer qpcfnl_(integer *fl); +extern integer qpcloe_(integer *qp); +extern integer qpclot_(integer *gt); +extern integer qpcopf_(integer *oqp, shortint *oparam, integer *nqp, shortint *nparam); +extern integer qpcopy_(shortint *opoefe, shortint *npoefe); +extern integer qpdele_(shortint *poefie); +extern integer qpdelf_(integer *qp, shortint *param); +extern integer qpdsym_(integer *qp, integer *out); +extern integer qpexce_(integer *ex); +extern integer qpexde_(integer *ex, integer *etlast, integer *offset, integer *dtype); +extern integer qpexdg_(integer *ex, integer *out, integer *what); +extern integer qpexfe_(integer *ex, integer *pbsave, integer *dbsave); +extern integer qpexmk_(integer *ex, integer *pbsave, integer *dbsave); +extern integer qpexpn_(integer *ex, integer *opcode, integer *arg1, integer *arg2, integer *arg3); +extern integer qpfacs_(integer *kernel, shortint *root, shortint *extn, integer *acmode, integer *status); +extern integer qpfcle_(integer *im, integer *status); +extern integer qpfcos_(integer *im, integer *qp); +extern integer qpfcoy_(integer *kernel, shortint *oldrot, shortint *oldexn, shortint *newrot, shortint *newexn, integer *status); +extern integer qpfdee_(integer *kernel, shortint *root, shortint *extn, integer *status); +extern integer qpflur_(integer *qp); +extern integer qpfopn_(integer *kernel, integer *im, integer *oim, shortint *root, shortint *extn, shortint *ksectn, integer *clindx, integer *clsize, integer *acmode, integer *status); +extern integer qpfopx_(integer *im, integer *status); +extern integer qpfree_(integer *kernel, shortint *oldrot, shortint *oldexn, shortint *newrot, shortint *newexn, integer *status); +extern integer qpfupr_(integer *im, integer *status); +extern integer qpfwar_(integer *qpf, integer *im); +extern integer qpfwfr_(integer *qpf, integer *im); +extern integer qpfzcl_(integer *chan, integer *status); +extern integer qpfzop_(shortint *pkfn, integer *mode, integer *status); +extern integer qpfzrd_(integer *chan, shortint *obuf, integer *nbytes, integer *boffst); +extern integer qpfzst_(integer *chan, integer *param, integer *value); +extern integer qpfzwr_(integer *chan, shortint *ibuf, integer *nbytes, integer *boffst); +extern integer qpfzwt_(integer *chan, integer *status); +extern integer qpinht_(integer *nqp, integer *oqp, integer *out); +extern integer qpioce_(integer *io); +extern integer qpiolk_(integer *io, shortint *mask, integer *merge); +extern integer qpiomx_(integer *io, shortint *key); +extern integer qpiops_(integer *io, integer *iev, integer *nevens); +extern integer qpiosc_(integer *io); +extern integer qpiose_(integer *io, integer *vs, integer *ve, integer *ndim); +extern integer qpiosi_(integer *io, integer *param, integer *value); +extern integer qpiosr_(integer *io, shortint *expr); +extern integer qpiour_(integer *io, integer *param, real *value); +extern integer qpiowt_(integer *io, integer *evi); +extern integer qpmkfe_(shortint *poefie, shortint *extn, shortint *fname, integer *maxch); +extern integer qppare_(shortint *qpspec, shortint *root, integer *szroot, shortint *filter, integer *szfilr); +extern integer qppcle_(integer *fd); +extern integer qppstr_(integer *qp, shortint *param, shortint *strval); +extern integer qpputb_(integer *qp, shortint *param, logical *value); +extern integer qpputc_(integer *qp, shortint *param, shortint *value); +extern integer qpputd_(integer *qp, shortint *param, doublereal *value); +extern integer qpputi_(integer *qp, shortint *param, integer *value); +extern integer qpputl_(integer *qp, shortint *param, integer *value); +extern integer qpputr_(integer *qp, shortint *param, real *value); +extern integer qpputs_(integer *qp, shortint *param, shortint *value); +extern integer qpputx_(integer *qp, shortint *param, complex *value); +extern integer qprebd_(shortint *poefie); +extern integer qprene_(shortint *opoefe, shortint *npoefe); +extern integer qprenf_(integer *qp, shortint *param, shortint *newnae); +extern integer qpsavs_(integer *qp, integer *mw); +extern integer qpseel_(integer *fl, integer *pos); +extern integer qpseti_(integer *qp, integer *param, integer *value); +extern integer qpsetr_(integer *qp, integer *param, real *value); +extern integer qpsync_(integer *qp); +extern integer qpungk_(integer *gt, shortint *tokbuf); +extern integer qpwrie_(integer *qp, shortint *param, shortint *buf, integer *nelem, integer *first, shortint *datate); +extern integer r2tr_(integer *int__, real *b0, real *b1); +extern integer r2tx_(integer *nthpo, real *cr0, real *cr1, real *ci0, real *ci1); +extern integer r4syn_(integer *int__, real *b0, real *b1, real *b2, real *b3); +extern integer r4tr_(integer *int__, real *b0, real *b1, real *b2, real *b3); +extern integer r4tx_(integer *nthpo, real *cr0, real *cr1, real *cr2, real *cr3, real *ci0, real *ci1, real *ci2, real *ci3); +extern integer r8syn_(integer *int__, integer *nn, real *br0, real *br1, real *br2, real *br3, real *br4, real *br5, real *br6, real *br7, real *bi0, real *bi1, real *bi2, real *bi3, real *bi4, real *bi5, real *bi6, real *bi7); +extern integer r8tr_(integer *int__, integer *nn, real *br0, real *br1, real *br2, real *br3, real *br4, real *br5, real *br6, real *br7, real *bi0, real *bi1, real *bi2, real *bi3, real *bi4, real *bi5, real *bi6, real *bi7); +extern integer r8tx_(integer *nxtlt, integer *nthpo, integer *lengt, real *cr0, real *cr1, real *cr2, real *cr3, real *cr4, real *cr5, real *cr6, real *cr7, real *ci0, real *ci1, real *ci2, real *ci3, real *ci4, real *ci5, real *ci6, real *ci7); +extern integer realft_(real *data, integer *n, integer *isign); +extern integer reord_(real *cl, integer *ncl, real *c1, integer *mark, integer *nmg); +extern integer reset_(void); +extern integer resetn_(void); +extern integer retsr_(integer *irold); +extern integer rgadd_(integer *rg, shortint *rstr, integer *rmin, integer *rmax); +extern integer rgbind_(integer *rg, integer *nbin, doublereal *in, integer *nin, doublereal *out, integer *nout); +extern integer rgbinr_(integer *rg, integer *nbin, real *in, integer *nin, real *out, integer *nout); +extern integer rgdump_(integer *rg); +extern integer rgexcd_(integer *rg, doublereal *a, integer *nin, doublereal *b, integer *nout); +extern integer rgexcr_(integer *rg, real *a, integer *nin, real *b, integer *nout); +extern integer rgfree_(integer *rg); +extern integer rggxmd_(integer *gp, shortint *rstr, doublereal *x, integer *npts, integer *pltype); +extern integer rggxmr_(integer *gp, shortint *rstr, real *x, integer *npts, integer *pltype); +extern integer rginds_(integer *rg, integer *indics, integer *npts, integer *type__); +extern integer rginve_(integer *rg, integer *rmin, integer *rmax); +extern integer rgmere_(integer *rg); +extern integer rgordr_(integer *rg); +extern integer rgpacd_(integer *rg, doublereal *a, doublereal *b); +extern integer rgpacr_(integer *rg, real *a, real *b); +extern integer rgunpd_(integer *rg, doublereal *packed, doublereal *unpacd); +extern integer rgunpr_(integer *rg, real *packed, real *unpacd); +extern integer rgwtbd_(integer *rg, integer *nbin, doublereal *in, doublereal *wtin, integer *nin, doublereal *out, doublereal *wtout, integer *nout); +extern integer rgwtbr_(integer *rg, integer *nbin, real *in, real *wtin, integer *nin, real *out, real *wtout, integer *nout); +extern integer rgxadd_(integer *rg, shortint *rstr, doublereal *rvals, integer *npts); +extern integer rgxadr_(integer *rg, shortint *rstr, real *rvals, integer *npts); +extern integer rmcloe_(integer *rm); +extern integer rmdodi_(shortint *leaf, shortint *box, real *window, shortint *outlit, shortint *nrlist); +extern integer rmdoui_(shortint *leaf, shortint *box, shortint *nrnew, shortint *outnet, real *in, real *window, shortint *outlit, shortint *nrlist); +extern integer rmdowf_(shortint *leaf, shortint *box, real *window, shortint *outlit, shortint *nrlist); +extern integer rmdump_(integer *rm, logical *unsord, logical *sorted, logical *in, logical *out); +extern integer rmpack_(integer *rm, integer *datast); +extern integer rmscle_(integer *rm); +extern integer rmsdup_(integer *rm, logical *unsord, logical *sorted, logical *in, logical *out); +extern integer rmsifp_(shortint *l, shortint *r__, real *window, shortint *outlit, shortint *nrlist); +extern integer rmswap_(shortint *l, shortint *r__, real *window, shortint *outlit, shortint *nrlist); +extern integer rmtcle_(integer *rm); +extern integer rmtdup_(integer *rm, logical *unsord, logical *sorted, logical *in, logical *out); +extern integer rmtort_(shortint *leaf, shortint *box, shortint *nrnew, shortint *outnet, real *in, real *window, shortint *outlit, shortint *nrlist); +extern integer rmunpk_(integer *rm, integer *datast); +extern integer rmuodi_(shortint *leaf, shortint *box, shortint *nrnew, shortint *outnet, real *in, real *window, shortint *outlit, shortint *nrlist); +extern integer rmuoui_(shortint *leaf, shortint *box, real *window, shortint *outlit, shortint *nrlist); +extern integer rmuptf_(shortint *leaf, shortint *box, real *window, shortint *outlit, shortint *nrlist); +extern integer rngadd_(integer *rg, shortint *rstr, real *r1, real *r2, real *dr); +extern integer rngcle_(integer *rg); +extern integer rngerr_(integer *errnum, shortint *rstr, real *r1, real *r2, real *dr, integer *rg); +extern integer salloc_(integer *outpur, integer *nelem, integer *datate); +extern integer sbytes_(integer *bufout, integer *bufin, integer *index, integer *size, integer *skip, integer *count); +extern integer scanc_(shortint *cval); +extern integer set3_(real *xa, real *xb, real *ya, real *yb, real *ulo, real *uhi, real *vlo, real *vhi, real *wlo, real *whi, real *eye); +extern integer set3d_(real *eye, real *ulo, real *uhi, real *vlo, real *vhi, real *wlo, real *whi); +extern integer set_(real *vl, real *vr, real *vb, real *vt, real *wl, real *wr, real *wb, real *wt, integer *lf); +extern integer seter_(char *messg, integer *nerr, integer *iopt, ftnlen messg_len); +extern integer setfp_(integer *im, integer *fp); +extern integer seti_(integer *ix, integer *iy); +extern integer setr_(real *xmin, real *xmax, real *ymin, real *ymax, real *zmin, real *zmax, real *r0); +extern integer setusv_(char *vn, integer *iv, ftnlen vn_len); +extern integer sfree_(integer *oldsp); +extern integer sgchdw_(integer *mx, integer *my); +extern integer sgchfh_(void); +extern integer sgchme_(integer *mx, integer *my); +extern integer sgeprf_(integer *number, shortint *memory, integer *iop, integer *top, shortint *progrm, integer *pc); +extern integer sgespc_(integer *tr, integer *gki, integer *fn, shortint *instrn, integer *bp, integer *buftop, integer *deletn); +extern integer sgewsn_(integer *fn, shortint *instrn, real *x1, real *y1, real *x2, real *y2); +extern integer sgfpor_(integer *fd); +extern integer sgfttr_(integer *fd, shortint *buf, integer *maxch, integer *status); +extern integer sgibcl_(shortint *m, integer *nx, integer *ny, integer *ax1, integer *ay1, integer *ax2, integer *ay2); +extern integer sgical_(integer *dummy); +extern integer sgicle_(void); +extern integer sgiclr_(integer *dummy); +extern integer sgicls_(shortint *devnae, integer *n); +extern integer sgicor_(integer *index); +extern integer sgidae_(integer *gout, shortint *p, integer *npts, integer *ltype); +extern integer sgiese_(integer *fn, shortint *instrn, integer *nwords); +extern integer sgifat_(shortint *gki); +extern integer sgifia_(shortint *p, integer *npts); +extern integer sgiflh_(integer *dummy); +extern integer sgifot_(integer *font); +extern integer sgigey_(integer *nx, integer *ny, integer *x1, integer *y1, integer *x2, integer *y2); +extern integer sgiint_(integer *tty, shortint *devnae); +extern integer sgilie_(integer *index); +extern integer sgimcl_(shortint *m, integer *nx, integer *ny, integer *ax1, integer *ay1, integer *ax2, integer *ay2); +extern integer sgiopn_(shortint *devnae, integer *dd); +extern integer sgiops_(shortint *devnae, integer *n, integer *mode); +extern integer sgiplt_(shortint *gki); +extern integer sgipmt_(shortint *gki); +extern integer sgipoe_(shortint *p, integer *npts); +extern integer sgipor_(shortint *p, integer *npts); +extern integer sgipuy_(shortint *m, integer *nx, integer *ny, integer *ax1, integer *ay1, integer *ax2, integer *ay2); +extern integer sgiret_(void); +extern integer sgitet_(integer *xc, integer *yc, shortint *text, integer *n); +extern integer sgitxt_(shortint *gki); +extern integer sgkcle_(integer *fd); +extern integer sgkdrw_(integer *fd, integer *ax, integer *ay); +extern integer sgkflh_(integer *fd); +extern integer sgkfre_(integer *fd); +extern integer sgklih_(integer *fd, integer *width); +extern integer sgkmke_(shortint *root, integer *num, shortint *outstr, integer *maxch); +extern integer sgkmoe_(integer *fd, integer *x, integer *y); +extern integer sgkver_(integer *ax1, integer *ay1, integer *ax2, integer *ay2); +extern integer sgmgeg_(shortint *gim); +extern integer sgmiod_(shortint *gim); +extern integer sgmioe_(shortint *gim); +extern integer sgmout_(shortint *cap, shortint *gim, integer *nargs); +extern integer sgmqur_(shortint *gim); +extern integer sgmquy_(shortint *queryp, shortint *gim, integer *nargs, shortint *retvap, shortint *retval, integer *nout); +extern integer sgmrep_(shortint *gim); +extern integer sgmres_(shortint *gim); +extern integer sgmwie_(integer *width, integer *height); +extern integer sgmwrp_(shortint *gim); +extern integer sgmwrs_(shortint *gim); +extern integer simaxi_(integer *a, integer *na, real *x, integer *b, integer *nb); +extern integer simaxr_(real *a, integer *na, real *x, real *b, integer *nb); +extern integer simaxs_(shortint *a, integer *na, real *x, shortint *b, integer *nb); +extern integer sisami_(integer *a, integer *b, real *x, integer *npix); +extern integer sisamr_(real *a, real *b, real *x, integer *npix); +extern integer sisams_(shortint *a, shortint *b, real *x, integer *npix); +extern integer skcloe_(integer *coo); +extern integer skctym_(integer *coo, integer *im); +extern integer skenws_(integer *coo, shortint *wcsstr, integer *maxch); +extern integer skequl_(integer *cooin, integer *cooout, doublereal *ilng, doublereal *ilat, doublereal *ipmlng, doublereal *ipmlat, doublereal *px, doublereal *rv, doublereal *olng, doublereal *olat); +extern integer skiipt_(shortint *label, shortint *images, integer *mw, integer *coo); +extern integer skiiwe_(integer *fd, shortint *label, shortint *images, integer *mw, integer *coo); +extern integer skimpt_(shortint *label, shortint *images, integer *ctype, integer *lngax, integer *latax, integer *wtype, integer *ptype, integer *radecs, doublereal *equinx, doublereal *epoch); +extern integer skimwe_(integer *fd, shortint *label, shortint *images, integer *ctype, integer *lngax, integer *latax, integer *wtype, integer *ptype, integer *radecs, doublereal *equinx, doublereal *epoch); +extern integer skinpt_(shortint *label, shortint *system, integer *ctype, integer *radecs, doublereal *equinx, doublereal *epoch); +extern integer skinwe_(integer *fd, shortint *label, shortint *system, integer *ctype, integer *radecs, doublereal *equinx, doublereal *epoch); +extern integer sklltn_(integer *cooin, integer *cooout, doublereal *ilng, doublereal *ilat, doublereal *ipmlng, doublereal *ipmlat, doublereal *px, doublereal *rv, doublereal *olng, doublereal *olat); +extern integer sksavm_(integer *coo, integer *mw, integer *im); +extern integer sksetd_(integer *coo, integer *param, doublereal *value); +extern integer skseti_(integer *coo, integer *param, integer *value); +extern integer sksets_(integer *coo, integer *param, shortint *value); +extern integer skstas_(integer *coo, integer *param, shortint *value, integer *maxch); +extern integer skultn_(integer *cooin, integer *cooout, doublereal *ilng, doublereal *ilat, doublereal *olng, doublereal *olat, integer *npts); +extern integer smark_(integer *oldsp); +extern integer sprinf_(shortint *outstr, integer *maxch, shortint *formag); +extern integer srfabd_(void); +extern integer srface_(real *x, real *y, real *z__, integer *m, integer *mx, integer *nx, integer *ny, real *s, real *stereo); +extern integer srfgk_(real *x, real *y, real *z__, integer *m, integer *mx, integer *nx, integer *ny, real *s, real *stereo); +extern integer srftet_(void); +extern integer sscan_(shortint *str); +extern integer stcloe_(integer *stp); +extern integer stcntr_(real *z__, integer *l, integer *m, integer *n, real *conv); +extern integer stfacs_(integer *kernel, shortint *root, shortint *extn, integer *acmode, integer *status); +extern integer stfadr_(integer *im, shortint *pname, integer *dtype, integer *plen, shortint *pval, integer *pno); +extern integer stfcle_(integer *im, integer *status); +extern integer stfcos_(integer *stf, integer *spool, integer *gpb, integer *user); +extern integer stfcoy_(integer *kernel, shortint *oroot, shortint *oextn, shortint *nroot, shortint *nextn, integer *status); +extern integer stfdee_(integer *kernel, shortint *root, shortint *extn, integer *status); +extern integer stfgeb_(shortint *card, integer *bval); +extern integer stfgei_(shortint *card, integer *ival); +extern integer stfgen_(integer *im, integer *oim, integer *acmode, shortint *outstr, integer *maxch); +extern integer stfges_(shortint *card, shortint *outstr, integer *maxch); +extern integer stfget_(shortint *card, shortint *commet, integer *maxch); +extern integer stfins_(integer *im); +extern integer stfmeb_(integer *nim, integer *oim); +extern integer stfmke_(shortint *hdrrot, shortint *hdrexn, shortint *pixfne, integer *maxch); +extern integer stfnee_(integer *im); +extern integer stfopn_(integer *kernel, integer *im, integer *oim, shortint *root, shortint *extn, shortint *ksectn, integer *grarg, integer *gcarg, integer *acmode, integer *status); +extern integer stfopx_(integer *im, integer *status); +extern integer stforb_(integer *ostf, integer *nstf); +extern integer stfrdr_(integer *im, integer *group, integer *acmode); +extern integer stfree_(integer *stp, integer *marker); +extern integer stfrek_(integer *im); +extern integer stfrfr_(integer *im, integer *fits, integer *fitsln); +extern integer stfrgb_(integer *im, integer *group, integer *acmode, real *datamn, real *datamx); +extern integer stfrne_(integer *kernel, shortint *oroot, shortint *oextn, shortint *nroot, shortint *nextn, integer *status); +extern integer stfupr_(integer *im, integer *status); +extern integer stfwfr_(integer *im); +extern integer stfwgb_(integer *im, integer *group, real *datamn, real *datamx); +extern integer stgcal_(integer *dummy); +extern integer stgcle_(void); +extern integer stgclr_(integer *dummy); +extern integer stgcls_(shortint *devnae, integer *n); +extern integer stgct1_(shortint *cap, integer *arg1); +extern integer stgct2_(shortint *cap, integer *arg1, integer *arg2); +extern integer stgct3_(shortint *cap, integer *arg1, integer *arg2, integer *arg3); +extern integer stgctl_(shortint *cap); +extern integer stgdes_(integer *flags); +extern integer stgdrr_(shortint *ch, integer *x, integer *y, integer *xsize, integer *ysize, integer *orien, integer *font); +extern integer stgdrw_(integer *x, integer *y); +extern integer stgese_(integer *fn, shortint *instrn, integer *nwords); +extern integer stgfat_(shortint *gki); +extern integer stgfia_(shortint *p, integer *npts); +extern integer stgflh_(integer *dummy); +extern integer stggdb_(void); +extern integer stggeb_(void); +extern integer stgger_(integer *cursor); +extern integer stggey_(integer *nx, integer *ny, integer *x1, integer *y1, integer *x2, integer *y2); +extern integer stggrm_(integer *stream); +extern integer stgint_(integer *tty, shortint *devnae); +extern integer stglor_(integer *newcur); +extern integer stgmoe_(integer *x, integer *y); +extern integer stgonr_(integer *errcoe); +extern integer stgont_(integer *vex, integer *nexthr); +extern integer stgopn_(shortint *devnae, integer *dd, integer *in, integer *out, integer *xres, integer *yres, integer *hardcr); +extern integer stgops_(shortint *devnae, integer *n, integer *mode); +extern integer stgou2_(integer *fd, shortint *progrm, integer *arg1, integer *arg2); +extern integer stgour_(shortint *cap, shortint *strval); +extern integer stgplt_(shortint *gki); +extern integer stgpmt_(shortint *gki); +extern integer stgpoe_(shortint *p, integer *npts); +extern integer stgpor_(shortint *p, integer *npts); +extern integer stgpue_(integer *fd, shortint *text); +extern integer stgpuy_(shortint *m, integer *nx, integer *ny, integer *ax1, integer *ay1, integer *ax2, integer *ay2); +extern integer stgrdr_(integer *tty, integer *cursor, integer *outpuc, integer *cn, integer *key, integer *sx, integer *sy, integer *raster, integer *rx, integer *ry); +extern integer stgren_(integer *xres, integer *yres); +extern integer stgrer_(integer *cursor, integer *cn, integer *key, integer *sx, integer *sy, integer *raster, integer *rx, integer *ry); +extern integer stgres_(integer *flags); +extern integer stgret_(void); +extern integer stgser_(integer *x, integer *y, integer *cursor); +extern integer stgtet_(integer *xc, integer *yc, shortint *text, integer *n); +extern integer stgtxt_(shortint *gki); +extern integer stgtxy_(integer *qualiy); +extern integer stgunn_(shortint *gki); +extern integer stgwry_(integer *fd, shortint *text, integer *nchars); +extern integer stinfo_(integer *stp, integer *fd, integer *verboe); +extern integer stkmkg_(integer *curseg, integer *sp, integer *segmee); +extern integer stline_(real *z__, integer *ll, integer *mm, integer *nn, real *conv); +extern integer stmark_(integer *stp, integer *marker); +extern integer strcle_(integer *fd); +extern integer strdeb_(shortint *line, shortint *outlie, integer *maxch, integer *tabsie); +extern integer strenb_(shortint *line, shortint *outlie, integer *maxch, integer *tabsie); +extern integer strlwr_(shortint *a); +extern integer strmln_(real *u, real *v, real *work, integer *imax, integer *iptsx, integer *jptsy, integer *nset, integer *ier); +extern integer strsee_(integer *fd, integer *mode); +extern integer strsrt_(integer *x, shortint *sb, integer *nstr); +extern integer strtbl_(integer *fd, shortint *buf, integer *strp, integer *nstr, integer *firstl, integer *lastcl, integer *maxch, integer *ncol); +extern integer strupr_(shortint *str); +extern integer stsave_(integer *stp, integer *fd); +extern integer stsque_(integer *stp); +extern integer sttyco_(shortint *args, integer *ttin, integer *ttout, integer *outfd); +extern integer sttyet_(shortint *envvar, shortint *value); +extern integer sttynm_(integer *ttin, integer *ttout, shortint *termil); +extern integer sttyse_(integer *ttin, integer *ttout, integer *tty); +extern integer sttysm_(integer *ttin, integer *ttout, integer *fd, integer *all); +extern integer sttytt_(integer *ttin, integer *ttout, shortint *termil); +extern integer stxchs_(integer *tx, integer *ch, integer *cw, integer *hwsz, logical *hard, integer *orien); +extern integer syserr_(integer *errcoe); +extern integer sysers_(integer *errcoe, shortint *usersg); +extern integer sysges_(shortint *fname); +extern integer sysgsg_(shortint *args, integer *ip, shortint *outstr, integer *maxch); +extern integer sysid_(shortint *outstr, integer *maxch); +extern integer sysmte_(integer *savete); +extern integer syspac_(integer *errcoe, shortint *errmsg); +extern integer syspat_(shortint *args, integer *ip, logical *skip); +extern integer syspte_(integer *fd, shortint *opstr, integer *savete); +extern integer sysret_(shortint *args, integer *ip); +extern integer syssct_(integer *cmdin, shortint *iargs); +extern integer tautog_(integer *ierror); +extern integer tautoh_(void); +extern integer tcnqck_(integer *ierror); +extern integer tcnsmt_(integer *ierror); +extern integer tcnsup_(integer *ierror); +extern integer tconan_(integer *ierror); +extern integer tconaq_(integer *ierror); +extern integer tconas_(integer *ierror); +extern integer tconrc_(void); +extern integer tconre_(integer *nplot, integer *ierror); +extern integer tconrn_(void); +extern integer tconrq_(void); +extern integer tconrs_(void); +extern integer tdashc_(integer *ierror); +extern integer tdashh_(void); +extern integer tdashl_(integer *ierror); +extern integer tdashp_(integer *ierror); +extern integer tdashr_(void); +extern integer tdashs_(integer *ierror); +extern integer thaftn_(void); +extern integer thafto_(integer *ierror); +extern integer threbd_(void); +extern integer tick3_(integer *mag, integer *min__); +extern integer tick43_(integer *magu, integer *minu, integer *magv, integer *minv, integer *magw, integer *minw); +extern integer tick4_(integer *lmajx, integer *lminx, integer *lmajy, integer *lminy); +extern integer ticks_(integer *lmaj, integer *lmin); +extern integer tirafs_(void); +extern integer tisohr_(integer *ierror); +extern integer tisosf_(void); +extern integer tisosr_(integer *nplot, integer *ierror); +extern integer toldao_(void); +extern integer tprzs_(void); +extern integer tpwriy_(void); +extern integer tpwry_(integer *ierror); +extern integer tpwrzi_(integer *ierror); +extern integer tpwrzs_(integer *ierror); +extern integer tpwrzt_(integer *ierror); +extern integer tr32_(real *x, real *y, integer *mx, integer *my); +extern integer trn32i_(real *u, real *v, real *w, real *xt, real *yt, real *zt, integer *ient); +extern integer trn32s_(real *x, real *y, real *z__, real *xt, real *yt, real *zt, integer *iflag); +extern integer trn32t_(real *u, real *v, real *w, real *xt, real *yt, real *zt, integer *ient); +extern integer tsleep_(integer *secons); +extern integer tsrfac_(integer *nplot, integer *ierror); +extern integer tsrftt_(void); +extern integer tst3d2_(void); +extern integer tstrml_(integer *ierror); +extern integer tstrmn_(void); +extern integer tsurfe_(void); +extern integer tthre2_(void); +extern integer tthred_(void); +extern integer tthree_(integer *ierror); +extern integer ttseti_(integer *fd, integer *param, integer *value); +extern integer ttsets_(integer *fd, integer *param, shortint *svalue); +extern integer ttybre_(integer *fd, integer *tty, integer *ostrie, integer *op, integer *sotype, logical *soseen); +extern integer ttycds_(integer *tty); +extern integer ttycle_(integer *tty); +extern integer ttycln_(integer *fd, integer *tty); +extern integer ttyclr_(integer *fd, integer *tty); +extern integer ttydee_(shortint *device, shortint *ldevie, integer *maxch); +extern integer ttydey_(integer *fd, integer *tty, integer *delay); +extern integer ttyfey_(integer *fd, shortint *device, integer *tty); +extern integer ttygoo_(integer *fd, integer *tty, integer *col, integer *line); +extern integer ttygpe_(integer *fd, integer *tty, shortint *text, integer *mapcc); +extern integer ttygse_(integer *in, integer *out, integer *tty, integer *width, integer *height); +extern integer ttyins_(integer *tty, integer *tcapce, integer *tcapix, integer *ncaps); +extern integer ttyint_(integer *fd, integer *tty); +extern integer ttypue_(integer *fd, integer *tty, shortint *text, integer *mapcc); +extern integer ttypus_(integer *fd, integer *tty, shortint *ctrlsr, integer *afflnt); +extern integer ttysce_(integer *tty, shortint *termce, shortint *devnae); +extern integer ttysei_(integer *tty, integer *paramr, integer *value); +extern integer ttyso_(integer *fd, integer *tty, integer *onflag); +extern integer ttywre_(integer *fd, integer *tty, shortint *ctrlsr, integer *nchars, integer *afflnt); +extern integer tvelvc_(integer *nplot, integer *ierror); +extern integer tvelvt_(void); +extern integer twofft_(real *data1, real *data2, real *fft1, real *fft2, integer *n); +extern integer uerrbd_(void); +extern integer uliber_(integer *errcode, char *pkerrmsg, integer *msglen, ftnlen pkerrmsg_len); +extern integer ungete_(integer *fd, shortint *str); +extern integer ungeti_(integer *fd, integer *ch); +extern integer unread_(integer *fd, shortint *buf, integer *nchars); +extern integer utilbd_(void); +extern integer vect3_(real *u, real *v, real *w); +extern integer vectd_(real *x, real *y); +extern integer vector_(real *px, real *py); +extern integer veldat_(void); +extern integer velvct_(real *u, integer *lu, real *v, integer *lv, integer *m, integer *n, real *flo, real *hi, integer *nset, integer *length, integer *ispv, real *spv); +extern integer velvec_(real *u, integer *lu, real *v, integer *lv, integer *m, integer *n, real *flo, real *hi, integer *nset, integer *ispv, real *spv); +extern integer vfncle_(integer *vfd, integer *update); +extern integer vfnene_(shortint *vfn, integer *ip, shortint *root, integer *lenrot, shortint *extn, integer *lenexn); +extern integer vfnexr_(shortint *vfn, shortint *outstr, integer *maxch); +extern integer vfnman_(shortint *irafen, shortint *osextn, integer *maxch); +extern integer vfnsqe_(shortint *root, shortint *outstr, integer *maxch); +extern integer vfntre_(shortint *rawvfn, shortint *osdir, integer *lenosr, shortint *root, integer *lenrot, shortint *extn, integer *lenexn); +extern integer vfnunn_(shortint *osextn, shortint *irafen, integer *maxch); +extern integer vmallc_(integer *ubufp, integer *nelems, integer *dtype); +extern integer vvfnee_(integer *ch, shortint *outbuf, integer *op, integer *maxch); +extern integer vvfnip_(shortint *map, shortint *iraf, shortint *os, integer *nextn, integer *maxexn); +extern integer vvfnis_(shortint *ex, shortint *extn, integer *maxexn, integer *nextn); +extern integer vvfnre_(integer *vfd); +extern integer wcslab_(integer *mw, real *logx1, real *logx2, real *logy1, real *logy2, integer *gp, shortint *title); +extern integer wfaitd_(integer *fc, doublereal *p, doublereal *w); +extern integer wfaitt_(integer *fc, integer *dir); +extern integer wfaitv_(integer *fc, doublereal *w, doublereal *p); +extern integer wfarcd_(integer *fc, doublereal *p, doublereal *w); +extern integer wfarct_(integer *fc, integer *dir); +extern integer wfarcv_(integer *fc, doublereal *w, doublereal *p); +extern integer wfcard_(integer *fc, doublereal *p, doublereal *w); +extern integer wfcart_(integer *fc, integer *dir); +extern integer wfcarv_(integer *fc, doublereal *w, doublereal *p); +extern integer wfcscd_(integer *fc, doublereal *p, doublereal *w); +extern integer wfcsct_(integer *fc, integer *dir); +extern integer wfcscv_(integer *fc, doublereal *w, doublereal *p); +extern integer wfdecs_(integer *fc, integer *ira, integer *idec); +extern integer wffnld_(shortint *name__, integer *flags, integer *init, integer *destry, integer *fwd, integer *inv); +extern integer wfglsd_(integer *fc, doublereal *p, doublereal *w); +extern integer wfglst_(integer *fc, integer *dir); +extern integer wfglsv_(integer *fc, doublereal *w, doublereal *p); +extern integer wfgsbb_(doublereal *x, integer *order, doublereal *k1, doublereal *k2, doublereal *basis); +extern integer wfgsbg_(doublereal *x, integer *order, doublereal *k1, doublereal *k2, doublereal *basis); +extern integer wfgsbl_(doublereal *x, integer *order, doublereal *k1, doublereal *k2, doublereal *basis); +extern integer wfgsce_(integer *sf); +extern integer wfgscf_(integer *sf, doublereal *coeff, integer *ncoeff); +extern integer wfgsre_(integer *sf, doublereal *fit); +extern integer wfinit_(void); +extern integer wfmerd_(integer *fc, doublereal *p, doublereal *w); +extern integer wfmert_(integer *fc, integer *dir); +extern integer wfmerv_(integer *fc, doublereal *w, doublereal *p); +extern integer wfmold_(integer *fc, doublereal *p, doublereal *w); +extern integer wfmolt_(integer *fc, integer *dir); +extern integer wfmolv_(integer *fc, doublereal *w, doublereal *p); +extern integer wfmspd_(integer *fc, doublereal *in, doublereal *out); +extern integer wfmspf_(shortint *atval, integer *coeff, doublereal *xmin, doublereal *xmax); +extern integer wfmspt_(integer *fc, integer *dir); +extern integer wfmspv_(integer *fc, doublereal *in, doublereal *out); +extern integer wfmspy_(integer *fc); +extern integer wfpard_(integer *fc, doublereal *p, doublereal *w); +extern integer wfpart_(integer *fc, integer *dir); +extern integer wfparv_(integer *fc, doublereal *w, doublereal *p); +extern integer wfpcod_(integer *fc, doublereal *p, doublereal *w); +extern integer wfpcot_(integer *fc, integer *dir); +extern integer wfpcov_(integer *fc, doublereal *w, doublereal *p); +extern integer wfqscd_(integer *fc, doublereal *p, doublereal *w); +extern integer wfqsct_(integer *fc, integer *dir); +extern integer wfqscv_(integer *fc, doublereal *w, doublereal *p); +extern integer wfsind_(integer *fc, doublereal *p, doublereal *w); +extern integer wfsint_(integer *fc, integer *dir); +extern integer wfsinv_(integer *fc, doublereal *w, doublereal *p); +extern integer wfsmpn_(integer *fc, doublereal *ax, doublereal *ay); +extern integer wfsmpt_(integer *fc, integer *dir); +extern integer wfstgd_(integer *fc, doublereal *p, doublereal *w); +extern integer wfstgt_(integer *fc, integer *dir); +extern integer wfstgv_(integer *fc, doublereal *w, doublereal *p); +extern integer wftand_(integer *fc, doublereal *p, doublereal *w); +extern integer wftant_(integer *fc, integer *dir); +extern integer wftanv_(integer *fc, doublereal *w, doublereal *p); +extern integer wftnxd_(integer *fc, doublereal *p, doublereal *w); +extern integer wftnxt_(integer *fc, integer *dir); +extern integer wftnxv_(integer *fc, doublereal *w, doublereal *p); +extern integer wftnxy_(integer *fc); +extern integer wftscd_(integer *fc, doublereal *p, doublereal *w); +extern integer wftsct_(integer *fc, integer *dir); +extern integer wftscv_(integer *fc, doublereal *w, doublereal *p); +extern integer wfzead_(integer *fc, doublereal *p, doublereal *w); +extern integer wfzeat_(integer *fc, integer *dir); +extern integer wfzeav_(integer *fc, doublereal *w, doublereal *p); +extern integer wfzpnd_(integer *fc, doublereal *p, doublereal *w); +extern integer wfzpnt_(integer *fc, integer *dir); +extern integer wfzpnv_(integer *fc, doublereal *w, doublereal *p); +extern integer wfzpny_(integer *fc); +extern integer wfzpxd_(integer *fc, doublereal *p, doublereal *w); +extern integer wfzpxt_(integer *fc, integer *dir); +extern integer wfzpxv_(integer *fc, doublereal *w, doublereal *p); +extern integer wfzpxy_(integer *fc); +extern integer wlaxie_(doublereal *x0, doublereal *y0, doublereal *x1, doublereal *y1, doublereal *screey, doublereal *nx, doublereal *ny); +extern integer wlcons_(doublereal *screey, doublereal *x, doublereal *y, integer *vectoe); +extern integer wldece_(integer *mw, shortint *input, integer *axno); +extern integer wldesy_(integer *wd); +extern integer wldete_(integer *systee, doublereal *polepn, doublereal *screey, integer *graphe); +extern integer wldms_(doublereal *arcrad, shortint *dms, shortint *units, integer *maxch, integer *precin, logical *all); +extern integer wlgend_(doublereal *minimm, doublereal *maximm, doublereal *range, doublereal *lbegin, doublereal *lend, doublereal *interl); +extern integer wlgete_(integer *mw, integer *systee, doublereal *logicr, doublereal *worldr, integer *flip); +extern integer wlgetf_(doublereal *val1, doublereal *val2, doublereal *min__, doublereal *max__, doublereal *diff, logical *wrap); +extern integer wlgetn_(integer *lwct, integer *flip, doublereal *polepn, doublereal *screey, doublereal *poleln, integer *badlae); +extern integer wlgra1_(integer *wd, doublereal *x, doublereal *ymin, doublereal *ymax, integer *gridon, integer *label, real *tickse); +extern integer wlgra2_(integer *wd, doublereal *y, doublereal *xmin, doublereal *xmax, integer *gridon, integer *label, real *tickse); +extern integer wlgras_(integer *wd); +extern integer wlgrid_(integer *wd); +extern integer wlgris_(integer *wd); +extern integer wlgrrs_(integer *wd); +extern integer wlhms_(doublereal *rarad, shortint *hms, shortint *units, integer *maxch, integer *precin, logical *all); +extern integer wlimdt_(integer *frame, integer *im, real *c1, real *c2, real *l1, real *l2, real *vl, real *vr, real *vb, real *vt); +extern integer wlintg_(doublereal *value, integer *systee, integer *whichs, shortint *output); +extern integer wll2wd_(integer *lwct, integer *flip, doublereal *lx, doublereal *ly, doublereal *wx, doublereal *wy, integer *npts); +extern integer wllabe_(shortint *input, logical *flag__); +extern integer wllabl_(integer *wd); +extern integer wllabs_(integer *wd, integer *axis, integer *side, real *offset); +extern integer wlmapt_(integer *gp, real *c1, real *c2, real *l1, real *l2, real *ux1, real *ux2, real *uy1, real *uy2, logical *fill); +extern integer wlmark_(integer *gp, integer *wcs, real *tickse, integer *in, doublereal *x0, doublereal *y0, doublereal *x1, doublereal *y1, doublereal *sx, doublereal *sy, doublereal *tickx, doublereal *ticky); +extern integer wlpoil_(integer *wd, doublereal *x1, doublereal *y1, doublereal *x2, doublereal *y2, integer *axis, doublereal *axisve, integer *gridon, integer *label, real *tickse); +extern integer wlpoll_(integer *wd); +extern integer wlpoln_(integer *wlct, integer *flip, doublereal *longie, logical *north, integer *systee, doublereal *polepn); +extern integer wlputs_(logical *sidefs, shortint *output, integer *maxlen); +extern integer wlrare_(doublereal *ra, integer *nvalus, doublereal *min__, doublereal *max__, doublereal *diff); +extern integer wlrote_(real *x, real *y, integer *npts, real *angle, real *nx, real *ny); +extern integer wlroua_(doublereal *longmn, doublereal *longmx, doublereal *longrn, integer *numtry, doublereal *minimm, doublereal *maximm, doublereal *majorl); +extern integer wlrouc_(doublereal *latmin, doublereal *latmax, doublereal *latran, integer *numtry, doublereal *minimm, doublereal *maximm, doublereal *majorl); +extern integer wlrous_(integer *wd, integer *axis, doublereal *minimm, doublereal *maximm, doublereal *range); +extern integer wlsetp_(integer *wd); +extern integer wlsidg_(integer *side, shortint *output, integer *maxlen); +extern integer wlskya_(integer *wd, doublereal *ax1ary, integer *npoins, doublereal *polepn, logical *north, doublereal *ax1min, doublereal *ax1max, doublereal *ax1ran, doublereal *ax2min, doublereal *ax2max, doublereal *ax2ran); +extern integer wltite_(integer *gp, shortint *title, integer *side, real *size, real *viewpt); +extern integer wlw2ld_(integer *wlct, integer *flip, doublereal *wx, doublereal *wy, doublereal *lx, doublereal *ly, integer *npts); +extern integer wlwcsb_(integer *wd); +extern integer wlwcss_(integer *mw, real *logx1, real *logx2, real *logy1, real *logy2); +extern integer wlwril_(integer *wd, doublereal *value, integer *side, real *x, real *y, doublereal *angle, integer *axis, integer *precin, logical *dofull, real *offset); +extern integer wtstr_(real *px, real *py, char *ch, integer *is, integer *io, integer *ic, ftnlen ch_len); +extern integer xcallc_(integer *ubufp, integer *buflen, integer *dtype); +extern integer xdevss_(shortint *device, integer *out); +extern integer xeract_(integer *errore, shortint *messae, integer *severy); +extern integer xerfmg_(shortint *errmsg, shortint *outstr, integer *maxch); +extern integer xerpsh_(void); +extern integer xerpsr_(shortint *str); +extern integer xerpuc_(shortint *ch); +extern integer xerpue_(integer *fd, shortint *text); +extern integer xerret_(void); +extern integer xerror_(integer *errore, shortint *messae); +extern integer xersel_(integer *errcoe); +extern integer xervey_(void); +extern integer xfatal_(integer *errore, shortint *messae); +extern integer xfchdr_(shortint *newdir); +extern integer xfcloe_(integer *fdarg); +extern integer xfdele_(shortint *fname); +extern integer xffluh_(integer *fd); +extern integer xfputc_(integer *fd, shortint *ch); +extern integer xfputr_(shortint *ch); +extern integer xfrnam_(shortint *oldnae, shortint *newnae); +extern integer xfseek_(integer *fd, integer *offset); +extern integer xfungc_(integer *fd, shortint *ch); +extern integer xfwrie_(integer *fd, shortint *buffer, integer *maxchs); +extern integer xgtuid_(shortint *userne, integer *maxch); +extern integer xmallc_(integer *ubufp, integer *nelems, integer *dtype); +extern integer xmfree_(integer *ptr, integer *dtype); +extern integer xmjbuf_(integer *bp); +extern integer xmktep_(shortint *seed, shortint *tempfe, integer *maxchs); +extern integer xmpl10_(void); +extern integer xmpl11_(void); +extern integer xonerr_(integer *status); +extern integer xonext_(integer *exitce); +extern integer xpages_(shortint *files, shortint *device, shortint *prompt, integer *firste, integer *clearn, integer *mapcc); +extern integer xprinf_(shortint *formag); +extern integer xqsort_(integer *x, integer *nelem, I_fp compae); +extern integer xrealc_(integer *ubufp, integer *nelems, integer *dtype); +extern integer xstdeh_(integer *excepn, integer *nexthr); +extern integer xstrct_(shortint *str, shortint *outstr, integer *maxch); +extern integer xstrcy_(shortint *s1, shortint *s2, integer *maxch); +extern integer xt21id_(integer *im, integer *axis, integer *col1, integer *col2, integer *line1, integer *line2, integer *x, integer *y, integer *npts); +extern integer xt21ig_(integer *im, integer *axis, integer *col1, integer *col2, integer *line1, integer *line2, integer *x, integer *y, integer *npts); +extern integer xt21im_(integer *im, integer *axis, integer *col1, integer *col2, integer *line1, integer *line2, integer *x, integer *y, integer *npts); +extern integer xtansr_(shortint *prompt, integer *answer); +extern integer xtargs_(integer *stp, shortint *key, shortint *val, integer *maxchr); +extern integer xtbace_(integer *ba); +extern integer xtbagi_(integer *ba, integer *c__, integer *l, integer *data, integer *n); +extern integer xtbags_(integer *ba, integer *c__, integer *l, shortint *data, integer *n); +extern integer xtbapi_(integer *ba, integer *c__, integer *l, integer *data, integer *n); +extern integer xtbaps_(integer *ba, integer *c__, integer *l, shortint *data, integer *n); +extern integer xtclar_(shortint *paramr, integer *answer); +extern integer xtcsub_(integer *co, integer *col1, integer *col2, integer *line1, integer *line2, integer *data); +extern integer xtcsum_(integer *co, integer *col1, integer *col2, integer *line1, integer *line2, integer *data); +extern integer xtdelp_(shortint *output, shortint *origil); +extern integer xtextn_(integer *fd, shortint *fname, shortint *exttye, integer *indics, shortint *extnae, integer *extver, integer *lindex, integer *lname, integer *lver, shortint *ikpars, integer *err); +extern integer xtfpfe_(integer *fp); +extern integer xtfpsp_(integer *pm, integer *nc, integer *nl, integer *v, shortint *data, integer *lvalin, integer *cvalin, integer *lvalot, integer *cvalot); +extern integer xtgets_(shortint *fname); +extern integer xtgids_(shortint *str, shortint *dicstr, integer *ids, integer *maxids); +extern integer xtimet_(shortint *image, shortint *ext, integer *maxchr); +extern integer xtimrt_(shortint *image, shortint *root, integer *maxchr); +extern integer xtloge_(integer *logfd, integer *nlogfd, shortint *prefix); +extern integer xtlsub_(integer *im, integer *col1, integer *col2, integer *line1, integer *line2, integer *data); +extern integer xtlsum_(integer *im, integer *col1, integer *col2, integer *line1, integer *line2, integer *data); +extern integer xtmase_(shortint *fname, shortint *extnae, integer *mode, shortint *mname, integer *maxchr); +extern integer xtmk1d_(shortint *image, shortint *secstr, integer *szfnae); +extern integer xtmkic_(shortint *image, shortint *secstr, shortint *imagec, integer *szfnae); +extern integer xtmkip_(shortint *input, shortint *output, shortint *origil, integer *szfnae); +extern integer xtmksn_(shortint *image, shortint *secstr, shortint *sectin, integer *szsecn); +extern integer xtpart_(shortint *args, integer *ip, logical *skip); +extern integer xtphiy_(integer *im, shortint *str); +extern integer xtsor2_(real *a1, real *a2, integer *npts); +extern integer xtsor3_(real *a1, real *a2, real *a3, integer *npts); +extern integer xtsor4_(real *a1, real *a2, real *a3, real *a4, integer *npts); +extern integer xtsord_(doublereal *a1, doublereal *a2, doublereal *a3, integer *npts); +extern integer xtstad_(doublereal *sample, integer *nsampe, real *frac, doublereal *mean, doublereal *sigma, doublereal *median, doublereal *mode); +extern integer xtstai_(integer *sample, integer *nsampe, real *frac, real *mean, real *sigma, real *median, real *mode); +extern integer xtstar_(real *sample, integer *nsampe, real *frac, real *mean, real *sigma, real *median, real *mode); +extern integer xtstas_(shortint *sample, integer *nsampe, real *frac, real *mean, real *sigma, real *median, real *mode); +extern integer xtstre_(shortint *str); +extern integer xttxte_(integer *fd); +extern integer xttyse_(integer *width, integer *height); +extern integer xvvbip_(integer *opcode, integer *in1, integer *in2, integer *out); +extern integer xvvbop_(integer *opcode, integer *in1, integer *in2, integer *out); +extern integer xvvqut_(integer *cond, integer *in1, integer *in2, integer *out); +extern integer xvvunp_(integer *opcode, integer *in, integer *out); +extern integer xwhen_(integer *signal, integer *handlr, integer *oldhar); +extern integer ytfpfe_(integer *fp); +extern integer ytfpsp_(integer *pmin, integer *pm, integer *nc, integer *nl, integer *v, shortint *data, integer *lvalin, integer *cvalin, integer *lvalot, integer *cvalot); +extern integer zardim_(integer *chan, shortint *buf, integer *nbytes, integer *offset); +extern integer zardmt_(integer *mtchan, shortint *buf, integer *maxbys, integer *offset); +extern integer zardnu_(integer *chan, shortint *buf, integer *maxbys, integer *loffst); +extern integer zardps_(integer *ps, shortint *buf, integer *maxbys, integer *offset); +extern integer zawrim_(integer *chan, shortint *buf, integer *nbytes, integer *offset); +extern integer zawrmt_(integer *mtchan, shortint *buf, integer *nbytes, integer *offset); +extern integer zawrnu_(integer *chan, shortint *buf, integer *nbytes, integer *loffst); +extern integer zawrps_(integer *ps, shortint *buf, integer *nbytes, integer *offset); +extern integer zawtim_(integer *chan, integer *nbytes); +extern integer zawtmt_(integer *mtchan, integer *status); +extern integer zawtnu_(integer *chan, integer *status); +extern integer zawtps_(integer *ps, integer *status); +extern integer zblkim_(integer *chan1, integer *chan2, integer *chan3, integer *chan4, integer *nframs, real *rate); +extern integer zclrim_(integer *chan); +extern integer zclsim_(integer *chan, integer *status); +extern integer zclsmt_(integer *mtchan, integer *status); +extern integer zclsnu_(integer *chan, integer *status); +extern integer zclsps_(integer *chan, integer *status); +extern integer zclstt_(integer *fd, integer *status); +extern integer zerosc_(void); +extern integer zersim_(integer *chan); +extern integer zflsnu_(integer *chan, integer *status); +extern integer zflstt_(integer *fd, integer *status); +extern integer zfrmim_(integer *chan); +extern integer zgetnu_(integer *chan, shortint *buf, integer *maxch, integer *status); +extern integer zgettt_(integer *fd, shortint *buf, integer *maxch, integer *status); +extern integer zlset_(real *z__, integer *mx, integer *nx, integer *ny, real *zl, integer *nlevl); +extern integer zmapim_(integer *chan, shortint *maptye); +extern integer zmtcim_(integer *chan1, integer *chan2); +extern integer znotnu_(integer *chan, integer *loffst); +extern integer znottt_(integer *fd, integer *offset); +extern integer zopnim_(shortint *devino, integer *mode, integer *chan); +extern integer zopnmt_(shortint *iodev, integer *acmode, integer *mtchan); +extern integer zopnnu_(shortint *osfn, integer *mode, integer *chan); +extern integer zopntt_(shortint *osfn, integer *mode, integer *chan); +extern integer zputnu_(integer *chan, shortint *buf, integer *nchars, integer *status); +extern integer zputtt_(integer *fd, shortint *buf, integer *nchars, integer *status); +extern integer zrcrim_(integer *chan, integer *xcur, integer *ycur); +extern integer zrgbim_(integer *redchn, integer *greenn, integer *bluecn); +extern integer zrmim_(integer *chan, integer *zfactr); +extern integer zscale_(integer *im, real *z1, real *z2, real *contrt, integer *optime, integer *lenste); +extern integer zscfla_(real *data, real *flat, real *x, integer *npix, real *z0, real *dz); +extern integer zsczls_(real *sample, integer *npix, real *contrt, real *z1, real *z2); +extern integer zseknu_(integer *chan, integer *loffst, integer *status); +extern integer zsektt_(integer *fd, integer *offset, integer *status); +extern integer zsestt_(integer *fd, integer *param, shortint *svalue); +extern integer zsettt_(integer *chan, integer *param, integer *value); +extern integer zststt_(integer *fd, integer *param, shortint *outstr, integer *maxch, integer *nchars); +extern integer zsttim_(integer *chan, integer *what, integer *lvalue); +extern integer zsttmt_(integer *mtchan, integer *what, integer *lvalue); +extern integer zsttnu_(integer *chan, integer *param, integer *lvalue); +extern integer zsttps_(integer *ps, integer *what, integer *lvalue); +extern integer zstttt_(integer *fd, integer *param, integer *lvalue); +extern integer zttgeg_(integer *chan, shortint *obuf, integer *maxch, integer *nchars); +extern integer zttloo_(integer *inflag, integer *outflg); +extern integer zttlov_(integer *chan); +extern integer zttpbf_(integer *errcoe); +extern integer zttplk_(integer *flag__); +extern integer zttpug_(integer *chan, shortint *dstr, integer *nchars); +extern integer zttttt_(shortint *messae); +extern integer zttupe_(shortint *in, shortint *out, integer *nchars); +extern integer zwndi3_(integer *chan1, integer *chan2, integer *chan3); +extern integer zwndim_(integer *chan); +extern integer agfpbn_(real *fpdp); +extern integer ahivi_(integer *a, integer *npix); +extern integer ahivl_(integer *a, integer *npix); +extern integer alovi_(integer *a, integer *npix); +extern integer alovl_(integer *a, integer *npix); +extern integer amedi_(integer *a, integer *npix); +extern integer amedl_(integer *a, integer *npix); +extern integer aravd_(doublereal *a, integer *npix, doublereal *mean, doublereal *sigma, doublereal *ksig); +extern integer aravi_(integer *a, integer *npix, real *mean, real *sigma, real *ksig); +extern integer aravl_(integer *a, integer *npix, doublereal *mean, doublereal *sigma, doublereal *ksig); +extern integer aravr_(real *a, integer *npix, real *mean, real *sigma, real *ksig); +extern integer aravs_(shortint *a, integer *npix, real *mean, real *sigma, real *ksig); +extern integer aravx_(complex *a, integer *npix, real *mean, real *sigma, real *ksig); +extern integer asoki_(integer *a, integer *npix, integer *ksel); +extern integer asokl_(integer *a, integer *npix, integer *ksel); +extern integer await_(integer *fd); +extern integer awaitb_(integer *fd); +extern integer awvgd_(doublereal *a, integer *npix, doublereal *mean, doublereal *sigma, doublereal *lcut, doublereal *hcut); +extern integer awvgi_(integer *a, integer *npix, real *mean, real *sigma, real *lcut, real *hcut); +extern integer awvgl_(integer *a, integer *npix, doublereal *mean, doublereal *sigma, doublereal *lcut, doublereal *hcut); +extern integer awvgr_(real *a, integer *npix, real *mean, real *sigma, real *lcut, real *hcut); +extern integer awvgs_(shortint *a, integer *npix, real *mean, real *sigma, real *lcut, real *hcut); +extern integer awvgx_(complex *a, integer *npix, real *mean, real *sigma, real *lcut, real *hcut); +extern integer begmem_(integer *bestse, integer *oldsie, integer *maxsie); +extern integer btoi_(logical *boolee); +extern integer cctoc_(shortint *str, integer *ip, shortint *cval); +extern integer ccxset_(shortint *text, integer *n, shortint *out, integer *startt); +extern integer clcfeh_(shortint *param, shortint *outstr, integer *maxch); +extern integer clcfid_(shortint *param, shortint *outstr, integer *maxch); +extern integer clgcur_(shortint *param, real *wx, real *wy, integer *wcs, integer *key, shortint *strval, integer *maxch); +extern integer clgeti_(shortint *param); +extern integer clgetl_(shortint *param); +extern integer clgfil_(integer *list, shortint *fname, integer *maxch); +extern integer clginp_(shortint *param); +extern integer clgkey_(shortint *param, integer *key, shortint *strval, integer *maxch); +extern integer clglpb_(shortint *param, logical *bval); +extern integer clglpc_(shortint *param, shortint *cval); +extern integer clglpd_(shortint *param, doublereal *dval); +extern integer clglpi_(shortint *param, integer *ival); +extern integer clglpl_(shortint *param, integer *lval); +extern integer clglpr_(shortint *param, real *rval); +extern integer clglps_(shortint *param, shortint *sval); +extern integer clglpx_(shortint *param, complex *xval); +extern integer clglsr_(shortint *param, shortint *outstr, integer *maxch); +extern integer clgpsi_(integer *pp, shortint *parnae); +extern integer clgpsl_(integer *pp, shortint *parnae); +extern integer clgwrd_(shortint *param, shortint *keywod, integer *maxchr, shortint *dictiy); +extern integer clktie_(integer *oldtie); +extern integer clopst_(shortint *pset); +extern integer clplen_(integer *list); +extern integer clpopi_(shortint *param); +extern integer clpops_(shortint *param); +extern integer clpopu_(shortint *param); +extern integer clpsee_(integer *pp, shortint *parnae); +extern integer clpsit_(shortint *cmd, integer *arg1, integer *arg2); +extern integer clscan_(shortint *param); +extern integer clstai_(integer *paramr); +extern integer coerce_(integer *ptr, integer *type1, integer *type2); +extern integer cogetr_(integer *co, integer *col, integer *line1, integer *line2); +extern integer comap_(integer *im, integer *maxbuf); +extern integer conxch_(real *x, real *y, integer *i1, integer *i2, integer *i3, integer *i4); +extern integer cputie_(integer *oldcpe); +extern integer cqccry_(integer *cq); +extern integer cqdgei_(integer *cq, integer *record, shortint *field); +extern integer cqdscn_(integer *cq); +extern integer cqdtye_(shortint *c__); +extern integer cqfgad_(integer *cq, shortint *field, doublereal *array, integer *maxlen); +extern integer cqfgai_(integer *cq, shortint *field, integer *array, integer *maxlen); +extern integer cqfgar_(integer *cq, shortint *field, real *array, integer *maxlen); +extern integer cqfgei_(integer *cq, shortint *field); +extern integer cqfgtt_(integer *cq, shortint *field, shortint *str, integer *maxch); +extern integer cqfimy_(integer *cq, shortint *imname); +extern integer cqfinn_(integer *res, integer *fieldo, shortint *fname, integer *szfnae, integer *foffst, integer *fsize, integer *ftype, shortint *units, integer *szunis, shortint *fmts, integer *szfmts); +extern integer cqfino_(integer *res, shortint *field, integer *foffst, integer *fsize, integer *ftype, shortint *units, integer *szunis, shortint *fmts, integer *szfmts); +extern integer cqfirt_(integer *cq); +extern integer cqfnae_(integer *res, integer *fieldo, shortint *fname, integer *szfnae); +extern integer cqfnur_(integer *res, shortint *field); +extern integer cqfoft_(integer *res, shortint *field); +extern integer cqfquy_(integer *cq, shortint *catfie, shortint *catfmt); +extern integer cqfrit_(integer *cq, shortint *catfmt); +extern integer cqfsie_(integer *res, shortint *field); +extern integer cqftye_(integer *res, shortint *field); +extern integer cqgnrd_(integer *res, shortint *buf, integer *maxch, integer *recptr); +extern integer cqgqpn_(integer *cq, integer *parno, shortint *pname, integer *maxnae, shortint *value, integer *maxval, shortint *units, integer *maxuns, shortint *format, integer *maxfot); +extern integer cqgqpr_(integer *cq, shortint *name__, shortint *pname, integer *maxnae, shortint *value, integer *maxval, shortint *units, integer *maxuns, shortint *format, integer *maxfot); +extern integer cqgred_(integer *res, shortint *buf, integer *maxch, integer *recptr); +extern integer cqgvac_(integer *res, integer *recptr, shortint *field, shortint *str, integer *maxch); +extern integer cqgvad_(integer *res, integer *recptr, shortint *field, doublereal *dval); +extern integer cqgvai_(integer *res, integer *recptr, shortint *field, integer *ival); +extern integer cqgval_(integer *res, integer *recptr, shortint *field, integer *lval); +extern integer cqgvar_(integer *res, integer *recptr, shortint *field, real *rval); +extern integer cqgvas_(integer *res, integer *recptr, shortint *field, shortint *sval); +extern integer cqhinn_(integer *res, integer *kwno, shortint *hkname, integer *szhkne, shortint *hkvale, integer *szhkve); +extern integer cqhino_(integer *res, shortint *hkname, shortint *hkvale, integer *szhkve); +extern integer cqimqy_(integer *cq, shortint *imname); +extern integer cqirit_(integer *cq); +extern integer cqisti_(integer *res, integer *param); +extern integer cqistt_(integer *res, integer *param, shortint *str, integer *maxch); +extern integer cqkinn_(integer *res, integer *fieldo, shortint *kfield, integer *szkfid, shortint *ikname, integer *szikne, shortint *ikvale, integer *szikve, integer *iktype, shortint *ikunis, integer *szikus); +extern integer cqkino_(integer *res, shortint *kfield, shortint *ikname, integer *szikne, shortint *ikvale, integer *szikve, integer *iktype, shortint *ikunis, integer *szikus); +extern integer cqloce_(integer *cq, shortint *name__); +extern integer cqlocn_(integer *cq, integer *catno, shortint *name__, integer *maxch); +extern integer cqmap_(shortint *databe, integer *mode); +extern integer cqnqps_(integer *cq); +extern integer cqquey_(integer *cq); +extern integer cqrint_(integer *cq); +extern integer cqrsti_(integer *res, integer *param); +extern integer cqrstt_(integer *res, integer *param, shortint *str, integer *maxch); +extern integer cqscan_(integer *cq); +extern integer cqsetd_(integer *res, integer *recptr); +extern integer cqsetn_(integer *cq, integer *catno); +extern integer cqsett_(integer *cq, shortint *name__); +extern integer cqsqpn_(integer *cq, integer *parno, shortint *valuer); +extern integer cqsqpr_(integer *cq, shortint *name__, shortint *valuer); +extern integer cqstai_(integer *cq, integer *param); +extern integer cqstat_(integer *cq, integer *param, shortint *str, integer *maxch); +extern integer cqwinn_(integer *res, integer *fieldo, shortint *wfield, integer *szwfid, shortint *wkname, integer *szwkne, shortint *wkvale, integer *szwkve, integer *wktype, shortint *wkunis, integer *szwkus); +extern integer cqwino_(integer *res, shortint *wfield, shortint *wkname, integer *szwkne, shortint *wkvale, integer *szwkve, integer *wktype, shortint *wkunis, integer *szwkus); +extern integer cqwrdr_(integer *index, shortint *outstr, integer *maxch, shortint *dict); +extern integer ctocc_(shortint *ch, shortint *outstr, integer *maxch); +extern integer ctod_(shortint *str, integer *ip, doublereal *dval); +extern integer ctoi_(shortint *str, integer *ip, integer *ival); +extern integer ctol_(shortint *str, integer *ip, integer *lval); +extern integer ctor_(shortint *str, integer *ip, real *rval); +extern integer ctotok_(shortint *str, integer *ip, shortint *outstr, integer *maxch); +extern integer ctowrd_(shortint *str, integer *ip, shortint *outstr, integer *maxch); +extern integer ctox_(shortint *str, integer *ip, complex *xval); +extern integer decods_(shortint *rangeg, integer *ranges, integer *maxras, integer *nvalus); +extern integer diropn_(shortint *fname, integer *mode); +extern integer dsmap_(integer *frame, integer *mode, integer *color, integer *chan); +extern integer dspmmp_(shortint *pmname, integer *refim); +extern integer dsuluc_(shortint *fname, real *z1, real *z2); +extern integer dtgeti_(integer *dt, integer *record, shortint *field); +extern integer dtloce_(integer *dt, shortint *name__); +extern integer dtmap1_(shortint *databe, shortint *key, integer *mode); +extern integer dtmap_(shortint *databe, integer *mode); +extern integer dtmdee_(shortint *datesr, integer *year, integer *month, integer *day, doublereal *time, integer *flags); +extern integer dtmdes_(shortint *datesr, integer *year, integer *month, integer *day, integer *hours, integer *minuts, doublereal *secons, integer *flags); +extern integer dtmene_(shortint *datesr, integer *maxch, integer *year, integer *month, integer *day, doublereal *time, integer *precin, integer *flags); +extern integer dtmens_(shortint *datesr, integer *maxch, integer *year, integer *month, integer *day, integer *hours, integer *minuts, doublereal *secons, integer *precin, integer *flags); +extern integer dtmlte_(shortint *datesr, integer *ltime); +extern integer dtoc3_(doublereal *val, shortint *out, integer *maxch, integer *decpl, integer *afmt, integer *width); +extern integer dtoc_(doublereal *dval, shortint *outstr, integer *maxch, integer *decpl, integer *afmt, integer *width); +extern integer dtscan_(integer *dt); +extern integer envfid_(shortint *key, shortint *value, integer *maxch); +extern integer envfit_(integer *valp); +extern integer envfre_(integer *oldtop, integer *userfn); +extern integer envgei_(shortint *varnae); +extern integer envges_(shortint *key, shortint *value, integer *maxch); +extern integer envnet_(integer *lastel, integer *valp, integer *showrs); +extern integer envpus_(shortint *key, shortint *value); +extern integer envscn_(shortint *cmd); +extern integer errcoe_(void); +extern integer errget_(shortint *outstr, integer *maxch); +extern integer evexpr_(shortint *expr, integer *getopa, integer *ufcnea); +extern integer evvexr_(shortint *expr, integer *getop, integer *getopa, integer *ufcn, integer *ufcnda, integer *flags); +extern integer extrea_(real *x, real *y, real *curvae, integer *npts, real *dx); +extern integer fdevbk_(shortint *path); +extern integer ffault_(integer *fd, integer *fileot, integer *nresee, integer *rwflag); +extern integer ffilsz_(integer *fd); +extern integer fgdev0_(integer *ffp, integer *what); +extern integer fgetfd_(shortint *filene, integer *mode, integer *type__); +/*extern integer filbuf_(integer *fd);*/ +extern integer finfo_(shortint *fname, integer *ostrut); +extern integer fmaccs_(shortint *dfname, integer *mode); +extern integer fmfinf_(integer *fc, integer *lfile); +extern integer fmfopn_(integer *fm, integer *lfile, integer *mode, integer *type__); +extern integer fmgetd_(integer *fm, integer *lfile, integer *mode, integer *type__); +extern integer fmioed_(integer *fm, integer *lfile, integer *npages); +extern integer fmlfpe_(shortint *lfname, integer *fm, integer *lfile, integer *type__); +extern integer fmlfst_(integer *fm, integer *lfile, integer *statbf); +extern integer fmnexe_(integer *fm); +extern integer fmopen_(shortint *fname, integer *mode); +extern integer fmstai_(integer *fm, integer *param); +extern integer fnextn_(shortint *vfn, shortint *outstr, integer *maxch); +extern integer fnldir_(shortint *vfn, shortint *outstr, integer *maxch); +extern integer fnroot_(shortint *vfn, shortint *outstr, integer *maxch); +extern integer fntedt_(shortint *in, shortint *out, integer *editp, integer *nedit, shortint *patbuf); +extern integer fntget_(shortint *temple, integer *ix, integer *patp, integer *npat, integer *sbuf, integer *maxch); +extern integer fntgfb_(integer *list, shortint *fname, integer *maxch); +extern integer fntgfn_(integer *pp, shortint *outstr, integer *maxch); +extern integer fntleb_(integer *list); +extern integer fntopb_(shortint *temple, integer *sort); +extern integer fntopn_(shortint *temple); +extern integer fntopt_(shortint *str, shortint *patstr, integer *maxch, shortint *fname, shortint *ldir, integer *ftype); +extern integer fntree_(integer *pp, shortint *outstr, integer *maxch, integer *token); +extern integer fntrfb_(integer *list, integer *index, shortint *fname, integer *maxch); +extern integer fprfmt_(integer *ival); +extern integer freadp_(integer *fd, integer *offset, integer *nchars); +extern integer fsetfd_(integer *fd, shortint *filene, integer *mode, integer *type__); +extern integer fsfopn_(shortint *fname, integer *mode); +extern integer fstati_(integer *fd, integer *what); +extern integer fstatl_(integer *fd, integer *what); +extern integer fstdfe_(shortint *fname, integer *ofd); +extern integer futime_(shortint *fname, integer *atime, integer *mtime); +extern integer fwritp_(integer *fd, integer *offset, integer *nchars); +extern integer fxfchv_(integer *im, integer *group); +extern integer fxfcte_(shortint *card, integer *kwindx); +extern integer fxfexr_(integer *fit, integer *ig, integer *extn, integer *extv); +extern integer fxfhdt_(integer *group, integer *fit, integer *pfd, integer *acmode); +extern integer fxfhee_(integer *im); +extern integer fxfksx_(shortint *outstr); +extern integer fxfred_(integer *fd, shortint *ibuf, shortint *obuf, integer *ncards); +extern integer fxfstr_(shortint *s1, shortint *s2); +extern integer fxftox_(integer *im); +extern integer fxfuad_(integer *fit, integer *im, integer *up, shortint *card); +extern integer fxfxal_(integer *hd, integer *ncua, integer *nlines); +extern integer gctod_(shortint *str, integer *ip, doublereal *odval); +extern integer gctol_(shortint *str, integer *ip, integer *lval, integer *radix); +extern integer gctox_(shortint *str, integer *ip, complex *oxval); +extern integer getci_(integer *fd, integer *ch); +extern integer getdae_(shortint *ch); +extern integer getlie_(integer *fd, shortint *linebf); +extern integer getlle_(integer *fd, shortint *obuf, integer *maxch); +extern integer getloe_(integer *fd, shortint *obuf, integer *maxch, integer *linenm); +extern integer getner_(integer *ranges, integer *number); +extern integer getprr_(integer *ranges, integer *number); +extern integer ggcur_(integer *gp, integer *cn, integer *key, real *sx, real *sy, integer *raster, real *rx, real *ry); +extern integer ggeti_(integer *gp, shortint *cap); +extern integer ggets_(integer *gp, shortint *cap, shortint *outstr, integer *maxch); +extern integer gimgeg_(integer *gp, integer *mappig, integer *rop, integer *src, integer *st, integer *sx, integer *sy, integer *sw, integer *sh, integer *dst, integer *dt, integer *dx, integer *dy, integer *dw, integer *dh); +extern integer gimqur_(integer *gp, integer *raster, integer *type__, integer *width, integer *height, integer *depth); +extern integer gimrep_(integer *gp, integer *colorp, integer *first, integer *maxelm, integer *r__, integer *g, integer *b); +extern integer gkifen_(integer *fd, integer *instrn); +extern integer glbgek_(integer *gp, integer *ax, real *x, real *y, integer *majork); +extern integer gltoc_(integer *lval, shortint *outstr, integer *maxch, integer *base); +extern integer gmttot_(integer *gmt); +extern integer gopen_(shortint *device, integer *mode, integer *fd); +extern integer gopeni_(shortint *device, integer *mode, shortint *uifnae, integer *fd); +extern integer gpatme_(shortint *patstr, integer *from, integer *delim, shortint *patbuf, integer *szpat); +extern integer gpatmh_(shortint *str, shortint *pat, integer *firstr, integer *lastcr); +extern integer gptfit_(shortint *gki, integer *ip, integer *lastip); +extern integer gqvery_(void); +extern integer grcbol_(shortint *opstr, integer *ip); +extern integer grccod_(integer *rc, integer *stream, real *sx, real *sy, integer *raster, real *rx, real *ry, shortint *opstr); +extern integer grccur_(integer *rc, integer *stream, integer *key, real *x, real *y, integer *raster, real *rx, real *ry, integer *ppos); +extern integer grcmay_(integer *rc, integer *key, integer *nukey); +extern integer grcopn_(shortint *device, integer *mode, integer *stream, integer *rc); +extern integer grcrey_(integer *stream, shortint *prompt, shortint *obuf, integer *maxch); +extern integer grcses_(integer *tr, integer *raster, real *mx, real *my); +extern integer grdwcs_(shortint *devnae, integer *wcs, integer *lenwcs); +extern integer gstati_(integer *gp, integer *param); +extern integer gstats_(integer *gp, integer *param, shortint *outstr, integer *maxch); +extern integer gstrct_(shortint *str, shortint *outstr, integer *maxch); +extern integer gstrcy_(shortint *s1, shortint *s2, integer *maxch); +extern integer gstrdb_(shortint *line, shortint *outlie, integer *maxch, integer *tabs); +extern integer gstreb_(shortint *line, shortint *outlie, integer *maxch, integer *tabs); +extern integer gstrmh_(shortint *str, shortint *pat, integer *firstr, integer *lastcr); +extern integer gtgcu1_(integer *gt, shortint *cur, real *wx, real *wy, integer *wcs, integer *key, shortint *cmd, integer *szcmd); +extern integer gtgcur_(shortint *cur, real *wx, real *wy, integer *wcs, integer *key, shortint *cmd, integer *szcmd); +extern integer gtgeti_(integer *gt, integer *param); +extern integer gtini1_(integer *gp); +extern integer gtinit_(void); +extern integer gtndis_(real *x1, real *x2, real *step); +extern integer gtrcle_(integer *p1, integer *p2, integer *npts, integer *index, real *s, real *ref); +extern integer gtrcot_(shortint *kernfe, shortint *taskne, shortint *devnae, integer *stream, integer *in, integer *out); +extern integer gtrfen_(integer *tr, integer *gki); +extern integer gtrgty_(integer *stream); +extern integer gtrint_(integer *stream); +extern integer gtrpop_(shortint *pv, integer *npts, integer *x1, integer *x2, integer *y1, integer *y2); +extern integer gtrrer_(integer *fd, integer *key, real *sx, real *sy, integer *raster, real *rx, real *ry); +extern integer gtrwrp_(integer *fd, integer *nchars); +extern integer gttyld_(shortint *fname, shortint *device, shortint *outstr, integer *maxch); +extern integer gtybih_(integer *capcoe, integer *tcapce, integer *ncaps); +extern integer gtycas_(integer *gty); +extern integer gtyeny_(shortint *cap); +extern integer gtyexs_(shortint *str, integer *ip, shortint *outstr, integer *maxch); +extern integer gtyfiy_(integer *tty, shortint *cap, integer *ip); +extern integer gtygei_(integer *tty, shortint *cap); +extern integer gtyges_(integer *tty, shortint *cap, shortint *outstr, integer *maxch); +extern integer gtyopn_(shortint *termce, shortint *device, shortint *ufiels); +extern integer i8sav_(integer *isw, integer *ivalue, logical *set); +extern integer iand_(integer *a, integer *b); +extern integer idbfid_(integer *im, shortint *key, integer *rp); +extern integer idbfir_(shortint *s1, shortint *s2, integer *maxch); +extern integer idbgeg_(integer *im, shortint *key, shortint *outstr, integer *maxch); +extern integer idbkwp_(shortint *key); +extern integer idbned_(integer *idb, integer *recptr); +extern integer idbopn_(integer *im, integer *ualen); +extern integer idbpug_(integer *im, shortint *key, shortint *strval); +extern integer idkopn_(integer *aframe, integer *acolor, integer *tty); +extern integer iisflu_(integer *chan); +extern integer ikiacs_(shortint *image, shortint *root, shortint *extn, integer *acmode); +extern integer ikiext_(shortint *envime, shortint *defime, shortint *envimn, shortint *defimn); +extern integer ikiged_(integer *ip, shortint *outstr, integer *maxch, integer *delim); +extern integer ikigen_(integer *kernel, integer *index, shortint *extn, integer *maxch); +extern integer ikiger_(shortint *param); +extern integer ikivan_(integer *kernel, shortint *extn); +extern integer imaccf_(integer *im, shortint *key); +extern integer imaccs_(shortint *image, integer *acmode); +extern integer imcssz_(integer *im, integer *vs, integer *ve, integer *ndim, integer *dtype, integer *npix, integer *rwflag); +extern integer imdgcr_(shortint *param, real *wx, real *wy, integer *wcs, integer *key, shortint *strval, integer *maxch); +extern integer imdges_(integer *frame, integer *server, shortint *image, integer *szimae, shortint *title, integer *sztite, real *a, real *b, real *c__, real *d__, real *tx, real *ty); +extern integer imdgsg_(shortint *cap); +extern integer imdma1_(integer *frame, integer *mode, integer *selece, integer *erase); +extern integer imdmae_(integer *frame, integer *mode, integer *selece); +extern integer imdmap_(shortint *device, integer *accese, I_fp imdopn); +extern integer imdopn_(shortint *fname, integer *accese); +extern integer imdqup_(integer *wcs, shortint *reg, real *sx, real *sy, integer *snx, integer *sny, integer *dx, integer *dy, integer *dnx, integer *dny, shortint *objref); +extern integer imdrcr_(shortint *device, real *x, real *y, integer *wcs, integer *key, shortint *strval, integer *maxch, integer *inwcs, integer *pause); +extern integer imdwcr_(void); +extern integer imgeti_(integer *im, shortint *key); +extern integer imgetl_(integer *im, shortint *key); +extern integer imgfte_(integer *im, shortint *key); +extern integer imggsc_(integer *im, integer *vs, integer *ve, integer *ndim, integer *dtype, integer *totpix); +extern integer imggsd_(integer *imdes, integer *vs, integer *ve, integer *ndim); +extern integer imggsi_(integer *imdes, integer *vs, integer *ve, integer *ndim); +extern integer imggsl_(integer *imdes, integer *vs, integer *ve, integer *ndim); +extern integer imggsr_(integer *imdes, integer *vs, integer *ve, integer *ndim); +extern integer imggss_(integer *imdes, integer *vs, integer *ve, integer *ndim); +extern integer imggsx_(integer *imdes, integer *vs, integer *ve, integer *ndim); +extern integer imgibf_(integer *im, integer *vs, integer *ve, integer *ndim, integer *dtype); +extern integer imgl1d_(integer *im); +extern integer imgl1i_(integer *im); +extern integer imgl1l_(integer *im); +extern integer imgl1r_(integer *im); +extern integer imgl1s_(integer *im); +extern integer imgl1x_(integer *im); +extern integer imgl2d_(integer *im, integer *linenm); +extern integer imgl2i_(integer *im, integer *linenm); +extern integer imgl2l_(integer *im, integer *linenm); +extern integer imgl2r_(integer *im, integer *linenm); +extern integer imgl2s_(integer *im, integer *linenm); +extern integer imgl2x_(integer *im, integer *linenm); +extern integer imgl3d_(integer *im, integer *line, integer *band); +extern integer imgl3i_(integer *im, integer *line, integer *band); +extern integer imgl3l_(integer *im, integer *line, integer *band); +extern integer imgl3r_(integer *im, integer *line, integer *band); +extern integer imgl3s_(integer *im, integer *line, integer *band); +extern integer imgl3x_(integer *im, integer *line, integer *band); +extern integer imgnfn_(integer *fn, shortint *outstr, integer *maxch); +extern integer imgnld_(integer *imdes, integer *linepr, integer *v); +extern integer imgnli_(integer *imdes, integer *linepr, integer *v); +extern integer imgnll_(integer *imdes, integer *linepr, integer *v); +extern integer imgnln_(integer *im, integer *linepr, integer *v, integer *dtype); +extern integer imgnlr_(integer *imdes, integer *linepr, integer *v); +extern integer imgnls_(integer *imdes, integer *linepr, integer *v); +extern integer imgnlx_(integer *imdes, integer *linepr, integer *v); +extern integer imgobf_(integer *im, integer *vs, integer *ve, integer *ndim, integer *dtype); +extern integer imgs1d_(integer *im, integer *x1, integer *x2); +extern integer imgs1i_(integer *im, integer *x1, integer *x2); +extern integer imgs1l_(integer *im, integer *x1, integer *x2); +extern integer imgs1r_(integer *im, integer *x1, integer *x2); +extern integer imgs1s_(integer *im, integer *x1, integer *x2); +extern integer imgs1x_(integer *im, integer *x1, integer *x2); +extern integer imgs2d_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2); +extern integer imgs2i_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2); +extern integer imgs2l_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2); +extern integer imgs2r_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2); +extern integer imgs2s_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2); +extern integer imgs2x_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2); +extern integer imgs3d_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2, integer *z1, integer *z2); +extern integer imgs3i_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2, integer *z1, integer *z2); +extern integer imgs3l_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2, integer *z1, integer *z2); +extern integer imgs3r_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2, integer *z1, integer *z2); +extern integer imgs3s_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2, integer *z1, integer *z2); +extern integer imgs3x_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2, integer *z1, integer *z2); +extern integer imloop_(integer *v, integer *vs, integer *ve, integer *vinc, integer *ndim); +extern integer immap_(shortint *imspec, integer *acmode, integer *hdrarg); +extern integer immapz_(shortint *imspec, integer *acmode, integer *hdrarg); +extern integer imnote_(integer *im, integer *v); +extern integer imofnl_(integer *im, shortint *temple, integer *sort); +extern integer imofns_(integer *im, shortint *temple); +extern integer imofnu_(integer *im, shortint *temple); +extern integer impgsd_(integer *imdes, integer *vs, integer *ve, integer *ndim); +extern integer impgsi_(integer *imdes, integer *vs, integer *ve, integer *ndim); +extern integer impgsl_(integer *imdes, integer *vs, integer *ve, integer *ndim); +extern integer impgsr_(integer *imdes, integer *vs, integer *ve, integer *ndim); +extern integer impgss_(integer *imdes, integer *vs, integer *ve, integer *ndim); +extern integer impgsx_(integer *imdes, integer *vs, integer *ve, integer *ndim); +extern integer impl1d_(integer *im); +extern integer impl1i_(integer *im); +extern integer impl1l_(integer *im); +extern integer impl1r_(integer *im); +extern integer impl1s_(integer *im); +extern integer impl1x_(integer *im); +extern integer impl2d_(integer *im, integer *linenm); +extern integer impl2i_(integer *im, integer *linenm); +extern integer impl2l_(integer *im, integer *linenm); +extern integer impl2r_(integer *im, integer *linenm); +extern integer impl2s_(integer *im, integer *linenm); +extern integer impl2x_(integer *im, integer *linenm); +extern integer impl3d_(integer *im, integer *line, integer *band); +extern integer impl3i_(integer *im, integer *line, integer *band); +extern integer impl3l_(integer *im, integer *line, integer *band); +extern integer impl3r_(integer *im, integer *line, integer *band); +extern integer impl3s_(integer *im, integer *line, integer *band); +extern integer impl3x_(integer *im, integer *line, integer *band); +extern integer impmmo_(integer *pl, integer *refim); +extern integer impmmp_(shortint *mask, integer *mode, integer *refim); +extern integer impmon_(shortint *mask, integer *mode, shortint *title, integer *maxch, integer *refim); +extern integer impmsr_(integer *im, integer *bp, integer *szbuf); +extern integer impnld_(integer *imdes, integer *linepr, integer *v); +extern integer impnli_(integer *imdes, integer *linepr, integer *v); +extern integer impnll_(integer *imdes, integer *linepr, integer *v); +extern integer impnln_(integer *im, integer *linepr, integer *v, integer *dtype); +extern integer impnlr_(integer *imdes, integer *linepr, integer *v); +extern integer impnls_(integer *imdes, integer *linepr, integer *v); +extern integer impnlx_(integer *imdes, integer *linepr, integer *v); +extern integer imps1d_(integer *im, integer *x1, integer *x2); +extern integer imps1i_(integer *im, integer *x1, integer *x2); +extern integer imps1l_(integer *im, integer *x1, integer *x2); +extern integer imps1r_(integer *im, integer *x1, integer *x2); +extern integer imps1s_(integer *im, integer *x1, integer *x2); +extern integer imps1x_(integer *im, integer *x1, integer *x2); +extern integer imps2d_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2); +extern integer imps2i_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2); +extern integer imps2l_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2); +extern integer imps2r_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2); +extern integer imps2s_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2); +extern integer imps2x_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2); +extern integer imps3d_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2, integer *z1, integer *z2); +extern integer imps3i_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2, integer *z1, integer *z2); +extern integer imps3l_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2, integer *z1, integer *z2); +extern integer imps3r_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2, integer *z1, integer *z2); +extern integer imps3s_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2, integer *z1, integer *z2); +extern integer imps3x_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2, integer *z1, integer *z2); +extern integer imsinb_(integer *im, integer *vs, integer *ve, integer *ndim); +extern integer imstai_(integer *im, integer *option); +extern integer imtgem_(integer *imt, shortint *outstr, integer *maxch); +extern integer imtlen_(integer *imt); +extern integer imtmae_(shortint *fnt, shortint *outstr, integer *maxch); +extern integer imtopn_(shortint *temple); +extern integer imtopp_(shortint *param); +extern integer imtrgm_(integer *imt, integer *index, shortint *outstr, integer *maxch); +extern integer ingetc_(integer *in, integer *param); +extern integer ingeti_(integer *in, integer *param); +extern integer ingetp_(integer *in, integer *param); +extern integer ingnd_(integer *gp, doublereal *x, doublereal *y, integer *npts, real *wx, real *wy); +extern integer ingned_(integer *in, integer *gp, integer *gt, integer *nl, doublereal *x, doublereal *y, integer *npts, integer *nvars__, real *wx, real *wy); +extern integer ingner_(integer *in, integer *gp, integer *gt, integer *nl, real *x, real *y, integer *npts, integer *nvars__, real *wx, real *wy); +extern integer ingnr_(integer *gp, real *x, real *y, integer *npts, real *wx, real *wy); +extern integer inlstd_(integer *index, shortint *outstr, integer *maxch, shortint *dict); +extern integer inlstt_(shortint *str, integer *ip, shortint *dict, integer *skip, shortint *outstr, integer *maxch); +extern integer ior_(integer *a, integer *b); +extern integer irafmn_(shortint *acmd, integer *ainchn, integer *aoutcn, integer *aerrcn, integer *adrivr, integer *adevte, integer *prtype, shortint *bkgfie, integer *jobcoe, I_fp sysruk, I_fp onenty); +extern integer isdiry_(shortint *vfn, shortint *pathne, integer *maxch); +extern integer ishift_(integer *inword, integer *n); +extern integer itoc_(integer *ival, shortint *str, integer *maxch); +extern integer iwcare_(shortint *card, integer *type__, integer *axis, integer *index); +extern integer iwfind_(integer *iw, integer *type__, integer *axis, integer *index); +extern integer iwgbis_(integer *iw, integer *ctype, integer *axis); +extern integer iwopen_(integer *ds, integer *frame, shortint *imname, integer *szimne, integer *wcssts); +extern integer iwrfis_(integer *mw, integer *im, integer *mode); +extern integer ixdecs_(shortint *rangeg, integer *ranges, integer *maxras, integer *nvalus); +extern integer ixgetr_(integer *ranges, integer *number); +extern integer kfmx_(real *rx); +extern integer kfmy_(real *ry); +extern integer kfpx_(real *rx); +extern integer kfpy_(real *ry); +extern integer kicont_(shortint *rname); +extern integer kidece_(shortint *str, integer *nchars); +extern integer kiexte_(shortint *resoue, shortint *nodene, integer *maxch, integer *nchars); +extern integer kifine_(shortint *alias); +extern integer kigetn_(integer *server, integer *oschan); +/*extern integer kigets_(void);*/ +extern integer kignoe_(shortint *rname, shortint *outstr, integer *delim); +extern integer kiloce_(shortint *node); +extern integer kimape_(shortint *name__, shortint *newnae, integer *maxch); +extern integer kimapn_(integer *chan, shortint *nodene, integer *maxch); +extern integer kiopes_(integer *node); +/*extern integer kirece_(integer *server, integer *opcode, integer *subcoe);*/ +/*extern integer kisend_(integer *server, integer *opcode, integer *subcoe);*/ +extern integer kisenv_(integer *server, integer *opcode, integer *subcoe); +extern integer kmallc_(integer *ubufp, integer *nelems, integer *dtype); +extern integer kmpx_(integer *ix); +extern integer kmpy_(integer *iy); +extern integer kpmx_(integer *ix); +extern integer kpmy_(integer *iy); +extern integer krealc_(integer *ptr, integer *aneles, integer *adtype); +extern integer ksrece_(integer *server); +extern integer kssend_(integer *server, integer *opcode, integer *subcoe); +extern integer kumx_(real *rx); +extern integer kumy_(real *ry); +extern integer kupx_(real *rx); +extern integer kupy_(real *ry); +extern integer ldecos_(shortint *rangeg, integer *ranges, integer *maxras, integer *nvalus); +extern integer lexnum_(shortint *str, integer *ipstat, integer *nchars); +extern integer lgetnr_(integer *ranges, integer *number); +extern integer lgetpr_(integer *ranges, integer *number); +extern integer lnofeh_(integer *lp, integer *line, integer *loffst, integer *ltag); +extern integer lnoopn_(integer *maxlis); +extern integer lpopen_(shortint *device, integer *mode, integer *type__); +extern integer lsttot_(integer *lst); +extern integer ltoc_(integer *lval, shortint *outstr, integer *maxch); +extern integer mallo1_(integer *outpur, integer *nelems, integer *dtype, integer *szalin, integer *fwaaln); +extern integer maskcp_(shortint *colorg); +extern integer maskcr_(integer *colors, integer *maskvl); +extern integer mefgei_(integer *mef, shortint *key); +extern integer mefgel_(integer *mef, shortint *key); +extern integer mefgnc_(integer *mef); +extern integer mefkce_(shortint *card, integer *index); +extern integer mefklx_(shortint *outstr); +extern integer meflor_(integer *mef, integer *spool, integer *group); +extern integer mefopn_(shortint *fitsfe, integer *acmode, integer *oldp); +extern integer mefpie_(integer *mef); +extern integer mefrdn_(integer *mef, integer *gn); +extern integer mefrdr_(integer *mef, integer *group, shortint *extnae, integer *extver); +extern integer mefrdv_(integer *mef, shortint *extnae, integer *extver); +extern integer mefred_(integer *fd, shortint *ibuf, shortint *obuf, integer *ncards); +extern integer mefstr_(shortint *s1, shortint *s2); +extern integer meftox_(integer *mef); +extern integer mgdptr_(integer *fwa, integer *dtype, integer *szalin, integer *fwaaln); +extern integer mgtfwa_(integer *ptr, integer *dtype); +extern integer miirec_(integer *fd, integer *spp, integer *maxchs); +extern integer miired_(integer *fd, doublereal *spp, integer *maxelm); +extern integer miirei_(integer *fd, integer *spp, integer *maxelm); +extern integer miirel_(integer *fd, integer *spp, integer *maxelm); +extern integer miirer_(integer *fd, real *spp, integer *maxelm); +extern integer miires_(integer *fd, shortint *spp, integer *maxelm); +extern integer miogld_(integer *mp, integer *ptr, integer *mval, integer *v, integer *npix); +extern integer miogli_(integer *mp, integer *ptr, integer *mval, integer *v, integer *npix); +extern integer miogll_(integer *mp, integer *ptr, integer *mval, integer *v, integer *npix); +extern integer mioglr_(integer *mp, integer *ptr, integer *mval, integer *v, integer *npix); +extern integer miogls_(integer *mp, integer *ptr, integer *mval, integer *v, integer *npix); +extern integer mioglx_(integer *mp, integer *ptr, integer *mval, integer *v, integer *npix); +extern integer mioopn_(shortint *mask, integer *flags, integer *im); +extern integer mioopo_(integer *pm, integer *im); +extern integer miopld_(integer *mp, integer *ptr, integer *mval, integer *v, integer *npix); +extern integer miopli_(integer *mp, integer *ptr, integer *mval, integer *v, integer *npix); +extern integer miopll_(integer *mp, integer *ptr, integer *mval, integer *v, integer *npix); +extern integer mioplr_(integer *mp, integer *ptr, integer *mval, integer *v, integer *npix); +extern integer miopls_(integer *mp, integer *ptr, integer *mval, integer *v, integer *npix); +extern integer mioplx_(integer *mp, integer *ptr, integer *mval, integer *v, integer *npix); +extern integer miosti_(integer *mp, integer *param); +extern integer msvfwa_(integer *fwa, integer *dtype, integer *szalin, integer *fwaaln); +extern integer mtcap_(shortint *mtname); +extern integer mtdevd_(shortint *iodev); +extern integer mtfile_(shortint *fname); +extern integer mtgtyn_(shortint *device, shortint *ufiels); +extern integer mtneeo_(shortint *mtname); +extern integer mtopen_(shortint *mtname, integer *acmode, integer *bufsie); +extern integer mtskid_(integer *fd, integer *nrecos); +extern integer mwalld_(integer *mw, integer *nelem); +extern integer mwalls_(integer *mw, integer *nchars); +extern integer mwcopd_(integer *mw, integer *omw, integer *ooff, integer *nelem); +extern integer mwcops_(integer *mw, integer *omw, integer *ooff); +extern integer mwfins_(integer *mw, shortint *system); +extern integer mwflop_(integer *mw, shortint *fnname); +extern integer mwgctd_(integer *act, doublereal *oltm, doublereal *oltv, integer *axtyp1, integer *axtyp2, integer *maxdim); +extern integer mwgctr_(integer *act, real *oltm, real *oltv, integer *axtyp1, integer *axtyp2, integer *maxdim); +extern integer mwnewy_(integer *omw); +extern integer mwopem_(integer *im); +extern integer mwopen_(integer *bufptr, integer *ndim); +extern integer mwrefr_(integer *mw, shortint *str); +extern integer mwsave_(integer *omw, integer *bp, integer *buflen); +extern integer mwsctn_(integer *mw, shortint *syste1, shortint *syste2, integer *axbits); +extern integer mwstai_(integer *mw, integer *param); +extern integer ndopen_(shortint *fname, integer *mode); +extern integer nerro_(integer *nerr); +extern integer nowhie_(shortint *in, shortint *out, integer *maxch); +extern integer nscan_(void); +extern integer obsgei_(integer *obs, shortint *param); +extern integer obsopn_(shortint *obsery); +extern integer obspas_(integer *obs, shortint *param); +extern integer obsvon_(shortint *obsery, integer *verboe); +extern integer oifrdr_(integer *fd, integer *im, integer *uchars, integer *htype); +extern integer onenty_(integer *prtype, shortint *bkgfie, shortint *cmd); +extern integer onenty_(integer *prtype, shortint *bkgfie, shortint *cmd); +extern integer oscmd_(shortint *cmd, shortint *infile__, shortint *outfie, shortint *errfie); +extern integer osfnlk_(shortint *osfn); +extern integer osfntt_(shortint *osfn, integer *time); +extern integer osfnuk_(shortint *osfn, integer *time); +extern integer patamh_(shortint *str, integer *from, shortint *pat); +extern integer patgel_(shortint *patstr, shortint *patbuf, integer *szpat, integer *ip, integer *op); +extern integer patgse_(shortint *pat, integer *n); +extern integer patinx_(shortint *pat, integer *n); +extern integer patloe_(shortint *ch, shortint *pat, integer *offset); +extern integer patmae_(shortint *str, shortint *pat, integer *szpat); +extern integer patmah_(shortint *str, shortint *pat); +extern integer patomh_(shortint *str, integer *ip, shortint *pat, integer *pp); +extern integer patsts_(shortint *patbuf, integer *szpat, integer *op, integer *lastop, integer *lastce); +extern integer peaks_(real *x, real *y, real *backgd, integer *npts, real *dx); +extern integer pggetd_(integer *tty, shortint *fname, integer *nchars, integer *totchs, integer *lineno, integer *fileno, integer *nfiles); +extern integer pggete_(integer *fd, shortint *lbuf); +extern integer pgpage_(integer *tty, shortint *fname, shortint *newfne, shortint *upromt, integer *clearn, integer *firste, integer *mapcc, integer *fileno, integer *nfiles, logical *redirn, integer *spoold); +extern integer pgpeed_(void); +extern integer placcs_(integer *pl, integer *v); +extern integer plallc_(integer *pl, integer *nwords); +extern integer plcome_(integer *pl1, integer *pl2, integer *outfd); +extern integer plcree_(integer *naxes, integer *axlen, integer *depth); +extern integer plempe_(integer *pl); +extern integer pll2pi_(shortint *llsrc, integer *xs, integer *pxdst, integer *npix); +extern integer pll2pl_(shortint *llsrc, integer *xs, integer *pxdst, integer *npix); +extern integer pll2ps_(shortint *llsrc, integer *xs, shortint *pxdst, integer *npix); +extern integer pll2ri_(shortint *llsrc, integer *xs, integer *rl, integer *npix); +extern integer pll2rl_(shortint *llsrc, integer *xs, integer *rl, integer *npix); +extern integer pll2rs_(shortint *llsrc, integer *xs, shortint *rl, integer *npix); +extern integer plllen_(shortint *ll); +extern integer plloop_(integer *v, integer *vs, integer *ve, integer *ndim); +extern integer plnewy_(integer *oldpl); +extern integer plopen_(integer *smp); +extern integer plp2li_(integer *pxsrc, integer *xs, shortint *lldst, integer *npix); +extern integer plp2ll_(integer *pxsrc, integer *xs, shortint *lldst, integer *npix); +extern integer plp2ls_(shortint *pxsrc, integer *xs, shortint *lldst, integer *npix); +extern integer plp2ri_(integer *pxsrc, integer *xs, integer *rl, integer *npix); +extern integer plp2rl_(integer *pxsrc, integer *xs, integer *rl, integer *npix); +extern integer plp2rs_(shortint *pxsrc, integer *xs, shortint *rl, integer *npix); +extern integer plr2li_(integer *rlsrc, integer *xs, shortint *lldst, integer *npix); +extern integer plr2ll_(integer *rlsrc, integer *xs, shortint *lldst, integer *npix); +extern integer plr2ls_(shortint *rlsrc, integer *xs, shortint *lldst, integer *npix); +extern integer plr2pi_(integer *rlsrc, integer *xs, integer *pxdst, integer *npix); +extern integer plr2pl_(integer *rlsrc, integer *xs, integer *pxdst, integer *npix); +extern integer plr2ps_(shortint *rlsrc, integer *xs, shortint *pxdst, integer *npix); +extern integer plrefe_(integer *pl, integer *v); +extern integer plrgex_(integer *plr, integer *i__, integer *j); +extern integer plropn_(integer *pl, integer *plane, integer *buflit); +extern integer plsave_(integer *pl, integer *bp, integer *buflen, integer *flags); +extern integer plstai_(integer *pl, integer *param); +extern integer pmaccs_(integer *pl, integer *v); +extern integer pmnewk_(integer *refim, integer *depth); +extern integer pmrgex_(integer *pmr, integer *i__, integer *j); +extern integer pmropn_(integer *pl, integer *plane, integer *buflit); +extern integer pmstai_(integer *pl, integer *param); +extern integer pollgs_(integer *fds); +extern integer pollon_(void); +extern integer polltt_(integer *fds, integer *fd, integer *type__); +extern integer prclcr_(integer *pid); +extern integer prcldr_(integer *job); +extern integer prcloe_(integer *pid); +extern integer prdone_(integer *job); +extern integer prenve_(integer *pid, integer *marker); +/*extern integer prfilf_(integer *fd);*/ +extern integer prfinc_(integer *pid); +extern integer prgete_(integer *fd, shortint *lbuf); +extern integer prgetr_(integer *pid, integer *stream); +extern integer propcr_(shortint *proces, integer *in, integer *out); +extern integer propdr_(shortint *proces, shortint *bkgfie, shortint *bkgmsg); +extern integer propen_(shortint *proces, integer *in, integer *out); +extern integer protet_(shortint *fname, integer *action); +extern integer prpsio_(integer *pid, integer *fd, integer *rwflag); +extern integer prstai_(integer *pid, integer *param); +extern integer pscens_(integer *ps, shortint *str); +extern integer pschwh_(shortint *ch, integer *font); +extern integer psgett_(integer *ps, shortint *fontcr); +extern integer psioit_(shortint *lbuf, integer *pseude, integer *nchars); +extern integer psopen_(integer *fd, integer *defaur); +extern integer psrjps_(integer *ps, shortint *str); +extern integer pstexh_(integer *ps, shortint *str); +extern integer qmaccs_(void); +extern integer qmgetc_(integer *fd, integer *ch); +extern integer qmsetr_(integer *uservl, integer *defval); +extern integer qmspai_(integer *uservl, integer *defval); +extern integer qmsymb_(integer *qm); +extern integer qpaccf_(integer *qp, shortint *param); +extern integer qpaccs_(shortint *poefie, integer *mode); +extern integer qpargt_(integer *gt, shortint *argbuf, integer *maxch); +extern integer qpctod_(shortint *str, integer *ip, doublereal *dval); +extern integer qpctoi_(shortint *str, integer *ip, integer *ival); +extern integer qpdtye_(integer *qp, shortint *datate, integer *dsym); +extern integer qpelee_(integer *qp, shortint *datate, integer *reftye); +extern integer qpexad_(integer *ex, shortint *attrie, integer *xs, integer *xe, integer *xlen); +extern integer qpexai_(integer *ex, shortint *attrie, integer *xs, integer *xe, integer *xlen); +extern integer qpexar_(integer *ex, shortint *attrie, integer *xs, integer *xe, integer *xlen); +extern integer qpexcd_(integer *ex, shortint *atname, shortint *assigp, shortint *expr, integer *offset, integer *dtype); +extern integer qpexci_(integer *ex, shortint *atname, shortint *assigp, shortint *expr, integer *offset, integer *dtype); +extern integer qpexcr_(integer *ex, shortint *atname, shortint *assigp, shortint *expr, integer *offset, integer *dtype); +extern integer qpexdc_(integer *ex, integer *nelem, integer *dtype); +extern integer qpexdr_(integer *ex, shortint *strval); +extern integer qpexee_(integer *ex, integer *iev, integer *oev, integer *nev); +extern integer qpexge_(integer *ex, shortint *attrie, shortint *outstr, integer *maxch); +extern integer qpexgr_(integer *ex, shortint *outstr, integer *maxch); +extern integer qpexmr_(integer *ex, shortint *exprlt); +extern integer qpexon_(integer *qp, shortint *expr); +extern integer qpexpd_(shortint *expr, integer *xs, integer *xe, integer *xlen); +extern integer qpexpi_(shortint *expr, integer *xs, integer *xe, integer *xlen); +extern integer qpexpr_(shortint *expr, integer *xs, integer *xe, integer *xlen); +extern integer qpexps_(integer *ex); +extern integer qpexpt_(integer *qp, shortint *s1, shortint *s2, integer *maxch); +extern integer qpexrd_(integer *ex, doublereal *value); +extern integer qpexsd_(doublereal *x1, doublereal *x2, doublereal *xs, doublereal *xe, integer *nrangs, integer *ip, doublereal *oxs, doublereal *oxe); +extern integer qpexsi_(integer *x1, integer *x2, integer *xs, integer *xe, integer *nrangs, integer *ip, integer *oxs, integer *oxe); +extern integer qpexsr_(real *x1, real *x2, real *xs, real *xe, integer *nrangs, integer *ip, real *oxs, real *oxe); +extern integer qpgeti_(integer *qp, shortint *param); +extern integer qpgetk_(integer *gt, shortint *tokbuf, integer *maxch); +extern integer qpgetl_(integer *qp, shortint *param); +extern integer qpgetm_(integer *qp, shortint *param, integer *opp); +extern integer qpgmsm_(integer *qp, shortint *macro, integer *textp); +extern integer qpgnfn_(integer *fl, shortint *outstr, integer *maxch); +extern integer qpgpsm_(integer *qp, shortint *param); +extern integer qpgstr_(integer *qp, shortint *param, shortint *outstr, integer *maxch); +extern integer qpioge_(integer *io, integer *vs, integer *ve, integer *maxdim); +extern integer qpiogr_(integer *io, shortint *outstr, integer *maxch); +extern integer qpiols_(integer *io); +extern integer qpioon_(integer *qp, shortint *paramx, integer *mode); +extern integer qpiope_(integer *io, shortint *expr, integer *filter, integer *szfilr, shortint *mask, integer *szmask); +extern integer qpiori_(integer *io, integer *obuf, integer *vs, integer *ve, integer *ndim, real *xblock, real *yblock); +extern integer qpiors_(integer *io, shortint *obuf, integer *vs, integer *ve, integer *ndim, real *xblock, real *yblock); +extern integer qpiort_(integer *io, integer *evi); +extern integer qpiost_(integer *io, integer *param); +extern integer qplenf_(integer *qp, shortint *param); +extern integer qplenl_(integer *fl); +extern integer qploas_(integer *qp); +extern integer qpmaxi_(integer *x, integer *y); +extern integer qpmini_(integer *x, integer *y); +extern integer qpnexk_(integer *gt); +extern integer qpofnl_(integer *qp, shortint *temple, logical *sort); +extern integer qpofns_(integer *qp, shortint *temple); +extern integer qpofnu_(integer *qp, shortint *temple); +extern integer qpopen_(shortint *poefie, integer *mode, integer *oqp); +extern integer qpopet_(integer *qp, shortint *text); +extern integer qpparl_(integer *qp, shortint *fieldt, integer *dd); +extern integer qppopn_(integer *qp, shortint *param, integer *mode, integer *type__); +extern integer qpputm_(integer *qp, shortint *param, integer *opp); +extern integer qpquef_(integer *qp, shortint *param, shortint *datate, integer *maxelm, shortint *commet, integer *flags); +extern integer qprawk_(integer *gt, shortint *outstr, integer *maxch); +extern integer qpread_(integer *qp, shortint *param, shortint *buf, integer *maxelm, integer *first, shortint *datate); +extern integer qprlmd_(integer *os, integer *oe, integer *olen, doublereal *xs, doublereal *xe, integer *nx, doublereal *ys, doublereal *ye, integer *ny); +extern integer qprlmi_(integer *os, integer *oe, integer *olen, integer *xs, integer *xe, integer *nx, integer *ys, integer *ye, integer *ny); +extern integer qprlmr_(integer *os, integer *oe, integer *olen, real *xs, real *xe, integer *nx, real *ys, real *ye, integer *ny); +extern integer qpsizf_(integer *qp, integer *dtype, integer *dsym, integer *reftye); +extern integer qpstai_(integer *qp, integer *param); +extern integer rcursr_(integer *stream, shortint *outstr, integer *maxch); +extern integer rdukey_(shortint *keystr, integer *maxch); +extern integer reopen_(integer *fd, integer *mode); +extern integer rgence_(integer *rg, shortint *outstr, integer *maxch); +extern integer rginre_(integer *rg, integer *rval); +extern integer rgintt_(integer *rg1, integer *rg2); +extern integer rgnext_(integer *rg, integer *number); +extern integer rgrans_(shortint *rstr, integer *rmin, integer *rmax); +extern integer rgunin_(integer *rg1, integer *rg2); +extern integer rgwinw_(integer *rg, integer *rmin, integer *rmax); +extern integer rgxrad_(shortint *rstr, doublereal *rvals, integer *npts); +extern integer rgxrar_(shortint *rstr, real *rvals, integer *npts); +extern integer rmopen_(integer *box, shortint *type__, integer *ndatas, integer *pixtye); +extern integer rmsopn_(integer *box, integer *type__, real *data); +extern integer rmtopn_(integer *box, real *data); +extern integer rnginx_(integer *rg, integer *ival, real *rval); +extern integer rngopn_(shortint *rstr, real *r1, real *r2, real *dr); +extern integer sgeexe_(shortint *progrm, shortint *memory, integer *regiss); +extern integer sgfger_(integer *fd, shortint *svbuf, integer *sp, shortint *buf, integer *ip, integer *maxch, integer *nchars); +extern integer sgidrr_(shortint *ch, integer *x, integer *y, integer *xsize, integer *ysize, integer *orien, integer *font); +extern integer sgigeg_(integer *maxlen, logical *penup, integer *ltype); +extern integer sgigsg_(shortint *cap); +extern integer sgkopn_(shortint *device, integer *tty); +extern integer siblki_(integer *im, integer *x1, integer *x2, integer *y, integer *xbavg, integer *ybavg); +extern integer siblkr_(integer *im, integer *x1, integer *x2, integer *y, integer *xbavg, integer *ybavg); +extern integer siblks_(integer *im, integer *x1, integer *x2, integer *y, integer *xbavg, integer *ybavg); +extern integer siblmi_(integer *im, integer *fp, integer *x1, integer *x2, integer *y, integer *xbavg, integer *ybavg, integer *order); +extern integer siblmr_(integer *im, integer *fp, integer *x1, integer *x2, integer *y, integer *xbavg, integer *ybavg, integer *order); +extern integer siblms_(integer *im, integer *fp, integer *x1, integer *x2, integer *y, integer *xbavg, integer *ybavg, integer *order); +extern integer skcopy_(integer *cooin); +extern integer skdecm_(integer *im, shortint *wcs, integer *mw, integer *coo); +extern integer skdecr_(shortint *instr, integer *coo, integer *imcoo); +extern integer skdecs_(shortint *instr, integer *mw, integer *coo, integer *imcoo); +extern integer skimws_(integer *im, integer *mw, integer *ctype, integer *lngax, integer *latax, integer *wtype, integer *radecs, doublereal *equinx, doublereal *epoch); +extern integer skstai_(integer *coo, integer *param); +extern integer skstrs_(shortint *instr, integer *ctype, integer *radecs, doublereal *equinx, doublereal *epoch); +extern integer skwrdr_(integer *index, shortint *outstr, integer *maxch, shortint *dict); +extern integer stallc_(integer *stp, integer *blklen); +extern integer stentr_(integer *stp, shortint *key, integer *usymln); +extern integer stfcte_(shortint *card, integer *index); +extern integer stfind_(integer *stp, shortint *key); +extern integer stfinl_(integer *stp, shortint *key, integer *symbos, integer *maxsys); +extern integer stgene_(shortint *progrm, shortint *memory, integer *regiss); +extern integer stggee_(integer *fd, shortint *obuf); +extern integer stggsg_(shortint *cap); +extern integer stgmsn_(integer *fd); +extern integer stgrey_(integer *fd, shortint *obuf, integer *maxch); +extern integer stgtxe_(integer *pksize); +extern integer sthash_(shortint *key, integer *moduls); +extern integer sthead_(integer *stp); +extern integer stname_(integer *stp, integer *sym); +extern integer stnext_(integer *stp, integer *sym); +extern integer stnsys_(integer *stp, integer *marker); +extern integer stopen_(shortint *name__, integer *leninx, integer *lenstb, integer *szsbuf); +extern integer stpstr_(integer *stp, shortint *str, integer *minchs); +extern integer strdic_(shortint *instr, shortint *outstr, integer *maxchs, shortint *dict); +extern integer strefb_(integer *stp, integer *offset); +extern integer streff_(integer *stp, integer *offset); +extern integer strese_(integer *fd); +extern integer strgee_(integer *fd); +extern integer strids_(shortint *set, shortint *str); +extern integer stridx_(shortint *ch, shortint *str); +extern integer strlds_(shortint *set, shortint *str); +extern integer strldx_(shortint *ch, shortint *str); +extern integer strmac_(shortint *macro, shortint *argstr, shortint *outstr, integer *maxch); +extern integer strmah_(shortint *str, shortint *pat); +extern integer strncp_(shortint *s1, shortint *s2, integer *n); +extern integer stropn_(shortint *str, integer *maxch, integer *mode); +extern integer strseh_(shortint *str, shortint *patstr); +extern integer stsize_(integer *stp); +extern integer sttygg_(shortint *args, integer *ip, shortint *keyw, integer *maxkc, shortint *value, integer *maxvc, integer *defact, integer *yesno); +extern integer sysged_(integer *fd, shortint *cmd, shortint *taskne, integer *arglit, integer *timeit, integer *prtype); +extern integer syshot_(shortint *keyfi1, shortint *keyfi2, shortint *parfie, shortint *showpt, logical *showvl); +extern integer sysruk_(shortint *task, shortint *cmd, integer *rukarf, integer *rukint); +extern integer sysruk_(shortint *task, shortint *cmd, integer *rukarf, integer *rukint); +extern integer ttopen_(shortint *termil, integer *mode); +extern integer ttstai_(integer *fd, integer *param); +extern integer ttstas_(integer *fd, integer *param, shortint *outstr, integer *maxch); +extern integer ttybih_(integer *capcoe, integer *tcapce, integer *ncaps); +extern integer ttycas_(integer *tty); +extern integer ttyctl_(integer *fd, integer *tty, shortint *cap, integer *afflnt); +extern integer ttyeny_(shortint *cap); +extern integer ttyexs_(shortint *str, integer *ip, shortint *outstr, integer *maxch); +extern integer ttyfiy_(integer *tty, shortint *cap, integer *ip); +extern integer ttygds_(shortint *ttynae); +extern integer ttygei_(integer *tty, shortint *cap); +extern integer ttyges_(integer *tty, shortint *cap, shortint *outstr, integer *maxch); +extern integer ttylod_(shortint *fname, shortint *device, shortint *outstr, integer *maxch); +extern integer ttyods_(shortint *ttynae); +extern integer ttyopn_(shortint *termce, shortint *device, I_fp ttylod); +extern integer ttyred_(integer *fd, integer *tty, shortint *outbuf, integer *maxch, shortint *patbuf, integer *timeot); +extern integer ttysti_(integer *tty, integer *paramr); +extern integer ttysui_(shortint *ctrlsr, shortint *outstr, integer *maxch, integer *coords, integer *ncoors); +extern integer vfnadd_(integer *vfd, shortint *osfn, integer *maxch); +extern integer vfndee_(shortint *osfn, integer *ip, shortint *outstr, integer *maxch); +extern integer vfndel_(integer *vfd, shortint *osfn, integer *maxch); +extern integer vfnenr_(integer *vfd, shortint *osfn, integer *maxch); +extern integer vfngen_(integer *vfd, shortint *vfn, shortint *osfn, integer *maxch); +extern integer vfnise_(shortint *fname); +extern integer vfnmap_(integer *vfd, shortint *osfn, integer *maxch); +extern integer vfnmau_(integer *vfd, shortint *osfn, integer *maxch); +extern integer vfnopn_(shortint *vfn, integer *mode); +extern integer vfnunp_(integer *vfd, shortint *osfn, shortint *vfn, integer *maxch); +extern integer vvfncm_(shortint *a, integer *nchars); +extern integer wfgson_(shortint *atstr); +extern integer wfsmph_(doublereal *x, doublereal *v, integer *npts); +extern integer wlcree_(void); +extern integer wldir1_(integer *wlct, integer *flip, doublereal *polepn, logical *north, doublereal *polarn, doublereal *lbegin, doublereal *lend, doublereal *screey); +extern integer wlfine_(doublereal *x, doublereal *y, doublereal *screey); +extern integer wlfuln_(integer *wd, integer *labels, integer *nlabes, integer *axis, integer *side, integer *precin); +extern integer wlline_(shortint *linetg); +extern integer wlmaxy_(doublereal *array, integer *npts); +extern integer wloppe_(integer *side); +extern integer wlpren_(integer *wd, integer *axis); +extern integer xalloe_(shortint *device); +extern integer xdeale_(shortint *device, integer *rewind); +extern integer xdevor_(shortint *device, shortint *owner, integer *maxch); +extern integer xerpoi_(void); +extern integer xfaccs_(shortint *fname, integer *mode, integer *type__); +extern integer xfnote_(integer *fd); +extern integer xfopen_(shortint *fname, integer *mode, integer *type__); +extern integer xfpoll_(integer *fds, integer *nfds, integer *timeot); +extern integer xfread_(integer *fd, shortint *buffer, integer *maxchs); +extern integer xfscan_(integer *fd); +extern integer xgdevt_(shortint *device, shortint *outstr, integer *maxch, integer *onedev); +extern integer xgtpid_(void); +extern integer xisaty_(integer *fd); +extern integer xnint_(doublereal *x); +extern integer xsizef_(integer *dtype); +extern integer xstrcp_(shortint *s1, shortint *s2); +extern integer xstrln_(shortint *str); +extern integer xtargn_(shortint *argstr); +extern integer xtbaon_(integer *nc, integer *nl, integer *maxval); +extern integer xtext1_(shortint *files, shortint *exttye, shortint *index, shortint *extnae, shortint *extver, integer *lindex, integer *lname, integer *lver, shortint *ikpars, integer *err); +extern integer xtexts_(shortint *files, shortint *exttye, shortint *index, shortint *extnae, shortint *extver, integer *lindex, integer *lname, integer *lver, integer *datals, shortint *ikpars, integer *err, integer *imext); +extern integer xtfpd_(integer *fp, integer *im, integer *line, integer *fd); +extern integer xtfpi_(integer *fp, integer *im, integer *line, integer *fd); +extern integer xtfpit_(integer *pm, integer *lvalin, integer *cvalin); +extern integer xtfpl_(integer *fp, integer *im, integer *line, integer *fd); +extern integer xtfpr_(integer *fp, integer *im, integer *line, integer *fd); +extern integer xtfps_(integer *fp, integer *im, integer *line, integer *fd); +extern integer xtfpsd_(integer *fp, integer *im, integer *line, integer *col1, integer *col2, integer *line1, integer *line2, integer *fd); +extern integer xtfpsi_(integer *fp, integer *im, integer *line, integer *col1, integer *col2, integer *line1, integer *line2, integer *fd); +extern integer xtfpsl_(integer *fp, integer *im, integer *line, integer *col1, integer *col2, integer *line1, integer *line2, integer *fd); +extern integer xtfpsr_(integer *fp, integer *im, integer *line, integer *col1, integer *col2, integer *line1, integer *line2, integer *fd); +extern integer xtfpss_(integer *fp, integer *im, integer *line, integer *col1, integer *col2, integer *line1, integer *line2, integer *fd); +extern integer xtfpvd_(integer *fp, integer *im, integer *line); +extern integer xtfpvi_(integer *fp, integer *im, integer *line); +extern integer xtfpvl_(integer *fp, integer *im, integer *line); +extern integer xtfpvr_(integer *fp, integer *im, integer *line); +extern integer xtfpvs_(integer *fp, integer *im, integer *line); +extern integer xtimes_(shortint *files, shortint *index, shortint *extnae, shortint *extver, integer *lindex, integer *lname, integer *lver, shortint *ikpars, integer *err); +extern integer xtimtm_(integer *list1, integer *list2, integer *list3, shortint *image1, shortint *image2, shortint *image3, integer *szimae); +extern integer xtlogn_(shortint *logpam, shortint *prefix, integer *logfd, integer *stdflg); +extern integer xtoc_(complex *xval, shortint *outstr, integer *maxch, integer *decpl, integer *fmt, integer *width); +extern integer xtsamd_(integer *im, integer *bpm, doublereal *sample, integer *nsampe, integer *nlines); +extern integer xtsami_(integer *im, integer *bpm, integer *sample, integer *nsampe, integer *nlines); +extern integer xtsamr_(integer *im, integer *bpm, real *sample, integer *nsampe, integer *nlines); +extern integer xtsams_(integer *im, integer *bpm, shortint *sample, integer *nsampe, integer *nlines); +extern integer xtscod_(integer *i__, integer *j); +extern integer xtscoe_(integer *i__, integer *j); +extern integer xttxtn_(shortint *fname); +extern integer xvvnee_(integer *type1, integer *type2); +extern integer xvvpah_(shortint *str, shortint *pat); +extern integer xxscan_(void); +extern integer ytfpit_(integer *pmin, integer *lvalin, integer *cvalin); +extern integer zsccoa_(real *a, shortint *badpix, integer *npix, real *mean, real *sigma); +extern integer zscfie_(real *data, integer *npix, real *zstart, real *zslope, real *krej, integer *ngrow, integer *maxitr); +extern integer zscpmn_(shortint *sectin, integer *refim); +extern integer zscres_(real *data, real *flat, real *normx, shortint *badpix, integer *npix, doublereal *sumxsr, doublereal *sumxz, doublereal *sumx, doublereal *sumz, real *thresd, integer *ngrow); +extern integer zttger_(integer *chan, integer *ch); +extern integer zttloe_(shortint *in, shortint *out, integer *nchars); +extern integer zttquy_(shortint *logtet, integer *nchars, shortint *dtext, integer *maxch, integer *szdtet); +extern logical aveqc_(shortint *a, shortint *b, integer *npix); +extern logical aveqd_(doublereal *a, doublereal *b, integer *npix); +extern logical aveqi_(integer *a, integer *b, integer *npix); +extern logical aveql_(integer *a, integer *b, integer *npix); +extern logical aveqr_(real *a, real *b, integer *npix); +extern logical aveqs_(shortint *a, shortint *b, integer *npix); +extern logical aveqx_(complex *a, complex *b, integer *npix); +extern logical clgetb_(shortint *param); +extern logical clgpsb_(integer *pp, shortint *parnae); +extern logical envgeb_(shortint *varnae); +extern logical fmlocd_(integer *fm, integer *lfile); +extern logical fnulle_(shortint *fname); +extern logical fpequd_(doublereal *x, doublereal *y); +extern logical fpequr_(real *x, real *y); +extern logical fpnonr_(real *x1, real *x2); +extern logical fxffpd_(doublereal *x, doublereal *y, integer *it); +extern logical fxfisk_(shortint *line); +extern logical fxfxn1_(shortint *buf, integer *dataln); +extern logical ggetb_(integer *gp, shortint *cap); +extern logical glbeq_(real *a, real *b); +extern logical gtygeb_(integer *tty, shortint *cap); +extern logical imgetb_(integer *im, shortint *key); +extern logical impml1_(integer *im); +extern logical impml2_(integer *im, integer *lineno); +extern logical impml3_(integer *im, integer *lineno, integer *bandno); +extern logical impmlv_(integer *im, integer *v); +extern logical impms1_(integer *im, integer *x1, integer *x2); +extern logical impms2_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2); +extern logical impms3_(integer *im, integer *x1, integer *x2, integer *y1, integer *y2, integer *z1, integer *z2); +extern logical impmsv_(integer *im, integer *vs, integer *ve, integer *ndim); +extern logical isinre_(integer *ranges, integer *number); +extern logical itob_(integer *intege); +extern logical lisine_(integer *ranges, integer *number); +extern logical mefcmv_(integer *mef, shortint *extnae, integer *extver); +extern logical mefgeb_(integer *mef, shortint *key); +extern logical plempy_(integer *pl); +extern logical pllcot_(shortint *llsrc, integer *xs, integer *npix, integer *mval); +extern logical pllemy_(shortint *llsrc, integer *xs, integer *npix); +extern logical plleql_(shortint *l1, shortint *l2); +extern logical plliny_(integer *pl, integer *v); +extern logical plreqi_(integer *r1, integer *r2); +extern logical plreql_(integer *r1, integer *r2); +extern logical plreqs_(shortint *r1, shortint *r2); +extern logical plsect_(integer *plsrc, integer *v1, integer *v2, integer *ndim, integer *mval); +extern logical plsecy_(integer *plsrc, integer *v1, integer *v2, integer *ndim); +extern logical plubox_(integer *ufd, integer *y, integer *rlreg, integer *xs, integer *npix); +extern logical plucie_(integer *ufd, integer *y, integer *rlreg, integer *xs, integer *npix); +extern logical plupon_(integer *ufd, integer *line, integer *rlreg, integer *xs, integer *npix); +extern logical pmempy_(integer *pl); +extern logical pmliny_(integer *pl, integer *v); +extern logical pmsect_(integer *pl, integer *vs, integer *ve, integer *ndim, integer *mval); +extern logical pmsecy_(integer *pl, integer *vs, integer *ve, integer *ndim); +extern logical qpgetb_(integer *qp, shortint *param); +extern logical qplesd_(doublereal *x, doublereal *y); +extern logical qplesi_(integer *x, integer *y); +extern logical qplesr_(real *x, real *y); +extern logical rngeli_(integer *rg, integer *x); +extern logical rngelr_(integer *rg, real *x, real *delta); +extern logical rngini_(integer *rg, integer *x); +extern logical rnginr_(integer *rg, real *x); +extern logical sgewse_(void); +extern logical sgmexe_(integer *fn, shortint *gim, integer *nwords); +extern logical sgmspc_(integer *tr, integer *gki, integer *fn, shortint *gim, integer *bp, integer *buftop, integer *deletn); +extern logical sgmwse_(logical *enable); +extern logical sgmwsn_(integer *fn, shortint *gim, real *rx1, real *ry1, real *rx2, real *ry2); +extern logical streq_(shortint *s1, shortint *s2); +extern logical strge_(shortint *s1, shortint *s2); +extern logical strgt_(shortint *s1, shortint *s2); +extern logical strle_(shortint *s1, shortint *s2); +extern logical strlt_(shortint *s1, shortint *s2); +extern logical strne_(shortint *s1, shortint *s2); +extern logical strse1_(shortint *str, shortint *patstr, integer *patlen); +extern logical ttygeb_(integer *tty, shortint *cap); +extern logical xerpop_(void); +extern logical xtexth_(shortint *extnae, shortint *pattes); +extern logical xtimlq_(integer *im1, integer *im2); +extern logical xtimnq_(shortint *imnam1, shortint *imnam2); +extern real adoti_(integer *a, integer *b, integer *npix); +extern real adotr_(real *a, real *b, integer *npix); +extern real adots_(shortint *a, shortint *b, integer *npix); +extern real adotx_(complex *a, complex *b, integer *npix); +extern real aelogr_(real *x); +extern real agmaxi_(real *sval, real *zhgh, real *zdra, integer *nviz, integer *iivz, integer *nevz, integer *iiez); +extern real agmini_(real *sval, real *zlow, real *zdra, integer *nviz, integer *iivz, integer *nevz, integer *iiez); +extern real ahivr_(real *a, integer *npix); +extern real alovr_(real *a, integer *npix); +extern real amedr_(real *a, integer *npix); +extern real apolr_(real *x, real *coeff, integer *ncoeff); +extern real asokr_(real *a, integer *npix, integer *ksel); +extern real assqi_(integer *a, integer *npix); +extern real assqr_(real *a, integer *npix); +extern real assqs_(shortint *a, integer *npix); +extern real asumi_(integer *a, integer *npix); +extern real asumr_(real *a, integer *npix); +extern real asums_(shortint *a, integer *npix); +extern real c1dcer_(real *x, real *data, integer *npts, real *width); +extern real cented_(real *x, real *data, integer *npts, real *width, integer *type__, real *radius, real *thresd); +extern real cfux_(real *rx); +extern real cfuy_(real *ry); +extern real clgetr_(shortint *param); +extern real clgpsr_(integer *pp, shortint *parnae); +extern real cmfx_(integer *ix); +extern real cmfy_(integer *iy); +extern real cmux_(integer *ix); +extern real cmuy_(integer *iy); +extern real concom_(real *xq, real *yq, real *xd, real *yd, real *zd, integer *ndp, real *wk, integer *iwk, integer *loc); +extern real conlcm_(real *x, real *y, real *xd, real *yd, real *zd, integer *ndp, real *wk, integer *iwk, integer *loc); +extern real cpfx_(integer *ix); +extern real cpfy_(integer *iy); +extern real cpux_(integer *ix); +extern real cpuy_(integer *iy); +extern real cqdger_(integer *cq, integer *record, shortint *field); +extern real cqfger_(integer *cq, shortint *field); +extern real cqistr_(integer *res, integer *param); +extern real cqrstr_(integer *res, integer *param); +extern real cufx_(real *rx); +extern real cufy_(real *ry); +extern real dtgetr_(integer *dt, integer *record, shortint *field); +extern real elogr_(real *x); +extern real envger_(shortint *varnae); +extern real fpfixr_(real *x); +extern real fran_(void); +extern real gammln_(real *xx); +extern real gasdev_(integer *seed); +extern real ggetr_(integer *gp, shortint *cap); +extern real glbmip_(real *x1, real *x2, integer *nminor); +extern real glbtin_(integer *gp, integer *ax, real *ndcleh); +extern real grcrel_(shortint *opstr, integer *ip); +extern real gstatr_(integer *gp, integer *param); +extern real gtdise_(real *x, real *step, real *nearek); +extern real gtgetr_(integer *gt, integer *param); +extern real gtliny_(real *x1, real *x2); +extern real gtxctn_(integer *gp, real *x1, integer *wcs1, integer *wcs2); +extern real gtyctn_(integer *gp, real *y1, integer *wcs1, integer *wcs2); +extern real gtyger_(integer *tty, shortint *cap); +extern real icrmsr_(real *x, real *y, real *fit, real *wts, integer *npts); +extern real imgetr_(integer *im, shortint *key); +extern real imstar_(integer *im, integer *param); +extern real ingdvr_(real *x); +extern real ingetr_(integer *in, integer *param); +extern real inrmsr_(real *y, real *fit, real *wts, integer *npts); +extern real mefger_(integer *mef, shortint *key); +extern real mwc1tr_(integer *act, real *x); +extern real obsger_(integer *obs, shortint *param); +extern real poidev_(real *xm, integer *seed); +extern real qmspar_(real *uservl, real *defval); +extern real qpgetr_(integer *qp, shortint *param); +extern real qpiovr_(integer *io, integer *param); +extern real qpmaxr_(real *x, real *y); +extern real qpminr_(real *x, real *y); +extern real qpstar_(integer *qp, integer *param); +extern real rmgdaa_(integer *rm, integer *index); +extern real rmgmed_(integer *rm, real *nclip, integer *navg, real *blank, integer *exclue, shortint *nused); +extern real rmmed_(integer *rm, real *nclip, integer *navg, real *blank, integer *exclue, integer *index, real *in, shortint *mask, shortint *nused); +extern real rmsord_(integer *rm, real *nclip, integer *index, real *data); +extern real rmturh_(integer *rm, integer *index, real *data); +extern real rngnet_(integer *rg, real *x, integer *ival, real *rval); +extern real rpthe4_(real *p1x, real *p1y, real *p2x, real *p2y); +extern real ttyger_(integer *tty, shortint *cap); +extern real wldisr_(real *x1, real *y1, real *x2, real *y2); +extern shortint ahivc_(shortint *a, integer *npix); +extern shortint ahivs_(shortint *a, integer *npix); +extern shortint alovc_(shortint *a, integer *npix); +extern shortint alovs_(shortint *a, integer *npix); +extern shortint amedc_(shortint *a, integer *npix); +extern shortint ameds_(shortint *a, integer *npix); +extern shortint asokc_(shortint *a, integer *npix, integer *ksel); +extern shortint asoks_(shortint *a, integer *npix, integer *ksel); +extern shortint chfeth_(shortint *str, integer *ip, shortint *ch); +extern shortint chrlwr_(shortint *ch); +extern shortint chrupr_(shortint *ch); +extern shortint clgetc_(shortint *param); +extern shortint clgets_(shortint *param); +extern shortint clgpsc_(integer *pp, shortint *parnae); +extern shortint clgpss_(integer *pp, shortint *parnae); +extern shortint cqitye_(integer *itype); +extern shortint imgetc_(integer *im, shortint *key); +extern shortint imgets_(integer *im, shortint *key); +extern shortint mefgec_(integer *mef, shortint *key); +extern shortint mefges_(integer *mef, shortint *key); +extern shortint psfonr_(integer *ps, integer *font); +extern shortint qpgetc_(integer *qp, shortint *param); +extern shortint qpgets_(integer *qp, shortint *param); +extern shortint xfgetc_(integer *fd, shortint *ch); +extern shortint xfgetr_(shortint *ch); +extern int bitmov_(integer *a, integer *aoff, integer *b, integer *boff, integer *nbits); +extern int bswap2_(char *a, integer *aoff, char *b, integer *boff, integer *nbytes, ftnlen a_len, ftnlen b_len); +extern int bswap4_(char *a, integer *aoff, char *b, integer *boff, integer *nbytes, ftnlen a_len, ftnlen b_len); +extern int bytmov_(char *a, integer *aoff, char *b, integer *boff, integer *nbytes, ftnlen a_len, ftnlen b_len); +extern int chrpak_(shortint *a, integer *aoff, char *b, integer *boff, integer *nchars, ftnlen b_len); +extern int chrupk_(char *a, integer *aoff, shortint *b, integer *boff, integer *nchars, ftnlen a_len); +extern int f77pak_(shortint *sppstr, char *f77str, integer *maxch, ftnlen f77str_len); +extern int f77upk_(char *f77str, shortint *sppstr, integer *maxch, ftnlen f77str_len); +extern int ieevpd_(doublereal *native, doublereal *ieee, integer *nelem); +extern int ieevud_(doublereal *ieee, doublereal *native, integer *nelem); +extern int ieepad_(doublereal *x); +extern int ieeupd_(doublereal *x); +extern int ieesnd_(doublereal *x); +extern int ieegnd_(doublereal *x); +extern int ieestd_(integer *onin, integer *onout); +extern int ieezsd_(void); +extern int ieemad_(integer *inval, integer *outval); +extern int ieegmd_(integer *inval, integer *outval); +extern int ieesmd_(integer *inval, integer *outval); +extern int ieevpr_(real *native, real *ieee, integer *nelem); +extern int ieevur_(real *ieee, real *native, integer *nelem); +extern int ieepar_(real *x); +extern int ieeupr_(real *x); +extern int ieesnr_(real *x); +extern int ieegnr_(real *x); +extern int ieestr_(integer *onin, integer *onout); +extern int ieezsr_(void); +extern int ieemar_(integer *inval, integer *outval); +extern int ieegmr_(integer *inval, integer *outval); +extern int ieesmr_(integer *inval, integer *outval); +extern integer miilen_(integer *nelems, integer *miidae); +extern integer miinem_(integer *nchars, integer *miitye); +extern int miipak_(integer *spp, integer *mii, integer *nelems, integer *sppdae, integer *miidae); +extern int miipa6_(integer *spp, integer *mii, integer *nelems, integer *sppdae); +extern int miipa2_(integer *spp, integer *mii, integer *nelems, integer *sppdae); +extern int miipa8_(integer *spp, integer *mii, integer *nelems, integer *sppdae); +extern int miipad_(integer *spp, doublereal *mii, integer *nelems, integer *sppdae); +extern int miipar_(integer *spp, real *mii, integer *nelems, integer *sppdae); +extern integer miipke_(integer *nelems, integer *miitye); +extern int miiupk_(integer *mii, integer *spp, integer *nelems, integer *miidae, integer *sppdae); +extern int miiup6_(integer *mii, integer *spp, integer *nelems, integer *sppdae); +extern int miiup2_(integer *mii, integer *spp, integer *nelems, integer *sppdae); +extern int miiup8_(integer *mii, integer *spp, integer *nelems, integer *sppdae); +extern int miiupd_(doublereal *mii, integer *spp, integer *nelems, integer *sppdae); +extern int miiupr_(real *mii, integer *spp, integer *nelems, integer *sppdae); +extern integer nmilen_(integer *nelems, integer *nmidae); +extern integer nminem_(integer *nchars, integer *nmitye); +extern int nmipak_(integer *spp, integer *nmi, integer *nelems, integer *sppdae, integer *nmidae); +extern int nmipa6_(integer *spp, integer *nmi, integer *nelems, integer *sppdae); +extern int nmipa2_(integer *spp, integer *nmi, integer *nelems, integer *sppdae); +extern int nmipa8_(integer *spp, integer *nmi, integer *nelems, integer *sppdae); +extern int nmipad_(integer *spp, doublereal *nmi, integer *nelems, integer *sppdae); +extern int nmipar_(integer *spp, real *nmi, integer *nelems, integer *sppdae); +extern integer nmipke_(integer *nelems, integer *nmitye); +extern int nmiupk_(integer *nmi, integer *spp, integer *nelems, integer *nmidae, integer *sppdae); +extern int nmiup6_(integer *nmi, integer *spp, integer *nelems, integer *sppdae); +extern int nmiup2_(integer *nmi, integer *spp, integer *nelems, integer *sppdae); +extern int nmiup8_(integer *nmi, integer *spp, integer *nelems, integer *sppdae); +extern int nmiupd_(doublereal *nmi, integer *spp, integer *nelems, integer *sppdae); +extern int nmiupr_(real *nmi, integer *spp, integer *nelems, integer *sppdae); +extern int strpak_(shortint *instr, char *outstr, integer *maxch, ftnlen outstr_len); +extern int strupk_(char *instr, shortint *outstr, integer *maxch, ftnlen instr_len); +extern real urand_(integer *lseed); +extern integer xori_(integer *a, integer *b); +extern shortint xors_(shortint *a, shortint *b); +extern integer xorl_(integer *a, integer *b); +extern integer sysruk_(shortint *task, shortint *cmd, integer *rukarf, integer *rukint); +extern int sbit_(void); +extern int tbit_(void); diff --git a/unix/hlib/libc/xnames.h b/unix/hlib/libc/xnames.h new file mode 100644 index 00000000..a99e12b6 --- /dev/null +++ b/unix/hlib/libc/xnames.h @@ -0,0 +1,244 @@ +/* + * XNAMES.H -- C callable external names of the SPP library procedures. + * The C version of the name is identical to the SPP name except that it is + * given as a macro in upper case. The definition is the host system external + * name of the Fortran procedure. The trailing underscore in these names is + * UNIX dependent; other systems use a leading underscore, or no special + * characters at all (the purpose of the underscore on UNIX systems is to + * avoid name collisions between C and Fortran procedures, since the F77 + * runtime library on UNIX is built on the UNIX/C library). Change the names + * in the column at the right if your system employs a different convention. + * + * If your system does not employ something like the underscore to avoid + * name collisions, name collisions can be expected. To fix these change + * the name given here and add a define to lib$iraf.h to change the external + * name generated by the preprocessor. It is NOT necessary to resolve name + * collisions by changing the actual program sources. + * + * The external names defined herein MUST agree with those in "hlib$iraf.h". + */ + +#define ACCESS xfaccs_ /* to avoid name collisions */ +#define CALLOC xcallc_ +#define CLOSE xfcloe_ +#define DELETE xfdele_ +#define ERROR xerror_ +#define FLUSH xffluh_ +#define GETC xfgetc_ +#define GETCHAR xfgetr_ +#define MALLOC xmallc_ +#define MFREE xmfree_ +#define MKTEMP xmktep_ +#define NOTE xfnote_ +#define OPEN xfopen_ +#define PRINTF xprinf_ +#define PUTC xfputc_ +#define PUTCHAR xfputr_ +#define QSORT xqsort_ +#define READ xfread_ +#define REALLOC xrealc_ +#define SEEK xfseek_ +#define SIZEOF xsizef_ +#define UNGETC xfungc_ +#define WRITE xfwrie_ + +#define AREAD aread_ /* other VOS names */ +#define AREADB areadb_ +#define AWAIT await_ +#define AWAITB awaitb_ +#define AWRITE awrite_ +#define AWRITEB awritb_ +#define BEGMEM begmem_ +#define BRKTIME brktie_ +#define BTOI btoi_ +#define CLKTIME clktie_ +#define CNVDATE cnvdae_ +#define CNVTIME cnvtie_ +#define COERCE coerce_ +#define CPUTIME cputie_ +#define CTOD ctod_ +#define CTOX ctox_ +#define DIROPEN diropn_ +#define DTOC dtoc_ +#define ENVFIND envfid_ +#define ENVFREE envfre_ +#define ENVGETB envgeb_ +#define ENVGETI envgei_ +#define ENVGETS envges_ +#define ENVINIT envint_ +#define ENVLIST envlit_ +#define ENVMARK envmak_ +#define ENVPUTS envpus_ +#define ENVRESET envret_ +#define ENVSCAN envscn_ +#define ERRACT erract_ +#define ERRCODE errcoe_ +#define ERRGET errget_ +#define FALLOC falloc_ +#define FATAL xfatal_ +#define FCHDIR xfchdr_ +#define FCOPY fcopy_ +#define FCOPYO fcopyo_ +#define FDEBUG fdebug_ +#define FDELPF fdelpf_ +#define FDEVBLK fdevbk_ +#define FDIRNAME fdirne_ +#define FILBUF filbuf_ +#define FINFO finfo_ +#define FIXMEM fixmem_ +#define FLSBUF flsbuf_ +#define FMAPFN fmapfn_ +#define FMKDIR fmkdir_ +#define FNEXTN fnextn_ +#define FNLDIR fnldir_ +#define FNROOT fnroot_ +#define FNTCLS fntcls_ +#define FNTGFN fntgfn_ +#define FNTOPN fntopn_ +#define FOWNER fowner_ +#define FPATHNAME fpathe_ +#define FPRINTF fprinf_ +#define FREDIR fredir_ +#define FREDIRO fredio_ +#define FSETI fseti_ +#define FSTATI fstati_ +#define FSTATL fstatl_ +#define FSTATS fstats_ +#define GETPID xgtpid_ +#define GCTOD gctod_ +#define GCTOL gctol_ +#define GCTOX gctox_ +#define GETLINE getlie_ +#define GETUID xgtuid_ +#define GLTOC gltoc_ +#define GPATMAKE gpatme_ +#define GPATMATCH gpatmh_ +#define GSTRMATCH gstrmh_ +#define GTR_GFLUSH gtrgfh_ +#define IMACCESS imaccs_ +#define IMDRCUR imdrcr_ +#define IRAF_MAIN irafmn_ +#define XISATTY xisaty_ +#define XTTYSIZE xttyse_ +#define ITOB itob_ +#define KI_EXTNODE kiexte_ +#define KI_MAPCHAN kimapn_ +#define LEXNUM lexnum_ +#define LPOPEN lpopen_ +#define NDOPEN ndopen_ +#define ONENTRY onenty_ +#define ONERROR onerrr_ +#define ONEXIT onexit_ +#define OSCMD oscmd_ +#define PARGB pargb_ +#define PARGC pargc_ +#define PARGD pargd_ +#define PARGI pargi_ +#define PARGL pargl_ +#define PARGR pargr_ +#define PARGS pargs_ +#define PARGSTR pargsr_ +#define PARGX pargx_ +#define POLL xfpoll_ +#define POLL_OPEN pollon_ +#define POLL_CLOSE pollce_ +#define POLL_ZERO pollzo_ +#define POLL_SET pollst_ +#define POLL_CLEAR pollcr_ +#define POLL_TEST polltt_ +#define POLL_GET_NFDS pollgs_ +#define POLL_PRINT pollpt_ +#define PRCHDIR prchdr_ +#define PRCLCPR prclcr_ +#define PRCLDPR prcldr_ +#define PRCLOSE prcloe_ +#define PRDONE prdone_ +#define PRENVFREE prenve_ +#define PRENVSET prenvt_ +#define PRFILBUF prfilf_ +#define PRKILL prkill_ +#define PROPCPR propcr_ +#define PROPDPR propdr_ +#define PROPEN propen_ +#define PROTECT protet_ +#define PRREDIR prredr_ +#define PRSIGNAL prsigl_ +#define PRSTATI prstai_ +#define PRUPDATE prupde_ +#define PRPSINIT prpsit_ +#define PUTCC putcc_ +#define PUTLINE putlie_ +#define RCURSOR rcursr_ +#define RDUKEY rdukey_ +#define RENAME xfrnam_ +#define REOPEN reopen_ +#define SALLOC salloc_ +#define SFREE sfree_ +#define SMARK smark_ +#define SPRINTF sprinf_ +#define STG_GETLINE stggee_ +#define STG_PUTLINE stgpue_ +#define STKCMP stkcmp_ +#define STRMATCH strmah_ +#define STROPEN stropn_ +#define STRTBL strtbl_ +#define STTYCO sttyco_ +#define SYSRUK sysruk_ +#define TSLEEP tsleep_ +#define TTSETI ttseti_ +#define TTSETS ttsets_ +#define TTSTATI ttstai_ +#define TTSTATS ttstas_ +#define TTYCDES ttycds_ +#define TTYCLEAR ttyclr_ +#define TTYCLEARLN ttycln_ +#define TTYCLOSE ttycls_ +#define TTYCTRL ttyctl_ +#define TTYGDES ttygds_ +#define TTYGETB ttygeb_ +#define TTYGETI ttygei_ +#define TTYGETR ttyger_ +#define TTYGETS ttyges_ +#define TTYGOTO ttygoo_ +#define TTYINIT ttyint_ +#define TTYODES ttyods_ +#define TTYOPEN ttyopn_ +#define TTYPUTLINE ttypue_ +#define TTYPUTS ttypus_ +#define TTYSETI ttysei_ +#define TTYSO ttyso_ +#define TTYSTATI ttysti_ +#define UNGETLINE ungete_ +#define UNREAD unread_ +#define URAND urand_ +#define VFNOPEN vfnopn_ +#define VFNCLOSE vfncle_ +#define VFNMAP vfnmap_ +#define VFNADD vfnadd_ +#define VFNDEL vfndel_ +#define VFNUNMAP vfnunp_ +#define VMALLOC vmallc_ +#define XACOS xacos_ +#define XALLOCATE xalloe_ +#define XASIN xasin_ +#define XATAN xatan_ +#define XATAN2 xatan2_ +#define XCOS xcos_ +#define XDEALLOCATE xdeale_ +#define XDEVOWNER xdevor_ +#define XDEVSTATUS xdevss_ +#define XER_RESET xerret_ +#define XEXP xexp_ +#define XLOG xlog_ +#define XLOG10 xlog10_ +#define XNINT xnint_ +#define XMJBUF xmjbuf_ +#define XONERR xonerr_ +#define XPOW xpow_ +#define XSIN xsin_ +#define XSQRT xsqrt_ +#define XTAN xtan_ +#define XTOC xtoc_ +#define XWHEN xwhen_ + +#define D_xnames diff --git a/unix/hlib/libc/xwhen.h b/unix/hlib/libc/xwhen.h new file mode 100644 index 00000000..90281911 --- /dev/null +++ b/unix/hlib/libc/xwhen.h @@ -0,0 +1,10 @@ +/* Exception handling. + */ +#define X_ACV 501 /* access violation */ +#define X_ARITH 502 /* arithmetic error */ +#define X_INT 503 /* keyboard interrupt */ +#define X_IPC 504 /* write to IPC with no reader */ +#define X_IGNORE NULL /* ignore exception */ +#define X_FIRST_EXCEPTION 501 + +#define D_xwhen diff --git a/unix/hlib/libc/zfstat.h b/unix/hlib/libc/zfstat.h new file mode 100644 index 00000000..48862cd3 --- /dev/null +++ b/unix/hlib/libc/zfstat.h @@ -0,0 +1,8 @@ +/* File status parameters (zsttbf, etc.) + */ +#define FSTT_BLKSIZE 1 +#define FSTT_FILSIZE 2 +#define FSTT_OPTBUFSIZE 3 +#define FSTT_MAXBUFSIZE 4 + +#define D_zfstat diff --git a/unix/hlib/libos.a b/unix/hlib/libos.a new file mode 120000 index 00000000..fcecfe3d --- /dev/null +++ b/unix/hlib/libos.a @@ -0,0 +1 @@ +../bin/libos.a
\ No newline at end of file diff --git a/unix/hlib/login.cl b/unix/hlib/login.cl new file mode 100644 index 00000000..bd10cd22 --- /dev/null +++ b/unix/hlib/login.cl @@ -0,0 +1,182 @@ +# LOGIN.CL -- User login file for the IRAF command language. + +# Identify login.cl version (checked in images.cl). +if (defpar ("logver")) + logver = "IRAF V2.16.1 Oct 2013" + +set home = "U_HOME" +set imdir = "U_IMDIR" +set cache = "U_CACHEDIR" +set uparm = "home$uparm/" +set userid = "U_USER" + +# Set the terminal type. We assume the user has defined this correctly +# when issuing the MKIRAF and no longer key off the unix TERM to set a +# default. +if (access (".hushiraf") == no) + print "setting terminal type to 'U_TERM' ..." +stty U_TERM + + +#============================================================================ +# Uncomment and edit to change the defaults. +#set editor = vi +#set printer = lp +#set pspage = "letter" +#set stdimage = imt800 +#set stdimcur = stdimage +#set stdplot = lw +#set clobber = no +#set imclobber = no +#set filewait = yes +#set cmbuflen = 512000 +#set min_lenuserarea = 64000 +#set imtype = "imh" +set imextn = "oif:imh fxf:fits,fit fxb:fxb plf:pl qpf:qp stf:hhh,??h" + + +# XIMTOOL/DISPLAY stuff. Set node to the name of your workstation to +# enable remote image display. The trailing "!" is required. +#set node = "my_workstation!" + +# CL parameters you mighth want to change. +#ehinit = "nostandout eol noverify" +#epinit = "standout showall" +showtype = yes + + +#============================================================================ +# Default USER package; extend or modify as you wish. Note that this can +# be used to call FORTRAN programs from IRAF. + +package user + +task $adb $bc $cal $cat $comm $cp $csh $date $dbx $df $diff = "$foreign" +task $du $find $finger $ftp $grep $lpq $lprm $ls $mail $make = "$foreign" +task $man $mon $mv $nm $od $ps $rcp $rlogin $rsh $ruptime = "$foreign" +task $rwho $sh $spell $sps $strings $su $telnet $tip $top = "$foreign" +task $awk $sed $vi $emacs $w $wc $less $rusers $sync $pwd $gdb = "$foreign" + +task $xc $mkpkg $generic $rtar $wtar $buglog = "$foreign" +#task $fc = "$xc -h $* -limfort -lsys -lvops -los" +task $fc = ("$" // envget("iraf") // "unix/hlib/fc.csh" // + " -h $* -limfort -lsys -lvops -los") +task $nbugs = ("$(setenv EDITOR 'buglog -e';" // + "less -Cqm +G " // envget ("iraf") // "local/bugs.*)") +task $cls = "$clear;ls" +task $clw = "$clear;w" +task $pg = ("$(less -Cqm $*)") + + +#============================================================================ +# Load private home$loginuser.cl definitions. The global login means that +# a user can create a loginuser.cl in the HOME$.iraf/ directory that will +# apply to all logins. In a case where MKIRAF created a local login.cl then +# this will load any loginuser.cl in the current directory. + +if (access ("home$loginuser.cl")) + cl < "home$loginuser.cl" +; +keep + + +# Allow a local loginuser.cl to override global definitions. In a global +# login this allows a 'loginuser.cl' file in a current project directory to +# override definitions set in the global login.cl/loginuser.cl file. In a +# case where MKIRAF create a local login this simple re-loads the loginuser.cl + +if (access ("./loginuser.cl")) + cl < "./loginuser.cl" +; +keep + + +# Allow for a local uparm directory. In a global login this allows us to +# create a 'uparm' directory in a specific project dir that will override +# the params in the global login. In a case where MKIRAF created a local +# uparm this simply redefines the 'uparm' as the absolute path. + +path (osfn(".")) | scan (s1) +if (access (s1 // "uparm/")) { + s1 = substr (s1, strldx("!",s1)+1, strlen(s1)) # strip 'node!' prefix + printf ("reset uparm = \"" // s1 // "uparm/\"; keep\n") | cl() + s1 = "" +} +; +keep + +#============================================================================ +# Load the default CL package. Doing so here allows us to override package +# paths and load personalized packages from our loginuser.cl. +clpackage + + +# List any packages you want loaded at login time, ONE PER LINE. +images # general image operators +plot # graphics tasks +dataio # data conversions, import export +lists # list processing + +# The if(deftask...) is needed for V2.9 compatibility. +if (deftask ("proto")) + proto # prototype or ad hoc tasks + +tv # image display +utilities # miscellaneous utilities +noao # optical astronomy packages +vo # Virtual Observatory tools + +prcache directory +cache directory page type help + +# Print the message of the day. +if (access (".hushiraf")) + menus = no +else { + clear; type hlib$motd +} + + +#============================================================================ +# Check for updates to the system +chkupdate + +# Notify the user if we're using the global login. +path (".") | scan (s1) +if ( osfn("home$") != substr (s1, strldx("!",s1)+1, strlen(s1)) ) { + printf (" *** Using global login file: %slogin.cl\n", osfn("home$")) +} +; + + +#============================================================================ +# Uncomment to initialize the SAMP interface on startup. +if (deftask ("samp") == yes) { + printf (" *** Initializing SAMP .... ") + if (sampHubAccess() == yes) { + # Enable SAMP messaaging. Set default handlers that don't require + # VO capabilities. + samp quiet + samp ("on", >& "dev$null") +# samp ("handler", "table.load.votable", "tinfo $url", >& "dev$null") +# samp ("handler", "image.load.fits", "imstat $url", >& "dev$null") + samp noquiet + print ("on") + } else + print ("No Hub Available\n") +} + + +#============================================================================ +# Delete any old MTIO lock (magtape position) files. +if (deftask ("mtclean")) + mtclean +else + delete uparm$mt?.lok,uparm$*.wcs verify- + + +#============================================================================ +print (" The following commands or packages are currently defined:\n") + +keep + diff --git a/unix/hlib/mach.h b/unix/hlib/mach.h new file mode 120000 index 00000000..19fd90e9 --- /dev/null +++ b/unix/hlib/mach.h @@ -0,0 +1 @@ +mach32.h
\ No newline at end of file diff --git a/unix/hlib/mach32.h b/unix/hlib/mach32.h new file mode 100644 index 00000000..0765113b --- /dev/null +++ b/unix/hlib/mach32.h @@ -0,0 +1,34 @@ +# Machine Parameters + +define SZB_CHAR 2 # machine bytes per char +define SZB_ADDR 1 # machine bytes per address increment +define SZ_VMPAGE 256 # page size (1 if no virtual mem.) +define MAX_DIGITS 25 # max digits in a number +define NDIGITS_RP 7 # number of digits of real precision +define NDIGITS_DP 16 # number of digits of precision (double) +define MAX_EXPONENT 38 # max exponent, base 10 +define MAX_EXPONENTR 38 # IEEE single +define MAX_EXPONENTD 308 # IEEE double + +define MAX_SHORT 32767 # largest numbers +define MAX_INT 2147483647 +define MAX_LONG 2147483647 +define MAX_REAL 0.99e37 # anything larger is INDEF +define MAX_DOUBLE 0.99d307 +define NBITS_BYTE 8 # nbits in a machine byte +define NBITS_SHORT 16 # nbits in a short +define NBITS_INT 32 # nbits in an integer +define NBITS_LONG 32 # nbits in a long +define EPSILONR (1.192e-7) # smallest E such that 1.0 + E > 1.0 +define EPSILOND (2.220d-16) # double precision epsilon +define EPSILON EPSILONR + +# Is byte swapping needed for a 2 or 4 byte MII integer or a 4 or 8 byte +# IEEE floating to convert to or from MII format on this machine? + +define BYTE_SWAP2 YES +define BYTE_SWAP4 YES +define BYTE_SWAP8 YES +define IEEE_SWAP4 YES +define IEEE_SWAP8 YES +define IEEE_USED YES diff --git a/unix/hlib/mach64.h b/unix/hlib/mach64.h new file mode 100644 index 00000000..c87a96ff --- /dev/null +++ b/unix/hlib/mach64.h @@ -0,0 +1,34 @@ +# Machine Parameters + +define SZB_CHAR 2 # machine bytes per char +define SZB_ADDR 1 # machine bytes per address increment +define SZ_VMPAGE 256 # page size (1 if no virtual mem.) +define MAX_DIGITS 25 # max digits in a number +define NDIGITS_RP 7 # number of digits of real precision +define NDIGITS_DP 16 # number of digits of precision (double) +define MAX_EXPONENT 38 # max exponent, base 10 +define MAX_EXPONENTR 38 # IEEE single +define MAX_EXPONENTD 308 # IEEE double + +define MAX_SHORT 32767 # largest numbers +define MAX_INT 2147483647 +define MAX_LONG 2147483647 +define MAX_REAL 0.99e37 # anything larger is INDEF +define MAX_DOUBLE 0.99d307 +define NBITS_BYTE 8 # nbits in a machine byte +define NBITS_SHORT 16 # nbits in a short +define NBITS_INT 64 # nbits in an integer +define NBITS_LONG 64 # nbits in a long +define EPSILONR (1.192e-7) # smallest E such that 1.0 + E > 1.0 +define EPSILOND (2.220d-16) # double precision epsilon +define EPSILON EPSILONR + +# Is byte swapping needed for a 2 or 4 byte MII integer or a 4 or 8 byte +# IEEE floating to convert to or from MII format on this machine? + +define BYTE_SWAP2 YES +define BYTE_SWAP4 YES +define BYTE_SWAP8 YES +define IEEE_SWAP4 YES +define IEEE_SWAP8 YES +define IEEE_USED YES diff --git a/unix/hlib/math.h b/unix/hlib/math.h new file mode 100644 index 00000000..42aa6ba0 --- /dev/null +++ b/unix/hlib/math.h @@ -0,0 +1,59 @@ +# MATH.H -- Definitions of various mathematical constants. +# Values are given to 20 decimal places. +# From Abramowitz & Stegun, Handbook of Mathematical Functions, Ch. 1. +# LN denotes natural logarithm +# LOG denote base 10 logarithm + + +# Real precision definitions. + +define SQRTOF2 1.4142135623730950488 + +define BASE_E 2.7182818284590452353 +define EXP_PI 23.140692632779269006 + +define LN_2 .69314718055994530942 +define LN_10 2.3025850929940456840 +define LN_PI 1.1447298858494001741 +define LOG_E .43429448190325182765 + +define PI 3.1415926535897932385 +define TWOPI 6.2831853071795864769 +define FOURPI 12.566370614359172953 +define HALFPI 1.5707963267948966192 +define SQRTOFPI 1.7724538509055160273 + +define RADIAN 57.295779513082320877 +define RADTODEG (($1)*RADIAN) +define DEGTORAD (($1)/RADIAN) + +define GAMMA .57721566490153286061 # Euler's constant +define LN_GAMMA (-.54953931298164482234) +define EXP_GAMMA 1.7810724179901979852 + + +# Double precision definitions. + +define DSQRTOF2 1.4142135623730950488d0 + +define DBASE_E 2.7182818284590452353d0 +define DEXP_PI 23.140692632779269006d0 + +define DLN_2 .69314718055994530942d0 +define DLN_10 2.3025850929940456840d0 +define DLN_PI 1.1447298858494001741d0 +define DLOG_E .43429448190325182765d0 + +define DPI 3.1415926535897932385d0 +define DTWOPI 6.2831853071795864769d0 +define DFOURPI 12.566370614359172953d0 +define DHALFPI 1.5707963267948966192d0 +define DSQRTOFPI 1.7724538509055160273d0 + +define DRADIAN 57.295779513082320877d0 +define DRADTODEG (($1)*DRADIAN) +define DDEGTORAD (($1)/DRADIAN) + +define DGAMMA .57721566490153286061d0 # Euler's constant +define DLN_GAMMA (-.54953931298164482234d0) +define DEXP_GAMMA 1.7810724179901979852d0 diff --git a/unix/hlib/mkfloat.csh b/unix/hlib/mkfloat.csh new file mode 100755 index 00000000..e65460c6 --- /dev/null +++ b/unix/hlib/mkfloat.csh @@ -0,0 +1,143 @@ +#!/bin/csh +# +# MKFLOAT.CSH -- Install the indicated version of the IRAF binaries, i.e., +# archive the current objects and libraries, set BIN to point to bin.FFF, +# and set mkpkg to produce FFF binaries (FFF = f68881, ffpa, sparc, etc.). +# +# NOTE -- This script should be run only by the IRAF system manager. It is +# assumed that the environment variables defined in the IRAF .login and in +# hlib/irafuser.csh are defined. + + +set ARCH = "$1" +set DIRS = "lib pkg sys" +set FILE = unix/hlib/mkpkg.inc +set DFL = _DFL.mkfloat +set TFL = _TFL.mkfloat + +set mach = `uname -s | tr '[A-Z]' '[a-z]'` +set os_mach = `uname -s | tr '[A-Z]' '[a-z]' | cut -c1-6` + +unalias ls rm cat grep tar cmp diff echo ln mv zcat gunzip compress which +unset noclobber + +# Set the following to -xpf for BSD Tar and to -xof for SYSV Tar. +set TARXFLGS = -xpf +#set TARXFLGS = -xof + +# set echo + +# See if we're able to compress the files. +set do_compress = 1 +if (! -x `which compress` || $os_mach == "cygwin") then + if (! -x `which gzip`) then + echo "no compress command found, OBJS.arc files will not be compressed" + set do_compress = 0 + else + set COMPRESS = "gzip -S .Z" + endif +else + set COMPRESS = `which compress` +endif + +# Check for an error in the package structure, i.e. the 'bin' is a directory +# and not a symlink we can change. It's valid for an external package to +# have only a 'bin' directory, but then it's toplevel mkpkg shouldn't be +# calling us. +if ("`ls -l bin | grep 'l.........'`" == "") then + echo "'bin' is a directory, should be symbolic link pointing to valid" + echo "architecture. Possible error in copying package structure??" + echo "Use tar to copy and move directories to preserve links." + exit 1 +else + set float = `ls -l bin | sed -e 's+^.*bin\.++'` +endif +if ("$ARCH" == "") then + echo "system is configured for $float" + exit 0 +else if ($float == "$ARCH") then + echo "system is already configured for $ARCH" + exit 0 +else if (! -e bin.$ARCH) then + echo "must set up a bin.$ARCH subdirectory first" + exit 1 +endif + +# Get the list of directories to be changed. +shift +if ("$1" == "-d") then + set DIRS = "" + shift + while ("$1" != "") + set DIRS = "$DIRS $1" + shift + end +endif + +echo -n \ +"deleting any dreg .e files left lying about in the source directories... " +rmbin -n -o .a .o .e .E $DIRS > $TFL; grep '\.[eE]$' $TFL | tee _.e_files +rm -f `cat _.e_files` _.e_files; grep -v '\.[eE]$' $TFL > $DFL; rm $TFL +echo "done" + +echo -n "archiving and deleting $float objects... " +if (-e bin.$float) then + if (! -z $DFL) then + tar -cf bin.$float/OBJS.arc `cat $DFL` + tar -tf bin.$float/OBJS.arc | grep -v '/$' | cut -d " " -f 1 > $TFL + cmp -s $DFL $TFL + if ($status) then + echo "Error: cannot archive $float objects" + diff $DFL $TFL + rm $DFL $TFL bin.$float/OBJS.arc + exit 1 + else if ($do_compress == 1) then + echo "done" + echo -n "compressing bin.$float/OBJS.arc " + nice $COMPRESS -f bin.$float/OBJS.arc & + rm -f $TFL + endif + endif +else + echo "old objects will not be archived as no bin.$float directory found" +endif +echo "" +rm -f `cat $DFL` $DFL + +if ($ARCH != generic) then + echo -n "restoring archived $ARCH objects... " + if (-e bin.$ARCH/OBJS.arc.Z) then + if ({ (zcat bin.$ARCH/OBJS.arc.Z | tar $TARXFLGS -) }) then + rm -f bin.$ARCH/OBJS.arc.Z + endif + echo "done" + else if (-e bin.$ARCH/OBJS.arc.gz) then + if ({ (cat bin.$ARCH/OBJS.arc.gz | gunzip | tar $TARXFLGS -) }) then + rm -f bin.$ARCH/OBJS.arc.gz + endif + echo "done" + else if (-e bin.$ARCH/OBJS.arc) then + if ({ (cat bin.$ARCH/OBJS.arc | tar $TARXFLGS -) }) then + rm -f bin.$ARCH/OBJS.arc + endif + echo "done" + else + echo "" + echo "no object archive found; full sysgen will be needed" + endif +endif + +# Set BIN to point to new directory. +rm -f bin; ln -s bin.$ARCH bin + +# If script is run at IRAF root, edit mkpkg.inc for new float option. +#if (-e $FILE) then +# sed -e "s+= $float+= $ARCH+" $FILE > temp; mv -f temp $FILE +#endif + +# Warn the user if the new ARCH does not match their current IRAFARCH. +if ($?IRAFARCH == 1) then + if ($ARCH != $IRAFARCH && $ARCH != generic) then + echo "Warning: IRAFARCH is still set in your environment to $IRAFARCH" + endif +endif diff --git a/unix/hlib/mkfloat.sh b/unix/hlib/mkfloat.sh new file mode 100755 index 00000000..66da9170 --- /dev/null +++ b/unix/hlib/mkfloat.sh @@ -0,0 +1,142 @@ +#!/bin/bash +# +# MKFLOAT.SH -- Install the indicated version of the IRAF binaries, i.e., +# archive the current objects and libraries, BIN to point to bin.FFF, +# and mkpkg to produce FFF binaries (FFF=f68881, ffpa, sparc, etc.). +# +# NOTE -- This script should be run only by the IRAF system manager. It is +# assumed that the environment variables defined in the IRAF .login and in +# hlib/irafuser.csh are defined. + + +ARCH="$1" +DIRS="lib pkg sys" +FILE=unix/hlib/mkpkg.inc +DFL=_DFL.mkfloat +TFL=_TFL.mkfloat + +mach=`uname -s | tr '[A-Z]' '[a-z]'` +os_mach=`uname -s | tr '[A-Z]' '[a-z]' | cut -c1-6` + + +# Set the following to -xpf for BSD Tar and to -xof for SYSV Tar. +TARXFLGS=-xpf +#TARXFLGS=-xof + +# See if we're able to compress the files. +do_compress=1 +if [ ! -x `which compress` -o "$os_mach" = "cygwin" ]; then + if [ ! -x `which gzip` ]; then + /bin/echo "no compress command found, files will not be compressed" + do_compress=0 + else + COMPRESS="gzip -S .Z" + fi +else + COMPRESS=`which compress` +fi + +# Check for an error in the package structure, i.e. the 'bin' is a directory +# and not a symlink we can change. It's valid for an external package to +# have only a 'bin' directory, but then it's toplevel mkpkg shouldn't be +# calling us. +if [ "`ls -l bin | grep 'l.........'`" = "" ]; then + /bin/echo "'bin' is a directory, should be symbolic link pointing to valid" + /bin/echo "architecture. Possible error in copying package structure??" + /bin/echo "Use tar to copy and move directories to preserve links." + exit 1 +else + float=`ls -l bin | sed -e 's+^.*bin\.++'` +fi +if [ "$ARCH" = "" ]; then + /bin/echo "system is configured for $float" + exit 0 +elif [ "$float" = "$ARCH" ]; then + /bin/echo "system is already configured for $ARCH" + exit 0 +elif [ ! -e bin.$ARCH ]; then + /bin/echo "must up a bin.$ARCH subdirectory first" + exit 1 +fi + +# Get the list of directories to be changed. +shift +DIRS="" +if [ "$1" = "-d" ]; then + DIRS="" + shift + while : ; do + DIRS="$DIRS $1" + shift + done +fi + +/bin/echo -n \ +"deleting any dreg .e files left lying about in the source directories... " +rmbin -n -o .a .o .e .E $DIRS > $TFL; grep '\.[eE]$' $TFL | tee _.e_files +rm -f `cat _.e_files` _.e_files; grep -v '\.[eE]$' $TFL > $DFL; rm $TFL +/bin/echo "done" + +/bin/echo -n "archiving and deleting $float objects... " +if [ -e bin.$float ]; then + if [ -s $DFL ]; then + tar -cf bin.$float/OBJS.arc `cat $DFL` + tar -tf bin.$float/OBJS.arc | grep -v '/$' | cut -d " " -f 1 > $TFL + cmp -s $DFL $TFL + if [ $status ]; then + /bin/echo "Error: cannot archive $float objects" + diff $DFL $TFL + rm $DFL $TFL bin.$float/OBJS.arc + exit 1 + elif (( $do_compress>0 )); then + /bin/echo "done" + /bin/echo -n "compressing bin.$float/OBJS.arc " + nice $COMPRESS -f bin.$float/OBJS.arc & + rm -f $TFL + fi + fi +else + /bin/echo "old objects will not be archived as no bin.$float dir found" +fi +/bin/echo "done." +rm -f `cat $DFL` $DFL + +if [ $ARCH != "generic" ]; then + /bin/echo -n "restoring archived $ARCH objects... " + if [ -e bin.$ARCH/OBJS.arc.Z ]; then + zcat bin.$ARCH/OBJS.arc.Z | tar $TARXFLGS - + if (( $status<1 )); then + rm -f bin.$ARCH/OBJS.arc.Z + fi + /bin/echo "done" + elif [ -e bin.$ARCH/OBJS.arc.gz ]; then + cat bin.$ARCH/OBJS.arc.gz | gunzip | tar $TARXFLGS - + if (( $status<1 )); then + rm -f bin.$ARCH/OBJS.arc.gz + fi + /bin/echo "done" + elif [ -e bin.$ARCH/OBJS.arc ]; then + cat bin.$ARCH/OBJS.arc | tar $TARXFLGS - + if (( $status<1 )); then + rm -f bin.$ARCH/OBJS.arc + fi + /bin/echo "done" + else + /bin/echo "" + /bin/echo "no object archive found; full sysgen will be needed" + fi +fi + +# Set BIN to point to new directory. +rm -f bin; ln -s bin.$ARCH bin + + +# Warn the user if the new ARCH does not match their current IRAFARCH. +if [ -n $IRAFARCH ]; then + if [ "$ARCH" != "$IRAFARCH" ]; then + /bin/echo "Warning: IRAFARCH is still in your environment to $IRAFARCH" + fi + if [ "$ARCH" == "generic" ]; then + /bin/echo "Warning: IRAFARCH is still in your environment to 'generic'" + fi +fi diff --git a/unix/hlib/mkiraf.csh b/unix/hlib/mkiraf.csh new file mode 100755 index 00000000..d89aecb5 --- /dev/null +++ b/unix/hlib/mkiraf.csh @@ -0,0 +1,119 @@ +#! /bin/csh +# MKIRAF -- Setup the IRAF environment for a user. Should be called from the +# directory from which the user will thereafter type "cl" to start a session. + +# The following definitions are site dependent. [SITEDEP] + +set iraf = "/iraf/iraf" +set imdir = "/iraf/imdirs" +set cachedir = "/iraf/cache" +set ttymsg =\ +"Terminal types: xgterm,xterm,gterm,vt640,vt100,etc." + +# ------------- (end of site dependent definitions) ------------------------ + +unalias rm mkdir pwd echo mkdir sed whoami pushd popd + +# The following kludge is for Solaris, which doesn't have whoami. +if (! $?USER) then + setenv USER `whoami` +endif +alias whoami "(echo $USER)" + +# Protect against running mkiraf in an iraf system directory. +pushd $iraf >& /dev/null; set irafdir = `pwd`; popd >& /dev/null +if ("`pwd | grep $irafdir`" != "") then + if ("`pwd | grep iraf/local`" == "") then + echo "Error: current directory is not an iraf user login directory" + exit 1 + endif +endif + + +# Process command-line arguments. +set user_term = "none" +set init = 0 +set quiet = 0 + +while ($#argv >= 1) + if ("$argv[1]" == "-t" || "$argv[1]" == "-term") then + set user_term = $argv[2] + shift + else if ("$argv[1]" == "-i" || "$argv[1]" == "-init") then + set init = 1 + else if ("$argv[1]" == "-q" || "$argv[1]" == "-quiet") then + set quiet = 1 + else + echo "Unknown flag '"$argv[1]"'" + endif + shift +end + + + +# Make an empty "uparm" (user parameter) directory. +if (! -e uparm) then + if ($quiet == 0) then + echo '-- creating a new uparm directory' + endif + mkdir uparm +else + if ($init == 0) then + echo -n 'Initialize uparm? (y|n): ' + set yesno = $< + if ($yesno == 'y' || $yesno == 'yes') then + echo '-- initializing uparm' + rm -rf uparm; mkdir uparm + endif + else + if ($quiet == 0) then + echo '-- initializing uparm' + endif + /bin/rm -rf uparm; mkdir uparm + endif +endif + +if (-e login.cl) then + mv -f login.cl login.cl.OLD +endif + + +# Edit the login.cl file, setting the user's home directory, default image +# directory, and terminal. + +if ($user_term == "none") then + echo $ttymsg + echo -n 'Enter terminal type: ' + echo $< | sed -e "s;.*;s+U_TERM+&+;" > _sed +else + echo $user_term | sed -e "s;.*;s+U_TERM+&+;" > _sed +endif + +pwd | sed -e "s;.*;s+U_HOME+&/+;" >> _sed +pwd | sed -e "s;.*;s+U_UPARM+&/uparm/+;" >> _sed + +if (! (-e "$imdir" && -w "$imdir") ) then + set imdir = HDR$ + whoami | sed -e "s;.*;s+U_IMDIR+${imdir}/+;" >> _sed +else + whoami | sed -e "s;.*;s+U_IMDIR+${imdir}/&/+;" >> _sed + whoami | sed -e "s;.*;mkdir $imdir/& 2> /dev/null;" | sh +endif + +if (! (-e "$cachedir" && -w "$cachedir") ) then + set cachedir = /tmp/ + whoami | sed -e "s;.*;s+U_CACHEDIR+${cachedir}/+;" >> _sed +else + whoami | sed -e "s;.*;s+U_CACHEDIR+${cachedir}/&/+;" >> _sed + whoami | sed -e "s;.*;mkdir $cachedir/& 2> /dev/null;" | sh +endif + +whoami | sed -e "s;.*;s+U_USER+&+;" >> _sed + +sed -f _sed < $iraf/unix/hlib/login.cl > login.cl; rm _sed + + +if ($quiet == 0) then + echo 'A new LOGIN.CL file has been created in the current directory.' + echo 'You may wish to review and edit this file to change the defaults.' +endif diff --git a/unix/hlib/mkiraf.sh b/unix/hlib/mkiraf.sh new file mode 100755 index 00000000..ff2a1630 --- /dev/null +++ b/unix/hlib/mkiraf.sh @@ -0,0 +1,194 @@ +#!/bin/bash +# +# MKIRAF -- Setup the IRAF environment for a user. Should be called from the +# directory from which the user will thereafter type "cl" to start a session. +# +# Usage: +# +# % mkiraf [--term=<term>] [--init] [--noinit] [--quiet] +# +# Where +# -t,--term=<term> Set the default terminal type +# -i,--init Initialize the uparm directory +# -n,--noinit Do not nitialize the uparm directory +# -q,--quiet Suppress output +# +# Use of the -t, -i, or -n options will suppress the corresponding prompts +# for input. + + + # Initialize the script variables. +myterm="none" +uparm_init=-1 +quiet=0 +def=0 +force=0 +defterm="xgterm" + + # Paths edited by the install script. +iraf="/srv/conda/sources/iraf/" +imdir="/srv/conda/sources/iraf/fakehome/imdir//" +cachedir="/srv/conda/sources/iraf/fakehome/cache//" +# Bad hack - jhunk +FAKEHOME=$(dirname $imdir) + +# ------------- (end of site dependent definitions) ------------------------ + +# The following kludge is for Solaris, which doesn't have whoami. +if [ "$USER" = "" ]; then + USER=`whoami` +fi + + +# Parse the command-line options. +for i in "$@" +do + case $i in + -t=*|--term=*) # Set the default terminal type + myterm=`echo $i | sed 's/[-a-zA-Z0-9]*=//'` + ;; + -d|--default) # Create default login dir + def=1 + quiet=1 + echo "" + ;; + -i|--init) # Initialize uparm directory + uparm_init=1 + ;; + -n|--noinit) # Don't initialize uparm directory + uparm_init=0 + ;; + -q|--quiet) # Suppress output + quiet=1 + ;; + -f|--force) # Install in $iraf regardless + force=1 + ;; + *) + /bin/echo "Error: unknown option '$i'" + exit 1 + ;; + esac +done + + + +# Protect against running mkiraf in an iraf system directory. +irafdir=`cd $iraf ; pwd` +if (( $force==0 )); then + if [ ! "`pwd | grep $irafdir`" = "" ]; then + if [ "`pwd | grep iraf/local`" = "" ]; then + /bin/echo "Error: current directory is not an iraf user login directory" + exit 1 + fi + fi +fi + +if (( $def == 1 )); then + #myterm="xgterm" + cd $FAKEHOME + if [ ! -e .iraf ]; then + mkdir $FAKEHOME/.iraf + fi + cd $FAKEHOME/.iraf + if [ ! -e bin ]; then + mkdir bin + fi + if [ ! -e imdir ]; then + mkdir imdir + fi + if [ ! -e cache ]; then + mkdir cache + fi + cp $iraf/unix/hlib/setup.*sh . +fi + + +# Make an empty "uparm" (user parameter) directory. +if [ ! -e uparm ]; then + if (( quiet<1 )); then + if (( $def == 0 )); then + /bin/echo '-- creating a new uparm directory' + fi + fi + mkdir uparm +elif [ ! -d uparm ]; then + /bin/echo "Error: a file uparm exists" + exit 1 +else + if (( uparm_init<0 )) ; then + if (( quiet<1 )) ; then + /bin/echo -n 'Initialize uparm? (y|n): ' + read yesno + else + yesno="yes" + fi + if [ "$yesno" = "y" -o "$yesno" = "yes" ]; then + if (( quiet<1 )); then + /bin/echo '-- initializing uparm' + fi + /bin/rm -rf uparm + mkdir uparm + fi + elif (( uparm_init==1 )); then + if (( quiet<1 )); then + /bin/echo '-- initializing uparm' + fi + /bin/rm -rf uparm + mkdir uparm + fi +fi + +# Edit the login.cl file, setting the user's home directory, default image +# directory, and terminal. + +if [ "$myterm" == "none" ]; then + /bin/echo "Terminal types: xgterm,xtermjh,xterm,etc." + /bin/echo -n 'Enter terminal type ('$defterm'): ' + read myterm + if [ "$myterm" == "" ]; then + myterm=$defterm + fi +fi + +# Initialize the 'imdir' and 'cachedir' paths. +IDIR="${imdir}$USER" +if [ -d $imdir ]; then + mkdir -p $IDIR &> /dev/null +fi +if [ ! -d $IDIR -o ! -w $IDIR ]; then + IDIR="HDR$" +fi + +CDIR="${cachedir}$USER" +if [ -d $cachedir ]; then + mkdir -p $CDIR &> /dev/null +fi +if [ ! -d $CDIR -o ! -w $CDIR ]; then + CDIR="/tmp" +fi + + +# Back up the old login.cl file. +if [ -e login.cl ]; then + mv -f login.cl login.cl.OLD +fi + +# Create the path editing script. +_sed() { + /bin/echo $1 | sed -e "s;.*;s+U_TERM+&+;" + pwd | sed -e "s;.*;s+U_HOME+&/+;" + pwd | sed -e "s;.*;s+U_UPARM+&/uparm/+;" + /bin/echo $IDIR | sed -e "s;.*;s+U_IMDIR+&/+;" + /bin/echo $CDIR | sed -e "s;.*;s+U_CACHEDIR+&/+;" + /bin/echo $USER | sed -e "s;.*;s+U_USER+&+;" +} + +sed "`_sed $myterm`" < ${iraf}/unix/hlib/login.cl > login.cl + +if (( $def == 0 )); then + if (( quiet<1 )) ; then + /bin/echo 'A new LOGIN.CL file has been created in the current directory.' + /bin/echo 'You may wish to review and edit this file to change the defaults.' + fi +fi diff --git a/unix/hlib/mkmlist.csh b/unix/hlib/mkmlist.csh new file mode 100755 index 00000000..e4435916 --- /dev/null +++ b/unix/hlib/mkmlist.csh @@ -0,0 +1,21 @@ +#! /bin/csh +# MKMLIST -- Make a library member list on the standard output, e.g., for +# inclusion in a MKPKG file. + +# try to protect people from themselves... +unalias ls ex rm grep sed sort uniq cat + +ls *.[xfcs] > _ml1 +grep '^include' *.x >> _ml1 + +grep -v '#' _ml1 | grep -v '<syserr.h>' | sort | uniq |\ + sed -e 's/^.*include./ /' | sed -e 's/\"//g' |\ + sed -e 's/\.x/.x /' > _ml2 + +ex - << 'EOC' _ml2 +g/^ / .-1,.j +1,$s/^/ / +wq +'EOC' + +cat _ml2; rm _ml[12] diff --git a/unix/hlib/mkmlist.sh b/unix/hlib/mkmlist.sh new file mode 100755 index 00000000..7d61264b --- /dev/null +++ b/unix/hlib/mkmlist.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# MKMLIST -- Make a library member list on the standard output, e.g., for +# inclusion in a MKPKG file. + +_ml1() { + ls *.[xfcs] + grep '^include' *.x +} + +_ml2() { + _ml1 | grep -v '#' | grep -v '<syserr.h>' | sort | uniq |\ + sed -e 's/^.*include./ /' | sed -e 's/\"//g' |\ + sed -e 's/\.x/.x /' | tr -s '\n ' '\t' +} + +echo -n " " +_ml2 | sed -e 's/\( \)\([^<]\)/# \2/g' | tr '#' '\n' |\ + sed -e 's/> </> </g' + diff --git a/unix/hlib/mkpkg.inc b/unix/hlib/mkpkg.inc new file mode 100644 index 00000000..f2f61d04 --- /dev/null +++ b/unix/hlib/mkpkg.inc @@ -0,0 +1,77 @@ +# Global (possibly system dependent) definitions for MKPKG. + +$verbose + +$set MACH = $(IRAFARCH) # machine/fpu type +$set HOSTID = unix # host system name +$set SITEID = noao # site name + +$ifeq (MACH, freebsd) then +$set XFLAGS = "-c -w -/m32" # default XC compile flags +$set XVFLAGS = "-c -w" -/m32 # VOPS XC compile flags +$set LFLAGS = "-z -/static -/m32" # default XC link flags +$else $ifeq (MACH, linux) then +$set XFLAGS = "-c -w" # default XC compile flags +$set XVFLAGS = "-c -w" # VOPS XC compile flags +$set LFLAGS = "-Nz" # default XC link flags +$else $ifeq (MACH, linux64) then +$set XFLAGS = "-c -w -/g -/m64" # default XC compile flags +$set XVFLAGS = "-c -w -/g -/m64" # VOPS XC compile flags +$set LFLAGS = "-Nz -/g -/m64" # default XC link flags +$else $ifeq (MACH, redhat) then +$set XFLAGS = "-c -w" # default XC compile flags +$set XVFLAGS = "-c -w" # VOPS XC compile flags +$set LFLAGS = "-Nz" # default XC link flags +$else $ifeq (MACH, macosx) then +$set XFLAGS = "-c -w" # default XC compile flags +$set XVFLAGS = "-c -w" # VOPS XC compile flags +$set LFLAGS = "-Nz" # default XC link flags +$else $ifeq (MACH, macintel) then +$set XFLAGS = "-c -w" # default XC compile flags +$set XVFLAGS = "-c -w" # VOPS XC compile flags +$set LFLAGS = "-Nz" # default XC link flags +$else $ifeq (MACH, ipad) then +$set XFLAGS = "-c -w" # default XC compile flags +$set XVFLAGS = "-c -w" # VOPS XC compile flags +$set LFLAGS = "-Nz" # default XC link flags +$else $ifeq (MACH, linuxppc) then +$set XFLAGS = "-c -w" # default XC compile flags +$set XVFLAGS = "-c -w" # VOPS XC compile flags +$set LFLAGS = "-Nz" # default XC link flags +$else $ifeq (MACH, sunos) then +$set XFLAGS = "-c -w" # default XC compile flags +$set XVFLAGS = "-c -w" # VOPS XC compile flags +$set LFLAGS = "-Nz" # default XC link flags +$else $ifeq (MACH, cygwin) then +$set XFLAGS = "-c -w" # default XC compile flags +$set XVFLAGS = "-c -w" # VOPS XC compile flags +$set LFLAGS = "-Nz" # default XC link flags +$else +$set XFLAGS = "-c -w" # default XC compile flags +$set XVFLAGS = "-c -w" # VOPS XC compile flags +$set LFLAGS = "-z -/static" # default XC link flags +$end + +$set USE_LIBMAIN = yes # update lib$libmain.o (root object) +$set USE_KNET = yes # use the KI (network interface) +$set USE_SHLIB = no # use (update) the shared library +$set USE_CCOMPILER = yes # use the C compiler +$set USE_GENERIC = yes # use the generic preprocessor +$set USE_NSPP = no # make the NCAR/NSPP graphics kernel +$set USE_IIS = no # make the IIS display control package +$set USE_CALCOMP = no # make the Calcomp graphics kernel +$set LIB_CALCOMP = "-lcalcomp" # name of host system calcomp library + +$ifeq (MACH, linux, redhat, macosx, macintel, ipad) then + $include "hlib$mkpkg.sf.MACX" +$else $ifeq (MACH, linux, redhat, linuxppc) then + $include "hlib$mkpkg.sf.LNUX" +$else $ifeq (MACH, linux64) then + $include "hlib$mkpkg.sf.LNUX64" +$else $ifeq (MACH, freebsd) then + $include "hlib$mkpkg.sf.FBSD" +$else $ifeq (MACH, sunos) then + $include "hlib$mkpkg.sf.SX86" +$else $ifeq (MACH, cygwin) then + $include "hlib$mkpkg.sf.CYGW" +$end diff --git a/unix/hlib/mkpkg.sf.CYGW b/unix/hlib/mkpkg.sf.CYGW new file mode 100644 index 00000000..bf27cba9 --- /dev/null +++ b/unix/hlib/mkpkg.sf.CYGW @@ -0,0 +1,50 @@ +# Mkpkg special file list for Linux/IRAF, GNU compilers. + +$special "sys$osb/": aclrb.c as$aclrb.c + bytmov.c as$bytmov.c + ieeer.x as$ieeer.x + ieeed.x as$ieeed.x + ; + +$special "sys$vops/ak/": aclrc.x as$aclrc.c + aclrs.x as$aclrs.c + aclri.x as$aclri.c + aclrl.x as$aclrl.c + aclrr.x as$aclrr.c + aclrd.x as$aclrd.c + ; + +$special "sys$vops/lz/": amovc.x as$amovc.c + amovs.x as$amovs.c + amovi.x as$amovi.c + amovl.x as$amovl.c + amovr.x as$amovr.c + amovd.x as$amovd.c + ; + +#$special "sys$memdbg/": zrtadr.c as$zrtadr.s ; + + +# These routines use local include files with multi-line macros + +$set XARCH = '& "$xc -c -A &"' +$special "sys$plio/tf/": + plrropi.x $(XARCH) + plrropl.x $(XARCH) + plrrops.x $(XARCH) + ; + +$special "sys$plio/": + pllnext.x $(XARCH) + pllrop.x $(XARCH) + pllsten.x $(XARCH) + plsectnc.x $(XARCH) + plsectne.x $(XARCH) + ; + +$set XBIG = '& "$xc -c -w -/Nx512 -/Ns2048 &"' +$special "sys$fmtio/": evvexpr.x $(XBIG) ; + +$set XNL = '& "$xc -c -/NL400 &"' +$special "math$slalib/": obs.f $(XNL) ; + diff --git a/unix/hlib/mkpkg.sf.FBSD b/unix/hlib/mkpkg.sf.FBSD new file mode 100644 index 00000000..8554d0c3 --- /dev/null +++ b/unix/hlib/mkpkg.sf.FBSD @@ -0,0 +1,40 @@ +# Mkpkg special file list for FreeBSD/IRAF, GNU compilers. + +$special "sys$osb/": aclrb.c as$aclrb.c + bytmov.c as$bytmov.c + ieeer.x as$ieeer.x + ieeed.x as$ieeed.x + ; + +$special "sys$vops/ak/": aclrc.x as$aclrc.c + aclrs.x as$aclrs.c + aclri.x as$aclri.c + aclrl.x as$aclrl.c + aclrr.x as$aclrr.c + aclrd.x as$aclrd.c + ; + +$special "sys$vops/lz/": amovc.x as$amovc.c + amovs.x as$amovs.c + amovi.x as$amovi.c + amovl.x as$amovl.c + amovr.x as$amovr.c + amovd.x as$amovd.c + ; + +#$special "sys$memdbg/": zrtadr.c as$zrtadr.s ; + + +# The iraf main has to be compiled without optimization on the Sun-4 +# as setjmp does not save the register set. + +#$set XNO = '& "$xc -cq &"' +#$special "sys$etc/": +# main.x $(XNO) +# ; + +$set XBIG = '& "$xc -c -w -/Nx512 -/Ns2048 &"' +$special "sys$fmtio/": evvexpr.x $(XBIG) ; + +$set XNL = '& "$xc -c -/NL400 &"' +$special "math$slalib/": obs.f $(XNL) ; diff --git a/unix/hlib/mkpkg.sf.I386 b/unix/hlib/mkpkg.sf.I386 new file mode 100644 index 00000000..97b0133d --- /dev/null +++ b/unix/hlib/mkpkg.sf.I386 @@ -0,0 +1,92 @@ +# Mkpkg special file list for SUN/IRAF, SUN/UNIX V3.2. + +# All files needing special processing for the local host operating system, +# e.g., to permit host dependent optimization or to work around compiler bugs, +# should be listed here. + +# Files optimized for the local host system. +# ----------------------------------------- + +$special "sys$osb/": aclrb.c as$aclrb.c + bytmov.c as$bytmov.c + ieeer.x as$ieeer.x + ieeed.x as$ieeed.x + ; + +$special "sys$vops/ak/": aclrc.x as$aclrc.c + aclrs.x as$aclrs.c + aclri.x as$aclri.c + aclrl.x as$aclrl.c + aclrr.x as$aclrr.c + aclrd.x as$aclrd.c + ; + +$special "sys$vops/lz/": amovc.x as$amovc.c + amovs.x as$amovs.c + amovi.x as$amovi.c + amovl.x as$amovl.c + amovr.x as$amovr.c + amovd.x as$amovd.c + ; + +#$special "sys$gio/nspp/sysint/": ishift.x as$ishift.s ; +#$special "sys$gio/ncarutil/sysint/": ishift.x as$ishift.s ; + +# Files requiring special compilation due to host compiler bugs. +# ------------------------------------------------------------- + +$set XNO = '& "$xc -cq -/$(MACH) &"' +$set XO1 = '& "$xc -cq -/O1 -/$(MACH) &"' +$set XO2 = '& "$xc -cq -/O2 -/$(MACH) &"' + +$special "sys$vops/lz/": amods.x as$amods.s ; + +$special "sys$etc/": + onerror.x $(XNO) + onexit.x $(XNO) + ; +$special "sys$gio/ncarutil/": + conrec.f $(XNO) + srface.f $(XNO) + pwrzi.f $(XNO) + pwrzs.f $(XNO) + ; + +$special "sys$gio/cursor/": + grcwcs.x $(XNO); + +$special "sys$mwcs/": + wftan.x $(XNO); + +# The following causes the compiler to produce semi-infinite intermediate code +# tables, necessitating use of reduced levels (O1 or O2) of optimization. + +$special "sys$osb/": + achtbu.c $(XO1) + achtcu.c $(XO1) + achtdu.c $(XO1) + achtiu.c $(XO1) + achtlu.c $(XO1) + achtru.c $(XO1) + achtsu.c $(XO1) + achtuu.c $(XO1) + achtxu.c $(XO1) + achtub.c $(XO1) + achtuc.c $(XO1) + achtud.c $(XO1) + achtui.c $(XO1) + achtul.c $(XO1) + achtur.c $(XO1) + achtus.c $(XO1) + achtuu.c $(XO1) + achtux.c $(XO1) + ; + +# Partial optimization needed to prevent infinite loop in iropt. +# In main.c and errs.c, no optimization is needed to avoid an optimizer problem +# associated with ZSVJMP (setjmp). I tried using a #pragma to fix this but +# it didn't work. + +$special "$(pkg)cl/": ytab.c & "$xc -cq -/O2 &" + main.c & "$xc -cq &" + errs.c & "$xc -cq &"; diff --git a/unix/hlib/mkpkg.sf.LNUX b/unix/hlib/mkpkg.sf.LNUX new file mode 100644 index 00000000..3db4dc03 --- /dev/null +++ b/unix/hlib/mkpkg.sf.LNUX @@ -0,0 +1,41 @@ +# Mkpkg special file list for Linux/IRAF, GNU compilers. + +$special "sys$osb/": aclrb.c as$aclrb.c + bytmov.c as$bytmov.c + ieeer.x as$ieeer.x + ieeed.x as$ieeed.x + ; + +$special "sys$vops/ak/": aclrc.x as$aclrc.c + aclrs.x as$aclrs.c + aclri.x as$aclri.c + aclrl.x as$aclrl.c + aclrr.x as$aclrr.c + aclrd.x as$aclrd.c + ; + +$special "sys$vops/lz/": amovc.x as$amovc.c + amovs.x as$amovs.c + amovi.x as$amovi.c + amovl.x as$amovl.c + amovr.x as$amovr.c + amovd.x as$amovd.c + ; + +#$special "sys$memdbg/": zrtadr.c as$zrtadr.s ; + + +# The iraf main has to be compiled without optimization on the Sun-4 +# as setjmp does not save the register set. + +#$set XNO = '& "$xc -cq &"' +#$special "sys$etc/": +# main.x $(XNO) +# ; + +$set XBIG = '& "$xc -c -w -/Nx512 -/Ns3072 &"' +$special "sys$fmtio/": evvexpr.x $(XBIG) ; + +$set XNL = '& "$xc -c -/NL400 &"' +$special "math$slalib/": obs.f $(XNL) ; + diff --git a/unix/hlib/mkpkg.sf.LNUX64 b/unix/hlib/mkpkg.sf.LNUX64 new file mode 100644 index 00000000..3db4dc03 --- /dev/null +++ b/unix/hlib/mkpkg.sf.LNUX64 @@ -0,0 +1,41 @@ +# Mkpkg special file list for Linux/IRAF, GNU compilers. + +$special "sys$osb/": aclrb.c as$aclrb.c + bytmov.c as$bytmov.c + ieeer.x as$ieeer.x + ieeed.x as$ieeed.x + ; + +$special "sys$vops/ak/": aclrc.x as$aclrc.c + aclrs.x as$aclrs.c + aclri.x as$aclri.c + aclrl.x as$aclrl.c + aclrr.x as$aclrr.c + aclrd.x as$aclrd.c + ; + +$special "sys$vops/lz/": amovc.x as$amovc.c + amovs.x as$amovs.c + amovi.x as$amovi.c + amovl.x as$amovl.c + amovr.x as$amovr.c + amovd.x as$amovd.c + ; + +#$special "sys$memdbg/": zrtadr.c as$zrtadr.s ; + + +# The iraf main has to be compiled without optimization on the Sun-4 +# as setjmp does not save the register set. + +#$set XNO = '& "$xc -cq &"' +#$special "sys$etc/": +# main.x $(XNO) +# ; + +$set XBIG = '& "$xc -c -w -/Nx512 -/Ns3072 &"' +$special "sys$fmtio/": evvexpr.x $(XBIG) ; + +$set XNL = '& "$xc -c -/NL400 &"' +$special "math$slalib/": obs.f $(XNL) ; + diff --git a/unix/hlib/mkpkg.sf.MACX b/unix/hlib/mkpkg.sf.MACX new file mode 100644 index 00000000..d90c5604 --- /dev/null +++ b/unix/hlib/mkpkg.sf.MACX @@ -0,0 +1,41 @@ +# Mkpkg special file list for MacOSX/IRAF, GNU compilers. + +$special "sys$osb/": aclrb.c as$aclrb.c + bytmov.c as$bytmov.c + ieeer.x as$ieeer.x + ieeed.x as$ieeed.x + ; + +$special "sys$vops/ak/": aclrc.x as$aclrc.c + aclrs.x as$aclrs.c + aclri.x as$aclri.c + aclrl.x as$aclrl.c + aclrr.x as$aclrr.c + aclrd.x as$aclrd.c + ; + +$special "sys$vops/lz/": amovc.x as$amovc.c + amovs.x as$amovs.c + amovi.x as$amovi.c + amovl.x as$amovl.c + amovr.x as$amovr.c + amovd.x as$amovd.c + ; + +#$special "sys$memdbg/": zrtadr.c as$zrtadr.s ; + + +# The iraf main has to be compiled without optimization on the Sun-4 +# as setjmp does not save the register set. + +#$set XNO = '& "$xc -cq &"' +#$special "sys$etc/": +# main.x $(XNO) +# ; + +$set XBIG = '& "$xc -c -w -/Nx512 -/Ns2048 &"' +$special "sys$fmtio/": evvexpr.x $(XBIG) ; + +$set XNL = '& "$xc -c -/NL400 &"' +$special "math$slalib/": obs.f $(XNL) ; + diff --git a/unix/hlib/mkpkg.sf.OS4 b/unix/hlib/mkpkg.sf.OS4 new file mode 100644 index 00000000..968ae23e --- /dev/null +++ b/unix/hlib/mkpkg.sf.OS4 @@ -0,0 +1,82 @@ +# Mkpkg special file list for SUN/IRAF, SUN/UNIX V3.2. + +# All files needing special processing for the local host operating system, +# e.g., to permit host dependent optimization or to work around compiler bugs, +# should be listed here. + +# Files optimized for the local host system. +# ----------------------------------------- + +$special "sys$osb/": aclrb.c as$aclrb.c + bytmov.c as$bytmov.c + ; + +$special "sys$vops/ak/": aclrc.x as$aclrc.c + aclrs.x as$aclrs.c + aclri.x as$aclri.c + aclrl.x as$aclrl.c + aclrr.x as$aclrr.c + aclrd.x as$aclrd.c + ; + +$special "sys$vops/lz/": amovc.x as$amovc.c + amovs.x as$amovs.c + amovi.x as$amovi.c + amovl.x as$amovl.c + amovr.x as$amovr.c + amovd.x as$amovd.c + ; + +$special "sys$gio/nspp/sysint/": ishift.x as$ishift.s ; +$special "sys$gio/ncarutil/sysint/": ishift.x as$ishift.s ; + +# SUNOS 4.0. +# --------------------------------------------- + +$set XNO = '& "$xc -cq -/$(MACH) &"' +$set XO1 = '& "$xc -cq -/O1 -/$(MACH) &"' +$set XO2 = '& "$xc -cq -/O2 -/$(MACH) &"' + +# Files requiring special compilation due to host compiler bugs. +# ------------------------------------------------------------- + +$special "sys$etc/": + onerror.x $(XNO) + onexit.x $(XNO) + ; + +$special "sys$gio/cursor/": + grcwcs.x $(XNO); + +# The following causes the compiler to produce semi-infinite intermediate code +# tables, necessitating use of reduced levels (O1 or O2) of optimization. + +$special "sys$osb/": + achtbu.c $(XO1) + achtcu.c $(XO1) + achtdu.c $(XO1) + achtiu.c $(XO1) + achtlu.c $(XO1) + achtru.c $(XO1) + achtsu.c $(XO1) + achtuu.c $(XO1) + achtxu.c $(XO1) + achtub.c $(XO1) + achtuc.c $(XO1) + achtud.c $(XO1) + achtui.c $(XO1) + achtul.c $(XO1) + achtur.c $(XO1) + achtus.c $(XO1) + achtuu.c $(XO1) + achtux.c $(XO1) + ; + +# Partial optimization needed to prevent infinite loop in iropt. +# In main.c and errs.c, no optimization is needed to avoid an optimizer problem +# associated with ZSVJMP (setjmp). I tried using a #pragma to fix this but +# it didn't work. + +$special "$(pkg)cl/": ytab.c & "$xc -cq -/O2 &" + main.c & "$xc -cq &" + errs.c & "$xc -cq &"; diff --git a/unix/hlib/mkpkg.sf.S34 b/unix/hlib/mkpkg.sf.S34 new file mode 100644 index 00000000..9634d72c --- /dev/null +++ b/unix/hlib/mkpkg.sf.S34 @@ -0,0 +1,122 @@ +# Mkpkg special file list for SUN/IRAF, SUN/UNIX V3.2. + +# All files needing special processing for the local host operating system, +# e.g., to permit host dependent optimization or to work around compiler bugs, +# should be listed here. + +# Files optimized for the local host system. +# ----------------------------------------- + +$special "sys$gio/nspp/sysint/": ishift.x as$ishift.s ; +$special "sys$gio/ncarutil/sysint/": ishift.x as$ishift.s ; + +$special "sys$osb/": aclrb.c as$aclrb.c + bytmov.c as$bytmov.c + ; + +$special "sys$vops/ak/": aclrc.x as$aclrc.c + aclrs.x as$aclrs.c + aclri.x as$aclri.c + aclrl.x as$aclrl.c + aclrr.x as$aclrr.c + aclrd.x as$aclrd.c + ; + +$special "sys$vops/lz/": amovc.x as$amovc.c + amovs.x as$amovs.c + amovi.x as$amovi.c + amovl.x as$amovl.c + amovr.x as$amovr.c + amovd.x as$amovd.c + ; + +# Files requiring special compilation due to host compiler bugs. +# ------------------------------------------------------------- + +# Hand compile without SUN-f77 hardware floating point switch, but with +# optimization, otherwise the f77 compiler fails due to complex datatype +# expressions. (7/31) + +$set XCS = '& "$xc -c &"' + +$special "sys$vops/ak/": + abeqkx.x $(XCS) + abeqx.x $(XCS) + abgekx.x $(XCS) + abgtkx.x $(XCS) + ablekx.x $(XCS) + abltkx.x $(XCS) + abnekx.x $(XCS) + abnex.x $(XCS) + advzx.x $(XCS) + ; + +$special "sys$vops/lz/": + allnx.x $(XCS) + alogx.x $(XCS) + arcpx.x $(XCS) + arczx.x $(XCS) + ; + +# Hand compile without optimization, but with hardware floating point, to +# get around optimizer bugs in SUN-f77. + +$set XCQ = '& "$xc -cq -/$(MACH) &"' + +$special "sys$etc/": main.x $(XCQ); +$special "sys$fmtio/": fprfmt.x $(XCQ); +$special "sys$gio/cursor/": grcwcs.x $(XCQ); +$special "math$curfit/": cvaccumd.x $(XCQ) + cvaccumr.x $(XCQ); +$special "images$lib/": ranges.x $(XCQ); + +# Additions for SunOS 4.0 in case this is used for that too. +# --------------------------------------------------------------------- + +$set XNO = '& "$xc -cq -/$(MACH) &"' +$set XO1 = '& "$xc -cq -/O1 -/$(MACH) &"' +$set XO2 = '& "$xc -cq -/O2 -/$(MACH) &"' + +# Files requiring special compilation due to host compiler bugs. +# ------------------------------------------------------------- + +$special "sys$etc/": + onerror.x $(XNO) + onexit.x $(XNO) + ; + +$special "sys$gio/cursor/": + grcwcs.x $(XNO); + +# The following causes the compiler to produce semi-infinite intermediate code +# tables, necessitating use of reduced levels (O1 or O2) of optimization. + +$special "sys$osb/": + achtbu.c $(XO1) + achtcu.c $(XO1) + achtdu.c $(XO1) + achtiu.c $(XO1) + achtlu.c $(XO1) + achtru.c $(XO1) + achtsu.c $(XO1) + achtuu.c $(XO1) + achtxu.c $(XO1) + achtub.c $(XO1) + achtuc.c $(XO1) + achtud.c $(XO1) + achtui.c $(XO1) + achtul.c $(XO1) + achtur.c $(XO1) + achtus.c $(XO1) + achtuu.c $(XO1) + achtux.c $(XO1) + ; + +# Partial optimization needed to prevent infinite loop in iropt. +# In main.c and errs.c, no optimization is needed to avoid an optimizer problem +# associated with ZSVJMP (setjmp). I tried using a #pragma to fix this but +# it didn't work. + +$special "$(pkg)cl/": ytab.c & "$xc -cq -/O2 &" + main.c & "$xc -cq &" + errs.c & "$xc -cq &"; diff --git a/unix/hlib/mkpkg.sf.SF2C b/unix/hlib/mkpkg.sf.SF2C new file mode 100644 index 00000000..9e3219a7 --- /dev/null +++ b/unix/hlib/mkpkg.sf.SF2C @@ -0,0 +1,37 @@ +# Mkpkg special file list for Solaris/IRAF, Cygnus/Gnu/F2c. + +$special "sys$osb/": aclrb.c as$aclrb.c + bytmov.c as$bytmov.c + ieeer.x as$ieeer.x + ieeed.x as$ieeed.x + ; + +$special "sys$vops/ak/": aclrc.x as$aclrc.c + aclrs.x as$aclrs.c + aclri.x as$aclri.c + aclrl.x as$aclrl.c + aclrr.x as$aclrr.c + aclrd.x as$aclrd.c + ; + +$special "sys$vops/lz/": amovc.x as$amovc.c + amovs.x as$amovs.c + amovi.x as$amovi.c + amovl.x as$amovl.c + amovr.x as$amovr.c + amovd.x as$amovd.c + ; + +# $special "sys$memdbg/": zrtadr.c as$zrtadr.s ; + + +# The iraf main has to be compiled without optimization on the Sun-4 +# as setjmp does not save the register set. + +$set XNO = '& "$xc -cq &"' +$special "sys$etc/": + main.x $(XNO) + ; + +# $set XBIG = '& "$xc -c -/Ns2048 &"' +# $special "sys$fmtio/": evvexpr.x $(XBIG) ; diff --git a/unix/hlib/mkpkg.sf.SSUN b/unix/hlib/mkpkg.sf.SSUN new file mode 100644 index 00000000..124c88cb --- /dev/null +++ b/unix/hlib/mkpkg.sf.SSUN @@ -0,0 +1,65 @@ +# Mkpkg special file list for Solaris/IRAF, SunSoft compilers. + +$set XCF = "$xc -c -/libmil" + +$special "sys$osb/": aclrb.c as$aclrb.c "$(XCF) aclrb.c" + bytmov.c as$bytmov.c "$(XCF) bytmov.c" + ieeer.x as$ieeer.x + ieeed.x as$ieeed.x + ; + +$special "sys$vops/ak/": aclrc.x as$aclrc.c "$(XCF) aclrc.c" + aclrs.x as$aclrs.c "$(XCF) aclrs.c" + aclri.x as$aclri.c "$(XCF) aclri.c" + aclrl.x as$aclrl.c "$(XCF) aclrl.c" + aclrr.x as$aclrr.c "$(XCF) aclrr.c" + aclrd.x as$aclrd.c "$(XCF) aclrd.c" + ; + +$special "sys$vops/lz/": amovc.x as$amovc.c "$(XCF) amovc.c" + amovs.x as$amovs.c "$(XCF) amovs.c" + amovi.x as$amovi.c "$(XCF) amovi.c" + amovl.x as$amovl.c "$(XCF) amovl.c" + amovr.x as$amovr.c "$(XCF) amovr.c" + amovd.x as$amovd.c "$(XCF) amovd.c" + ; + +$special "sys$memdbg/": zrtadr.c as$zrtadr.s ; + + +# The following is needed to disable a warning about <varargs.h> being +# explicitly included (see $hlib/libc/varargs.h). + +$set XNOWARN = '& "$xc -c -/erroff=E_INC_USR_INC_MAY_NOT_PORTABLE &"' +$special "libc$": + printf.c $(XNOWARN) + eprintf.c $(XNOWARN) + sprintf.c $(XNOWARN) + scanf.c $(XNOWARN) + ; +$special "pkg$cl/": + clprintf.c $(XNOWARN) + errs.c $(XNOWARN) + ; + +# The iraf main has to be compiled without optimization on the Sun-4 +# as setjmp does not save the register set. + +$set XNO = '& "$xc -cq &"' +$special "sys$etc/": + main.x $(XNO) + ; + +# $set XBIG = '& "$xc -c -/Ns2048 &"' +# $special "sys$fmtio/": evvexpr.x $(XBIG) ; + + +# The following need to be linked nonshared to avoid the 268 MB memory limit +# in the shared Sun/IRAF library implementation. + +$set NONSHARE = '& "LFLAGS = -z -/Bstatic"' +$special "dataio$": xx_dataio.e $(NONSHARE) ; +$special "images$": xx_images.e $(NONSHARE) ; +$special "images$tv/": xx_tv.e $(NONSHARE) ; +$special "plot$": xx_plot.e $(NONSHARE) ; + diff --git a/unix/hlib/mkpkg.sf.SUN3 b/unix/hlib/mkpkg.sf.SUN3 new file mode 100644 index 00000000..556afcaa --- /dev/null +++ b/unix/hlib/mkpkg.sf.SUN3 @@ -0,0 +1,54 @@ +# Mkpkg special file list for SUN/IRAF, SUN/UNIX V3.2. +# Modified for SunOS 4.0. + +# All files needing special processing for the local host operating system, +# e.g., to permit host dependent optimization or to work around compiler bugs, +# should be listed here. + +# Files optimized for the local host system. +# ----------------------------------------- + +$special "sys$gio/nspp/sysint/": ishift.x as$ishift.s ; +$special "sys$gio/ncarutil/sysint/": ishift.x as$ishift.s ; + +$special "sys$osb/": aclrb.c as$aclrb.c + bytmov.c as$bytmov.c + ieeer.x as$ieeer.x + ieeed.x as$ieeed.x + ; + +$special "sys$vops/ak/": aclrc.x as$aclrc.c + aclrs.x as$aclrs.c + aclri.x as$aclri.c + aclrl.x as$aclrl.c + aclrr.x as$aclrr.c + aclrd.x as$aclrd.c + ; + +$special "sys$vops/lz/": amovc.x as$amovc.c + amovs.x as$amovs.c + amovi.x as$amovi.c + amovl.x as$amovl.c + amovr.x as$amovr.c + amovd.x as$amovd.c + ; + +# Files requiring special compilation due to host compiler bugs. +# ------------------------------------------------------------- + +# All this has been commented out for the new V1.3 Fortran compiler. +$set XNO = '& "$xc -cq &"' +$set XO1 = '& "$xc -cq -/O1 &"' +$set XO2 = '& "$xc -cq -/O2 &"' + +$special "sys$vops/ak/": + abnekx.x $(XNO) + abnex.x $(XNO) + ; +$special "sys$vops/lz/": + aveqx.x $(XNO) + ; + +$set XBIG = '& "$xc -c -/Ns2048 -/Nx2048 &"' +$special "sys$fmtio/": evvexpr.x $(XBIG) ; + diff --git a/unix/hlib/mkpkg.sf.SUN4 b/unix/hlib/mkpkg.sf.SUN4 new file mode 100644 index 00000000..de55ae44 --- /dev/null +++ b/unix/hlib/mkpkg.sf.SUN4 @@ -0,0 +1,55 @@ +# Mkpkg special file list for SUN/IRAF. +# SunOS Release Sys4GAMMA (HERCULES) #1: Fri Sep 18 10:15:21 PDT 1987 +# SunOS Release Sys4BETA1 (ORION) #1: Fri Oct 23 13:09:29 PDT 1987 + +$special "sys$osb/": aclrb.c as$aclrb.c + bytmov.c as$bytmov.c + ieeer.x as$ieeer.x + ieeed.x as$ieeed.x + ; + +$special "sys$vops/ak/": aclrc.x as$aclrc.c + aclrs.x as$aclrs.c + aclri.x as$aclri.c + aclrl.x as$aclrl.c + aclrr.x as$aclrr.c + aclrd.x as$aclrd.c + ; + +$special "sys$vops/lz/": amovc.x as$amovc.c + amovs.x as$amovs.c + amovi.x as$amovi.c + amovl.x as$amovl.c + amovr.x as$amovr.c + amovd.x as$amovd.c + ; + +$special "sys$memdbg/": zrtadr.c as$zrtadr.s ; + +# The iraf main has to be compiled without optimization on the Sun-4 +# as setjmp does not save the register set. + +$set XNO = '& "$xc -cq &"' +$special "sys$etc/": + main.x $(XNO) + ; + +# All files needing special processing for the local host operating system, +# e.g., to permit host dependent optimization or to work around compiler bugs, +# should be listed here. + +$special "sys$vops/ak/": + abnekx.x $(XNO) + abnex.x $(XNO) + ; +$special "sys$vops/lz/": + aveqx.x $(XNO) + ; + +# TMPFS bug should be fixed by now. +#$special "sys$etc/": +# oscmd.x as$oscmd.s +# ; + +$set XBIG = '& "$xc -c -/Ns2048 &"' +$special "sys$fmtio/": evvexpr.x $(XBIG) ; diff --git a/unix/hlib/mkpkg.sf.SX86 b/unix/hlib/mkpkg.sf.SX86 new file mode 100644 index 00000000..a0b56fcf --- /dev/null +++ b/unix/hlib/mkpkg.sf.SX86 @@ -0,0 +1,41 @@ +# Mkpkg special file list for Solaris-X86/IRAF GNU compilers. + +$special "sys$osb/": aclrb.c as$aclrb.c + bytmov.c as$bytmov.c + ieeer.x as$ieeer.x + ieeed.x as$ieeed.x + ; + +$special "sys$vops/ak/": aclrc.x as$aclrc.c + aclrs.x as$aclrs.c + aclri.x as$aclri.c + aclrl.x as$aclrl.c + aclrr.x as$aclrr.c + aclrd.x as$aclrd.c + ; + +$special "sys$vops/lz/": amovc.x as$amovc.c + amovs.x as$amovs.c + amovi.x as$amovi.c + amovl.x as$amovl.c + amovr.x as$amovr.c + amovd.x as$amovd.c + ; + +#$special "sys$memdbg/": zrtadr.c as$zrtadr.s ; + + +# The iraf main has to be compiled without optimization on the Sun-4 +# as setjmp does not save the register set. + +#$set XNO = '& "$xc -cq &"' +#$special "sys$etc/": +# main.x $(XNO) +# ; + +$set XBIG = '& "$xc -c -w -/Nx512 -/Ns2048 &"' +$special "sys$fmtio/": evvexpr.x $(XBIG) ; + +$set XNL = '& "$xc -c -/NL400 &"' +$special "math$slalib/": obs.f $(XNL) ; + diff --git a/unix/hlib/motd b/unix/hlib/motd new file mode 100644 index 00000000..77d4f035 --- /dev/null +++ b/unix/hlib/motd @@ -0,0 +1,14 @@ + + NOAO/IRAF PC-IRAF Revision 2.16.1 EXPORT Mon Oct 14 21:40:13 MST 2013 + This is the EXPORT version of IRAF V2.16 supporting PC systems. + + + Welcome to IRAF. To list the available commands, type ? or ??. To get + detailed information about a command, type `help <command>'. To run a + command or load a package, type its name. Type `bye' to exit a + package, or `logout' to get out of the CL. Type `news' to find out + what is new in the version of the system you are using. + + Visit http://iraf.net if you have questions or to report problems. + + diff --git a/unix/hlib/r1mach.f b/unix/hlib/r1mach.f new file mode 100644 index 00000000..167e19f1 --- /dev/null +++ b/unix/hlib/r1mach.f @@ -0,0 +1,376 @@ + REAL FUNCTION R1MACH(I) +C +C SINGLE-PRECISION MACHINE CONSTANTS +C +C R1MACH(1) = B**(EMIN-1), THE SMALLEST POSITIVE MAGNITUDE. +C +C R1MACH(2) = B**EMAX*(1 - B**(-T)), THE LARGEST MAGNITUDE. +C +C R1MACH(3) = B**(-T), THE SMALLEST RELATIVE SPACING. +C +C R1MACH(4) = B**(1-T), THE LARGEST RELATIVE SPACING. +C +C R1MACH(5) = LOG10(B) +C +C TO ALTER THIS FUNCTION FOR A PARTICULAR ENVIRONMENT, +C THE DESIRED SET OF DATA STATEMENTS SHOULD BE ACTIVATED BY +C REMOVING THE C FROM COLUMN 1. +C +C FOR IEEE-ARITHMETIC MACHINES (BINARY STANDARD), THE FIRST +C SET OF CONSTANTS BELOW SHOULD BE APPROPRIATE. +C +C WHERE POSSIBLE, DECIMAL, OCTAL OR HEXADECIMAL CONSTANTS ARE USED +C TO SPECIFY THE CONSTANTS EXACTLY. SOMETIMES THIS REQUIRES USING +C EQUIVALENT INTEGER ARRAYS. IF YOUR COMPILER USES HALF-WORD +C INTEGERS BY DEFAULT (SOMETIMES CALLED INTEGER*2), YOU MAY NEED TO +C CHANGE INTEGER TO INTEGER*4 OR OTHERWISE INSTRUCT YOUR COMPILER +C TO USE FULL-WORD INTEGERS IN THE NEXT 5 DECLARATIONS. +C +C COMMENTS JUST BEFORE THE END STATEMENT (LINES STARTING WITH *) +C GIVE C SOURCE FOR R1MACH. +C + INTEGER SMALL(2) + INTEGER LARGE(2) + INTEGER RIGHT(2) + INTEGER DIVER(2) + INTEGER LOG10(2) + INTEGER I +C/6S +C/7S + SAVE SMALL, LARGE, RIGHT, DIVER, LOG10 +C/ + REAL RMACH(5) +C + EQUIVALENCE (RMACH(1),SMALL(1)) + EQUIVALENCE (RMACH(2),LARGE(1)) + EQUIVALENCE (RMACH(3),RIGHT(1)) + EQUIVALENCE (RMACH(4),DIVER(1)) + EQUIVALENCE (RMACH(5),LOG10(1)) +C +C MACHINE CONSTANTS FOR IEEE ARITHMETIC MACHINES, SUCH AS THE AT&T +C 3B SERIES, MOTOROLA 68000 BASED MACHINES (E.G. SUN 3 AND AT&T +C PC 7300), AND 8087 BASED MICROS (E.G. IBM PC AND AT&T 6300). +C + DATA SMALL(1) / 8388608 / + DATA LARGE(1) / 2139095039 / + DATA RIGHT(1) / 864026624 / + DATA DIVER(1) / 872415232 / + DATA LOG10(1) / 1050288283 / +C +C MACHINE CONSTANTS FOR AMDAHL MACHINES. +C +C DATA SMALL(1) / 1048576 / +C DATA LARGE(1) / 2147483647 / +C DATA RIGHT(1) / 990904320 / +C DATA DIVER(1) / 1007681536 / +C DATA LOG10(1) / 1091781651 /, SC/987/ +C +C MACHINE CONSTANTS FOR THE BURROUGHS 1700 SYSTEM. +C +C DATA RMACH(1) / Z400800000 / +C DATA RMACH(2) / Z5FFFFFFFF / +C DATA RMACH(3) / Z4E9800000 / +C DATA RMACH(4) / Z4EA800000 / +C DATA RMACH(5) / Z500E730E8 /, SC/987/ +C +C MACHINE CONSTANTS FOR THE BURROUGHS 5700/6700/7700 SYSTEMS. +C +C DATA RMACH(1) / O1771000000000000 / +C DATA RMACH(2) / O0777777777777777 / +C DATA RMACH(3) / O1311000000000000 / +C DATA RMACH(4) / O1301000000000000 / +C DATA RMACH(5) / O1157163034761675 /, SC/987/ +C +C MACHINE CONSTANTS FOR FTN4 ON THE CDC 6000/7000 SERIES. +C +C DATA RMACH(1) / 00564000000000000000B / +C DATA RMACH(2) / 37767777777777777776B / +C DATA RMACH(3) / 16414000000000000000B / +C DATA RMACH(4) / 16424000000000000000B / +C DATA RMACH(5) / 17164642023241175720B /, SC/987/ +C +C MACHINE CONSTANTS FOR FTN5 ON THE CDC 6000/7000 SERIES. +C +C DATA RMACH(1) / O"00564000000000000000" / +C DATA RMACH(2) / O"37767777777777777776" / +C DATA RMACH(3) / O"16414000000000000000" / +C DATA RMACH(4) / O"16424000000000000000" / +C DATA RMACH(5) / O"17164642023241175720" /, SC/987/ +C +C MACHINE CONSTANTS FOR CONVEX C-1. +C +C DATA RMACH(1) / '00800000'X / +C DATA RMACH(2) / '7FFFFFFF'X / +C DATA RMACH(3) / '34800000'X / +C DATA RMACH(4) / '35000000'X / +C DATA RMACH(5) / '3F9A209B'X /, SC/987/ +C +C MACHINE CONSTANTS FOR THE CRAY 1, XMP, 2, AND 3. +C +C DATA RMACH(1) / 200034000000000000000B / +C DATA RMACH(2) / 577767777777777777776B / +C DATA RMACH(3) / 377224000000000000000B / +C DATA RMACH(4) / 377234000000000000000B / +C DATA RMACH(5) / 377774642023241175720B /, SC/987/ +C +C MACHINE CONSTANTS FOR THE DATA GENERAL ECLIPSE S/200. +C +C NOTE - IT MAY BE APPROPRIATE TO INCLUDE THE FOLLOWING LINE - +C STATIC RMACH(5) +C +C DATA SMALL/20K,0/,LARGE/77777K,177777K/ +C DATA RIGHT/35420K,0/,DIVER/36020K,0/ +C DATA LOG10/40423K,42023K/, SC/987/ +C +C MACHINE CONSTANTS FOR THE HARRIS SLASH 6 AND SLASH 7. +C +C DATA SMALL(1),SMALL(2) / '20000000, '00000201 / +C DATA LARGE(1),LARGE(2) / '37777777, '00000177 / +C DATA RIGHT(1),RIGHT(2) / '20000000, '00000352 / +C DATA DIVER(1),DIVER(2) / '20000000, '00000353 / +C DATA LOG10(1),LOG10(2) / '23210115, '00000377 /, SC/987/ +C +C MACHINE CONSTANTS FOR THE HONEYWELL DPS 8/70 SERIES. +C +C DATA RMACH(1) / O402400000000 / +C DATA RMACH(2) / O376777777777 / +C DATA RMACH(3) / O714400000000 / +C DATA RMACH(4) / O716400000000 / +C DATA RMACH(5) / O776464202324 /, SC/987/ +C +C MACHINE CONSTANTS FOR THE IBM 360/370 SERIES, +C THE XEROX SIGMA 5/7/9 AND THE SEL SYSTEMS 85/86. +C +C DATA RMACH(1) / Z00100000 / +C DATA RMACH(2) / Z7FFFFFFF / +C DATA RMACH(3) / Z3B100000 / +C DATA RMACH(4) / Z3C100000 / +C DATA RMACH(5) / Z41134413 /, SC/987/ +C +C MACHINE CONSTANTS FOR THE INTERDATA 8/32 +C WITH THE UNIX SYSTEM FORTRAN 77 COMPILER. +C +C FOR THE INTERDATA FORTRAN VII COMPILER REPLACE +C THE Z'S SPECIFYING HEX CONSTANTS WITH Y'S. +C +C DATA RMACH(1) / Z'00100000' / +C DATA RMACH(2) / Z'7EFFFFFF' / +C DATA RMACH(3) / Z'3B100000' / +C DATA RMACH(4) / Z'3C100000' / +C DATA RMACH(5) / Z'41134413' /, SC/987/ +C +C MACHINE CONSTANTS FOR THE PDP-10 (KA OR KI PROCESSOR). +C +C DATA RMACH(1) / "000400000000 / +C DATA RMACH(2) / "377777777777 / +C DATA RMACH(3) / "146400000000 / +C DATA RMACH(4) / "147400000000 / +C DATA RMACH(5) / "177464202324 /, SC/987/ +C +C MACHINE CONSTANTS FOR PDP-11 FORTRANS SUPPORTING +C 32-BIT INTEGERS (EXPRESSED IN INTEGER AND OCTAL). +C +C DATA SMALL(1) / 8388608 / +C DATA LARGE(1) / 2147483647 / +C DATA RIGHT(1) / 880803840 / +C DATA DIVER(1) / 889192448 / +C DATA LOG10(1) / 1067065499 /, SC/987/ +C +C DATA RMACH(1) / O00040000000 / +C DATA RMACH(2) / O17777777777 / +C DATA RMACH(3) / O06440000000 / +C DATA RMACH(4) / O06500000000 / +C DATA RMACH(5) / O07746420233 /, SC/987/ +C +C MACHINE CONSTANTS FOR PDP-11 FORTRANS SUPPORTING +C 16-BIT INTEGERS (EXPRESSED IN INTEGER AND OCTAL). +C +C DATA SMALL(1),SMALL(2) / 128, 0 / +C DATA LARGE(1),LARGE(2) / 32767, -1 / +C DATA RIGHT(1),RIGHT(2) / 13440, 0 / +C DATA DIVER(1),DIVER(2) / 13568, 0 / +C DATA LOG10(1),LOG10(2) / 16282, 8347 /, SC/987/ +C +C DATA SMALL(1),SMALL(2) / O000200, O000000 / +C DATA LARGE(1),LARGE(2) / O077777, O177777 / +C DATA RIGHT(1),RIGHT(2) / O032200, O000000 / +C DATA DIVER(1),DIVER(2) / O032400, O000000 / +C DATA LOG10(1),LOG10(2) / O037632, O020233 /, SC/987/ +C +C MACHINE CONSTANTS FOR THE SEQUENT BALANCE 8000. +C +C DATA SMALL(1) / $00800000 / +C DATA LARGE(1) / $7F7FFFFF / +C DATA RIGHT(1) / $33800000 / +C DATA DIVER(1) / $34000000 / +C DATA LOG10(1) / $3E9A209B /, SC/987/ +C +C MACHINE CONSTANTS FOR THE UNIVAC 1100 SERIES. +C +C DATA RMACH(1) / O000400000000 / +C DATA RMACH(2) / O377777777777 / +C DATA RMACH(3) / O146400000000 / +C DATA RMACH(4) / O147400000000 / +C DATA RMACH(5) / O177464202324 /, SC/987/ +C +C MACHINE CONSTANTS FOR THE VAX UNIX F77 COMPILER. +C +C DATA SMALL(1) / 128 / +C DATA LARGE(1) / -32769 / +C DATA RIGHT(1) / 13440 / +C DATA DIVER(1) / 13568 / +C DATA LOG10(1) / 547045274 /, SC/987/ +C +C MACHINE CONSTANTS FOR THE VAX-11 WITH +C FORTRAN IV-PLUS COMPILER. +C +C DATA RMACH(1) / Z00000080 / +C DATA RMACH(2) / ZFFFF7FFF / +C DATA RMACH(3) / Z00003480 / +C DATA RMACH(4) / Z00003500 / +C DATA RMACH(5) / Z209B3F9A /, SC/987/ +C +C MACHINE CONSTANTS FOR VAX/VMS VERSION 2.2. +C +C DATA RMACH(1) / '80'X / +C DATA RMACH(2) / 'FFFF7FFF'X / +C DATA RMACH(3) / '3480'X / +C DATA RMACH(4) / '3500'X / +C DATA RMACH(5) / '209B3F9A'X /, SC/987/ +C +C *** ISSUE STOP 777 IF ALL DATA STATEMENTS ARE COMMENTED... +C IF (SC .NE. 987) THEN +C* *** CHECK FOR AUTODOUBLE *** +C SMALL(2) = 0 +C RMACH(1) = 1E13 +C IF (SMALL(2) .NE. 0) THEN +C* *** AUTODOUBLED *** +C IF ( SMALL(1) .EQ. 1117925532 +C * .AND. SMALL(2) .EQ. -448790528) THEN +C* *** IEEE BIG ENDIAN *** +C SMALL(1) = 1048576 +C SMALL(2) = 0 +C LARGE(1) = 2146435071 +C LARGE(2) = -1 +C RIGHT(1) = 1017118720 +C RIGHT(2) = 0 +C DIVER(1) = 1018167296 +C DIVER(2) = 0 +C LOG10(1) = 1070810131 +C LOG10(2) = 1352628735 +C ELSE IF ( SMALL(2) .EQ. 1117925532 +C * .AND. SMALL(1) .EQ. -448790528) THEN +C* *** IEEE LITTLE ENDIAN *** +C SMALL(2) = 1048576 +C SMALL(1) = 0 +C LARGE(2) = 2146435071 +C LARGE(1) = -1 +C RIGHT(2) = 1017118720 +C RIGHT(1) = 0 +C DIVER(2) = 1018167296 +C DIVER(1) = 0 +C LOG10(2) = 1070810131 +C LOG10(1) = 1352628735 +C ELSE IF ( SMALL(1) .EQ. -2065213935 +C * .AND. SMALL(2) .EQ. 10752) THEN +C* *** VAX WITH D_FLOATING *** +C SMALL(1) = 128 +C SMALL(2) = 0 +C LARGE(1) = -32769 +C LARGE(2) = -1 +C RIGHT(1) = 9344 +C RIGHT(2) = 0 +C DIVER(1) = 9472 +C DIVER(2) = 0 +C LOG10(1) = 546979738 +C LOG10(2) = -805796613 +C ELSE IF ( SMALL(1) .EQ. 1267827943 +C * .AND. SMALL(2) .EQ. 704643072) THEN +C* *** IBM MAINFRAME *** +C SMALL(1) = 1048576 +C SMALL(2) = 0 +C LARGE(1) = 2147483647 +C LARGE(2) = -1 +C RIGHT(1) = 856686592 +C RIGHT(2) = 0 +C DIVER(1) = 873463808 +C DIVER(2) = 0 +C LOG10(1) = 1091781651 +C LOG10(2) = 1352628735 +C ELSE +C WRITE(*,*)'Adjust autodoubled R1MACH by uncommenting' +C WRITE(*,*)'data statements appropriate for your machine.' +C STOP 777 +C END IF +C ELSE +C RMACH(1) = 1234567. +C IF (SMALL(1) .EQ. 1234613304) THEN +C* *** IEEE *** +C SMALL(1) = 8388608 +C LARGE(1) = 2139095039 +C RIGHT(1) = 864026624 +C DIVER(1) = 872415232 +C LOG10(1) = 1050288283 +C ELSE IF (SMALL(1) .EQ. -1271379306) THEN +C* *** VAX *** +C SMALL(1) = 128 +C LARGE(1) = -32769 +C RIGHT(1) = 13440 +C DIVER(1) = 13568 +C LOG10(1) = 547045274 +C ELSE IF (SMALL(1) .EQ. 1175639687) THEN +C* *** IBM *** +C SMALL(1) = 1048576 +C LARGE(1) = 2147483647 +C RIGHT(1) = 990904320 +C DIVER(1) = 1007681536 +C LOG10(1) = 1091781651 +C ELSE +C WRITE(*,*)'Adjust R1MACH by uncommenting' +C WRITE(*,*)'data statements appropriate for your machine.' +C STOP 777 +C END IF +C END IF +C SC = 987 +C END IF +C +C *** ISSUE STOP 776 IF ALL DATA STATEMENTS ARE OBVIOUSLY WRONG... +C IF (RMACH(4) .GE. 1.0) STOP 776 +C*C/6S +C*C IF (I .LT. 1 .OR. I .GT. 5) +C*C 1 CALL SETERR(24HR1MACH - I OUT OF BOUNDS,24,1,2) +C*C/7S +C* IF (I .LT. 1 .OR. I .GT. 5) +C* 1 CALL SETERR('R1MACH - I OUT OF BOUNDS',24,1,2) +C*C/ +C +C IF (I .LT. 1 .OR. I .GT. 5) THEN +C WRITE(*,*) 'R1MACH(I): I =',I,' is out of bounds.' +C STOP +C END IF + IF (I .LT. 1 .OR. I .GT. 5) THEN + R1MACH = 0.0 + END IF + R1MACH = RMACH(I) + RETURN +C +C* /* C source for R1MACH -- remove the * in column 1 */ +C*#include <stdio.h> +C*#include <float.h> +C*#include <math.h> +C* +C*float r1mach_(long *i) +C*{ +C* switch(*i){ +C* case 1: return FLT_MIN; +C* case 2: return FLT_MAX; +C* case 3: return FLT_EPSILON/FLT_RADIX; +C* case 4: return FLT_EPSILON; +C* case 5: return log10(FLT_RADIX); +C* } +C* +C* fprintf(stderr, "invalid argument: r1mach(%ld)\n", *i); +C* exit(1); +C* return 0; /* for compilers that complain of missing return values */ +C* } + END diff --git a/unix/hlib/setup.csh b/unix/hlib/setup.csh new file mode 100755 index 00000000..6a826c75 --- /dev/null +++ b/unix/hlib/setup.csh @@ -0,0 +1,21 @@ +#!/bin/csh -f + +# Allow a previously defined $iraf to be used. +if ( ! ( $?iraf )) then + setenv iraf /iraf/iraf/ +endif + +# Allow a previously defined $IRAFARCH to be used. +if ( ! ( $?IRAFARCH )) then + setenv IRAFARCH `$iraf/unix/hlib/irafarch.csh -actual` +endif +source $iraf/unix/hlib/irafuser.csh + +set path = ($FAKEHOME/bin $path) +set cdpath = ($iraf $iraf/pkg $iraf/noao $iraf/sys $iraf/unix $iraf/unix/boot) + +# The world'd most obvious alias .... +alias iraf "xgterm -e cl &" + +rehash + diff --git a/unix/hlib/setup.sh b/unix/hlib/setup.sh new file mode 100755 index 00000000..882bf828 --- /dev/null +++ b/unix/hlib/setup.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# Allow a previously defined $iraf to be used. +if [ -z "$iraf" ]; then + export iraf=/iraf/iraf/ +fi + +# Allow a previously defined $IRAFARCH to be used. +if [ -z "$IRAFARCH" ]; then + export IRAFARCH=`$iraf/unix/hlib/irafarch.sh -actual` +fi +source $iraf/unix/hlib/irafuser.sh + +export PATH=$iraf/fakehome/bin:$iraf/bin:${PATH} + +# The world'd most obvious alias .... +alias iraf="xgterm -e cl &" + diff --git a/unix/hlib/spy.cl b/unix/hlib/spy.cl new file mode 100644 index 00000000..31522f4d --- /dev/null +++ b/unix/hlib/spy.cl @@ -0,0 +1,31 @@ +# SPY -- [MACHDEP] Give info on who is logged in, what they are up to, +# how much resources they have consumed, and so on. This routine is +# machine dependent. + +procedure spy() + +begin + string mach + + if ($nargs > 0) { + # "Verbose" mode: show UNIX processor status, filtering + # out all the uninteresting system processes. + + print ("!!uname" | cl() | scan (mach) + if (strlwr (mach) == "ssol") { + !! ps -ef | grep -v root + } else if (strlwr (mach) == "SunOS") { + !! ps -axu | grep -v root + } else if (strlwr (mach) == "linux" || strlwr (mach) == "Darwin") { + !! ps axuf | grep -v root + } else { + !! ps -ef | grep -v root + } + + } else { + # Merely give info on who is logged in and what they are doing. + # The following is for Berkeley UNIX only. + + !! w + } +end diff --git a/unix/hlib/strip b/unix/hlib/strip new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/unix/hlib/strip diff --git a/unix/hlib/strip.iraf b/unix/hlib/strip.iraf new file mode 100644 index 00000000..74e61ada --- /dev/null +++ b/unix/hlib/strip.iraf @@ -0,0 +1,66 @@ +# STRIP.IRAF -- Rmfiles command script, used to strip the IRAF system down to +# its bare essentials (for a production version of the system). The RMFILES +# program which reads this must be run from the IRAF root directory. + + unix/as.linux -all + unix/as.linux64 -all + unix/as.i386 -all + unix/as.mc68020 -all + unix/as.rs6000 -all + unix/as.sparc -all + unix/as.ssol -all + unix/as.vax -all + unix/boot -allbut .hlp .hd + unix/gdev -all + unix/os -all + unix/mc68000 -all + unix/portkit -all + unix/shlib -all + unix/sun -all + + dev -only .dat + doc -allbut .hlp + math -all + pkg -allbut .hlp .hd .men .cl .par .key .dat .mip + pkg/bench -all + sys -all + +-file unix/hlib/libcalcomp.a +-file pkg/dataio/fits/structure.hlp +-file pkg/images/imcalc/Imcalc.hlp +-file pkg/images/tv/iis/ids/doc/Imdis.hlp +-file pkg/images/tv/doc/Tv.hlp +-file pkg/lists/doc/Lcalc.hlp +-file pkg/lists/doc/Lists.hlp +-file pkg/system/doc/Sys.hlp +-file pkg/system/doc/Sys_intro.hlp +-file pkg/system/help/design.hlp +-file tags + +-file bin.alpha/OBJS.arc.Z +-file bin.ddec/OBJS.arc.Z +-file bin.f2c/OBJS.arc.Z +-file bin.f68881/OBJS.arc.Z +-file bin.ffpa/OBJS.arc.Z +-file bin.hp300/OBJS.arc.Z +-file bin.hp700/OBJS.arc.Z +-file bin.hp800/OBJS.arc.Z +-file bin.i386/OBJS.arc.Z +-file bin.irix/OBJS.arc.Z +-file bin.mips/OBJS.arc.Z +-file bin.rs6000/OBJS.arc.Z +-file bin.sf2c/OBJS.arc.Z + +-file bin.sparc/OBJS.arc.Z +-file bin.ssun/OBJS.arc.Z + +-file bin.redhat/OBJS.arc.Z +-file bin.linux/OBJS.arc.Z +-file bin.linux64/OBJS.arc.Z +-file bin.macosx/OBJS.arc.Z +-file bin.macintel/OBJS.arc.Z +-file bin.cygwin/OBJS.arc.Z +-file bin.freebsd/OBJS.arc.Z +-file bin.sunos/OBJS.arc.Z +-file bin.linuxppc/OBJS.arc.Z + diff --git a/unix/hlib/sysinfo b/unix/hlib/sysinfo new file mode 100755 index 00000000..b3c6f8dc --- /dev/null +++ b/unix/hlib/sysinfo @@ -0,0 +1,2503 @@ +#!/bin/csh -f +# +# SYSINFO -- Display IRAF system diagnostic and configuration information. +# +# The intent of this program is to provide a means for IRAF site managers +# to troubleshoot their IRAF installations by running numerous verification +# tests on the iraf directory structure, networking setup, external package +# installations, tape configurations, etc. Failed tests are not always +# fatal but may indicate a problem in the way something was installed or +# configured. +# +# Usage: sysinfo [ -G | -V | -N | -P | -D | -T | -h ] +# +# where: -G Print General Info only" +# -V Do Verification tests only" +# -N Do Networking tests only" +# -P Do Extern Package tests only" +# -D Do Display tests only" +# -T Do Tape Device tests only" +# -h Print this message" +# +# ---------------------------------------------------------------------------- + +unset noclobber +unalias cd cp cmp echo ln mv rm sed set grep ls chmod chown pwd touch sort +unalias uniq head sed tr which +set path = ($path /sbin /usr/sbin /bin /usr/bin /usr/ucb /etc /usr/etc /usr/openwin/bin /usr/X11R6/bin /usr/X11/bin) +onintr sysinfo_cleanup + + +############################################################################## +# START OF MACHDEP DEFINITIONS. +############################################################################## + +# MACHDEP definitions which may be reset below. + +set hmach = "INDEF" +set pciraf = 0 +set suniraf = 0 +set do_tapecaps = 0 +set hilite = 0 + +# Utility aliases. +alias BOLD_ON "(if ($hilite) tput bold)" +alias BOLD_OFF "(if ($hilite) tput sgr0)" +alias SO_ON "(if ($hilite) tput smso)" +alias SO_OFF "(if ($hilite) tput rms0)" + +alias DO_OK "(echo -n '[ '; BOLD_ON; echo -n ' OK '; BOLD_OFF; echo ' ]')" +alias DO_WARN "(echo -n '[ '; BOLD_ON; echo -n 'WARN'; BOLD_OFF; echo ' ]')" +alias DO_FAIL "(echo -n '[ '; SO_ON; echo -n 'FAIL'; SO_OFF; echo ' ]')" + +alias MSG "(echo -n ' ';BOLD_ON;echo -n '*** ';BOLD_OFF; echo \!*)" +alias MSGN "(echo -n ' ';BOLD_ON;echo -n '*** ';BOLD_OFF; echo -n \!*)" +alias MSGB "(echo -n ' ';BOLD_ON;echo -n '*** ';echo \!*; BOLD_OFF)" +alias MSGBN "(echo -n ' ';BOLD_ON;echo -n '*** ';echo -n \!*;BOLD_OFF)" +alias ERRMSG "(echo -n ' ';BOLD_ON;echo -n 'ERROR: ';BOLD_OFF; echo \!*)" +alias WARNING "(echo -n ' ';BOLD_ON;echo -n 'WARNING: ';BOLD_OFF; echo \!*)" +alias NEWLINE "(echo '')" + +alias RM "rm -rf" + + + + +# Determine platform architecture. +set UNAME="" +if (-e /usr/bin/uname) then + set uname_cmd = /usr/bin/uname + set UNAME=`/usr/bin/uname | tr '[A-Z]' '[a-z]'` +else if (-e /bin/uname) then + set uname_cmd = /bin/uname + set UNAME=`/bin/uname | tr '[A-Z]' '[a-z]'` +else + WARNING "No 'uname' command found to determine architecture." + exit 1 +endif + +set pciraf = 0 +set hmach = "INDEF" +switch ($UNAME) + case sunos: + if (`$uname_cmd -m | cut -c2-` != "86pc") then + setenv OSVERSION `uname -r | cut -c1` + if ($OSVERSION == 5) then # Sparc Solaris + set mach = "ssun" + set hmach = "ssol" + set TAPES = "/dev/rmt/[0-9]*" + set shlib = "no" + set LIBFILES = "" + set LS = "/usr/ucb/ls -s" + set LSDF = "-lLtg" + else # Sparc SunOS 4.x + set mach = "sparc" + set hmach = "sparc" + set TAPES = "/dev/*st[0-7]*" + set shlib = "no" + set LIBFILES = "" + set LS = "/bin/ls -s" + set LSDF = "-lLtg" + endif + else + set mach = "sunos" # Intel Solaris + set hmach = "sunos" + set TAPES = "/dev/*st[0-7]*" + set shlib = "no" + set LIBFILES = "" + set LS = "/bin/ls -s" + set LSDF = "-lLt" + set pciraf = 1 + endif + breaksw + case linux: + if (`$uname_cmd -m` == "x86_64") then # Linux64 + set mach = "linux64" + set hmach = "linux64" + set TAPES = "/dev/*st[0-7]" + set shlib = "no" + set LIBFILES = "" + set LS = "/bin/ls -s" + set LSDF = "-lLt" + + else if (`$uname_cmd -m` == "ppc") then # LinuxPPC + set mach = "linuxppc" + set hmach = "linuxppc" + set TAPES = "/dev/*st[0-7]" + set shlib = "no" + set LIBFILES = "" + set LS = "/bin/ls -s" + set LSDF = "-lLt" + else + if (-f /etc/redhat-release) then # RedHat Linux + set mach = "redhat" + set hmach = "redhat" + set TAPES = "/dev/*st[0-7]" + set shlib = "no" + set LIBFILES = "" + set LS = "/bin/ls -s" + set LSDF = "-lLtg" + else # Other Linux + set mach = "linux" + set hmach = "linux" + set TAPES = "/dev/*st[0-7]" + set shlib = "no" + set LIBFILES = "" + set LS = "/bin/ls -s" + set LSDF = "-lLtg" + endif + endif + set pciraf = 1 + breaksw + case darwin: # Mac OS X + case macosx: + case macintel: + if (`$uname_cmd -m` == "x86_64") then # 64-bit + set mach = "macintel" + set hmach = "macintel" + else + set mach = "macosx" # 32-bit + set hmach = "macosx" + endif + set TAPES = "/dev/*sa[0-7]" + set shlib = "no" + set LIBFILES = "" + set LS = "/bin/ls -s" + set LSDF = "-lLtg" + set pciraf = 1 + breaksw + case freebsd: # FreeBSD + set mach = "freebsd" + set hmach = "freebsd" + set TAPES = "/dev/*sa[0-7]" + set shlib = "no" + set LIBFILES = "" + set LS = "/bin/ls -s" + set LSDF = "-lLtg" + set pciraf = 1 + breaksw + case hp-ux: # HP/UX 10.20 + set mach = "hp700" + set hmach = "hp700" + set TAPES = "/dev/rmt/[0-7]*" + set shlib = "no" + set LIBFILES = "" + set LS = "/bin/ls -s" + set LSDF = "-lLt" + breaksw + case irix: # SGI IRIX 6.5 + case irix64: + set mach = "irix" + set hmach = "irix" + set TAPES = "/dev/tps[0-7]*" + set shlib = "no" + set LIBFILES = "" + set LS = "/bin/ls -s" + set LSDF = "-lLt" + breaksw + case aix: # IBM AIX V4 + set mach = "rs6000" + set hmach = "rs6000" + set TAPES = "/dev/rmt[0-7]*" + set shlib = "no" + set LIBFILES = "" + set LS = "/bin/ls -s" + set LSDF = "-lLtg" + breaksw + case osf1: # Alpha Tru64 + set mach = "alpha" + set hmach = "alpha" + set TAPES = "/dev/nrmt[0-7]* /dev/rmt[0-7]*" + set shlib = "yes" + set LIBFILES = "libiraf.so" + set LS = "/bin/ls -s" + set LSDF = "-lLtg" + breaksw + case ultrix: # DEC Ultrix + set mach = "ultrix" + set hmach = "ultrix" + set TAPES = "/dev/[n]rmt[0-7]*" + set shlib = "no" + set LIBFILES = "" + set LS = "/bin/ls -s" + set LSDF = "-lLtg" + breaksw + + default: + # We don't want to be limited by the CYGWIN version numbering so + # look for a truncated match here before punting. + set os_mach = `echo $UNAME | cut -c1-6` + if ("$os_mach" == "cygwin") then + set mach = "cygwin" + set hmach = "cygwin" + set shlib = "no" + set LIBFILES = "" + set TAPES = "" # no tape support + set do_tapecaps = 0 + set do_tapes = 0 + set do_pipes = 0 + breaksw + + else + ERRMSG "Unable to determine platform architecture. Please" + ERRMSG "contact the forums at http://forums.iraf.net" + NEWLINE + exit 1 + else +endsw + +###################### END OF MACHDEP DEFINITIONS. ######################## + + +#============================================================================= +# Initializations. +#============================================================================= +set errstat = 0 # initialize status counters +set ok_count = 0 +set err_count = 0 +set warn_count = 0 +set defstat = " OK " + + +#============================================================================= +# Process any command line arguments. +#============================================================================= + +set early_exit = 0 +set general = 0 +set severe = 0 + +while ("$1" != "") + switch ("$1") + case -G: # Output General Info only + set general = 1 + set early_exit = 1 + goto General + breaksw + case -V: # Verification Test Only + set early_exit = 1 + breaksw + case -N: # Test Networking Only + set early_exit = 1 + goto Networking + breaksw + case -P: # Test Packages Only + set early_exit = 1 + goto External_Packages + breaksw + case -D: # Test Display Only + set early_exit = 1 + goto Image_Display + breaksw + case -T: # Test Tapes Only + set early_exit = 1 + goto Tape_Device + breaksw + + case -hl: # disable highlighting + NEWLINE + echo "WARNING: Highlighting is not permitted by this script, ignoring." + NEWLINE + breaksw + case +hl: # enable highlighting + NEWLINE + echo "WARNING: Highlighting is not permitted by this script, ignoring." + NEWLINE + breaksw + + case -help: + case -h: + goto Usage + default: + ERRMSG "SYSINFO: unknown argument $1" + goto Usage + endsw + + if ("$2" == "") then + break + else + shift + endif +end + + + +#============================================================================= +# General Information +#============================================================================= + +General: + +NEWLINE +BOLD_ON +echo " General Information" +echo " ===================" +BOLD_OFF +NEWLINE + +# Document the system information. +echo "Host name: "`hostname` +echo "Operating System: "`uname -a` +echo "Architecture: "$mach +echo "HSI architecture: "$hmach + +if ($pciraf && -e /etc/issue) then + set issue = `cat /etc/issue` + NEWLINE + echo "PC Issue: " $issue +endif + +NEWLINE + +# Check the iraf root directory stuff +echo -n "IRAF environment path: " +if ($?iraf == 1) then + set env_iraf = $iraf + echo "$iraf" +else + set env_iraf = "" + echo "<undefined>" +endif + +echo -n "Checking for <iraf.h> " +if (-e /usr/include/iraf.h) then + NEWLINE + echo -n " IRAF path: " + set ip = `grep "^#define IRAF" /usr/include/iraf.h | sed -e 's/\"//g'` + if ("$ip" != "") then + echo $ip[3] + set irafh_iraf = $ip[3] + else + echo "not found" + endif + + echo -n " HOST path: " + set ip = `grep "^#define HOST" /usr/include/iraf.h | sed -e 's/\"//g'` + if ("$ip" != "") then + echo $ip[3] + else + echo "not found" + endif + + echo -n " TMP path: " + set ip = `grep "^#define TMP" /usr/include/iraf.h | sed -e 's/\"//g'` + if ("$ip" != "") then + echo $ip[3] + else + echo "not found" + endif +else + echo " not found" + NEWLINE + echo " *** The file /usr/include/iraf.h was not found on this system" + echo " *** which means the install script was not run on this machine." + if ("$env_iraf" != "") then + echo " *** Using environment definition: $env_iraf" + endif + NEWLINE + set irafh_iraf = "" +endif + +if ("$env_iraf" != "" && "$irafh_iraf" != "") then + if ("$env_iraf" != "$irafh_iraf") then + NEWLINE + echo "WARNING: iraf environment and <iraf.h> root directories differ." + + # First make sure we have a valid path. + if ( !(-e $env_iraf/unix/hlib/zzsetenv.def)) then + MSG "Environment definition looks incorrect." + MSG "Using <iraf.h> definition '$irafh_iraf'" + + # Strip off any trailing '/'. + set iraf = `echo $irafh_iraf | sed -e 's+/\(["]*\)$+\1+'` + + else if ( !(-e $irafh_iraf/unix/hlib/zzsetenv.def)) then + MSG "<iraf.h> definition looks incorrect." + MSG "Using environment definition '$env_iraf'" + + # Strip off any trailing '/'. + set iraf = `echo $env_iraf | sed -e 's+/\(["]*\)$+\1+'` + endif + + NEWLINE + + else + if ("$env_iraf" != "") then + set iraf = `echo $env_iraf | sed -e 's+/\(["]*\)$+\1+'` + else + set iraf = `echo $irafh_iraf | sed -e 's+/\(["]*\)$+\1+'` + endif + endif + +else if ("$env_iraf" == "" && "$irafh_iraf" == "") then + NEWLINE + MSG "No 'iraf' defined in the environment and there is no <iraf.h>" + MSG "file on this machine. Please specify an iraf path in the" + MSG "environment or run the install script to proceed." + NEWLINE + exit 1 + +else if ("$env_iraf" == "") then + # Strip off any trailing '/'. + set iraf = `echo $irafh_iraf | sed -e 's+/\(["]*\)$+\1+'` + +else if ("$irafh_iraf" == "") then + # Strip off any trailing '/'. + set iraf = `echo $env_iraf | sed -e 's+/\(["]*\)$+\1+'` +endif + + +NEWLINE +echo "Using iraf root path: $iraf" +NEWLINE + +# Initialize for files we'll be checking later. +set tapecap_file = "$iraf/dev/tapecap" +set termcap_file = "$iraf/dev/termcap" +set graphcap_file = "$iraf/dev/graphcap" + + + +# Get the motd header string. +echo -n 'IRAF version: ' +if (-e $iraf/unix/hlib/motd) then + set motd = "$iraf/unix/hlib/motd" + set ver = `head -1 $motd | sed -e 's/NOAO//g' -e 's/EXPORT//g'` + echo $ver +else + echo "<unknown>" +endif +NEWLINE + + +# Get the last time the hlib$utime (install) was updated. +echo -n "Install script last run: " +if (-e $iraf/unix/hlib/utime) then + set dat = `$LS $LSDF $iraf/unix/hlib/utime | head -2 | tail -1` + set utime = `echo -n $dat | awk '{printf ("%3s %2s %-5s\t", $7, $8, $9)}'` + echo $utime +else + echo "<unknown>" +endif + +# Look around for the local iraf commands directory. +echo -n "IRAF command directories: " +set clpath = `which cl` +set lbins = "" +if ("`echo $clpath | grep 'Command not found'`" == "") then + set d_lbin = $clpath:h + + foreach p ($path) + if (-d $p && -e $p/cl) then + set lbin = $p + set lbins = `echo $lbins $p` + if ("$lbins" == "$lbin") then + echo $p + else + echo " $p" + endif + endif + end + + if ("$lbin" == "") then + echo "not found" + endif +else + echo "not found" +endif + + +# If we use a shared library see if it's in the path someplace. +if ("$shlib" == "yes") then + echo -n "IRAF shared lib directory: " + set llib = "" + set llibs = "" + + # Look around and come up with a likely candidate directory. + set sysp = "/usr/local/lib /local/lib /usr/lib /var/shlib /lib" + if ($?LD_LIBRARY_PATH) then + set userp = `echo $LD_LIBRARY_PATH | sed -e 's/:/ /g'` + else + set userp = "" + endif + foreach p ($sysp $userp) + if (-d $p) then + foreach l ($LIBFILES) + if (-e $p/$l) then + set llib = $p + set llibs = `echo $llibs $p` + + if ("$llibs" == "$llib") then + echo $p + else + echo " $p" + endif + endif + end + endif + end + + if ("$llib" == "") then + echo "not found" + endif +endif + + +# Get the default imdir from the mkiraf.csh +echo -n "Default image storage dir: " +set hlib = $iraf/unix/hlib/ +if (-e $hlib/mkiraf.csh) then + set p = `grep "^set imdir" $hlib/mkiraf.csh | sed -e 's/\"//g'` + if ("$p" != "") then + echo $p[4] + set imdir = $p[4] + else + echo "not found" + endif +else + echo "<unknown>" +endif + + +# Print some interesting default system settings from hlib$zzsetenv.def. +set WS = '[ ]' +set ZZDEFS = "printer stdplot editor imtype stdimage cmbuflen min_lenuserarea graphcap termcap tapecap" + +NEWLINE +echo 'Default settings in the hlib$zzsetenv.def file:' + +if (-e $hlib/zzsetenv.def) then + foreach i ($ZZDEFS) + set p = `grep "^set$WS$i" $hlib/zzsetenv.def | sed -e 's/\"//g'` + if ("$p" != "") then + set $i = '$p[4]' + echo ${i}: $p[4] | awk '{ printf (" %-12s\t %s\n", $1, $2)}' + + # Save the *cap file for later use. + if ("$i" == "termcap" && "$p[4]" != 'dev$termcap') then + set termcap_file = $p[4] + else if ("$i" == "graphcap" && "$p[4]" != 'dev$graphcap') then + set graphcap_file = $p[4] + else if ("$i" == "tapecap" && "$p[4]" != 'dev$tapecap') then + set tapecap_file = $p[4] + endif + else + echo ${i}: | awk '{ printf (" %-12s\tnot found\n", $1, $2)}' + endif + end +else + MSG 'hlib$zzsetenv.def file not found' + set severe = 1 +endif +NEWLINE + + +if ($pciraf) then + NEWLINE + echo "X Server Version information:" + echo " "`X -version |& egrep "^XFree86"` + echo " "`X -version |& egrep "^Release"` + echo " "`X -version |& egrep "Operating"` +endif + + +NEWLINE +echo "Compilers and Development Tools Available:" +echo " (NOTE: duplicates are possible due to the search path" +echo " used and symbolic links for commands.)" +NEWLINE +set found = 0 +foreach d ($path) + foreach i (cc gcc acc c89 f77 g77 f90 fort f2c yacc bison lex flex) + if (-e $d/$i) then + echo " "$d/$i + set found = 1 + endif + end +end +if ($found == 0) then + echo " None Found" + NEWLINE +endif + + +if ($severe == 1) then + NEWLINE + NEWLINE + BOLD_ON + echo "======================================================================" + echo "SYSINFO: Aborting due to severe errors." + echo "======================================================================" + BOLD_OFF + NEWLINE + exit 1 + +else if ($general == 1) then + goto exit_early +endif + + + + + +#============================================================================= +# Installation Verification +#============================================================================= + +Verification: + +echo; NEWLINE +echo "======================= Verifying Installation =======================" +NEWLINE + +############################################################################## +# +# Step 1: VERIFICATION +# +# Run some simple checks to be sure the system was unpacked correctly +# and the settings used are correct. Verification tests include: +# +# o Verify the machine type and document settings. +# o Check iraf root directory looks correct. +# o Check iraf root and imdir aren't the same +# o Check iraf user exists in passwd file. +# o Check iraf user login path in passwd file is iraf$local. +# o Check iraf tree for proper structure. +# o Check iraf tree is owned by 'iraf' +# o Check binary dirs are both populated correctly. +# o Check that the local bin directory exists. +# o Check that the local lib directory exists. +# +# An error at this stage will cause the script to exit so we can reset and +# try again. +# +############################################################################## + + +# ============================================ +# The following is partially system dependent. +# ============================================ + +# Set the BINDIRS pathnames - directories where the HSI executables go. +set host = "$iraf/unix" +set hbin = "$iraf/unix/bin.$hmach" +set hlib = "$iraf/unix/hlib" +set fbin = "$iraf/bin" + +# Replace any // by /. +set host = `echo $host | sed -e "s+//+/+g"` +set hbin = `echo $hbin | sed -e "s+//+/+g"` +set fbin = `echo $fbin | sed -e "s+//+/+g"` +set hlib = `echo $hlib | sed -e "s+//+/+g"` + +# Strip any trailing /. +set host = `echo $host | sed -e 's+/\(["]*\)$+\1+'` +set hbin = `echo $hbin | sed -e 's+/\(["]*\)$+\1+'` +set fbin = `echo $fbin | sed -e 's+/\(["]*\)$+\1+'` +set hlib = `echo $hlib | sed -e 's+/\(["]*\)$+\1+'` +set BINDIRS = "$hbin $hlib $fbin $host" + +# The following file lists are partially system dependent. +set PATHFILES = "mkiraf.csh libc/iraf.h cl.csh ../../local/.login" +set MODEFILES = "cl.csh fc.csh mkiraf.csh mkfloat.csh mkmlist.csh $host/reboot generic.e mkpkg.e rmbin.e rmfiles.e rpp.e rtar.e wtar.e xc.e xpp.e xyacc.e sgidispatch.e $hbin/sgi2*.e" +set LINKFILES = "cl.e mkiraf.csh mkmlist.csh generic.e mkpkg.e rmbin.e rmfiles.e rtar.e sgidispatch.e wtar.e rpp.e xpp.e xyacc.e xc.e" +set CMDLINKS = "cl mkiraf mkmlist generic mkpkg rmbin rmfiles rtar sgidispatch wtar rpp xpp xyacc xc" +# ------------------------------------------ + + +# Check for <iraf.h> file. +echo -n "Checking for <iraf.h> file ... " +if (! (-e /usr/include/iraf.h)) then + DO_FAIL ; set errstat = 1 ; set iraf_root_ok = 0 + NEWLINE + MSG "The file /usr/include/iraf.h was not found which means" + MSG "the install script was not run on this machine." + NEWLINE + set err_count = `expr $err_count + 1` +else + DO_OK ; set iraf_root_ok = 1 + set ok_count = `expr $ok_count + 1` +endif + + +# Check $iraf path in PATHFILES +echo -n "Checking iraf path in system files ... " + +set err_seen = 0 +foreach i ($PATHFILES) + if (-e $iraf/unix/hlib/$i) then + grep $iraf $iraf/unix/hlib/$i >& /dev/null + endif + if ($status == 1 || (! (-e $iraf/unix/hlib/$i))) then + if ("$err_seen" == 0) then + DO_FAIL + set err_seen = 1 ; set err_count = `expr $err_count + 1` + endif + if (! -e $i) then + MSG "File $i not found." + else + MSG "File $i contains the wrong iraf path" + endif + endif +end +if ("$err_seen" == 0) then + BOLD_ON + echo "[ $defstat ]" + BOLD_OFF +endif + + + +# Check that the specified local bin directory exists. +echo -n "Checking that local command bin directory exists ... " +if ("$lbin" == "") then + DO_FAIL ; set errstat = 1 + NEWLINE + MSG "No local bin directory found on this machine which" + MSG "implies that either your path does not include the" + MSG "local bin dir or else the install script was not run" + MSG "on this machine." + NEWLINE + set err_count = `expr $err_count + 1` +else + if (-d "$lbin") then + DO_OK + set ok_count = `expr $ok_count + 1` + else + DO_FAIL ; set errstat = 1 + NEWLINE + MSG "The specified local bin directory does not exist. This" + MSG "directory should be a common local bin directory which " + MSG "is found in all user's paths, e.g. /usr/local/bin." + MSG "Please create the directory or else reset and try again." + NEWLINE + set err_count = `expr $err_count + 1` + endif +endif + + +# Check that the specified local lib directory exists. +if ("$shlib" == "yes") then + echo -n "Checking that local lib directory exists ... " + if (-d "$llib") then + DO_OK + set ok_count = `expr $ok_count + 1` + else + DO_FAIL ; set errstat = 1 + NEWLINE + MSG "The specified local lib directory does not exist. This" + MSG "directory should be a common local lib directory which " + MSG "is found in all user's paths, e.g. /usr/local/lib." + MSG "This directory is required for the iraf shared library." + MSG "Please create the directory or else reset and try again." + NEWLINE + set err_count = `expr $err_count + 1` + endif +endif + + +# Check mode on MODEFILES +echo -n "Checking iraf file permissions ... " +set err_seen = 0 +foreach i ($MODEFILES) + set file = $i + if (! -e $file) then + foreach j ($BINDIRS) + if (-e $j/$i) then + set file = $j/$i + break + endif + end + endif + + if (-e $file) then + if ("`$LS -l $file | grep '.rwxr.xr.x'`" == "") then + if ("$err_seen" == 0) then + DO_WARN + set err_seen = 1 ; set err_count = `expr $err_count + 1` + endif + MSG "File $file:t not mode 0755." + endif + else + if ("$err_seen" == 0) then + DO_FAIL + set err_seen = 1 ; set err_count = `expr $err_count + 1` + endif + MSG "File $file:t not found." + endif +end +if ("$err_seen" == 0) then + BOLD_ON + echo "[ $defstat ]" + BOLD_OFF +endif + + +# Check valid links on CMDLINKS +echo "Checking iraf command links ..." +set err_seen = 0 +foreach p ($lbins) + echo -n " Checking command dir $p ... " + + foreach cmd ($CMDLINKS) + + # Locate the file to be linked to. + set file1 = $cmd:r + foreach j ($BINDIRS) + set file2 = $j/$file1.csh + if (-e $file2) then + break + endif + set file2 = $j/$cmd.e + if (-e $file2) then + break + endif + end + + # See first if it exists directly, or as a link to some other + # valid file. + if (! (-e $p/$cmd) && ! (-e $file2) ) then + if ("$err_seen" == 0) then + DO_FAIL + set err_seen = 1 ; set err_count = `expr $err_count + 1` + endif + echo -n " " ; MSG "File $p/$cmd not found." + + # Then check that the link is correct + else if ("`$LS -l $p/$file1 | grep $file2`" == "") then + if ("$err_seen" == 0) then + DO_FAIL + set err_seen = 1 ; set err_count = `expr $err_count + 1` + endif + echo -n " " ; MSG "Link $p/$cmd is invalid." + endif + end + if ("$err_seen" == 0) then + BOLD_ON + echo "[ $defstat ]" + BOLD_OFF + endif +end +if ($err_seen == 1) then + NEWLINE + MSG "1) A 'not found' error means that one or more of the commands" + MSG " normally installed by the install script was not found." + MSG " This may indicate a non-standard installation." + MSG "2) A 'link is invalid' message means that the command link" + MSG " was found but either points to a nonexistent file or to" + MSG " the wrong file for this platform (e.g. the HSI bin.sparc" + MSG " directory instead of bin.ssol)." + MSG "3) Multiple local bin directories are not strictly an error" + MSG " but may confuse users. Unneeded links should be removed." + MSG "" + MSG "The command links should be checked in either cases and the" + MSG "install script rerun to clear the error." + NEWLINE +endif + + +# Check iraf root directory looks correct. +NEWLINE +echo -n "Checking contents of iraf root directory ... " +if (! ((-d $iraf/dev) && (-d $iraf/pkg) && (-d $iraf/noao))) then + DO_FAIL ; set errstat = 1 ; set iraf_root_ok = 0 + NEWLINE + MSG "The definition of '$iraf' looks incorrect. The iraf root" + MSG "directory is the place where the AS distribution was unpacked," + MSG "it contains subdirectories such as 'dev', 'local', 'noao', and" + MSG "'pkg' and the binary directory links." + NEWLINE + set err_count = `expr $err_count + 1` +else + DO_OK ; set iraf_root_ok = 1 + set ok_count = `expr $ok_count + 1` +endif + + +# Cannot have iraf and imdir the same. +echo -n "Checking iraf root and imdir directory ... " +if ($iraf == $imdir) then + DO_FAIL ; set errstat = 1 + NEWLINE + MSG "'imdir' should not be the same as the iraf root directory." + NEWLINE + set err_count = `expr $err_count + 1` +else + DO_OK + set ok_count = `expr $ok_count + 1` +endif + +# Check iraf user. +echo -n "Checking for iraf user account ... " + +set pass = "" +if ($pciraf && ($mach == "macosx" || $mach == "macintel")) then + # Special-case user info check for OS X and systems where the /etc/passwd + # file may not contain the user info. + + if (`id iraf |& grep -i 'no such user'` != "") then + DO_FAIL ; set errstat = 1 + NEWLINE + MSG "No 'iraf' user was found on the system. The iraf user should" + MSG "be created before installing the system to ensure all files" + MSG "are owned by the iraf user, and the have the proper environment" + MSG "defined for installation and maintanence." + NEWLINE + + else + DO_OK + set ok_count = `expr $ok_count + 1` + + # Check iraf user login path and shell + echo -n "Checking iraf user login directory ... " + + set v = `finger iraf |& egrep "^Directory"` + set ihome = `echo $v[2] | sed -e 's+/\(["]*\)$+\1+'` + set shel = `echo $v[4] | sed -e 's+/\(["]*\)$+\1+' | grep csh` + if ("$ihome" != "$iraf/local" || $shel == "") then + DO_FAIL ; set errstat = 1 + NEWLINE + MSG "The iraf user login info appears to be incorrect. For the" + MSG "given iraf root this path should be '$iraf/local'," + MSG "please run the 'chpass' command to change this. The iraf" + MSG "user account should also be defined to use a C-shell." + if ("$iraf_root_ok" == 0) then + MSG "(This error may be related to the incorrect definition of" + MSG "the iraf root directory seen above.)" + endif + NEWLINE + else + DO_OK + set ok_count = `expr $ok_count + 1` + endif + + endif + +else if (!(-r /etc/passwd)) then + DO_FAIL ; set errstat = 1 + NEWLINE + MSG "The /etc/passwd file is not readable so I can't check for" + MSG "and iraf user. This may also cause problems with IRAF + MSG "networking when connecting to this machine." + NEWLINE +else + set pass = `grep ^iraf: /etc/passwd` + if ("$pass" == "") then + DO_FAIL ; set errstat = 1 + NEWLINE + MSG "No 'iraf' user was found in the /etc/passwd file. The iraf" + MSG "user should be created before installing the system to ensure" + MSG "all files are owned by the iraf user, and the have the proper" + MSG "environment defined for installation and maintanence." + NEWLINE + else + DO_OK + set ok_count = `expr $ok_count + 1` + + # Check iraf user login path in passwd file is iraf$local. + echo -n "Checking iraf user login directory ... " + set pass = `grep ^iraf: /etc/passwd | sed -e 's/[ \*]/_/g'|sed -e 's/:/ /g'` + + set c = `echo $pass | wc -w` + set indx = `expr $c - 1` + + set ihome = `echo $pass[$indx] | sed -e 's+/\(["]*\)$+\1+'` + set shel = `echo $pass[$c] | sed -e 's+/\(["]*\)$+\1+' | grep csh` + if ("$ihome" != "$iraf/local" || $shel == "") then + DO_FAIL ; set errstat = 1 + NEWLINE + MSG "The iraf user login directory appears to be incorrect." + MSG "For the given iraf root this path should be '$iraf/local'," + MSG "please edit the /etc/passwd file to change this. The iraf" + MSG "user account should also be defined to use a C-shell." + if ("$iraf_root_ok" == 0) then + MSG "(This error may be related to the incorrect definition of" + MSG "the iraf root directory seen above.)" + endif + NEWLINE + else + DO_OK + set ok_count = `expr $ok_count + 1` + endif + endif +endif + + +# Check iraf tree for proper structure. +set iraf_r = $iraf # iraf root directory +set iraf_p = $iraf_r:h # iraf parent directory +set iraf_b = $iraf_p/irafbin # irafbin directory +set iraf_ib = $iraf_b/bin.$mach # irafbin IB directory +set iraf_nb = $iraf_b/noao.bin.$mach # irafbin NB directory +set iraf_tree_ok = 1 + +echo "Checking for proper iraf tree structure in $iraf_p ..." + +echo -n " Checking for 'iraf' subdir ... " +if (-d "$iraf_p/iraf") then + DO_OK + set ok_count = `expr $ok_count + 1` +else + DO_FAIL ; set errstat = 1 ; set iraf_tree_ok = 0 + set err_count = `expr $err_count + 1` +endif + +echo -n " Checking for 'irafbin' subdir ... " +if (-d "$iraf_p/irafbin") then + DO_OK ; set ok_count = `expr $ok_count + 1` +else + set zztemp = $iraf_tree_ok + echo " " ; set errstat = 1 ; set iraf_tree_ok = 0 + + # Look for a fallback to recover ... + echo -n " Checking for fallback tree structure ... " + set iraf_p = $iraf/../ + set iraf_b = $iraf_p/irafbin # irafbin directory + set iraf_ib = $iraf_b/bin.$mach # irafbin IB directory + set iraf_nb = $iraf_b/noao.bin.$mach # irafbin NB directory + if (-d "$iraf_p/irafbin") then + DO_OK ; set errstat = 0 ; set iraf_tree_ok = $zztemp + set ok_count = `expr $ok_count + 1` + else + DO_FAIL ; set errstat = 1 ; set iraf_tree_ok = 0 + set err_count = `expr $err_count + 1` + endif +endif + +echo -n " Checking for 'irafbin/bin.$mach' subdir ... " +if (-d "$iraf_p/irafbin/bin.$mach") then + DO_OK + set ok_count = `expr $ok_count + 1` +else + DO_FAIL ; set errstat = 1 ; set iraf_tree_ok = 0 + set err_count = `expr $err_count + 1` +endif + +echo -n " Checking for 'irafbin/noao.bin.$mach' subdir ... " +if (-d "$iraf_p/irafbin/noao.bin.$mach") then + DO_OK + set ok_count = `expr $ok_count + 1` +else + DO_FAIL ; set errstat = 1 ; set iraf_tree_ok = 0 + set err_count = `expr $err_count + 1` +endif + + +if ("$iraf_tree_ok" == 0) then + set back = $cwd ; chdir $iraf_p ; set iraf_p = $cwd; chdir $back + NEWLINE + MSG " An error was detected in the structure of the iraf tree." + MSG " Your directory tree should look something like:" + MSG "" + MSG " $iraf_p" + MSG " / \" + MSG " (AS) /iraf /irafbin" + MSG " / \" + MSG " (IB) bin.$mach noao.bin.$mach (NB)" + MSG "" + MSG " The AS, IB, and NB distribution files are shown where they" + MSG " should be unpacked." + NEWLINE +endif + + +echo -n " Checking file ownerships ... " + +if ($mach == "hp700" || $mach == "rs6000" || $mach == "irix") then + set downr = `$LS -lLd $iraf_p/iraf | awk '{print ($5)}'` + set fownr = `$LS -lLd $iraf_p/iraf/mkpkg | awk '{print ($5)}'` +else + set downr = `$LS -lLd $iraf_p/iraf | awk '{print ($4)}'` + set fownr = `$LS -lLd $iraf_p/iraf/mkpkg | awk '{print ($4)}'` +endif + +if ("$downr" == "iraf" && "$fownr" == "iraf") then + DO_OK + set ok_count = `expr $ok_count + 1` +else if ("$downr" == "tody" && "$fownr" == "tody") then + # Special exemption for NOAO installations. + DO_OK + set ok_count = `expr $ok_count + 1` +else + DO_FAIL + NEWLINE + MSG "(root dir owned by $downr, iraf files owned by $fownr)" + MSG "The iraf tree should be owned by the iraf user so it can" + MSG "be updated and maintained properly." + MSG "" + MSG 'To fix this, login as root, set the iraf environment, and' + MSG 'issue the commands:' + MSG "" + MSG " cd " `echo $iraf_p` + MSG ' chown -R iraf . # change dir owner' + MSG ' cd $hbin # go to HSI bin dir' + MSG ' chown 0 alloc.e # fix alloc.e ownership' + MSG ' chmod 4755 alloc.e # fix permissions' + NEWLINE + set errstat = 1 ; set err_count = `expr $err_count + 1` +endif + + +# Check that binary dirs are populated correctly. +set archs = "" +set back = $cwd ; chdir $iraf_p ; set iraf_p = $cwd; chdir $back + +NEWLINE ; NEWLINE +echo "======================================================================" +NEWLINE +echo "Checking Core system binaries in $iraf_p/irafbin ..." + +# Do a special check that we have a bin directory for the current arch. +echo -n " Checking for current platform arch... " +if (! -e $iraf_ib) then + DO_FAIL ; set errstat = 1 + NEWLINE + MSG "The core system binary directory, $iraf_ib, does" + MSG "not exist for this platform." + NEWLINE + set err_count = `expr $err_count + 1` +else + DO_OK + set ok_count = `expr $ok_count + 1` +endif + +NEWLINE +echo " Size Date" +echo " ---- ----" + +# Check all of the bin directories in case we have a multi-arch system +foreach i ($iraf_p/irafbin/bin.*) + set dir = $i:t + if ($dir:r == "bin") then + set sz = `(chdir $i ; du -s | awk '{printf ("%d", $1)}')` + echo -n $dir $sz | awk '{printf ("%18s\t%5d\t", $1, $2)}' + + if (`$LS -lL $i | wc -l` > 1) then + set dat = `$LS $LSDF $i/* | head -2 | tail -1` + echo -n $dat | awk '{printf ("%3s %2s %-5s\t\t\t", $7, $8, $9)}' + + if (! (-e "$i/cl.e" && -e "$i/x_system.e")) then + DO_FAIL ; set errstat = 1 + NEWLINE + MSG "The core system binary directory, $i:t, does" + MSG "not appear to contain the proper binaries. The IB dist-" + MSG "ribution files should be unpacked in this directory." + NEWLINE + set err_count = `expr $err_count + 1` + else + DO_OK ; set ok_count = `expr $ok_count + 1` + + # Save the list of installed binaries, allow for changes between + # the binary arch and HSI arch here (e.g. ssun->ssol). + if ("$dir:e" == "ssun") then + set archs = `echo $archs ssol` + else + set archs = `echo $archs $dir:e` + endif + endif + + else + echo "< empty > [ FAIL ]" ; set errstat = 1 + NEWLINE + MSG "bin directory is empty or does not contain IRAF binaries." + NEWLINE + endif + endif +end + + +NEWLINE +NEWLINE +echo "Checking NOAO Package binaries in $iraf_p/irafbin ..." + +# Do a special check that we have a bin directory for the current arch. +echo -n " Checking for current platform arch... " +if (! -e $iraf_nb) then + DO_FAIL ; set errstat = 1 + NEWLINE + MSG "The NOAO package binary directory, $iraf_nb, does" + MSG "not exist for this platform." + NEWLINE + set err_count = `expr $err_count + 1` +else + DO_OK + set ok_count = `expr $ok_count + 1` +endif + +NEWLINE +NEWLINE +echo " Size Date" +echo " ---- ----" +foreach i ($iraf_p/irafbin/noao.bin.*) + set dir = $i:t + if ($dir:r == "noao.bin") then + set sz = `(chdir $i ; du -s | awk '{printf ("%d", $1)}')` + echo -n $dir $sz | awk '{printf ("%18s\t%5d\t", $1, $2)}' + + if (`$LS -lL $i | wc -l` > 1) then + set dat = `$LS $LSDF $i/* | head -2 | tail -1` + echo -n $dat | awk '{printf ("%3s %2s %-5s\t\t\t", $7, $8, $9)}' + + if (! (-e "$i/x_apphot.e" && -e "$i/x_rv.e")) then + DO_FAIL ; set errstat = 1 + NEWLINE + if (-e "$iraf_ib/x_apphot.e" && -e "$iraf_ib/x_rv.e") then + NEWLINE + MSG "The NOAO package binary directory, $iraf_nb, is" + MSG "empty but the binaries appear to have been unpacked in" + MSG "the core system directory, $iraf_ib. These will need to" + MSG "be moved, please delete the binaries and start again, be" + MSG "sure to unpack the NB distribution files in the $iraf_nb" + MSG "directory and the core system file in the $iraf_ib" + MSG "directory." + else + NEWLINE + MSG "The NOAO package binary directory, $iraf_nb, does" + MSG "not appear to contain the proper files. The NB dist-" + MSG "ribution files should be unpacked in this directory." + endif + NEWLINE + set err_count = `expr $err_count + 1` + else + DO_OK ; set ok_count = `expr $ok_count + 1` + endif + + else + echo "< empty > [ FAIL ]" ; set errstat = 1 + NEWLINE + MSG "bin directory is empty or does not contain NOAO binaries." + NEWLINE + endif + + else + continue + endif +end + + +# Check the HSI binaries. +NEWLINE +NEWLINE +echo "Checking HSI system binaries in $iraf/unix ..." + +# Do a special check that we have a bin directory for the current arch. +echo -n " Checking for current platform arch... " +if (! -e $iraf/unix/bin.$hmach) then + DO_FAIL ; set errstat = 1 + NEWLINE + MSG "The HSI binary directory, $iraf/unix/bin.$hmach, does" + MSG "not exist for this platform." + NEWLINE + set err_count = `expr $err_count + 1` + +else if (! (-e "$iraf/unix/bin.$hmach/alloc.e")) then + DO_FAIL ; set errstat = 1 + NEWLINE + MSG "The HSI binary directory, $iraf/unix/bin.$hmach, appears" + MSG "to be empty." + NEWLINE + set err_count = `expr $err_count + 1` +else + DO_OK + set ok_count = `expr $ok_count + 1` +endif + +NEWLINE +NEWLINE +echo " Size Date" +echo " ---- ----" + +set delete_bin = "" +set empty_bin = "" +foreach i ($iraf_p/iraf/unix/bin.*) + set dir = $i:t + if ($dir:r == "bin") then + set sz = `(chdir $i ; du -s | awk '{printf ("%d", $1)}')` + echo -n $dir $sz | awk '{printf ("%18s\t%5d\t", $1, $2)}' + + if (`$LS -lL $i | wc -l` > 1) then + set d = `$LS $LSDF $i/* | head -2 | tail -1` + echo -n $dat | awk '{printf ("%3s %2s %-5s\t\t\t", $7, $8, $9)}' + + if (! (-e "$i/alloc.e" && -e "$i/xc.e")) then + DO_FAIL ; set errstat = 1 + else + DO_OK ; set ok_count = `expr $ok_count + 1` + endif + if ("`echo $archs | grep $dir:e`" == "") then + set delete_bin = `echo $delete_bin $dir` + endif + + else + if ($sz < 8 && "`echo $archs | grep $dir:e`" == "") then + BOLD_ON + echo "< unused > [ OK ]" + BOLD_OFF + else + BOLD_ON + echo "< empty > [ WARNING ]" ; set errstat = 1 + BOLD_OFF + set warn_count = `expr $warn_count + 1` + set empty_bin = `echo $empty_bin $dir` + endif + if ($sz > 8 && "`echo $archs | grep $dir:e`" == "") then + set delete_bin = `echo $delete_bin $dir` + endif + endif + + else + continue + endif +end +NEWLINE + +if ("$delete_bin" != "") then + NEWLINE + MSG "The following bin directories were found to be" + MSG "unneeded for this installation. If disk usage is a" + MSG "concern the contents may be deleted to reclaim space:" + MSG "" + foreach i ($delete_bin) + MSG " $iraf/unix/$i" + end +endif +NEWLINE + +if ($early_exit == 1) then + goto exit_early +endif + +#============================================================================= +# Networking Information +#============================================================================= + +Networking: + +set net_errstat = 0 # initialize error status + +NEWLINE +echo "======================= Networking Information =======================" +NEWLINE + +set hname = `hostname` +set lhost_abbr = `hostname | awk '{printf ("%16.16s\n", $1 ) }'` +set ihosts = $iraf/dev/hosts +set nhost_files = `$LS -1 $iraf/dev/hosts* | wc -l` + +echo 'Local host name: '$hname +echo 'Truncated host name: '$lhost_abbr +if (`echo $hname | grep "\."` != "") then + # When using FQDN lnode may not be set.... + set is_fqdn = yes + set domain = `hostname | sed -e 's/^[a-zA-Z0-9_\-]*\.//g'` + set lhost = `hostname | sed -e 's/\.[a-zA-Z0-9]*//g'` +else + set is_fqdn = no + set domain = "<unknown>" + set lhost = $hname +endif +echo 'Domain name: '$domain +echo 'No. of dev$host* files: '$nhost_files +echo 'Using IRAF hosts file: '$ihosts + + +NEWLINE +echo -n 'Checking for iraf hosts file ... ' +if (-e $ihosts) then + DO_OK + set ok_count = `expr $ok_count + 1` + + set nhosts = `grep irafks.e $ihosts | wc -l` + set lnode = `grep irafks.e $ihosts | sort | grep $lhost | head -1` + + # The following madness is required to workaround shortcomings in the + # GNU versions of the sed command (i.e. Linux/FreeBSD). Working sed + # commands for Sun here. + # + # set n = `cat $ihosts | sort | grep $lhost | head -1` + # set irafks = `echo $n | sed -e 's/^[a-zA-Z0-9 _\!\/\-\.:]*//g'` + # set nalias = `echo $n | sed -e 's/:[a-zA-Z0-9 _\!\/\-\.]*//g'` + # set rhs = `echo $n | sed -e 's/^[a-zA-Z0-9 _\!\-\.]*://g'` + # set nnode = `echo $rhs | sed -e 's/\![a-zA-Z0-9 _\!\/\-\.]*//g'` + + set TEMP = "/tmp/_$$" + echo $lnode | sed -e 's/\!/ /g' > $TEMP + set line = `cat $TEMP` + RM $TEMP + + set nalias = "" + set irafks = "" + set nnode = "" + if ("$line" != "") then + while ("$line[1]" != "") + if ("$line[1]" == ":") then + break + else + set nalias = `echo $nalias $line[1]` + endif + shift line + end + shift line + set nnode = $line[1] ; shift line + set irafks = $line[1] ; shift line + endif + + # Print out the entry information found. + echo ' No. nodes in hosts file: '$nhosts + echo ' irafks.e pathname: '$irafks + echo ' Node aliases: '$nalias + echo ' Network node name: '$nnode + NEWLINE + + # Make sure the node is in the file. + echo -n ' Checking for local node in hosts file ... ' + if ("`grep $lhost $ihosts | head -1`" != "") then + DO_OK + set ok_count = `expr $ok_count + 1` + else + DO_FAIL ; set net_errstat = 1 + NEWLINE + MSG "The local host, $lhost, was not found in the iraf hosts" + MSG "file $iraf/dev/hosts. This means that IRAF networking" + MSG "will not be available from this machine to others in the" + MSG "iraf network." + NEWLINE + set err_count = `expr $err_count + 1` + endif + + # See if the irafks.e path is correct on this machine. + if ("$irafks" != "") then + echo -n ' Checking for irafks.e binary ... ' + if (-e $irafks) then + DO_OK + set ok_count = `expr $ok_count + 1` + else + DO_FAIL ; set net_errstat = 1 + NEWLINE + MSG "The named irafks.e binary was not found on this system." + NEWLINE + set err_count = `expr $err_count + 1` + endif + endif + + # Look for duplicate host names which may trigger a CL bug. + echo -n ' Checking for duplicate hosts in dev$hosts file ... ' + set dup_hosts = `grep irafks.e $ihosts | sort | awk '{print $1}' | uniq -d` + if ("$#dup_hosts" == 0) then + DO_OK + set ok_count = `expr $ok_count + 1` + else + DO_WARN ; set net_errstat = 1 + NEWLINE + MSG 'Duplicate hosts found in dev$hosts file:' + grep irafks.e $ihosts | \ + sort | \ + awk '{print $1}' | \ + uniq -d | \ + awk '{printf(" ***\t\t%s\n", $1)}' + MSG "" + MSG "Duplicate node names should be removed to ensure" + MSG "networking and the CL operate properly." + NEWLINE + set warn_count = `expr $warn_count + 1` + endif + +else + DO_FAIL ; set net_errstat = 1 + NEWLINE + MSG "The IRAF hosts file, $ihosts, was not found." + NEWLINE + set err_count = `expr $err_count + 1` +endif + + +# See what NETSTATUS says about this setup. +NEWLINE +echo -n 'Verify NETSTATUS says iraf networking is enabled ... ' +set system = $iraf/bin.$mach/x_system.e +if (-e $system) then + set net = `$system netstatus | grep -i "interface disabled"` + if ("$net" == "") then + DO_OK + set ok_count = `expr $ok_count + 1` + else + DO_FAIL ; set net_errstat = 1 + NEWLINE + MSG "The NETSTATUS task claims that networking is disabled." + NEWLINE + set err_count = `expr $err_count + 1` + endif +else + DO_FAIL ; set net_errstat = 1 + NEWLINE + MSG "The NETSTATUS task binary could not be executed." + NEWLINE + set err_count = `expr $err_count + 1` +endif + + +# See if we're in the trusted hosts file for rsh access. +NEWLINE +echo -n 'Checking for host in /etc/hosts.equiv ... ' +set equiv = /etc/hosts.equiv +if (-e $equiv) then + if ("`grep $lhost $equiv | head -1`" != "") then + DO_OK + set ok_count = `expr $ok_count + 1` + else + DO_WARN ; set net_errstat = 1 + NEWLINE + MSG "The local host, '$lhost', is not present in the $equiv" + MSG "file." + MSG "" + MSG "By default IRAF networking will try to use the 'rsh'" + MSG "protocol for connecting to a remote machine. Without a" + MSG "$equiv entry a networking attempt will fail and" + MSG "a password prompt will be required since an rexec protocol" + MSG "is the fallback. Some systems are not configured for rsh" + MSG "access even with a $equiv file, or rsh is not a valid" + MSG "command, and so some other protocol will be required." + MSG "" + MSG "A KSRSH unix environment variable may be defined to specify" + MSG "a different command or protocol (e.g. remsh or ssh). This" + MSG "is not a fatal error and will not prevent IRAF networking" + MSG "from working, but can be used to avoid to password prompt." + NEWLINE + set warn_count = `expr $warn_count + 1` + endif +else + DO_WARN ; set net_errstat = 1 + NEWLINE + MSG "The trusted hosts file, '$equiv', is not present on this" + MSG "system. This may mean that the 'rsh' connection protocol" + MSG "is not available and IRAF networking will require password" + MSG "prompts." + MSG "" + MSG "By default IRAF networking will try to use the 'rsh'" + MSG "protocol for connecting to a remote machine. Without a" + MSG "$equiv entry a networking attempt will fail and" + MSG "a password prompt will be required since an 'rexec' protocol" + MSG "is the fallback. Some systems are not configured for rsh" + MSG "access even with a $equiv file, or 'rsh' is not a valid" + MSG "command, and so some other protocol will be required." + MSG "" + MSG "A 'KSRSH' unix environment variable may be defined to specify" + MSG "a different command or protocol (e.g. 'remsh' or 'ssh'). This" + MSG "is not a fatal error and will not prevent IRAF networking from" + MSG "operating, but can be used to avoid to password prompt." + NEWLINE + set warn_count = `expr $warn_count + 1` +endif + + +# Print out the recommended dev$hosts entry for this machine. +NEWLINE +echo "----------------------------------------------------------------------" +NEWLINE +echo "Recommended $ihosts file entry for this machine: " +NEWLINE +echo -n " " +if ("$is_fqdn" == "no") then + echo $lhost " : "$hname"\!"$iraf/bin.$mach/irafks.e +else + echo $lhost $lhost_abbr " : " $nnode"\!"$iraf/bin.$mach/irafks.e +endif +NEWLINE + + +if ($early_exit == 1) then + goto exit_early +endif + +#============================================================================= +# Image Display Device Information +#============================================================================= + +Image_Display: + +NEWLINE +echo "===================== Image Display Device Info ======================" +NEWLINE + +set DISPLAY_SERVERS = "ximtool ximtool-alt saoimage ds9 saotng" +set GRAPHICS_TERMS = "xgterm xterm" +set IMTOOLRC = /usr/local/lib/imtoolrc + + +if (! ($?termcap_file)) then + set termcap_file = "$iraf/dev/termcap" +endif +if (! ($?graphcap_file)) then + set graphcap_file = "$iraf/dev/graphcap" +endif + + +echo -n "Display Servers Available: " +set found = 0 +set have_sockets = 0 +set have_saoimage = 0 +set have_ximtool = 0 +foreach i ($DISPLAY_SERVERS) + set p = `which $i |& grep -i "^\/"` + if ($status == 0) then + if ("$found" == 0) then + DO_OK + set ok_count = `expr $ok_count + 1` + endif + set d = `$LS $LSDF $p | head -2 | tail -1` + echo $d | awk '{printf (" ( Date: %3s %2s %-5s )\t", $7, $8, $9) }' + echo " "$p + set found = 1 + if ("$i" == "saoimage") set have_saoimage = 1 + if ("$i" == "ximtool") set have_ximtool = 1 + if ("$i" != "saoimage") set have_sockets = 1 + endif +end + +if ($found == 0) then + DO_FAIL ; set errstat = 1 + echo " None Found" + NEWLINE + MSG "No display servers were found on this machine or in the user" + MSG "path. A display server such as XImtool/SAOimage/SAOtng/DS9" + MSG "is required to be running on the local machine before an iraf" + MSG "display command (e.g. DISPLAY/TVMARK/IMEXAMINE) will work." + MSG "" + MSG "Remote displays (i.e. the server on one machine and IRAF on" + MSG "another) require either iraf networking be enabled or the X" + MSG "'DISPLAY' variable be set so the server appears on the remote" + MSG "machine." + MSG "" + MSG "XImtool can be downloaded from" + MSG "" + MSG " http://iraf.net/ftp/iraf/x11iraf" + MSG "" + MSG "or it's mirror sites. Contact http://iraf.net with questions." + NEWLINE + set err_count = `expr $err_count + 1` +endif +NEWLINE + + +echo -n "Graphics Terminals Available: " +set found = 0 +foreach i ($GRAPHICS_TERMS) + set p = `which $i |& grep "^\/"` + if ($status == 0) then + if ("$found" == 0) then + DO_OK + set ok_count = `expr $ok_count + 1` + endif + set d = `$LS $LSDF $p | head -2 | tail -1` + echo $d | awk '{printf (" ( Date: %3s %2s %-5s )\t", $7, $8, $9) }' + echo " "`which $i` + set found = 1 + endif +end +if ($found == 0) then + DO_FAIL ; set errstat = 1 + echo " None Found" + NEWLINE + MSG "No 'xterm' or 'xgterm' binary was found on this systen or" + MSG "in the user path. IRAF graphics require some form of " + MSG "graphics-enabled terminal window to be running or else" + MSG "garbarge characters will appear on the screen. Windows" + MSG "such as 'cmdtool', 'rxvt', 'aixterm', 'hpterm', 'decterm'" + MSG "do not support graphics and should not be used for IRAF." + MSG "" + MSG "The default terminal type is set in the login.cl when" + MSG "a user runs MKIRAF, this is the type of window they should" + MSG "be running when starting IRAF. Users can use the 'show" + MSG "terminal' command to see the current setting, or 'stty" + MSG "xterm' or 'stty xgterm' command (or rerun MKIRAF and reset" + MSG "the default terminal type) to change the default iraf terminal." + MSG "" + MSG "XGterm can be downloaded from" + MSG "" + MSG " http://iraf.net/ftp/iraf/x11iraf" + MSG "" + MSG "or it's mirror sites. Contact site support with questions." + set err_count = `expr $err_count + 1` +endif +NEWLINE + + +# Check for imtoolrc file and /usr/local/lib dir. +set errstat = 0 +NEWLINE +echo -n "Checking for /usr/local/lib directory ... " +if (-d /usr/local/lib) then + DO_OK + set ok_count = `expr $ok_count + 1` + + # Check for imtoolrc file... + echo -n "Checking for imtoolrc file ... " + if (-e $IMTOOLRC) then + DO_OK + set ok_count = `expr $ok_count + 1` + + set islink = `$LS -l $IMTOOLRC | grep "^l"` + set file = $iraf/dev/imtoolrc + if ("$islink" != "" && -e $file) then + + # Check for valid link + echo -n "Checking for valid imtoolrc link ... " + set tmp = `diff $IMTOOLRC $file | wc -l` + if ("$tmp" == 0) then + DO_OK + set ok_count = `expr $ok_count + 1` + else + DO_FAIL ; set errstat = 1 + NEWLINE + MSG "The /usr/local/lib/imtoolrc link is invalid" + NEWLINE + set err_count = `expr $err_count + 1` + endif + endif + + else + DO_FAIL ; set errstat = 1 + NEWLINE + MSG "The /usr/local/lib/imtoolrc file is missing." + MSG "This normally gets created by the iraf install script" + MSG "but only if /usr/local/lib already exists. Without" + MSG "this file you won't be able to use ximtool with a buffer" + MSG "larger than 512x512, to fix this just create the" + MSG "/usr/local/lib dir and rerun the install script or" + MSG "make the link by hand as the root user." + NEWLINE + set err_count = `expr $err_count + 1` + endif + + + # Check for imtoolcmap directory... + if ($have_ximtool == 1) then + echo -n "Checking for imtoolcmap directory ... " + if (-d /usr/local/lib/imtoolcmap) then + DO_OK + set ok_count = `expr $ok_count + 1` + + else + DO_WARN + NEWLINE + MSG "The /usr/local/lib/imtoolcmap directory is missing." + MSG "This directory is not required but provides extra" + MSG "colormap options for XImtool. The colormaps may be" + MSG "be obtained from " + MSG "" + MSG " http://iraf.net/ftp/iraf/x11iraf/imtoolcmap.tar" + MSG "" + MSG "This should be unpacked as the /usr/local/lib/imtoolcmap" + MSG "directory. This is not a fatal error." + NEWLINE + set warn_count = `expr $warn_count + 1` + endif + endif + + +else + DO_FAIL ; set errstat = 1 + NEWLINE + MSG "The /usr/local/lib directory does not exist." + NEWLINE + set err_count = `expr $err_count + 1` +endif +if ($errstat == 1) then + MSG "The imtoolrc file is used by the display servers (XImtool," + MSG "SAOimage, etc) to set various frame buffer sizes. Without" + MSG "this file the server can only use a 512x512 frame buffer," + MSG "and displays to larger buffers will result in the message" + MSG "'attempt to write out of bounds on framebuf'. Sites can" + MSG "rerun the install script or make the link by hand, users" + MSG 'can copy the dev$imtoolrc file to their $HOME directory as' + MSG "'.imtoolrc' as a workaround." +endif + +if ($have_saoimage == 1) then + echo -n "Checking file descriptor limits: " + set ds = `limit descriptors | awk '{print ($2)}'` + if ("$ds" != "64") then + DO_WARN + NEWLINE + MSG "SAOimage has a hardwired restriction of 64 file descriptors," + MSG "however this user shell allows more. When there are many" + MSG "windws open SAOimage may fail, this warning applies only" + MSG "to users of SAOimage. A 'limit descriptors 64' command" + MSG "can be used to reset the limit." + NEWLINE + set warn_count = `expr $warn_count + 1` + else + DO_OK + endif +endif + + +# See whether we have fifo pipes installed. +set errstat = 0 +if ( !($pciraf && ($mach == "macosx" || $mach == "macintel")) ) then + foreach p (/dev/imt1i /dev/imt1o) + echo -n "Checking for $p fifo pipe ... " + if (-e $p) then + if ("`$LS -l $p | grep '.rw.rw.rw.'`" == "") then + if ($have_sockets == 1) then + DO_WARN ; set errstat = 1 + set warn_count = `expr $warn_count + 1` + else + DO_FAIL ; set errstat = 1 + set err_count = `expr $err_count + 1` + endif + MSG "File $p not mode 666." + else + DO_OK + set ok_count = `expr $ok_count + 1` + endif + else + if ($have_sockets == 1) then + DO_WARN ; set errstat = 1 + set warn_count = `expr $warn_count + 1` + else + DO_FAIL ; set errstat = 1 + set err_count = `expr $err_count + 1` + endif + MSG "The $p fifo pipe is missing." + endif + end + + echo -n "Checking for /dev/imt1 fifo pipe link ... " + if (-e /dev/imt1) then + if ("`$LS -l /dev/imt1 | grep imt1o`" != "") then + DO_OK + set ok_count = `expr $ok_count + 1` + else + if ($have_sockets == 1) then + DO_WARN ; set errstat = 1 + set warn_count = `expr $warn_count + 1` + else + DO_FAIL ; set errstat = 1 + set err_count = `expr $err_count + 1` + endif + MSG "The /dev/imt1 fifo pipe link is invalid." + endif + else + if ($have_sockets == 1) then + DO_WARN ; set errstat = 1 + set warn_count = `expr $warn_count + 1` + else + DO_FAIL ; set errstat = 1 + set err_count = `expr $err_count + 1` + endif + MSG "The /dev/imt1 fifo pipe link is missing (but is not" + MSG "strictly required for proper display). If it exists it" + MSG "should be a symlink pointing to /dev/imt1o." + endif + if ($errstat == 1 && $have_sockets == 0) then + NEWLINE + MSG "The /dev fifo pipes are used only by SAOimage as a default" + MSG "communication with IRAF or as a fallback for other display" + MSG "servers such as XImtool. Except for SAOimage or in the case" + MSG "of some other mechanism such as a private graphcap file or" + MSG "IMTDEV environment variable, missing /dev pipes should not be" + MSG "fatal for image display. A 'Cannot open device' message may" + MSG "simply mean there is no display server running, or the 'node'" + MSG "CL environment variable has been set to an invalid node or" + MSG "iraf networking is not enabled on the host. The pipes are" + MSG "created by the install script (which can be run on this host)" + MSG "or they can be created by hand as root with the 'mknod' or" + MSG "'mkfifo' command." + NEWLINE + endif +endif + + +# Make sure there are entries in the the termcap and graphcap files for xgterm +# and imtool. + +echo -n "Checking termcap file for an XGterm entry ... " +set temp = `grep -l xgterm $termcap_file | grep -v "^#"` +if ("$temp" == "") then + DO_FAIL ; set errstat = 1 + set err_count = `expr $err_count + 1` +else + DO_OK + set ok_count = `expr $ok_count + 1` +endif + +echo -n "Checking graphcap file for XGterm/imtool entries ... " +set gcok = yes +foreach i (xgterm imtool) + set temp = `grep -l $i $graphcap_file | grep -v "^#"` + if ("$temp" == "" && "$gcok" == "yes") then + DO_FAIL ; set errstat = 1 + set err_count = `expr $err_count + 1` + set gcok = no + endif +end +if ($gcok == yes) then + DO_OK + set ok_count = `expr $ok_count + 1` +endif + +if ($early_exit == 1) then + goto exit_early +endif + +#============================================================================= +# Tape Device Information +#============================================================================= + +Tape_Device: + +NEWLINE +echo "====================== Tape Device Information =======================" +NEWLINE + +set errstat = 0 + +if (! ($?tapecap_file)) then + set tapecap_file = "$iraf/dev/tapecap" +endif + +# Check the alloc.e binary. +NEWLINE +set file = "$iraf/unix/bin.$hmach/alloc.e" +echo -n 'Checking for hbin$alloc.e binary ... ' +if (-e $file) then + DO_OK + set ok_count = `expr $ok_count + 1` + + echo -n 'Checking hbin$alloc.e ownership ... ' + if (-e $file) then + if ("`$LS -l $file | grep 'root'`" == "") then + DO_FAIL + set errstat = 1 ; set err_count = `expr $err_count + 1` + echo " *** File $file:t not owned by root." + else + DO_OK + set ok_count = `expr $ok_count + 1` + endif + endif + + echo -n 'Checking hbin$alloc.e binary permissions ... ' + if (-e $file) then + if ("`$LS -l $file | grep '.rwsr.xr.x'`" == "") then + DO_FAIL + set errstat = 1 ; set err_count = `expr $err_count + 1` + echo " *** File $file:t not mode 4755." + else + DO_OK + set ok_count = `expr $ok_count + 1` + endif + endif + + if ($errstat == 1) then + NEWLINE + MSG "The alloc.e binary is used to allocate tape devices" + MSG "for exclusive access by the user. It does this by" + MSG "changing the ownership and permissions on the /dev" + MSG "files associated with each device. For this reason" + MSG "it must be owned by root with setuid permissions so" + MSG "it can execute properly. Tape devices are not required" + MSG "to be allocated before they are used but executing the" + MSG "ALLOC command w/in iraf will result in an error." + MSG "This error can be cleared by running the IRAF install" + MSG "script as root, or issuing the commands:" + MSG "" + MSG " # cd $hbin" + MSG " # chown 0 alloc.e ; chmod 4755 alloc.e" + NEWLINE + endif + +else + DO_FAIL ; set errstat = 1 + set err_count = `expr $err_count + 1` + MSG "File $file not found." +endif + + +# Check for a tapecap file. +set errstat = 0 +NEWLINE +echo -n 'Checking for tapecap file ... ' +if (-e $iraf/dev/tapecap.`hostname`) then + DO_OK + set ok_count = `expr $ok_count + 1` + echo " Using file: $iraf/dev/tapecap.`hostname`" +else + if (-e $tapecap_file) then + DO_OK + set ok_count = `expr $ok_count + 1` + echo " Using tapecap file: $tapecap_file" + else + DO_FAIL ; set errstat = 1 + set err_count = `expr $err_count + 1` + endif +endif +if ($errstat == 1) then + NEWLINE + MSG 'No tapecap file found on this system.' + NEWLINE + MSG 'IRAF will first attempt to find a file in the iraf$dev' + MSG 'directory called "tapecap.\<node\>", if that fails it will' + MSG 'fallback to use the dev$tapecap file (or whichever file is' + MSG 'named by the 'tapecap' variable in the hlib$zzsetenv.def file).' + MSG '' + MSG 'Not all IRAF distributions come with a default tapecap file' + MSG 'appropriate for the given machine. For example, the default' + MSG 'dev$tapecap for Sun/IRAF is for SunOS and will not generally' + MSG 'work for Solaris. The PC-IRAF distribution comes with generic' + MSG 'tapecap.linux, tapecap.freebsd, etc files which must be renamed' + MSG '"tapecap" to be used. Generic device entries are provided with' + MSG 'each tapecap file (e.g. mtp for a DAT on unit 0) but in most' + MSG 'cases the tapecap file must be installed and/or configured' + MSG 'before devices will be accessible.' + MSG '' + MSG 'Further information on configuring tapecaps can be found in' + MSG 'the last IRAF Newsletter at:' + MSG '' + MSG ' http://iraf.noao.edu/irafnews/apr98/irafnews.1f.html' + MSG '' + MSG 'or by contacting http://iraf.net' + NEWLINE +endif + + + +NEWLINE +echo "Tape Device Template: $TAPES" + +set nloks = `$LS -lL /tmp/*.lok |& grep -v -i "no match" | wc -l` +if ($nloks == 0) then + set nloks = "<none>" +endif +echo "Lok Files on this machine: $nloks" +if ("$nloks" != '<none>') then + $LS -lL /tmp/*.lok +endif + +NEWLINE + +set ntapes = `$LS -lL $TAPES |& grep -v -i "no match" | wc -l` +if ($ntapes == 0) then + set ntapes = "<none>" +endif +echo "Tape Devices Available: $ntapes" +NEWLINE + +if ("$ntapes" != '<none>') then + +NEWLINE +echo " ******************************************************************" +echo " ** More tape devices files may be defined than there are actual **" +echo " ** devices on the machine. For those file which correspond to **" +echo " ** a physical device the file should have mode 666 and be owned **" +echo " ** by root. **" +echo " ******************************************************************" +NEWLINE + + ls -lL $TAPES +endif + +if ($early_exit == 1) then + goto exit_early +endif + + +#============================================================================= +# External Package Information +#============================================================================= + +External_Packages: + +NEWLINE +echo "=================== External Package Information =====================" +NEWLINE + +# Check the iraf root directory stuff +if ($?iraf == 1) then + set hlib = $iraf/unix/hlib +else + if (-e /usr/include/iraf.h) then + set ip = `grep "^#define IRAF" /usr/include/iraf.h |sed -e 's/\"//g'` + if ("$ip" != "") then + set iraf = $ip[3] + endif + set hlib = $iraf/unix/hlib + + else + MSG "No 'iraf' defined in your environment and no <iraf.h>" + MSG "file found on this system." + MSG "" + MSG "Aborting..." + endif +endif + +# Strip off any trailing '/'. +set iraf = `echo $iraf | sed -e 's+/\(["]*\)$+\1+'` + +set epkg = $hlib/extern.pkg + + +# Get the helpdb string. +set helpdb = `cat $epkg | grep -v "^#" | grep helpdb` + + +# Get the list of tasks defined in the extern.pkg file. +set t = `cat $epkg | grep -v "^#" | grep task | sed -e 's/task//g' -e 's/=//g' -e 's/\.pkg//g' -e 's/\$//g'` + +set tasks = "" +while ("$t[1]" != "") + set tasks = `echo $tasks $t[1]` + shift t ; shift t + if ("$#t" == "0") then + break + endif +end + +# Get the variables and paths declared, includes data directories. + +cat $epkg | grep -v "^#" | grep -v helpdb | grep ^set > /tmp/_ext$$ +cat $epkg | grep -v "^#" | grep -v helpdb | grep ^reset >> /tmp/_ext$$ + +set l = `cat /tmp/_ext$$ | sed -e 's/reset//g' -e 's/set//g' -e 's/=//g'` + +set pkg = "" +set ppath = "" +while ("$l[1]" != "") + set pkg = `echo $pkg $l[1]` + set ppath = `echo $ppath $l[2]` + shift l; shift l + + if ("$#l" == "0") then + break + endif +end +RM /tmp/_ext$$ + + +NEWLINE +echo " 1) The 'Path' check verifies that the extern.pkg path exists and is" +echo " not located in the iraf root directory (NOAO excepted)." +echo " 2) The 'Helpdb' check verifies that the package is declared in the" +echo " helpdb string. A warning here indicates the helpdb.mip file is" +echo " out of date w.r.t the package .hd files. Help database files may" +echo " be updated using the SOFTOOLS.MKHELPDB task." +echo " 3) The 'Binaries' check prints the most recent file date for the" +echo " installed binaries. A failed test indicates no binaries for" +echo " the current architecture." +echo " 4) The date given is the date of the most recent file in the named" +echo " bin directory. Dates before 12/99 indicate binaries which should" +echo " be recompiled for Y2K compliance (assuming IRAF V2.11.3 or later" +echo " is available on the machine)." +NEWLINE +NEWLINE +echo "Number of declared packages: " $#tasks +echo "Number of logical directories: " $#ppath +NEWLINE +echo "Checking packages ..." +NEWLINE +echo " Package Path Helpdb Binaries Date" +echo " ------- ---- ------ -------- ----" +#NEWLINE + + +set CL = $iraf/bin.$mach/cl.e +if (! -e $CL) then + echo "ERROR: CL executable not found, skipping package checks..." + set err_count = `expr $err_count + 1` + goto exit_early +endif + + +set lp = "" +set lpath = "" +set delpak = () +set delpak_p = () +foreach p ($pkg) + set decl = `cat $epkg | grep task | grep $p` + set pat = $ppath[1] + if ("$decl" != "") then + + # See if this is an iraf logical path and resolve it. + echo $pat | egrep '\$' >& /dev/null + if ($status == 0) then + set cmd = `echo $pat | awk '{printf("=osfn(\"%s\");logout\n", $1)}'` + echo "#\!$CL -f" > /tmp/_cmd$$ + echo $cmd >> /tmp/_cmd$$ + chmod 755 /tmp/_cmd$$ + + set pat = `/tmp/_cmd$$` + rm -rf /tmp/_cmd$$ + endif + + # Check that the path exists. + if (-d $pat) then + echo $p | awk '{printf ("%12.12s", $1 ) }' + if ("$p" == "noao") then + BOLD_ON + echo -n " [ OK ]" + BOLD_OFF + set ok_count = `expr $ok_count + 1` + else + if (`echo $pat | grep $iraf` == "") then + BOLD_ON + echo -n " [ OK ]" + BOLD_OFF + set ok_count = `expr $ok_count + 1` + else if (`echo $pat | grep $iraf | grep "/\.\."` != "") then + BOLD_ON + echo -n " [ OK ]" + BOLD_OFF + set ok_count = `expr $ok_count + 1` + else + BOLD_ON + echo " [FAIL] " ; set errstat = 1 + BOLD_OFF + echo " *** invalid path: $p = $pat" + echo " *** package should not be in iraf root dir" + set err_count = `expr $err_count + 1` + set delpak = ($delpak $p) + set delpak_p = ($delpak_p $pat) + goto pkg_err + endif + endif + else + set delpak = ($delpak $p) + set delpak_p = ($delpak_p $pat) + set err_count = `expr $err_count + 1` + goto pkg_err + endif + + + # See if the package was declared with help. + echo $helpdb | grep $p >& /dev/null + if ($status == 0) then + + # The package has help but we'll assume the standard help + # database name and look to see if the helpdb itself is current. + # The helpdb.mip file should be newer than any <foo>.hd files in + # the package tree. + if (-e $pat/lib/helpdb.mip) then + set pkgp = `echo $pat | sed -e 's+/\(["]*\)$+\1+'` + set hdbfile = "$pkgp/lib/helpdb.mip" + set hdfiles = `find $pkgp -name \*.hd -a -newer $hdbfile -print` + if ("$hdfiles" != "") then + echo -n " [WARN] " + set warn_count = `expr $warn_count + 1` + else + echo -n " [ OK ] " + set ok_count = `expr $ok_count + 1` + endif + else + echo -n " [ OK ] " + set ok_count = `expr $ok_count + 1` + endif + + else + echo -n " [FAIL] " ; set errstat = 1 + set err_count = `expr $err_count + 1` + endif + + # See if binaries exist for this platform. + set dir = $pat/bin.$mach + if (-d $dir) then + if (`$LS -lL $dir | wc -l` > 1) then + set d = `$LS $LSDF $pat/bin.$mach/* | head -2 | tail -1` + set dat = `echo $d |awk '{printf("%s %s %s",$7,$8,$9)}'` + + #echo -n "[ OK ]" + if ("`echo $dat | grep 199 | grep Dec`" == "") then + if ("`echo $dat | grep 200`" == "" && "`echo $dat | grep ':'`" == "") then + echo -n "[WARN]" + set warn_count = `expr $warn_count + 1` + else + echo -n "[ OK ]" + set ok_count = `expr $ok_count + 1` + endif + else + echo -n "[ OK ]" + set ok_count = `expr $ok_count + 1` + endif + + echo $d | awk '{printf ("\t%3s %2s %-5s", $7, $8, $9) }' + echo " "bin.$mach + else + echo -n "[FAIL] " ; set errstat = 1 + set err_count = `expr $err_count + 1` + echo "<not found> "bin.$mach + #goto pkg_err + endif + else + echo -n "[FAIL] " ; set errstat = 1 + echo "<not found> "bin.$mach + set err_count = `expr $err_count + 1` + endif + + # Check for other architectures installed + if (-e $pat/bin) then + if (-e $pat/bin.$mach) then + foreach dir ($pat/bin.*) + set b = $dir:t + if ("$b" != "bin.generic" && "$b" != "bin.$mach") then + if (`$LS -l $dir | wc -l` > 1) then + set d = `$LS $LSDF $pat/$b/* | head -2 | tail -1` + set dat = `echo $d |awk '{printf("%s %s %s",$7,$8,$9)}'` + echo -n " " + if ("`echo $dat | grep 199 | grep Dec`" == "") then + if ("`echo $dat | grep 200`" == "" && "`echo $dat | grep ':'`" == "") then + echo -n " [WARN] " + set warn_count = `expr $warn_count + 1` + else + echo -n " [ OK ] " + set ok_count = `expr $ok_count + 1` + endif + else + echo -n " [ OK ] " + set ok_count = `expr $ok_count + 1` + endif + echo $d |awk '{printf ("%3s %2s %-5s", $7, $8, $9)}' + echo " "$b + endif + endif + end + endif + endif + #NEWLINE + + else + set lp = `echo $lp $p` + set lpath = `echo $lpath $pat` + endif + +pkg_err: + shift ppath +end + +# Report unnecessary packages or logical dirs. +set npack = $#delpak +if ($npack != 0) then + NEWLINE + NEWLINE + MSG "The folowing packages were declared but do not exist on the" + MSG 'current platform and can be removed from the hlib$extern.pkg' + MSG "file:" + MSG "" + + set i = 1 + while ($i <= $npack) + echo $delpak[$i] $delpak_p[$i] | \ + awk '{printf (" ***\t%16s = %s\n", $1, $2)}' + set i = `expr $i + 1` + end + MSG "" +endif + + +# Now check logical directories defined in the file. +set dellog = () +set dellog_p = () +if ("$lp" != "") then + NEWLINE + NEWLINE + echo "Checking logical directories ..." + NEWLINE + echo " Logical Directory Path" + echo " ----------------- ----" + + foreach p ($lp) + set pat = $lpath[1] + echo $p | awk '{printf ("%20.20s", $1 ) }' + + # See if this is an iraf logical path and resolve it. + echo $pat | egrep '\$' >& /dev/null + if ($status == 0) then + set cmd = `echo $pat | awk '{printf("=osfn(\"%s\");logout\n", $1)}'` + echo "#\!$CL -f" > /tmp/_cmd$$ + echo $cmd >> /tmp/_cmd$$ + chmod 755 /tmp/_cmd$$ + + set pat = `/tmp/_cmd$$` + rm -rf /tmp/_cmd$$ + endif + + if (-d $pat) then + echo " [ OK ]" + set ok_count = `expr $ok_count + 1` + else + echo -n " [ FAIL ]" ; set errstat = 1 + echo " *** invalid path" + set dellog = ($dellog $p) + set dellog_p = ($dellog_p $pat) + set err_count = `expr $err_count + 1` + endif + + shift lpath + end +endif + + +set nlog = $#dellog +if ($nlog != 0) then + NEWLINE + NEWLINE + MSG "The folowing logical directories were found to be invalid for" + MSG 'current platform and can be removed from the hlib$extern.pkg' + MSG "file:" + MSG "" + + set i = 1 + while ($i <= $nlog) + echo $dellog[$i] $dellog_p[$i] | \ + awk '{printf (" ***\t%16s = %s\n", $1, $2)}' + set i = `expr $i + 1` + end + MSG "" +endif + + +exit_early: + + NEWLINE + NEWLINE + echo "======================================================================" + NEWLINE + echo "SYSINFO completed with: Tests Passed: $ok_count" + echo " Warnings: $warn_count" + echo " Errors: $err_count" + if ($err_count > 0) then + NEWLINE + echo " Not all errors listed here will be fatal but may indicate a" + echo " problem with some aspect of the system, or will reveal the" + echo " likely cause of a problem currently being seen." + NEWLINE + echo " Users should contact http://iraf.net if help is needed with" + echo " correcting any problems, or with suggestions/comments for" + echo " future versions of this diagnostic script." + endif + NEWLINE + echo "======================================================================" + NEWLINE + +sysinfo_cleanup: + RM /tmp/_cmd$$ + RM /tmp/_ext$$ + +exit 0 + + +# Print usage information. We will not get here unless the "-help" flag +# was issued. + +Usage: + + NEWLINE + echo "Usage: sysinfo [ -G | -V | -N | -P | -D | -T | -help ]" + NEWLINE + echo " where: -G Print General Info only" + echo " -V Do Verification tests only" + echo " -N Do Networking tests only" + echo " -P Do Extern Package tests only" + echo " -D Do Display tests only" + echo " -T Do Tape Device tests only" + echo " -h Print this message" + NEWLINE + diff --git a/unix/hlib/uninstall b/unix/hlib/uninstall new file mode 100755 index 00000000..0eaaa694 --- /dev/null +++ b/unix/hlib/uninstall @@ -0,0 +1,365 @@ +#!/bin/csh +# +# ---------------------------------------------------------------------------- +# +# UNINSTALL -- Remove IRAF on a UNIX/IRAF host. +# +# Usage: uninstall [-n] [-h] [-hl] [-c] [-v] [-b <directory>] +# +# where -n # no execute +# -h # print this help summary +# -hl # disable text highlighting +# -c # remove command links only +# -v # print verbage output +# -b # specify local bin directory to search +# +# Use "uninstall -n" to do a dry run to see what the would be done, without +# actually modifying the host system. To do the actual un-install one must +# be superuser, but anyone can run "uninstall -n" to see what it would do. +# +# ---------------------------------------------------------------------------- + +unset noclobber +unalias rm set grep ls pwd +onintr uninstall_cleanup_ + +set exec = yes +set lbin = "" +set cmd_only = no +set verbage = no +set hilite = 1 + +set FILES = "/usr/include/iraf.h /usr/local/lib/imtoolrc" +set DEVS = "/dev/imt1i /dev/imt1o /dev/imt1" +set CMDS = "cl mkiraf mkmlist generic mkpkg rmbin rmfiles rtar sgidispatch wtar rpp xpp xyacc xc" + +alias RM "/bin/rm -f" + +# Utility aliases. +alias BOLD_ON "(if ($hilite) tput bold)" +alias BOLD_OFF "(if ($hilite) tput sgr0)" + +alias ERRMSG "(echo -n ' ';BOLD_ON;echo -n 'ERROR: ';BOLD_OFF; echo \!*)" +alias WARNING "(echo -n ' ';BOLD_ON;echo -n 'WARNING: ';BOLD_OFF; echo \!*)" +alias NEWLINE "(echo '')" + + +#============================================================================= +# Process any command line arguments. +#============================================================================= +while ("$1" != "") + switch ("$1") + case -n: # no execute + set exec = no + alias RM "echo -n \!* >& /dev/null" + breaksw + case -hl: # disable highlighting + set hilite = 0 + case +hl: # enable highlighting + set hilite = 1 + breaksw + case -h: # print usage + goto Usage + case -c: # command file links only + set cmd_only = yes + breaksw + case -q: # quiet output + set verbage = no + breaksw + case -v: # verbage output + set verbage = yes + breaksw + case -b: # set local bin directory (unix) + if ("$2" != "") then + shift + else + echo "missing argument to '-b <localbindir>' switch" + exit 1 + endif + set lbin = "$1" + + if (! -e $lbin) then + echo "ERROR: Local bin dir '$lbin' not found." + exit 1 + endif + breaksw + default: + echo "ERROR: unrecognized command-line argument '$1'" + goto Usage + endsw + + if ("$2" == "") then + break + else + shift + endif +end + +# Initialize. +clear +NEWLINE +BOLD_ON +echo " IRAF System Un-installation" +echo " ---------------------------" +BOLD_OFF +NEWLINE + + +# See whether we're gonna work.... +if ($exec == yes && `whoami` != "root") then + + BOLD_ON + echo "**********************************************************************" + echo -n "WARNING" + BOLD_OFF + echo ": This script must be run as root for changes to take effect." + echo " If you decide to proceed, the 'no-op' flag will be enabled" + echo " by default. No changes will be made to the system files," + echo " however you will be able to see what the script does." + BOLD_ON + echo "**********************************************************************" + BOLD_OFF + echo "" + echo -n "Proceed with a no-op uninstallation anyway (y)? " ; setenv ans "$<" + if ("$ans" == "n" || "$ans" == "no") then + echo "Quitting." + exit 0 + endif + NEWLINE; NEWLINE + + set exec = no + alias RM "echo -n \!* >& /dev/null" +endif + + +set iraf_paths = "" +set n_iraf_paths = 0 + +# Search the path for iraf command directories, assume we may have more than +# one so build up a list of all of them. +if ("$lbin" == "") then + foreach i ($path) + if (-d $i && -e $i/cl && -e $i/mkiraf) then + set iraf_paths = ($iraf_paths $i) + set n_iraf_paths = `expr $n_iraf_paths + 1` + endif + end + + # Look around and come up with a likely candidate directory. + if ($n_iraf_paths == 0) then + set d_lbin = "" + foreach dir (/usr/local/bin /opt/local/bin /local/bin /usr/bin /bin) + if (-d $i && -e $i/cl && -e $i/mkiraf) then + set iraf_paths = ($iraf_paths $i) + set n_iraf_paths = `expr $n_iraf_paths + 1` + endif + end + + if (! $n_iraf_paths) then + echo "WARNING: no IRAF command directories found." + endif + endif +endif + + +echo "Files to be deleted to remove IRAF from this machine:" +NEWLINE +BOLD_ON +if ("$cmd_only" == "no") then + foreach i ($FILES $DEVS) + if (-e $i) echo " $i" + end +endif + +foreach i ($iraf_paths) + echo " All IRAF commands found in $i, including" +end +echo "" +echo " cl mkiraf mkmlist generic mkpkg" +echo " rmbin rmfiles rtar wtar xc" +echo " xpp rpp xyacc sgidispatch" +echo "" +BOLD_OFF + + +NEWLINE +echo 'You will be prompted before any files are removed. The system may' +echo 'be restored by rerunning the IRAF install script on this machine.' +NEWLINE + +echo -n "Hit <CR> to proceed, 'q' to quit: " + +set ans = "$<" +if ("$ans" == "q" || "$ans" == "quit") exit 0 +NEWLINE ; NEWLINE + + +# Initialize the local bin dir to delete. +set npath = 1 +set d_lbin = $iraf_paths[$npath] + + + +# ============================================================================ +# Delete the miscellaneous files associated with the system. +# ============================================================================ + +if ("$cmd_only" == "no") then + + # See whether we want to delete the <iraf.h> symlink. + foreach file ($FILES) + if ($verbage == yes) NEWLINE + if (-e $file) then + echo -n "Remove the $file link (y/n/q)? (y) " + set ans = "$<" + if ("$ans" == "y" || "$ans" == "Y" || "$ans" == "") then + if ($verbage == yes) echo -n " Deleting $file...." + RM $file + if (-e $i && $exec == yes && $verbage == yes) then + echo "file '$i' could not be deleted." + else if ($verbage == yes) then + echo "ok" + endif + else if ("$ans" == "q" || "$ans" == "q") then + echo "Quitting." + exit 0 + endif + endif + end + + # See whether we want to delete the fifo pipes. + if (-e /dev/imt1i || -e /dev/imt1o) then + if ($verbage == yes) NEWLINE + echo -n "Remove the /dev fifo pipes (y/n/q)? (y) " + set ans = "$<" + if ("$ans" == "y" || "$ans" == "Y" || "$ans" == "") then + foreach i ($DEVS) # remove fifo devs + if ($verbage == yes) echo -n " Deleting $i...." + if (-e $i) then + RM $file + if (-e $i && $exec == yes && $verbage == yes) then + echo "file '$i' could not be deleted." + else if ($verbage == yes) then + echo "ok" + endif + endif + end + else if ("$ans" == "q" || "$ans" == "q") then + echo "Quitting." + exit 0 + endif + endif + +endif + + +#============================================================================= +# Get UNIX directory where commands (links) are installed, if not found then +# set it on command line. +#============================================================================= + +if ($n_iraf_paths > 0) then + # Initialize the local bin dir to delete. + set npath = 1 + set d_lbin = $iraf_paths[$npath] +endif + + +if ("$d_lbin" == "") then +again_: + echo -n "Local iraf commands directory? " + set lbin = "$<" + if ("$lbin" == "") goto again_ + + if (!( -e $lbin/cl && -e $lbin/mkiraf)) then + echo "IRAF commands not found in $lbin, please try again..." + set lbin = "" + goto again_ + endif + +else +next_: + if ($verbage == yes) NEWLINE + echo -n "Remove IRAF Commands in $d_lbin (y/n/q)? (y) " + set ans = "$<" + if ("$ans" == "y" || "$ans" == "Y" || "$ans" == "") then + set lbin = $d_lbin + else if ("$ans" == "n" || "$ans" == "no") then + goto no_delete_ + else if ("$ans" == "q" || "$ans" == "quit") then + echo "Quitting." + exit 0 + else + set npath = `expr $npath + 1` + set d_lbin = $iraf_paths[$npath] + goto next_ + endif +endif + +foreach i ($CMDS) # remove the iraf commands + set file = $lbin/$i + if (-e $file) then + if ($verbage == yes) echo -n " Deleting $file...." + if (-e $file) then + RM $file + if (-e $file && $exec == yes && $verbage == yes) then + echo "[ ERROR: file '$file' could not be deleted. ]" + else if ($verbage == yes) then + echo "ok" + endif + endif + else + echo -n " Warning: $file was not found on this machine...." + endif +end + + +#============================================================================= +# Delete the iraf commands and files. +#============================================================================= + +set npath = `expr $npath + 1` + +# See whether this was the only instance and quit. +if ($npath <= $n_iraf_paths) then + set d_lbin = $iraf_paths[$npath] + goto next_ +endif + +no_delete_: + +set back = `pwd` ; chdir $iraf/.. ; set iraf_p = `pwd` ; chdir $back +NEWLINE +NEWLINE +echo "IRAF has been successfully uninstalled from this system. To fully" +echo "remove the system you must delete the iraf directory tree using the" +echo "command: " +NEWLINE +BOLD_ON +echo " % /bin/rm -rf $iraf_p" +BOLD_OFF +NEWLINE +echo "External packages, X11IRAF and/or other display servers and packages" +echo "will also need to be deleted separately." +NEWLINE +exit 0 + +uninstall_cleanup_: + +exit 0 + + + +# Print usage information. We will not get here unless the "-help" flag +# was issued. + +Usage: + echo "Usage: uninstall [-n] [-h] [-hl] [-c] [-v] [-b <directory>]" + echo " " + echo " where -n # no execute" + echo " -h # print this help summary" + echo " -hl # disable text highlighting" + echo " -c # remove command links only" + echo " -v # print verbage output" + echo " -b # specify local bin directory to search" + exit 0 diff --git a/unix/hlib/util.csh/.repo_desc b/unix/hlib/util.csh/.repo_desc new file mode 100644 index 00000000..0658e86d --- /dev/null +++ b/unix/hlib/util.csh/.repo_desc @@ -0,0 +1,27 @@ +# +# Pkg Deps Description + +adccdrom none ADC CD-ROM tools +cfh12k mscred,fitsutil CFHT 12K reductions +ctio none CTIO tools +deitab none DEIMOS tables package +esowfi mscred,fitsutil ESO WFI reductions +fitsutil none FITS utilities +guiapps none Prototype GUI application +iue none IUE reduction package +mem0 none Maximum Entropy deconvolution +mscred fitsutil Mosaic CCD reduction package +mtools none Jeff Munn's utility package +nfextern none General IR reductions/NEWFIRM package +nfdat_ctio nfextern Calibration data for NEWFIRM at CTIO +optic mscred,fitsutil OPTIC reductions +rvsao none SAO's RV package +song none SONG reductions +sqiid none SQIID reductions +stecf none ST-ECF v1.5 +steward none Steward Observatory tools +stsdas tables STSDAS v3.12 - HST reduction tools +tables none TABLES v3.12 - Tables utilities +ucsclris none UCSC LRIS mask making +upsqiid none UPiated SQIID reductions +xdimsum none IR reductions diff --git a/unix/hlib/util.csh/.repo_local b/unix/hlib/util.csh/.repo_local new file mode 100644 index 00000000..d5b230b3 --- /dev/null +++ b/unix/hlib/util.csh/.repo_local @@ -0,0 +1,200 @@ +# Arch Pkg Epoch File +# + linux64 adccdrom 1339696737 adccdrom-linux64.tar.gz + linux adccdrom 1339696737 adccdrom-linux.tar.gz + redhat adccdrom 1339696738 adccdrom-src.tar.gz + macintel adccdrom 1339696735 adccdrom-macintel.tar.gz + macosx adccdrom 1339696736 adccdrom-macosx.tar.gz + ssun adccdrom 1339696738 adccdrom-src.tar.gz + sparc adccdrom 1339696738 adccdrom-src.tar.gz + freebsd adccdrom 1339696738 adccdrom-src.tar.gz + sunos adccdrom 1339696738 adccdrom-src.tar.gz + linux64 cfh12k 1332309566 cfh12k-universal.tar.gz + linux cfh12k 1332309566 cfh12k-universal.tar.gz + redhat cfh12k 1332309566 cfh12k-universal.tar.gz + macintel cfh12k 1332309566 cfh12k-universal.tar.gz + macosx cfh12k 1332309566 cfh12k-universal.tar.gz + ssun cfh12k 1332309566 cfh12k-universal.tar.gz + sparc cfh12k 1332309566 cfh12k-universal.tar.gz + freebsd cfh12k 1332309566 cfh12k-universal.tar.gz + sunos cfh12k 1332309566 cfh12k-universal.tar.gz + linux64 ctio 1339696753 ctio-linux64.tar.gz + linux ctio 1339696757 ctio-linux.tar.gz + redhat ctio 1339696759 ctio-src.tar.gz + macintel ctio 1339696741 ctio-macintel.tar.gz + macosx ctio 1339696747 ctio-macosx.tar.gz + ssun ctio 1339696759 ctio-src.tar.gz + sparc ctio 1339696759 ctio-src.tar.gz + freebsd ctio 1339696759 ctio-src.tar.gz + sunos ctio 1339696759 ctio-src.tar.gz + linux64 deitab 1339696765 deitab-linux64.tar.gz + linux deitab 1339696767 deitab-linux.tar.gz + redhat deitab 1339696768 deitab-src.tar.gz + macintel deitab 1339696760 deitab-macintel.tar.gz + macosx deitab 1339696762 deitab-macosx.tar.gz + ssun deitab 1339696768 deitab-src.tar.gz + sparc deitab 1339696768 deitab-src.tar.gz + freebsd deitab 1339696768 deitab-src.tar.gz + sunos deitab 1339696768 deitab-src.tar.gz + linux64 esowfi 1332309566 esowfi-universal.tar.gz + linux esowfi 1332309566 esowfi-universal.tar.gz + redhat esowfi 1332309566 esowfi-universal.tar.gz + macintel esowfi 1332309566 esowfi-universal.tar.gz + macosx esowfi 1332309566 esowfi-universal.tar.gz + ssun esowfi 1332309566 esowfi-universal.tar.gz + sparc esowfi 1332309566 esowfi-universal.tar.gz + freebsd esowfi 1332309566 esowfi-universal.tar.gz + sunos esowfi 1332309566 esowfi-universal.tar.gz + linux64 fitsutil 1339696790 fitsutil-linux64.tar.gz + linux fitsutil 1339696797 fitsutil-linux.tar.gz + redhat fitsutil 1339696802 fitsutil-src.tar.gz + macintel fitsutil 1339696774 fitsutil-macintel.tar.gz + macosx fitsutil 1339696782 fitsutil-macosx.tar.gz + ssun fitsutil 1339696802 fitsutil-src.tar.gz + sparc fitsutil 1339696802 fitsutil-src.tar.gz + freebsd fitsutil 1339696802 fitsutil-src.tar.gz + sunos fitsutil 1339696802 fitsutil-src.tar.gz + linux64 guiapps 1339696827 guiapps-linux64.tar.gz + linux guiapps 1339696837 guiapps-linux.tar.gz + redhat guiapps 1339696843 guiapps-src.tar.gz + macintel guiapps 1339696808 guiapps-macintel.tar.gz + macosx guiapps 1339696817 guiapps-macosx.tar.gz + ssun guiapps 1339696843 guiapps-src.tar.gz + sparc guiapps 1339696843 guiapps-src.tar.gz + freebsd guiapps 1339696843 guiapps-src.tar.gz + sunos guiapps 1339696843 guiapps-src.tar.gz + linux64 mem0 1339696846 mem0-linux64.tar.gz + linux mem0 1339696847 mem0-linux.tar.gz + redhat mem0 1339696847 mem0-src.tar.gz + macintel mem0 1339696844 mem0-macintel.tar.gz + macosx mem0 1339696845 mem0-macosx.tar.gz + ssun mem0 1339696847 mem0-src.tar.gz + sparc mem0 1339696847 mem0-src.tar.gz + freebsd mem0 1339696847 mem0-src.tar.gz + sunos mem0 1339696847 mem0-src.tar.gz + linux64 mscdb 1339696652 mscdb-universal.tar.gz + linux mscdb 1339696652 mscdb-universal.tar.gz + redhat mscdb 1339696652 mscdb-universal.tar.gz + macintel mscdb 1339696652 mscdb-universal.tar.gz + macosx mscdb 1339696652 mscdb-universal.tar.gz + ssun mscdb 1339696652 mscdb-universal.tar.gz + sparc mscdb 1339696652 mscdb-universal.tar.gz + freebsd mscdb 1339696652 mscdb-universal.tar.gz + sunos mscdb 1339696652 mscdb-universal.tar.gz + linux64 mscred 1343187073 mscred-linux64.tar.gz + linux mscred 1343187056 mscred-linux.tar.gz + redhat mscred 1343187082 mscred-src.tar.gz + macintel mscred 1343187018 mscred-macintel.tar.gz + macosx mscred 1343187037 mscred-macosx.tar.gz + ssun mscred 1343187082 mscred-src.tar.gz + sparc mscred 1343187082 mscred-src.tar.gz + freebsd mscred 1343187082 mscred-src.tar.gz + sunos mscred 1343187082 mscred-src.tar.gz + linux64 mtools 1339696859 mtools-linux64.tar.gz + linux mtools 1339696862 mtools-linux.tar.gz + redhat mtools 1339696863 mtools-src.tar.gz + macintel mtools 1339696850 mtools-macintel.tar.gz + macosx mtools 1339696855 mtools-macosx.tar.gz + ssun mtools 1339696863 mtools-src.tar.gz + sparc mtools 1339696863 mtools-src.tar.gz + freebsd mtools 1339696863 mtools-src.tar.gz + sunos mtools 1339696863 mtools-src.tar.gz + linux64 nfextern 1343186860 nfextern-linux64.tar.gz + linux nfextern 1343186815 nfextern-linux.tar.gz + redhat nfextern 1343187011 nfextern-src.tar.gz + macintel nfextern 1343186914 nfextern-macintel.tar.gz + macosx nfextern 1343186971 nfextern-macosx.tar.gz + ssun nfextern 1332311037 nfextern-ssun.tar.gz + sparc nfextern 1343187011 nfextern-src.tar.gz + freebsd nfextern 1343187011 nfextern-src.tar.gz + sunos nfextern 1343187011 nfextern-src.tar.gz + linux64 optic 1332309566 optic-universal.tar.gz + linux optic 1332309566 optic-universal.tar.gz + redhat optic 1332309566 optic-universal.tar.gz + macintel optic 1332309566 optic-universal.tar.gz + macosx optic 1332309566 optic-universal.tar.gz + ssun optic 1332309566 optic-universal.tar.gz + sparc optic 1332309566 optic-universal.tar.gz + freebsd optic 1332309566 optic-universal.tar.gz + sunos optic 1332309566 optic-universal.tar.gz + linux64 patch 1337903759 patch-src.tar.gz + linux patch 1337903759 patch-src.tar.gz + redhat patch 1337903759 patch-src.tar.gz + macintel patch 1337903759 patch-src.tar.gz + macosx patch 1337903759 patch-src.tar.gz + ssun patch 1337903759 patch-src.tar.gz + sparc patch 1337903759 patch-src.tar.gz + freebsd patch 1337903759 patch-src.tar.gz + sunos patch 1337903759 patch-src.tar.gz + linux64 rvsao 1322067222 rvsao-redhat.tar.gz + linux rvsao 1322067222 rvsao-redhat.tar.gz + redhat rvsao 1322067222 rvsao-redhat.tar.gz + macintel rvsao 1322067226 rvsao-macosx.tar.gz + macosx rvsao 1322067226 rvsao-macosx.tar.gz + ssun rvsao 1322067223 rvsao-ssun.tar.gz + sparc rvsao 1322067228 rvsao-src.tar.gz + freebsd rvsao 1322067228 rvsao-src.tar.gz + sunos rvsao 1322067228 rvsao-src.tar.gz + linux64 song 1332309566 song-universal.tar.gz + linux song 1332309566 song-universal.tar.gz + redhat song 1332309566 song-universal.tar.gz + macintel song 1332309566 song-universal.tar.gz + macosx song 1332309566 song-universal.tar.gz + ssun song 1332309566 song-universal.tar.gz + sparc song 1332309566 song-universal.tar.gz + freebsd song 1332309566 song-universal.tar.gz + sunos song 1332309566 song-universal.tar.gz + linux64 sqiid 1332309566 sqiid-universal.tar.gz + linux sqiid 1332309566 sqiid-universal.tar.gz + redhat sqiid 1332309566 sqiid-universal.tar.gz + macintel sqiid 1332309566 sqiid-universal.tar.gz + macosx sqiid 1332309566 sqiid-universal.tar.gz + ssun sqiid 1332309566 sqiid-universal.tar.gz + sparc sqiid 1332309566 sqiid-universal.tar.gz + freebsd sqiid 1332309566 sqiid-universal.tar.gz + sunos sqiid 1332309566 sqiid-universal.tar.gz + linux64 stsdas 1316518910 stsdas-linux.tar.gz + linux stsdas 1316518910 stsdas-linux.tar.gz + redhat stsdas 1316518961 stsdas-src.tar.gz + macintel stsdas 1316518808 stsdas-macosx.tar.gz + macosx stsdas 1316518808 stsdas-macosx.tar.gz + ssun stsdas 1316518961 stsdas-src.tar.gz + sparc stsdas 1316518961 stsdas-src.tar.gz + freebsd stsdas 1316518961 stsdas-src.tar.gz + sunos stsdas 1316518961 stsdas-src.tar.gz + linux64 tables 1316518978 tables-linux.tar.gz + linux tables 1316518978 tables-linux.tar.gz + redhat tables 1316518984 tables-src.tar.gz + macintel tables 1316518971 tables-macosx.tar.gz + macosx tables 1316518971 tables-macosx.tar.gz + ssun tables 1316518984 tables-src.tar.gz + sparc tables 1316518984 tables-src.tar.gz + freebsd tables 1316518984 tables-src.tar.gz + sunos tables 1316518984 tables-src.tar.gz + linux64 ucsclris 1339696867 ucsclris-linux64.tar.gz + linux ucsclris 1339696867 ucsclris-linux.tar.gz + redhat ucsclris 1339696868 ucsclris-src.tar.gz + macintel ucsclris 1339696864 ucsclris-macintel.tar.gz + macosx ucsclris 1339696865 ucsclris-macosx.tar.gz + ssun ucsclris 1339696868 ucsclris-src.tar.gz + sparc ucsclris 1339696868 ucsclris-src.tar.gz + freebsd ucsclris 1339696868 ucsclris-src.tar.gz + sunos ucsclris 1339696868 ucsclris-src.tar.gz + linux64 upsqiid 1332309566 upsqiid-universal.tar.gz + linux upsqiid 1332309566 upsqiid-universal.tar.gz + redhat upsqiid 1332309566 upsqiid-universal.tar.gz + macintel upsqiid 1332309566 upsqiid-universal.tar.gz + macosx upsqiid 1332309566 upsqiid-universal.tar.gz + ssun upsqiid 1332309566 upsqiid-universal.tar.gz + sparc upsqiid 1332309566 upsqiid-universal.tar.gz + freebsd upsqiid 1332309566 upsqiid-universal.tar.gz + sunos upsqiid 1332309566 upsqiid-universal.tar.gz + linux64 xdimsum 1339696873 xdimsum-linux64.tar.gz + linux xdimsum 1339696874 xdimsum-linux.tar.gz + redhat xdimsum 1339696874 xdimsum-src.tar.gz + macintel xdimsum 1339696869 xdimsum-macintel.tar.gz + macosx xdimsum 1339696871 xdimsum-macosx.tar.gz + ssun xdimsum 1339696874 xdimsum-src.tar.gz + sparc xdimsum 1339696874 xdimsum-src.tar.gz + freebsd xdimsum 1339696874 xdimsum-src.tar.gz + sunos xdimsum 1339696874 xdimsum-src.tar.gz diff --git a/unix/hlib/util.csh/.repo_manifest b/unix/hlib/util.csh/.repo_manifest new file mode 100644 index 00000000..d5b230b3 --- /dev/null +++ b/unix/hlib/util.csh/.repo_manifest @@ -0,0 +1,200 @@ +# Arch Pkg Epoch File +# + linux64 adccdrom 1339696737 adccdrom-linux64.tar.gz + linux adccdrom 1339696737 adccdrom-linux.tar.gz + redhat adccdrom 1339696738 adccdrom-src.tar.gz + macintel adccdrom 1339696735 adccdrom-macintel.tar.gz + macosx adccdrom 1339696736 adccdrom-macosx.tar.gz + ssun adccdrom 1339696738 adccdrom-src.tar.gz + sparc adccdrom 1339696738 adccdrom-src.tar.gz + freebsd adccdrom 1339696738 adccdrom-src.tar.gz + sunos adccdrom 1339696738 adccdrom-src.tar.gz + linux64 cfh12k 1332309566 cfh12k-universal.tar.gz + linux cfh12k 1332309566 cfh12k-universal.tar.gz + redhat cfh12k 1332309566 cfh12k-universal.tar.gz + macintel cfh12k 1332309566 cfh12k-universal.tar.gz + macosx cfh12k 1332309566 cfh12k-universal.tar.gz + ssun cfh12k 1332309566 cfh12k-universal.tar.gz + sparc cfh12k 1332309566 cfh12k-universal.tar.gz + freebsd cfh12k 1332309566 cfh12k-universal.tar.gz + sunos cfh12k 1332309566 cfh12k-universal.tar.gz + linux64 ctio 1339696753 ctio-linux64.tar.gz + linux ctio 1339696757 ctio-linux.tar.gz + redhat ctio 1339696759 ctio-src.tar.gz + macintel ctio 1339696741 ctio-macintel.tar.gz + macosx ctio 1339696747 ctio-macosx.tar.gz + ssun ctio 1339696759 ctio-src.tar.gz + sparc ctio 1339696759 ctio-src.tar.gz + freebsd ctio 1339696759 ctio-src.tar.gz + sunos ctio 1339696759 ctio-src.tar.gz + linux64 deitab 1339696765 deitab-linux64.tar.gz + linux deitab 1339696767 deitab-linux.tar.gz + redhat deitab 1339696768 deitab-src.tar.gz + macintel deitab 1339696760 deitab-macintel.tar.gz + macosx deitab 1339696762 deitab-macosx.tar.gz + ssun deitab 1339696768 deitab-src.tar.gz + sparc deitab 1339696768 deitab-src.tar.gz + freebsd deitab 1339696768 deitab-src.tar.gz + sunos deitab 1339696768 deitab-src.tar.gz + linux64 esowfi 1332309566 esowfi-universal.tar.gz + linux esowfi 1332309566 esowfi-universal.tar.gz + redhat esowfi 1332309566 esowfi-universal.tar.gz + macintel esowfi 1332309566 esowfi-universal.tar.gz + macosx esowfi 1332309566 esowfi-universal.tar.gz + ssun esowfi 1332309566 esowfi-universal.tar.gz + sparc esowfi 1332309566 esowfi-universal.tar.gz + freebsd esowfi 1332309566 esowfi-universal.tar.gz + sunos esowfi 1332309566 esowfi-universal.tar.gz + linux64 fitsutil 1339696790 fitsutil-linux64.tar.gz + linux fitsutil 1339696797 fitsutil-linux.tar.gz + redhat fitsutil 1339696802 fitsutil-src.tar.gz + macintel fitsutil 1339696774 fitsutil-macintel.tar.gz + macosx fitsutil 1339696782 fitsutil-macosx.tar.gz + ssun fitsutil 1339696802 fitsutil-src.tar.gz + sparc fitsutil 1339696802 fitsutil-src.tar.gz + freebsd fitsutil 1339696802 fitsutil-src.tar.gz + sunos fitsutil 1339696802 fitsutil-src.tar.gz + linux64 guiapps 1339696827 guiapps-linux64.tar.gz + linux guiapps 1339696837 guiapps-linux.tar.gz + redhat guiapps 1339696843 guiapps-src.tar.gz + macintel guiapps 1339696808 guiapps-macintel.tar.gz + macosx guiapps 1339696817 guiapps-macosx.tar.gz + ssun guiapps 1339696843 guiapps-src.tar.gz + sparc guiapps 1339696843 guiapps-src.tar.gz + freebsd guiapps 1339696843 guiapps-src.tar.gz + sunos guiapps 1339696843 guiapps-src.tar.gz + linux64 mem0 1339696846 mem0-linux64.tar.gz + linux mem0 1339696847 mem0-linux.tar.gz + redhat mem0 1339696847 mem0-src.tar.gz + macintel mem0 1339696844 mem0-macintel.tar.gz + macosx mem0 1339696845 mem0-macosx.tar.gz + ssun mem0 1339696847 mem0-src.tar.gz + sparc mem0 1339696847 mem0-src.tar.gz + freebsd mem0 1339696847 mem0-src.tar.gz + sunos mem0 1339696847 mem0-src.tar.gz + linux64 mscdb 1339696652 mscdb-universal.tar.gz + linux mscdb 1339696652 mscdb-universal.tar.gz + redhat mscdb 1339696652 mscdb-universal.tar.gz + macintel mscdb 1339696652 mscdb-universal.tar.gz + macosx mscdb 1339696652 mscdb-universal.tar.gz + ssun mscdb 1339696652 mscdb-universal.tar.gz + sparc mscdb 1339696652 mscdb-universal.tar.gz + freebsd mscdb 1339696652 mscdb-universal.tar.gz + sunos mscdb 1339696652 mscdb-universal.tar.gz + linux64 mscred 1343187073 mscred-linux64.tar.gz + linux mscred 1343187056 mscred-linux.tar.gz + redhat mscred 1343187082 mscred-src.tar.gz + macintel mscred 1343187018 mscred-macintel.tar.gz + macosx mscred 1343187037 mscred-macosx.tar.gz + ssun mscred 1343187082 mscred-src.tar.gz + sparc mscred 1343187082 mscred-src.tar.gz + freebsd mscred 1343187082 mscred-src.tar.gz + sunos mscred 1343187082 mscred-src.tar.gz + linux64 mtools 1339696859 mtools-linux64.tar.gz + linux mtools 1339696862 mtools-linux.tar.gz + redhat mtools 1339696863 mtools-src.tar.gz + macintel mtools 1339696850 mtools-macintel.tar.gz + macosx mtools 1339696855 mtools-macosx.tar.gz + ssun mtools 1339696863 mtools-src.tar.gz + sparc mtools 1339696863 mtools-src.tar.gz + freebsd mtools 1339696863 mtools-src.tar.gz + sunos mtools 1339696863 mtools-src.tar.gz + linux64 nfextern 1343186860 nfextern-linux64.tar.gz + linux nfextern 1343186815 nfextern-linux.tar.gz + redhat nfextern 1343187011 nfextern-src.tar.gz + macintel nfextern 1343186914 nfextern-macintel.tar.gz + macosx nfextern 1343186971 nfextern-macosx.tar.gz + ssun nfextern 1332311037 nfextern-ssun.tar.gz + sparc nfextern 1343187011 nfextern-src.tar.gz + freebsd nfextern 1343187011 nfextern-src.tar.gz + sunos nfextern 1343187011 nfextern-src.tar.gz + linux64 optic 1332309566 optic-universal.tar.gz + linux optic 1332309566 optic-universal.tar.gz + redhat optic 1332309566 optic-universal.tar.gz + macintel optic 1332309566 optic-universal.tar.gz + macosx optic 1332309566 optic-universal.tar.gz + ssun optic 1332309566 optic-universal.tar.gz + sparc optic 1332309566 optic-universal.tar.gz + freebsd optic 1332309566 optic-universal.tar.gz + sunos optic 1332309566 optic-universal.tar.gz + linux64 patch 1337903759 patch-src.tar.gz + linux patch 1337903759 patch-src.tar.gz + redhat patch 1337903759 patch-src.tar.gz + macintel patch 1337903759 patch-src.tar.gz + macosx patch 1337903759 patch-src.tar.gz + ssun patch 1337903759 patch-src.tar.gz + sparc patch 1337903759 patch-src.tar.gz + freebsd patch 1337903759 patch-src.tar.gz + sunos patch 1337903759 patch-src.tar.gz + linux64 rvsao 1322067222 rvsao-redhat.tar.gz + linux rvsao 1322067222 rvsao-redhat.tar.gz + redhat rvsao 1322067222 rvsao-redhat.tar.gz + macintel rvsao 1322067226 rvsao-macosx.tar.gz + macosx rvsao 1322067226 rvsao-macosx.tar.gz + ssun rvsao 1322067223 rvsao-ssun.tar.gz + sparc rvsao 1322067228 rvsao-src.tar.gz + freebsd rvsao 1322067228 rvsao-src.tar.gz + sunos rvsao 1322067228 rvsao-src.tar.gz + linux64 song 1332309566 song-universal.tar.gz + linux song 1332309566 song-universal.tar.gz + redhat song 1332309566 song-universal.tar.gz + macintel song 1332309566 song-universal.tar.gz + macosx song 1332309566 song-universal.tar.gz + ssun song 1332309566 song-universal.tar.gz + sparc song 1332309566 song-universal.tar.gz + freebsd song 1332309566 song-universal.tar.gz + sunos song 1332309566 song-universal.tar.gz + linux64 sqiid 1332309566 sqiid-universal.tar.gz + linux sqiid 1332309566 sqiid-universal.tar.gz + redhat sqiid 1332309566 sqiid-universal.tar.gz + macintel sqiid 1332309566 sqiid-universal.tar.gz + macosx sqiid 1332309566 sqiid-universal.tar.gz + ssun sqiid 1332309566 sqiid-universal.tar.gz + sparc sqiid 1332309566 sqiid-universal.tar.gz + freebsd sqiid 1332309566 sqiid-universal.tar.gz + sunos sqiid 1332309566 sqiid-universal.tar.gz + linux64 stsdas 1316518910 stsdas-linux.tar.gz + linux stsdas 1316518910 stsdas-linux.tar.gz + redhat stsdas 1316518961 stsdas-src.tar.gz + macintel stsdas 1316518808 stsdas-macosx.tar.gz + macosx stsdas 1316518808 stsdas-macosx.tar.gz + ssun stsdas 1316518961 stsdas-src.tar.gz + sparc stsdas 1316518961 stsdas-src.tar.gz + freebsd stsdas 1316518961 stsdas-src.tar.gz + sunos stsdas 1316518961 stsdas-src.tar.gz + linux64 tables 1316518978 tables-linux.tar.gz + linux tables 1316518978 tables-linux.tar.gz + redhat tables 1316518984 tables-src.tar.gz + macintel tables 1316518971 tables-macosx.tar.gz + macosx tables 1316518971 tables-macosx.tar.gz + ssun tables 1316518984 tables-src.tar.gz + sparc tables 1316518984 tables-src.tar.gz + freebsd tables 1316518984 tables-src.tar.gz + sunos tables 1316518984 tables-src.tar.gz + linux64 ucsclris 1339696867 ucsclris-linux64.tar.gz + linux ucsclris 1339696867 ucsclris-linux.tar.gz + redhat ucsclris 1339696868 ucsclris-src.tar.gz + macintel ucsclris 1339696864 ucsclris-macintel.tar.gz + macosx ucsclris 1339696865 ucsclris-macosx.tar.gz + ssun ucsclris 1339696868 ucsclris-src.tar.gz + sparc ucsclris 1339696868 ucsclris-src.tar.gz + freebsd ucsclris 1339696868 ucsclris-src.tar.gz + sunos ucsclris 1339696868 ucsclris-src.tar.gz + linux64 upsqiid 1332309566 upsqiid-universal.tar.gz + linux upsqiid 1332309566 upsqiid-universal.tar.gz + redhat upsqiid 1332309566 upsqiid-universal.tar.gz + macintel upsqiid 1332309566 upsqiid-universal.tar.gz + macosx upsqiid 1332309566 upsqiid-universal.tar.gz + ssun upsqiid 1332309566 upsqiid-universal.tar.gz + sparc upsqiid 1332309566 upsqiid-universal.tar.gz + freebsd upsqiid 1332309566 upsqiid-universal.tar.gz + sunos upsqiid 1332309566 upsqiid-universal.tar.gz + linux64 xdimsum 1339696873 xdimsum-linux64.tar.gz + linux xdimsum 1339696874 xdimsum-linux.tar.gz + redhat xdimsum 1339696874 xdimsum-src.tar.gz + macintel xdimsum 1339696869 xdimsum-macintel.tar.gz + macosx xdimsum 1339696871 xdimsum-macosx.tar.gz + ssun xdimsum 1339696874 xdimsum-src.tar.gz + sparc xdimsum 1339696874 xdimsum-src.tar.gz + freebsd xdimsum 1339696874 xdimsum-src.tar.gz + sunos xdimsum 1339696874 xdimsum-src.tar.gz diff --git a/unix/hlib/util.csh/.repo_pkgs b/unix/hlib/util.csh/.repo_pkgs new file mode 100644 index 00000000..eb7b2181 --- /dev/null +++ b/unix/hlib/util.csh/.repo_pkgs @@ -0,0 +1,22 @@ +adccdrom +cfh12k +ctio +deitab +esowfi +fitsutil +guiapps +mem0 +mscdb +mscred +mtools +nfextern +optic +patch +rvsao +song +sqiid +stsdas +tables +ucsclris +upsqiid +xdimsum diff --git a/unix/hlib/util.csh/.zzsetenv.def b/unix/hlib/util.csh/.zzsetenv.def new file mode 100644 index 00000000..2fa992c0 --- /dev/null +++ b/unix/hlib/util.csh/.zzsetenv.def @@ -0,0 +1 @@ +keep diff --git a/unix/hlib/util.csh/README b/unix/hlib/util.csh/README new file mode 100644 index 00000000..2a17ea68 --- /dev/null +++ b/unix/hlib/util.csh/README @@ -0,0 +1,19 @@ + + This directory contains utility scripts used to build and +maintain the system from the top-level IRAF root directory. These +scripts should NOT be used to build individual packages or source +directories. + +Contents include: + + README This file + chk64 Check subdirectories for 64-bit issues + mkarch Reconfigure the system for given architecture + mkclean Clean the current architecture of binaries + mkdist Create a distribution file (NYI) + mkproto Create system prototype files + mksrc Clean the system of all binaries + mksysgen Build from a clean system source + mkup Update current-arch binaries + mkupx Update current-arch binaries (debug) + diff --git a/unix/hlib/util.csh/check_update b/unix/hlib/util.csh/check_update new file mode 100755 index 00000000..a26298e9 --- /dev/null +++ b/unix/hlib/util.csh/check_update @@ -0,0 +1,68 @@ +#!/bin/csh -f +# +# CHECK_UPDATE -- Check to see if an update is available. Return $status=1 +# if a patch is available. +# + +# Called from Makefile, set iraf root. +source $iraf/unix/hlib/irafuser.csh + + +set REPO = `${iraf}/util/pkgrepo` +if ($?IRAFARCH) then + set arch = $IRAFARCH +else + set arch = `${iraf}/unix/hlib/irafarch.csh -actual` +endif + + +# Check to see if a patch file is available. + +/bin/rm -f /tmp/_rdate /tmp/_pdate + +set FGET = "${iraf}/util/fget" +${FGET} -q -o /tmp/_rdate http://iraf.noao.edu/ftp/v216/PCIX/.release_date +${FGET} -q -o /tmp/_pdate http://iraf.noao.edu/ftp/v216/PCIX/.patch_release + +if (-e /tmp/_rdate) then + set rdate = `cat /tmp/_rdate` +else + echo "cannot get rdate" + exit 0 +endif +if (-e /tmp/_pdate) then + set pdate = `cat /tmp/_pdate` +else + echo "cannot get pdate" + exit 0 +endif + + +if (-e ${iraf}/.patch_release) then + set ipdate = `/bin/ls -l --time-style=+%s ${iraf}/.patch_release | \ + awk '{ print ($6) }'` +else + set ipdate = 0 +endif + +if ($#argv > 0 && "$1" == "-d") then # Debug + echo " rdate = " $rdate + echo " pdate = " $pdate + echo "ipdate = " $ipdate +endif + +if ($rdate > $pdate) then # New Release + exit 1 +endif + + +if ($pdate == 0) then + exit 0 + +else if ($pdate > $ipdate && $ipdate != 0) then # Patch newer than installed + exit 1 + +endif + + +exit 0 # No update available diff --git a/unix/hlib/util.csh/chk64 b/unix/hlib/util.csh/chk64 new file mode 100755 index 00000000..3ebe24bc --- /dev/null +++ b/unix/hlib/util.csh/chk64 @@ -0,0 +1,17 @@ +#!/bin/csh -f + +find . -type f -name \*.x -exec egrep -H SZ_REAL {} \; >& _real +find . -type f -name \*.h -exec egrep -H SZ_REAL {} \; >& _realh + +find . -type f -name \*.h -exec egrep -H SZ_INT {} \; >& _inth +find . -type f -name \*.x -exec egrep -H SZ_INT {} \; >& _int + +find . -type f -name \*.x -exec egrep -H SZ_STRUCT {} \; >& _sz +find . -type f -name \*.h -exec egrep -H SZ_STRUCT {} \; >& _szh + +find . -type f -name \*.x -exec egrep -H mii_ {} \; >& _mii +find . -type f -name \*.gx -exec egrep -H SZ_PIXEL {} \; >& _szpix + +find . -type f -name \*.x -exec egrep -H sizeof {} \; | \ + egrep -v -e ":int" >& _sizeof +find . -type f -name \*.x -exec egrep -H szdtype {} \; >& _szdtype diff --git a/unix/hlib/util.csh/fget b/unix/hlib/util.csh/fget new file mode 100755 index 00000000..23af7c6a --- /dev/null +++ b/unix/hlib/util.csh/fget @@ -0,0 +1,185 @@ +#!/bin/csh -f +# +# FGET -- Download a URL. +# +# Usage: fget [-h] [-n] [-q | -v] url +# +# Where -n no-op flag +# -q suppress output +# -v verbose output +# -d set download directory +# -o set output filename +# -h this message +# +# Example: +# % fget -q ftp://iraf.noao.edu/iraf/extern/foo-linux.tar.gz +# +# ---------------------------------------------------------------------------- + + +unset noclobber +onintr cleanup_ +unalias cd cp cmp echo ln mv rm sed set grep ls chmod chown pwd touch sort which +unalias ftp wget + +setenv path "(../util /sbin /usr/sbin /bin /usr/bin /usr/5bin /usr/ucb /etc /usr/etc $path /usr/local/bin /opt/local/bin /local/bin /home/local/bin)" + +# set echo + + +############################################################################## +# START OF MACHDEP DEFINITIONS. +############################################################################## + +# MACHDEP definitions which may be reset below. + + +# Find the iraf root directory. +if (! $?iraf) then + set iraf = "" + foreach f ( ~/.iraf.h ~/.iraf/iraf.h /usr/include/iraf.h) + # $iraf is defined, use a well-known path for the system + if (-e ${f}) then + set i = `egrep IRAF ${f} | egrep \#define | sed -e 's/"//g'` + set iraf = $i[3] +echo $i + break + endif + end +endif +if ("$iraf" == "") then + if (-e /iraf/iraf) then + set iraf = /iraf/iraf/ + else + set iraf = `dirname $0`/../ + endif +endif + +# Determine platform architecture. +set arch = `$iraf/unix/hlib/irafarch.csh` + + +############################################################################## +# END OF MACHDEP DEFINITIONS. +############################################################################## + +#============================================================================= +# Declarations and initializations. +#============================================================================= + +set exec = yes +set verb = no +set url = "" +set fname = "" +set ddir = "" + + +# Process cmdline flags. +while ("$1" != "") + switch ("$1") + case -n: # no execute + set exec = no + breaksw + case -q: # be quiet + set verb = no + set quiet = yes + breaksw + case -v: # be chatty + set verb = yes + set quiet = no + breaksw + case -h: # print help summary + goto Usage + case -d: # set download directory + set ddir = $2 + shift + breaksw + case -o: # set output file name + set fname = $2 + shift + breaksw + default: + set url = $1 + break + endsw + + if ("$2" == "") then + break + else + shift + endif +end + + +# Error checks. +if ("$url" == "") then + if ("$verb" == "yes") then + echo "ERROR: URL not specified" + endif + exit 1 +endif + +# Get the download filename. Delete an existing copy of the file +if ($fname == "") then + set fname = $url:t +endif +if (-e "$fname") then + /bin/rm -f $fname +endif + +# Ensure URL is an HTTP protocol. +set prot = `echo $url | cut -c1-3` +if ("$prot" == "ftp") then + set u = `echo $url | sed -e 's;ftp://iraf.noao.edu/iraf;http://iraf.noao.edu/ftp;'` + set url = $u +endif + +# Do it. +if ("$exec" == "yes") then + if ("$verb" == "yes") then + echo "Downloading "$url" ...." + endif + + set args = "url='$url' fname='${ddir}${fname}' cache='/tmp' verbose=no extn='' use_cache=no" + if ("$verb" == "no") then + $iraf/bin.$arch/x_system.e urlget ${args} \$nargs=2 >& /dev/null + else + $iraf/bin.$arch/x_system.e urlget ${args} \$nargs=2 + endif + + if ("$verb" == "yes") then + echo "done" + endif +endif + + +# Verify we have the file. +if (! -e $url:t) then + if ("$verb" == "yes") then + echo "Error downloading file '"$fname"'" + endif + exit 1 +else + if ($#argv > 1) then + mv $url:t $2 + endif +endif + +# Normal exit. +exit 0 + + + +#============================================================================= +# Usage +#============================================================================= + +Usage: + echo "Usage: fget [-h] [-n] [-q | -v] url" + echo "" + echo " where -n # no execute" + echo " -q # suppress output" + echo " -v # verbose output" + echo " -h # this message" + +exit 0 diff --git a/unix/hlib/util.csh/iraf_latest b/unix/hlib/util.csh/iraf_latest new file mode 100755 index 00000000..dfde7893 --- /dev/null +++ b/unix/hlib/util.csh/iraf_latest @@ -0,0 +1,91 @@ +#!/bin/csh -f +# +# IRAF_LATEST - Update the system with the latest distribution files. + +unalias grep ls + +set opt = "all" + + +if ($#argv < 1) then + echo "Usage: iraf_latest <opt>" + exit 0 +else + set opt = $1 +endif + + +# Called from Makefile, set iraf root. +set iraf = $cwd/ +source $iraf/unix/hlib/irafuser.csh + + +set REPO = `${iraf}/util/pkgrepo` +if ($?IRAFARCH) then + set arch = $IRAFARCH +else + set arch = `${iraf}/unix/hlib/irafarch.csh -actual` +endif + + +echo "iraf_latest: cwd = " $cwd + +# Figure out which binaries are required. +set files = "patch-src.tar.gz" # always need the source .... +set bins = "" +foreach b (linux linux64 macosx macintel) + if (-e "bin.$b/x_images.e") then + set bins = `echo $bins " " $b` + switch ($b) + case linux: + set files = `echo "$files patch.lnux.x86.tar.gz"` + breaksw + case linux64: + set files = `echo "$files patch.lnux.x86_64.tar.gz"` + breaksw + case macosx: + set files = `echo "$files patch.macx.uni.tar.gz"` + breaksw + case macintel: + set files = `echo "$files patch.macx.x86_64.tar.gz"` + breaksw + endsw + endif +end +echo "Updating binaries: " $bins + + +# Download the needed files to /tmp + +set FGET = "${iraf}/util/fget" +set REPO = `util/pkgrepo` +foreach f ($files) + echo -n "Downloading: $f" + ${FGET} -q -d /tmp/ $REPO/$f + if (! (-e /tmp/$f)) then + echo "" + echo "Error downloading $REPO/$f, quitting" + exit + endif + + echo -n " Unpacking ..." + tar zxf /tmp/$f + /bin/rm -f /tmp/$f + + echo " Done." +end + + +# For the initial release, the update procedures haven't yet been defined. +# This script will be replaced by the working version at the first release. + + +if ($opt == "all") then # Update everything + if (-e extern/.installed) then + echo "Update all external packages ..." + (chdir extern ; make update) + endif +endif + +echo "" +exit 0 diff --git a/unix/hlib/util.csh/iraf_update b/unix/hlib/util.csh/iraf_update new file mode 100755 index 00000000..f43ede90 --- /dev/null +++ b/unix/hlib/util.csh/iraf_update @@ -0,0 +1,100 @@ +#!/bin/csh -f +# +# IRAF_UPDATE - Update the core IRAF system with a cumulative patch. + +unalias grep ls + +set opt = "all" +set all = yes +set src_only = no +set list_only = no +set core_only = no +set noao_only = no +set vo_only = no + +if ($#argv < 1) then + set opt = "all" + set all = yes +else + + # Process cmdline flags. + while ("$1" != "") + switch ("$1") + case -all: # clean all package sources + set all = yes + set opt = "all" + breaksw + case -src: # update only source code + set src_only = yes + set opt = "src" + breaksw + case -list: # list files needing updating + set list_only = yes + set opt = "list" + + echo "" + util/check_update + if ($status == 0) then + echo "IRAF is up to date" + else + echo "An IRAF update is available" + endif + echo "" + (chdir util ; ${iraf}/util/pkgupdate -list) + exit 0 + + case -core: # update only core system + set core_only = yes + set opt = "core" + breaksw + case -noao: # update only NOAO package + set noao_only = yes + set opt = "noao" + breaksw + case -vo: # update only VO package + set vo_only = yes + set opt = "vo" + breaksw + default: + echo "Error: Unknown option '"$1"', quitting." + exit 1 + endsw + + shift + end +endif + + +# Called from Makefile, set iraf root. +set iraf = $cwd/ +source $iraf/unix/hlib/irafuser.csh +set irafdir = $iraf + + +set REPO = `${irafdir}/util/pkgrepo` +if ($?IRAFARCH) then + set arch = $IRAFARCH +else + set arch = `${irafdir}/unix/hlib/irafarch.csh -actual` +endif + + +# Init the build scripts as the first update. +#echo "Updating build scripts ...." +util/self_update + + +# Execute the update. +echo "Updating IRAF system ...." +util/iraf_latest $opt + +if ($status == 2) then + echo -n "Update Status: No updates necessary" +else if ($status == 0) then + echo -n "Update Status: Successful " +else + echo -n "Update Status: Fails " +endif +echo "" + +exit 0 diff --git a/unix/hlib/util.csh/mkarch b/unix/hlib/util.csh/mkarch new file mode 100755 index 00000000..ceec0db8 --- /dev/null +++ b/unix/hlib/util.csh/mkarch @@ -0,0 +1,58 @@ +#!/bin/csh -f +# +# MKARCH - Reset the platform architecture. Assumes source-only tree and +# that it's safe to just manually change links. + + +set aarch = `unix/hlib/irafarch.csh -actual` + +if (-e $iraf/unix/bin.$aarch/mkpkg.e) then + # Assume we've got a system with binaries and can use MKPKG. + set use_mkpkg = 1 +else + if ($?IRAFARCH && -e $iraf/unix/bin.$IRAFARCH/mkpkg.e) then + set use_mkpkg = 1 + else + # Change the links manually, but strip all binaries first. + set use_mkpkg = 0 + endif +endif + + +if ($#argv == 1) then + set arch = $1 + +loop_: + echo "Making architecture: "$arch + + if ($use_mkpkg == 1) then + mkpkg $arch + (chdir noao ; mkpkg -p noao $arch) + (chdir vo ; mkpkg -p vo $arch) + else + $iraf/util/mkclean + /bin/rm -rf bin noao/bin unix/bin unix/as vo/bin + + ln -s bin.$arch bin + (chdir vo ; ln -s bin.$arch bin) + (chdir noao ; ln -s bin.$arch bin) + (chdir unix ; ln -s bin.$arch bin) + (chdir unix ; ln -s as.$arch as) + endif + + if ("$arch" == "macintel" || "$arch" == "linux64") then + (chdir unix/hlib ; \ + rm -f iraf.h mach.h ; \ + ln -s iraf64.h iraf.h ; \ + ln -s mach64.h mach.h) + else + (chdir unix/hlib ; \ + rm -f iraf.h mach.h ; \ + ln -s iraf32.h iraf.h ; \ + ln -s mach32.h mach.h) + endif + +else + set arch = $aarch + goto loop_ +endif diff --git a/unix/hlib/util.csh/mkbindist b/unix/hlib/util.csh/mkbindist new file mode 100755 index 00000000..acf4a987 --- /dev/null +++ b/unix/hlib/util.csh/mkbindist @@ -0,0 +1,80 @@ +#!/bin/csh -f + +unset noclobber +onintr cleanup_ +unalias cd cp cmp echo ln mv rm sed set grep ls chmod chown pwd touch sort which + +setenv path "(/sbin /usr/sbin /bin /usr/bin /usr/5bin /usr/ucb /etc /usr/etc $path /usr/local/bin /opt/local/bin /local/bin /home/local/bin /usr/openwin/bin /usr/X11R6/bin /usr/X11/bin)" + +# Utility aliases. +alias PUT "mv -f \!*; chown $user \!$ " # [MACHDEP] +alias BOLD_ON "(tput bold)" +alias BOLD_OFF "(tput sgr0)" +alias SO_ON "(tput smso)" +alias SO_OFF "(tput sgr0)" + +alias DO_OK "(echo -n '[ '; BOLD_ON; echo -n ' OK '; BOLD_OFF; echo ' ]')" +alias DO_WARN "(echo -n '[ '; BOLD_ON; echo -n 'WARN'; BOLD_OFF; echo ' ]')" +alias DO_FAIL "(echo -n '[ '; SO_ON; echo -n 'FAIL'; SO_OFF; echo ' ]')" + +alias ERRMSG "(echo -n ' ';BOLD_ON;echo -n 'ERROR: ' ;BOLD_OFF; echo \!*)" +alias WARNING "(echo -n ' ';BOLD_ON;echo -n 'WARNING: ';BOLD_OFF; echo \!*)" +alias NEWLINE "(echo '')" + + + +# set echo + +if (! $?iraf) then + echo "" + echo "Error: You must have the iraf env variable defined !" + echo "" + exit 1 +endif + +set exec = yes +set arch = `$iraf/unix/hlib/irafarch.csh -actual` + + +#============================================================================= +# Process any command line arguments. +#============================================================================= +while ("$1" != "") + switch ("$1") + case -n: # no execute + set exec = no + breaksw + default: + ERRMSG "$0: unknown argument $1" + breaksw + endsw + + if ("$2" == "") then + break + else + shift + endif +end + + + +#---------------------------------- +# Determine platform architecture. +#---------------------------------- + +set mach = `$iraf/unix/hlib/irafarch.csh -actual` +set hmach = `$iraf/unix/hlib/irafarch.csh -actual` + +echo "mach = " $mach +echo "hmach = " $hmach + +make generic + +echo -n "Making $arch binary distribution ...." + make generic + if ($exec == "yes") then + tar czf ../${arch}-bin.tar.gz bin.$arch */bin.$arch extern/*/bin.$arch + else + echo "tar czf ../${arch}-bin.tar.gz bin.$arch */bin.$arch extern/*/bin.$arch" + endif +echo " Done" diff --git a/unix/hlib/util.csh/mkclean b/unix/hlib/util.csh/mkclean new file mode 100755 index 00000000..6b7d3198 --- /dev/null +++ b/unix/hlib/util.csh/mkclean @@ -0,0 +1,121 @@ +#!/bin/csh -f +# +# MKCLEAN -- Make a pure source tree and configure the links for the +# current architecture. + + +unset noclobber +onintr cleanup_ +unalias cd cp cmp echo ln mv rm sed set grep ls chmod chown pwd touch sort which + +setenv path "(/sbin /usr/sbin /bin /usr/bin /usr/5bin /usr/ucb /etc /usr/etc $path /usr/local/bin /opt/local/bin /local/bin /home/local/bin /usr/openwin/bin /usr/X11R6/bin /usr/X11/bin)" + +# Utility aliases. +alias PUT "mv -f \!*; chown $user \!$ " # [MACHDEP] +alias BOLD_ON "(tput bold)" +alias BOLD_OFF "(tput sgr0)" +alias SO_ON "(tput smso)" +alias SO_OFF "(tput sgr0)" + +alias DO_OK "(echo -n '[ '; BOLD_ON; echo -n ' OK '; BOLD_OFF; echo ' ]')" +alias DO_WARN "(echo -n '[ '; BOLD_ON; echo -n 'WARN'; BOLD_OFF; echo ' ]')" +alias DO_FAIL "(echo -n '[ '; SO_ON; echo -n 'FAIL'; SO_OFF; echo ' ]')" + +alias ERRMSG "(echo -n ' ';BOLD_ON;echo -n 'ERROR: ' ;BOLD_OFF; echo \!*)" +alias WARNING "(echo -n ' ';BOLD_ON;echo -n 'WARNING: ';BOLD_OFF; echo \!*)" +alias NEWLINE "(echo '')" + + + +# set echo + +if (! $?iraf) then + echo "" + echo "Error: You must have the iraf env variable defined !" + echo "" + exit 1 +endif + +set exec = yes +set arch = `$iraf/unix/hlib/irafarch.csh` + + +#============================================================================= +# Process any command line arguments. +#============================================================================= +while ("$1" != "") + switch ("$1") + case -n: # no execute + set exec = no + breaksw + default: + ERRMSG "$0: unknown argument $1" + breaksw + endsw + + if ("$2" == "") then + break + else + shift + endif +end + + + + + +#---------------------------------- +# Determine platform architecture. +#---------------------------------- + +set mach = `$iraf/unix/hlib/irafarch.csh -actual` +set hmach = `$iraf/unix/hlib/irafarch.csh -actual` + +echo "mach = " $mach +echo "hmach = " $hmach + +echo -n "Clean host directories ...." + if ($exec == "yes") then + /bin/rm -f unix/bin.$arch/[agm-z]*.e unix/bin.$arch/lib[bco]*.a >& /dev/null + else + /bin/ls -l unix/bin.$arch/[agm-z]*.e unix/bin.$arch/lib[bco]*.a + endif +echo " Done" + + + +echo -n "Clean src directories ...." +foreach i (local math pkg sys noao/[adfimnorst]*) + if ($exec == "yes") then + find $i -type f -name \*.a -exec /bin/rm -f {} \; >& /dev/null + find $i -type f -name \*.e -exec /bin/rm -f {} \; >& /dev/null + find $i -type f -name \*.o -exec /bin/rm -f {} \; >& /dev/null + else + find $i -type f -name \*.a -exec /bin/ls -l {} \; + find $i -type f -name \*.e -exec /bin/ls -l {} \; + find $i -type f -name \*.o -exec /bin/ls -l {} \; + endif +end +echo " Done" + + +echo -n "Clean '$arch' bin directories ...." +if ($exec == "yes") then + /bin/rm -rf bin.$arch/lib[a-z]*.a >& /dev/null + /bin/rm -rf bin.$arch/*.[eoZ] >& /dev/null + /bin/rm -rf noao/bin.$arch/*.[aeoZ] >& /dev/null +else + /bin/ls -l bin.$arch/lib[a-z]*.a >& /dev/null + /bin/ls -l bin.$arch/*.[aeoZ] >& /dev/null + /bin/ls -l noao/bin.$arch/*.[aeoZ] >& /dev/null +endif +echo " Done" + + +echo -n "Cleaning spool files ...." +if ($exec == "yes") then + find . -name spool\* -print -exec /bin/rm -f {} \; >& /dev/null +else + find . -name spool\* -print +endif +echo " Done" diff --git a/unix/hlib/util.csh/mkdist b/unix/hlib/util.csh/mkdist new file mode 100755 index 00000000..2f0711bc --- /dev/null +++ b/unix/hlib/util.csh/mkdist @@ -0,0 +1,25 @@ +#!/bin/csh -f + +foreach i (cygwin freebsd linux linux64 macintel macosx sunos) + touch bin.$i/IRAF.NET + touch noao/bin.$i/IRAF.NET +end + +touch bin.cygwin/IB.CYGW.x86 +touch bin.freebsd/IB.FBSD.x86 +touch bin.linux/IB.LNUX.x86 +touch bin.linux64/IB.LNUX.x86_64 +touch bin.macintel/IB.MACX.x86_64 +touch bin.macosx/IB.MACX.UNI +touch bin.sunos/IB.SSUN.x86 +touch bin.ipad/IB.IPAD.ARM + +touch noao/bin.cygwin/NB.CYGW.x86 +touch noao/bin.freebsd/NB.FBSD.x86 +touch noao/bin.linux/NB.LNUX.x86 +touch noao/bin.linux64/NB.LNUX.x86_64 +touch noao/bin.macintel/NB.MACX.x86_64 +touch noao/bin.macosx/NB.MACX.UNI +touch noao/bin.sunos/NB.SSUN.x86 +touch noao/bin.ipad/NB.IPAD.ARM + diff --git a/unix/hlib/util.csh/mkproto b/unix/hlib/util.csh/mkproto new file mode 100755 index 00000000..f0fe1dbf --- /dev/null +++ b/unix/hlib/util.csh/mkproto @@ -0,0 +1,114 @@ +#!/bin/csh -f +# +# MKPROTO -- Generate the VOS prototype definitions. + +unalias chdir ls egrep wc rm + + +set vos_dir = "sys" +#set math_dir = "math" +set math_dir = "" +set xtools_dir = "pkg/xtools" +set ds_dir = "pkg/images/tv/display pkg/images/tv/wcslab" + +#set vosdirs = "$vos_dir $math_dir $ds_dir" +set vosdirs = "$vos_dir $math_dir $xtools_dir $ds_dir" + +set curdir = `echo $cwd` +set tproto = /tmp/_vosproto.$$ + + +foreach d ($vosdirs) + + # Process each of the subdirectories. + # + foreach sd (`find $d -type d -print`) + + # Skip the IMFORT library and any documentation directories + if ($sd:t != "doc" && "`echo $sd | egrep -e imfort`" == "" && \ + "`echo $sd | egrep -e osb`" == "" && \ + "`echo $sd | egrep -e memdbg`" == "" && \ + "`echo $sd | egrep -e nspp`" == "") then + + chdir $sd # go to subdirectory + + set nf = `ls -1 | egrep -e "\.f" | wc -l` # nfiles to process + set nx = `ls -1 | egrep -e "\.x" | wc -l` # nfiles to process + + echo "Processing: "$nx" "$nf" "$sd + if ($nf > 0 || $nx > 0) then + + # Skip any files beginning with the letters 'zz', e.g. test + # files like zzdebug.x + + foreach f ( [a-z][a-y]*.[xf] ) + if ($f != 'intrp.f' && \ + $f != 'xtpmmap.x' && \ + $f != 'ytpmmap.x') then + xc -c -/P $f >& /dev/null # make prototype + else + echo " Skipping " $f + endif + end + + egrep -h ^extern *.P >> $tproto # save prototypes + /bin/rm -f *.[oP] >& /dev/null # clean up + endif + + chdir $curdir # back to top + + else + echo " Skipping " $sd + endif + end +end + +# Sort the prototype file, exclude certain symbols which are duplicates +# in the VOS but harmless because they occur in places that never conflict, +# e.g. the stdgraph and imd kernels. + +cat $tproto | \ + egrep -v arbpix_ | \ + egrep -v imdgeg_ | \ + egrep -v stxset_ | \ + egrep -v stxpas_ | \ + egrep -v dgt_ | \ + egrep -v sgt_ | \ + egrep -v asider_ | \ + egrep -v asifit_ | \ + egrep -v bndsol_ | \ + egrep -v ffa_ | \ + egrep -v ffs_ | \ + egrep -v fft842_ | \ + egrep -v avdrs_ | \ + egrep -v asigrl_ | \ + egrep -v smooth_ | \ + egrep -v sigl2 | \ + egrep -v sigm2 | \ + egrep -v impcom_ | \ + egrep -v intrp | \ + egrep -v srch | \ + egrep -v codim | \ + egrep -v mrsole | \ + egrep -v mreval | \ + egrep -v \ icg | \ + egrep -v iclisd | \ + egrep -v gscr | \ + egrep -v imdcom | \ + egrep -v getrot | \ + egrep -v gtplot | \ + egrep -v xev | \ + egrep -v ceps | \ + egrep -v sgt | \ + egrep -v sgt | \ + egrep -v U_fp | \ + sort >$iraf/unix/hlib/libc/vosproto.h + +# sigl2* and sigm2* removed because of multiple uses in apps +# impcom removed because imio$dbc/impcom.x conflicts with plot$t_implot.x +# use of 'impcom' as a common +# intrp* removed because it's use is xtools$ was commented out +# srch* removed because it's use is xtools$ was commented out +# mrsole/mreval removed because of duplicate use (splot$deblend.x and +# xtools$numrecipes) +# icguag removed duplicate use in noao$imred/dtoi diff --git a/unix/hlib/util.csh/mksrc b/unix/hlib/util.csh/mksrc new file mode 100755 index 00000000..648b8e7c --- /dev/null +++ b/unix/hlib/util.csh/mksrc @@ -0,0 +1,117 @@ +#!/bin/csh -f +# +# MKSRC -- Make a pure source tree and configure the links for the +# current architecture. + + +unset noclobber +onintr cleanup_ +unalias cd cp cmp echo ln mv rm sed set grep ls chmod chown pwd touch sort which + +setenv path "(/sbin /usr/sbin /bin /usr/bin /usr/5bin /usr/ucb /etc /usr/etc $path /usr/local/bin /opt/local/bin /local/bin /home/local/bin /usr/openwin/bin /usr/X11R6/bin /usr/X11/bin)" + +# Utility aliases. +alias PUT "mv -f \!*; chown $user \!$ " # [MACHDEP] +alias BOLD_ON "(tput bold)" +alias BOLD_OFF "(tput sgr0)" +alias SO_ON "(tput smso)" +alias SO_OFF "(tput sgr0)" + +alias DO_OK "(echo -n '[ '; BOLD_ON; echo -n ' OK '; BOLD_OFF; echo ' ]')" +alias DO_WARN "(echo -n '[ '; BOLD_ON; echo -n 'WARN'; BOLD_OFF; echo ' ]')" +alias DO_FAIL "(echo -n '[ '; SO_ON; echo -n 'FAIL'; SO_OFF; echo ' ]')" + +alias ERRMSG "(echo -n ' ';BOLD_ON;echo -n 'ERROR: ' ;BOLD_OFF; echo \!*)" +alias WARNING "(echo -n ' ';BOLD_ON;echo -n 'WARNING: ';BOLD_OFF; echo \!*)" +alias NEWLINE "(echo '')" + + + +# set echo + + +if (! $?iraf) then + echo "" + echo "Error: You must have the iraf env variable defined !" + echo "" + exit 1 +endif + + +set exec = yes +set arch = `$iraf/unix/hlib/irafarch.csh` + + +#============================================================================= +# Process any command line arguments. +#============================================================================= +while ("$1" != "") + switch ("$1") + case -n: # no execute + set exec = no + breaksw + default: + ERRMSG "$0: unknown argument $1" + breaksw + endsw + + if ("$2" == "") then + break + else + shift + endif +end + + + + + +#---------------------------------- +# Determine platform architecture. +#---------------------------------- + +echo -n "Clean host directories ...." + if ($exec == "yes") then + /bin/rm -f unix/bin.*/[agm-z]*.e unix/bin.*/lib[bco]*.a >& /dev/null + else + /bin/ls -l unix/bin.*/[agm-z]*.e unix/bin.*/lib[bco]*.a + endif +echo " Done" + + + +echo -n "Clean src directories ...." +foreach i (local math pkg sys noao) + if ($exec == "yes") then + find $i -type f -name \*.a -exec /bin/rm -f {} \; >& /dev/null + find $i -type f -name \*.e -exec /bin/rm -f {} \; >& /dev/null + find $i -type f -name \*.o -exec /bin/rm -f {} \; >& /dev/null + find $i -type f -name OBJS\* -exec /bin/ls -l {} \; >& /dev/null + else + find $i -type f -name \*.a -exec /bin/ls -l {} \; + find $i -type f -name \*.e -exec /bin/ls -l {} \; + find $i -type f -name \*.o -exec /bin/ls -l {} \; + find $i -type f -name OBJS\* -exec /bin/ls -l {} \; + endif +end +echo " Done" + + +echo -n "Clean bin directories ...." +if ($exec == "yes") then + /bin/rm -rf bin.*/*.[aeoZ] noao/bin.*/*.[aeoZ] OBJS* >& /dev/null +else + /bin/ls -l bin.*/*.[aeoZ] noao/bin.*/*.[aeoZ] OBJS* +endif +echo " Done" + + +echo -n "Cleaning spool files ...." +if ($exec == "yes") then + find . -name spool\* -print -exec /bin/rm -f {} \; >& /dev/null + find . -name _spool\* -print -exec /bin/rm -f {} \; >& /dev/null +else + find . -name spool\* -print + find . -name _spool\* -print +endif +echo " Done" diff --git a/unix/hlib/util.csh/mksysgen b/unix/hlib/util.csh/mksysgen new file mode 100755 index 00000000..770bfd3c --- /dev/null +++ b/unix/hlib/util.csh/mksysgen @@ -0,0 +1,50 @@ +#!/bin/csh -f +# + +if (! $?iraf) then + #echo "" + #echo "Error: You must have the iraf env variable defined !" + #echo "" + #exit 1 + + set iraf = $cwd/ +endif + + +set c_start = `date` +/bin/rm -f spool */spool + + +$iraf/util/mkclean # clean old binaries + +cd $iraf/unix # NOVOS bootstrap +source hlib/irafuser.csh +sh -x mkpkg.sh |& tee -a spool + +cd $iraf/ # build NOVOS +mkpkg |& tee -a spool + +cd $iraf/unix # VOS bootstrap +source hlib/irafuser.csh +sh -x mkpkg.sh |& tee -a spool + +cd $iraf/vendor # build vendor libs +(make all |& tee -a ../spool.final) + +cd $iraf/ # build core system +mkpkg |& tee -a ../spool.final + +cd $iraf/noao # build NOAO package +setenv noao $cwd/ +mkpkg -p noao |& tee -a ../spool.final + +/bin/rm -rf bin*/pkgconfig # misc cleanup + +set c_end = `date` + + +echo "" +echo "" +echo "" +echo "Start: $c_start" +echo " End: $c_end" diff --git a/unix/hlib/util.csh/mkup b/unix/hlib/util.csh/mkup new file mode 100755 index 00000000..a55c4faf --- /dev/null +++ b/unix/hlib/util.csh/mkup @@ -0,0 +1,30 @@ +#!/bin/csh -f +# + +set iraf = $cwd/ +source $iraf/unix/hlib/irafuser.csh + +# Reconfigure the system for the proper architecture if needed. +if ($?IRAFARCH) then # use environment value + make $IRAFARCH +else # use actual value + set arch = `$iraf/unix/hlib/irafarch.csh -actual` + set cfgarch = `mkpkg arch` + if ($cfgarch[5] != $arch) then + #make $arch + setenv IRAFARCH $arch + endif +endif + +cd $iraf/ # build core system +mkpkg +mkpkg update + +cd $iraf/noao # build NOAO package +setenv noao $cwd/ +mkpkg -p noao + +cd $iraf/vo # build VO package +setenv vo $cwd/ +cd votools # build VOTOOLS package +mkpkg -p vo update diff --git a/unix/hlib/util.csh/mkupx b/unix/hlib/util.csh/mkupx new file mode 100755 index 00000000..85d73405 --- /dev/null +++ b/unix/hlib/util.csh/mkupx @@ -0,0 +1,15 @@ +#!/bin/csh -f +# + +set iraf = $cwd/ + +cd $iraf/ # build core system +mkpkg -x + +cd $iraf/noao # build NOAO package +setenv noao $cwd/ +mkpkg -x -p noao + +cd $iraf/vo # build VO package +setenv vo $cwd/ +mkpkg -x -p vo diff --git a/unix/hlib/util.csh/pkgclean b/unix/hlib/util.csh/pkgclean new file mode 100755 index 00000000..5dbf50cf --- /dev/null +++ b/unix/hlib/util.csh/pkgclean @@ -0,0 +1,89 @@ +#!/bin/csh -f +# +# PKGCLEAN -- Clean the named package, or all packages from the system. +# +# Usage: pkgclean [-all] [-dist] [-init] <pkg> +# +# Where -all clean all packages +# <pkg> package to be removed +# +# ---------------------------------------------------------------------------- + + +unset noclobber +unalias rm + +set all = no +set init = no + +# Process cmdline flags. +while ("$1" != "") + switch ("$1") + case -all: # clean all package sources + set all = yes + breaksw + case -init: # init all packages + set init = yes + breaksw + default: + set pkg = $1 + break + endsw + + shift +end + + +if ("$all" == "yes") then + if (-e ".repo_pkgs") then + foreach p (`cat .repo_pkgs`) + if (-e $p) then + /bin/rm -rf $p + mkdir $p + + echo "" > .installed + echo "" > .zzsetenv.def + endif + end + endif + +else if ("$init" == "yes") then + if (-e ".repo_pkgs") then + foreach p (`cat .repo_pkgs`) + if (-e $p) then + /bin/rm -rf $p + endif + end + endif + /bin/rm -rf Makefile >& /dev/null + /bin/rm -rf .installed >& /dev/null + /bin/rm -rf .repo* >& /dev/null + echo "" > .zzsetenv.def + +else + if (-e $pkg) then + /bin/rm -rf $pkg + mkdir $pkg + else + echo "Package '$pkg' is not currently installed" + exit 1 + endif +endif + + +# Normal exit. +exit 0 + + + +#============================================================================= +# Usage +#============================================================================= + +Usage: + echo "Usage: pkgclean [-all] [-dist] [-init] <pkg>" + echo "" + echo " Where -all clean all packages" + echo " <pkg> package to be removed" + +exit 0 diff --git a/unix/hlib/util.csh/pkgdel b/unix/hlib/util.csh/pkgdel new file mode 100755 index 00000000..fc8843d3 --- /dev/null +++ b/unix/hlib/util.csh/pkgdel @@ -0,0 +1,17 @@ +#!/bin/csh -f +# +# PKGDEL -- Delete an external package from the dynamic directory. +# +# + + +set bindir = "`dirname $0`" # get iraf root +set irafdir = $bindir:h + + + +if (-e $1) then + /bin/rm -rf $1 >& /dev/null +endif + +exit 0 diff --git a/unix/hlib/util.csh/pkgenv b/unix/hlib/util.csh/pkgenv new file mode 100755 index 00000000..9d4b9ada --- /dev/null +++ b/unix/hlib/util.csh/pkgenv @@ -0,0 +1,15 @@ +#!/bin/csh -f +# +# PKGENV -- Initialize the package environment + + +/bin/rm -f .installed .zzsetenv.def + +foreach p ( `cat .repo_pkgs` ) + + if (-e $p/.installed) then + cat $p/.installed >> .installed + echo "reset $p = $cwd/$p/" >> .zzsetenv.def + endif +end +echo "keep" >> .zzsetenv.def diff --git a/unix/hlib/util.csh/pkgget b/unix/hlib/util.csh/pkgget new file mode 100755 index 00000000..730485a3 --- /dev/null +++ b/unix/hlib/util.csh/pkgget @@ -0,0 +1,192 @@ +#!/bin/csh -f +# +# PKGGET -- Download the specified URL to the current directory. We use +# a command specific to the system we're on. We assume the URL has been +# properly escaped in the argument list. +# +# Usage: pkgget [-h] [-n] [-v] url +# +# Where -n no-op flag +# -v verbose output +# -h this message +# +# Example: +# % pkgget -q ftp://iraf.noao.edu/iraf/extern/foo-linux.tar.gz +# +# ---------------------------------------------------------------------------- + + +unset noclobber +onintr cleanup_ +unalias cd cp cmp echo ln mv rm sed set grep ls chmod chown pwd touch sort which +unalias ftp wget + +setenv path "(../util /sbin /usr/sbin /bin /usr/bin /usr/5bin /usr/ucb /etc /usr/etc $path /usr/local/bin /opt/local/bin /local/bin /home/local/bin)" + +# Utility aliases. +alias PUT "mv -f \!*; chown $user \!$ " # [MACHDEP] +alias BOLD_ON "(tput bold)" +alias BOLD_OFF "(tput sgr0)" +alias SO_ON "(tput smso)" +alias SO_OFF "(tput sgr0)" + +alias DO_OK "(echo -n '[ '; BOLD_ON; echo -n ' OK '; BOLD_OFF; echo ' ]')" +alias DO_WARN "(echo -n '[ '; BOLD_ON; echo -n 'WARN'; BOLD_OFF; echo ' ]')" +alias DO_FAIL "(echo -n '[ '; SO_ON; echo -n 'FAIL'; SO_OFF; echo ' ]')" + +alias ERRMSG "(echo -n ' ';BOLD_ON;echo -n 'ERROR: ' ;BOLD_OFF; echo \!*)" +alias WARNING "(echo -n ' ';BOLD_ON;echo -n 'WARNING: ';BOLD_OFF; echo \!*)" +alias NEWLINE "(echo '')" + + + +# set echo + + + +############################################################################## +# START OF MACHDEP DEFINITIONS. +############################################################################## + +# MACHDEP definitions which may be reset below. +set VERSION = `cat ../.version` + +# Utility aliases. + + +#---------------------------------- +# Determine platform architecture. +#---------------------------------- + +set UNAME="" +if (-e /usr/bin/uname) then + set uname_cmd = /usr/bin/uname + set UNAME=`/usr/bin/uname | tr '[A-Z]' '[a-z]'` +else if (-e /bin/uname) then + set uname_cmd = /bin/uname + set UNAME=`/bin/uname | tr '[A-Z]' '[a-z]'` +else + WARNING "No 'uname' command found to determine architecture." + exit 1 +endif + +switch ($UNAME) + case linux: + set dlcmd = "/usr/bin/wget" + breaksw + case darwin: # Mac OSX/iOS + case macosx: + case macintel: + case ipad: + #set dlcmd = "/usr/bin/ftp -A" + set dlcmd = "/usr/bin/ftp" + breaksw + + # Other architectures to be added here + + default: + ERRMSG "Unable to determine platform architecture." + exit 1 +endsw + +# If we don't have a download command installed, use our own ..... +if (! -e $dlcmd) then + set dlcmd = `dirname $0`/fget +endif + +############################################################################## +# END OF MACHDEP DEFINITIONS. +############################################################################## + +#============================================================================= +# Declarations and initializations. +#============================================================================= + +set exec = yes +set verb = no +set url = "" + + +# Process cmdline flags. +while ("$1" != "") + switch ("$1") + case -n: # no execute + set exec = no + breaksw + case -v: # be chatty + set verb = yes + set quiet = no + breaksw + case -h: # print help summary + goto Usage + default: + set url = $1 + break + endsw + + if ("$2" == "") then + break + else + shift + endif +end + + +# Error checks. +if ("$url" == "") then + if ("$verb" == "yes") then + echo "ERROR: URL not specified" + endif + exit 1 +endif + + +# Do it. +if ("$exec" == "yes") then + if ("$verb" == "yes") then + echo "Downloading "$url" ...." + endif + + if ("$verb" == "no") then + $dlcmd $url >& /dev/null + else + $dlcmd $url + endif + + if ("$verb" == "yes") then + echo "done" + endif +endif + + +# Verify we have the file. +if (! -e $url:t) then + if ("$verb" == "yes") then + echo "Error downloading file '"$url:t"'" + endif + exit 1 + +else + if ($#argv > 1) then + mv $url:t $2 + endif +endif + +# Normal exit. +exit 0 + + + +#============================================================================= +# Usage +#============================================================================= + +Usage: + echo "Usage: pkgget [-h] [-n] [-q | -v] url" + echo "" + echo " where -n # no execute" + echo " -q # suppress output" + echo " -v # verbose output" + echo " -h # this message" + +exit 0 diff --git a/unix/hlib/util.csh/pkginit b/unix/hlib/util.csh/pkginit new file mode 100755 index 00000000..b93eb61d --- /dev/null +++ b/unix/hlib/util.csh/pkginit @@ -0,0 +1,43 @@ +#!/bin/csh -f +# +# PKGINIT - Initialize the dynamic package directory by fetching the most +# recent repository definition files. + +unalias grep + +set bindir = "`dirname $0`" # get iraf root directory +set irafdir = $bindir:h + +set REPO = `${irafdir}/util/pkgrepo` # get repo url +set man = ".repo_manifest" +set arch = `${irafdir}/unix/hlib/irafarch.csh -actual` + + +$irafdir/util/pkgget ${REPO}/REPO.MANIFEST .repo_manifest +if ($status == 1) then + echo "Cannot download repository manifest file, quitting." + exit $status +endif + +$irafdir/util/pkgget ${REPO}/REPO.DESC .repo_desc +if ($status == 1) then + echo "Cannot download repository description file, quitting." + exit $status +endif + + +# Create a list of packages available for the current platform. We pull +# out the list from the repository manifest of all packages. If we have +# IRAFARCH defined, assumed we're interested in managing multiple +# architectures so don't filter by the current architecture. + +if ($?IRAFARCH) then + cat $man | egrep -v "^#" | awk '{printf("%s\n", $2)}' | uniq > .repo_pkgs + cat $man > .repo_local +else + cat $man | grep "${arch}\ " | awk '{printf("%s\n", $2)}' > .repo_pkgs + cat $man | grep "${arch}\ " > .repo_local +endif + + +exit 0 diff --git a/unix/hlib/util.csh/pkginst b/unix/hlib/util.csh/pkginst new file mode 100755 index 00000000..2111a607 --- /dev/null +++ b/unix/hlib/util.csh/pkginst @@ -0,0 +1,86 @@ +#!/bin/csh -f +# +# PKGINST - Install the named package. + +unalias grep sort uniq ls awk + +if ($#argv < 1) then + exit 0 +else + set pkg = $1 +endif + +set bindir = "`dirname $0`" # get iraf root directory +set irafdir = $bindir:h + +set REPO = `${irafdir}/util/pkgrepo` +if ($?IRAFARCH) then + set arch = $IRAFARCH +else + set arch = `${irafdir}/unix/hlib/irafarch.csh -actual` +endif + +echo "Setting architecture: '$arch' .... " + + +# Get any dependency package names. +set deps=`grep ^$pkg .repo_desc | awk '{printf("%s\n",$2)}' | sed -e 's/,/ /g'` +set pkg_dep = "" +foreach d ( $deps ) + if ("$d" != "none") then + echo "Adding dependency '$d' ...." + set pkg_dep = "$pkg_dep $d" + endif +end + +# Make a unique list of package, i.e. remove multiple instances of a package. +# [Note: Not used, the manifest should have this already. ] +set list = `echo $pkg_dep $pkg|awk 'BEGIN {RS=" |\n";}{print $1;}'|sort|uniq` + +# Process the requested package and any dependencies. +foreach ip ($pkg_dep $pkg) + + set pfile = `grep \ $ip\ .repo_manifest | grep ${arch}\ | head -1 | awk '{printf("%s\n",$4)}'` + + echo $pfile | grep src.tar.gz > /dev/null + if ($status == 0) then + set src_only = 1 + else + set src_only = 0 + endif + + # Remove an existing package file. + if (-e $pfile) then + /bin/rm -f $pfile + endif + + # Download the repo file and unpack it. + echo -n "Installing package '$ip' .... " + ${irafdir}/util/pkgget ${REPO}/$pfile + if ($status == 1) then + echo " [Error]" + exit $status + endif + + if (-e $pfile) then + + tar zxf $pfile + /bin/rm -f $pfile + echo `date +%s`" " ${ip}.${arch} > $ip/.installed.${arch} + echo `date +%s`" " $ip > $ip/.installed + + if ($src_only == 1) then + echo " [SOURCE ONLY]" + echo `date +%s`" " $ip > $ip/.src_only + else + echo " [OK]" + endif + else + echo " [Error]" + endif + + ${irafdir}/util/pkgenv -init + +end + +exit 0 diff --git a/unix/hlib/util.csh/pkgrepo b/unix/hlib/util.csh/pkgrepo new file mode 100755 index 00000000..f87cbe66 --- /dev/null +++ b/unix/hlib/util.csh/pkgrepo @@ -0,0 +1,13 @@ +#!/bin/csh -f +# +# PKGREPO - Get the repository base URI, either from the environment +# variable 'IRAF_REPO' or the default. + + +if ($?IRAF_REPO) then + echo $IRAF_REPO +else + echo "ftp://iraf.noao.edu/iraf/v216/REPO" +endif + +exit 0 diff --git a/unix/hlib/util.csh/pkgupdate b/unix/hlib/util.csh/pkgupdate new file mode 100755 index 00000000..7d93bcd7 --- /dev/null +++ b/unix/hlib/util.csh/pkgupdate @@ -0,0 +1,106 @@ +#!/bin/csh -f +# +# PKGUPDATE - Update the named packages + +unalias grep ls + +set pkg = "" +set all = no +set list_only = no + +if ($#argv < 1) then + exit 0 +else + # Process cmdline flags. + while ("$1" != "") + switch ("$1") + case -all: # clean all package sources + set all = yes + breaksw + case -list: # list packages needing updating + set list_only = yes + breaksw + default: + set pkg = $1 + break + endsw + + shift + end +endif + + +set bindir = "`dirname $0`" # get iraf root directory +set irafdir = $bindir:h + +set REPO = `${irafdir}/util/pkgrepo` +if ($?IRAFARCH) then + set arch = $IRAFARCH +else + set arch = `${irafdir}/unix/hlib/irafarch.csh -actual` +endif + +echo "Updating repository data ...." +../util/pkginit # init repository information + +# Check for a self-update. +if ("$pkg" == "-self") then + echo "Updating utility scripts ...." + /bin/rm -f /tmp/util.tgz + ../util/pkgget ${REPO}/util-universal.tar.gz /tmp/util.tgz + (chdir ../util ; tar zxf /tmp/util.tgz ; /bin/rm -f /tmp/util.tgz) + echo "Done" + exit 0 +endif + +# Check for a extern update. +if ("$pkg" == "-config") then + echo "Updating config script ...." + ../util/pkgget ${REPO}/config-universal configure + chmod 777 configure + echo "Done" + exit 0 +endif + + + +# Process the requested package and any dependencies. +foreach ip ( `cat .repo_pkgs` ) + + if (-e $ip/.installed) then + + set pd = `grep $ip $ip/.installed | awk '{printf("%s\n", $1)}'` + set rd = `grep $ip .repo_manifest | head -1 | awk '{printf("%s\n", $3)}'` + + set alist = `(chdir $ip; ls -1 .inst*.* | sed -e "s/\.installed\.//g")` + + if ($rd > $pd) then + + # Update each installed architecture automatically. + foreach a ( $alist ) + + if ("$list_only" == "yes") then + printf "Package %-12s for %-8s is out of date ....\n" $ip $a + else + if ("$all" == "yes" || "$ip" == "$pkg") then + echo "Updating package '$ip' for '$a' ...." + ../util/pkginst $ip + endif + endif + end + + else + if ("$list_only" == "yes" || $rd <= $pd) then + printf "Package %-12s is current ....\n" $ip + endif + endif + + else + printf "Package %-12s is not installed ....\n" $ip + endif + + ${irafdir}/util/pkgenv -init +end + +echo "Done" +exit 0 diff --git a/unix/hlib/util.csh/self_update b/unix/hlib/util.csh/self_update new file mode 100755 index 00000000..9ba35b43 --- /dev/null +++ b/unix/hlib/util.csh/self_update @@ -0,0 +1,37 @@ +#!/bin/csh -f +# +# SELF_UPDATE - Update the update scripts. + +unalias grep ls + +set iraf = $cwd/ +source $iraf/unix/hlib/irafuser.csh + +chdir $iraf/util + +set REPO = `${iraf}/util/pkgrepo` +if ($?IRAFARCH) then + set arch = $IRAFARCH +else + set arch = `${iraf}/unix/hlib/irafarch.csh -actual` +endif + + +echo -n "Updating utility scripts ...." + +# Delete any existing downloads. +if (-e /tmp/util.tgz) then + /bin/rm -f /tmp/util.tgz +endif + +# Get the latest script distribution. +./fget -o /tmp/util.tgz ${REPO}/util-universal.tar.gz + +# Go to iraf root, unpack and clean up. Using the IRAF root gives us +# the chance to update the toplevel Makefile or other build scripts in +# the system, e.g. in the 'vendor' directory. +(chdir ../ ; tar zxf /tmp/util.tgz ; /bin/rm -f /tmp/util.tgz ) + +echo "Done" + +exit 0 diff --git a/unix/hlib/util.sh b/unix/hlib/util.sh new file mode 100755 index 00000000..be8b7c85 --- /dev/null +++ b/unix/hlib/util.sh @@ -0,0 +1,115 @@ +#!/bin/sh +# +# UTIL.SH -- Utility support script for IRAF commands. +# +# ---------------------------------------------------------------------------- + + +############################################################################## +# Start of MACHDEP definitions. +############################################################################## + +# MACHDEP definitions which may be reset below. +LS() { + /bin/ls # [MACHDEP] +} ; export LS + + +export IRAF_VERSION="V2.16" +export V=`/bin/echo $IRAF_VERSION | cut -c2-5` + +export hilite=1 + + +############################################################################## +# Utility aliases. +############################################################################## + +ECHO() { + if [ "$1" == "-n" ]; then + /bin/echo -n "$2" + else + /bin/echo "$1" + fi +} ; export ECHO + +RM() { + rm -rf $1 +} ; export RM + +LN() { + ln -s $2 $1 +} ; export LN + +BOLD_ON() { + if [ $hilite ]; then tput bold; fi +} ; export BOLD_ON +BOLD_OFF() { + if [ $hilite ]; then tput sgr0; fi +} ; export BOLD_OFF +SO_ON() { + if [ $hilite ]; then tput smso; fi +} ; export SO_ON +SO_OFF() { + if [ $hilite ]; then tput sgr0; fi +} ; export SO_OFF + +DO_OK() { + ECHO -n "[ "; BOLD_ON; ECHO -n " OK "; BOLD_OFF; ECHO " ]" +} ; export DO_OK + +DO_WARN() { + ECHO -n "[ "; BOLD_ON; ECHO -n "WARN"; BOLD_OFF; ECHO " ]" +} ; export DO_WARN + +DO_FAIL() { + ECHO -n "[ "; SO_ON; ECHO -n "FAIL"; SO_OFF; ECHO " ]" +} ; export DO_FAIL + +NEWLINE() { + ECHO '' +} ; export NEWLINE + + + +PUT() { + cp -p $1 $2 +} ; export PUT + +PROMPT() { + BOLD_ON; ECHO -n $1; BOLD_OFF; ECHO -n " (yes): " +} ; export PROMPT + +PROMPT_N() { + BOLD_ON; ECHO -n $1; BOLD_OFF; ECHO -n " (no): " +} ; export PROMPT_N + +MSG() { + ECHO -n " "; BOLD_ON; ECHO -n "*** "; BOLD_OFF; ECHO $1 +} ; export MSG + +MSGB() { + ECHO -n " ";BOLD_ON;ECHO -n "*** ";ECHO $1; BOLD_OFF +} ; export MSGB + +MSGN() { + ECHO -n " ";BOLD_ON;ECHO -n "*** ";BOLD_OFF; ECHO -n $1 +} ; export MSGB + +MSGBN() { + ECHO -n " ";BOLD_ON;ECHO -n "*** ";ECHO -n $1; BOLD_OFF +} ; export MSGB + +ERRMSG() { + ECHO -n " ";BOLD_ON;ECHO -n "ERROR: " ;BOLD_OFF; ECHO $1 +} ; export ERRMSG + +WARNING() { + ECHO -n " "; + BOLD_ON; + ECHO -n "WARNING: "; + BOLD_OFF; + ECHO $1 +} ; export WARNING + + diff --git a/unix/hlib/utime b/unix/hlib/utime new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/unix/hlib/utime diff --git a/unix/hlib/vocl.csh b/unix/hlib/vocl.csh new file mode 120000 index 00000000..bc54b0f4 --- /dev/null +++ b/unix/hlib/vocl.csh @@ -0,0 +1 @@ +cl.csh
\ No newline at end of file diff --git a/unix/hlib/vocl.sh b/unix/hlib/vocl.sh new file mode 100755 index 00000000..2efae89d --- /dev/null +++ b/unix/hlib/vocl.sh @@ -0,0 +1,165 @@ +#!/bin/bash +# +# CL.SH -- Startup the version of the CL executable compiled for the +# architecture or floating point hardware appropriate for the current +# machine. This script can be used to invoke a number of CL flavors +# depending on how it is called. The install script will create a 'cl' +# and 'ecl' command link to this script with the intent that a different +# binary would be started for each command. + + +# Determine CL binary to run based on how we were called. + + +nm=${0##*/} +cl_binary="vocl.e" + +case "$nm" in + "cl" | "cl.sh") + cl_binary="cl.e" + ;; + "ecl" | "ecl.sh") + cl_binary="ecl.e" + ;; + "vocl" | "vocl.sh") + cl_binary="vocl.e" + ;; + *) + if (( $# > 1 )); then + if [ $1 == "-old" -o $1 == "-o" ]; then + cl_binary="cl.e" + elif [ $1 == "-ecl" -o $1 == "-e" ]; then + cl_binary="ecl.e" + elif [ $1 == "-vo" ]; then + cl_binary="vocl.e" + elif [ ${1##*.} == "c" ]; then + # Workaround for autoconf scripts attempting to use this + # command as a valid compiler option. On some systems (mostly + # Debian) a valid CC command can't be found and eventually + # the 'cl' (lisp) compiler is tried. It will always apparently + # have the conftest.c test file, so simply exit with a code to + # tell autoconf it won't work. + exit 1 + fi + fi +esac + +# Determine IRAF root directory (value set in install script). +d_iraf="/iraf/iraf/" +if [ -n $iraf ]; then + if [ ! -e $iraf ]; then + echo "Warning: iraf=$iraf does not exist (check .cshrc or .login)" + echo "Session will default to iraf=$d_iraf" + unset iraf ; sleep 3 + fi +fi +if [ -z $iraf ]; then + export iraf="$d_iraf" +fi + +# Check for a version query. +if [ $# > 1 ]; then + case "$1" in + "-v" | "-V" | "-version" | "--version") + head -1 $iraf/unix/hlib/motd + exit 0 + ;; + *) + ;; + esac +fi + + +# Determine platform architecture. +if [ -e $iraf/unix/hlib/irafarch.sh ]; then + ACTUAL_ARCH=`$iraf/unix/hlib/irafarch.sh -actual` +else + ACTUAL_ARCH=$IRAFARCH +fi + +if [ -n "$IRAFARCH" ]; then + if [ -e $iraf/bin.${IRAFARCH}/${cl_binary} ]; then + MACH=$IRAFARCH + else + echo "ERROR: No $iraf/bin.${IRAFARCH}/${cl_binary} binary found." + if [ "$ACTUAL_ARCH" != "$IRAFARCH" ]; then + echo "ERROR: IRAFARCH set to '$IRAFARCH', should be '$ACTUAL_ARCH'" + fi + exit 1 + fi + export arch=".$MACH" + +else + os_mach=`uname -s | tr '[A-Z]' '[a-z]' | cut -c1-6` + + if [ -e $iraf/unix/hlib/irafarch.csh ]; then + MACH=`$iraf/unix/hlib/irafarch.csh` + else + MACH=$os_mach + fi + + if [ "$os_mach" == "linux" ]; then # handle linux systems + if [ `uname -m` == "x86_64" ]; then + export mach="linux64" + else + export mach="linux" + fi + elif [ "$os_mach" == "darwin" ]; then # handle Mac systems + if [ "`uname -m`" == "x86_64" ]; then + export mach="macintel" + else + export mach="macosx" + fi + elif [ "$os_mach" == "cygwin" ]; then + export mach="cygwin" + else + mach=`uname -s | tr '[A-Z]' '[a-z]'` + fi + + export arch=".$MACH" + if [ -z $IRAFARCH ]; then + export IRAFARCH="$MACH" + fi + + if [ ! -e $iraf/bin.${MACH}/${cl_binary} ]; then + echo "ERROR: No $iraf/bin.${IRAFARCH}/${cl_binary} binary found." + exit 1 + fi +fi + + +# Recent linux systems display a problem in how pointer addresses +# interact with the stack and can result in a segfault. Remove the +# stacksize limit for IRAF processes until this is better understood. +if [ "$IRAFARCH" == "redhat" -o \ + "$IRAFARCH" == "linux64" -o \ + "$IRAFARCH" == "linux" ]; then + ulimit -s unlimited +fi + + +# Just run the CL if IRAFARCH already defined. +if [ -n "$IRAFARCH" ]; then + if [ -z $IRAFARCH ]; then + export arch="" + else + export arch=".$IRAFARCH" + fi + + export IRAFBIN=${iraf}bin$arch/ + file=${IRAFBIN}$cl_binary + if [ -e $file ]; then + exec $file + else + echo "$file not found" + fi +fi + + +# Set the architecture to be used. +export IRAFARCH=$MACH +export arch=.$IRAFARCH +export IRAFBIN=${iraf}bin$arch/ + +# Run the desired CL. +exec ${IRAFBIN}$cl_binary diff --git a/unix/hlib/zzsetenv.def b/unix/hlib/zzsetenv.def new file mode 100644 index 00000000..881d9c7c --- /dev/null +++ b/unix/hlib/zzsetenv.def @@ -0,0 +1,119 @@ +# Global IRAF base environment list. + +set pkglibs = "hlib$libc/" + +# The following should be commented out or reset to "no" to enable world +# coordinate support (MWCS) in V2.9. Note however that the IRAF packages +# have not yet been modified to use MWCS, and enabling MWCS may cause these +# packages to misbehave. + +#set nomwcs = yes + +# The following can be used to en/disable the VO modifications in the system. +# The 'use_vo' variable can be used to globally disable features, finer +# grained controls might also be added. + +set use_vo = yes +set use_new_imt = yes +set vo_prefetch = yes +set vo_nthreads = 4 +set vo_runid = "iraf2161" + +set samp_auto = yes +set samp_onstart = no + + +# Default cache directory. +set cache = "tmp$cache/" +set cache_age = 30 + + +# Local system defaults. + +set clobber = no +set imclobber = no +set cmbuflen = 128000 +set editor = vi +set filewait = yes +set glbcolor = "pt=3,fr=9,al=3,tl=6,ax=5,tk=5" +set graphcap = dev$graphcap +set imtype = "fits" +set imextn = "oif:imh fxf:fits,fit,fts plf:pl qpf:qp stf:hhh,??h" +set min_lenuserarea = 64000 +set multversions = no +set printer = lp +set pspage = "letter" +set stdgraph = xgterm +set stdimage = imt512 +set stdimcur = stdimage +set stdplot = lp +set stdvdm = uparm$vdm +set tapecap = dev$tapecap +set termcap = dev$termcap +set terminal = xgterm +set ttybaud = 9600 +set ttyncols = 80 +set ttynlines = 40 +set version = "NOAO/IRAF V2.16.1" + +# System directories. + +set as = "host$as/" +set bin = "iraf$bin(arch)/" +set boot = "host$boot/" +set dev = "iraf$dev/" +set doc = "iraf$doc/" +set hlib = "host$hlib/" +set lib = "iraf$lib/" +set math = "iraf$math/" +set os = "host$os/" +set osb = "sys$osb/" +set pkg = "iraf$pkg/" +set sys = "iraf$sys/" + +set clio = "sys$clio/" +set dbio = "sys$dbio/" +set debug = "sys$debug/" +set etc = "sys$etc/" +set fio = "sys$fio/" +set flib = "sys$flib/" +set fmio = "sys$fmio/" +set fmtio = "sys$fmtio/" +set gio = "sys$gio/" +set gty = "sys$gty/" +set imfort = "sys$imfort/" +set imio = "sys$imio/" +set ki = "sys$ki/" +set libc = "sys$libc/" +set memio = "sys$memio/" +set mtio = "sys$mtio/" +set mwcs = "sys$mwcs/" +set plio = "sys$plio/" +set pmio = "sys$pmio/" +set psio = "sys$psio/" +set qpoe = "sys$qpoe/" +set tty = "sys$tty/" +set vops = "sys$vops/" + +# System package directories. + +set cl = "pkg$cl/" +set clpackage = "hlib$" +set dataio = "pkg$dataio/" +set dbms = "pkg$dbms/" +set images = "pkg$images/" +set language = "pkg$language/" +set lists = "pkg$lists/" +set obsolete = "pkg$obsolete/" +set plot = "pkg$plot/" +set proto = "pkg$proto/" +set softools = "pkg$softools/" +set system = "pkg$system/" +set utilities = "pkg$utilities/" +set xtools = "pkg$xtools/" + + +# Load definitions for any locally added external packages. + +set @hlib$extern.pkg +set @iraf$extern/.zzsetenv.def |