home *** CD-ROM | disk | FTP | other *** search
- Subject: v23i108: ABC interactive programming environment, Patch3
- Newsgroups: comp.sources.unix
- Approved: rsalz@uunet.UU.NET
- X-Checksum-Snefru: 34d706c0 6ee2f5b7 a706d021 f9222d8a
-
- Submitted-by: timo@cwi.nl
- Posting-number: Volume 23, Issue 108
- Archive-name: abc/patch3
-
- This is the second patch from the authors for the ABC interactive
- programming environment. It contains some fixes for minor bugs, reported
- in comp.sources.d, or already found by us before.
-
- Most fixed problems concern different brands of Unix:
- - the getcwd() problem on ATT System V machines,
- - conflicts with library names, e.g. compound() and remove(),
- - better guess of Unix-brand in the Setup script, leaving the ultimate
- choice to the installer.
-
- Another major improvement is that the installer does not need to execute
- 'make makefiles' and 'make depend' anymore; you can immediately start with
- 'make all'. We experienced that these features, intended to help in
- porting ABC to other platforms, only caused confusion in assisting people
- with installation problems.
-
- If you have ftp-ed your version of ABC (e.g. as abc.unix.tar.Z) you can
- also apply this patch to incorporate these fixes.
-
- If you want to port ABC to other systems, contact us (at abc@cwi.nl) and
- we will send you a beta version for porters, with lots of help,
- guidelines, etc. shortly.
-
- groetjes, Timo Krijnen (timo@cwi.nl).
-
- PS. This patch will overwrite existing files, without warning. It also
- assumes the program 'patch' is in your $PATH; if you do not have 'patch'
- you can apply the patches at the end manually since they are not that
- large.
-
- -------
- : This is a shell archive.
- : Extract with 'sh this_file'.
- echo 'Start of second Authors patch for ABC system (bugfixes):'
- echo 'x - abc/Setup'
- sed 's/^X//' > 'abc/Setup' << 'EOF'
- X: 'Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1988.'
- X
- Xecho "Configuration questions for the ABC system."
- X
- X: some greps do not return status, fix this first.
- Xecho "grimblepritz" >grimble
- Xif grep blurfldyick grimble >/dev/null 2>&1 ; then
- X contains=./contains
- Xelse
- X if grep grimblepritz grimble >/dev/null 2>&1 ; then
- X contains=grep
- X else
- X contains=./contains
- X fi
- Xfi
- Xrm grimble
- X: the following should work in any shell
- Xcase $contains in
- X./contains)
- X echo " "
- X echo "Grep doesn't return a status; attempting remedial action."
- X cat >contains <<'EOF'
- Xgrep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
- XEOF
- X chmod 755 ./contains;;
- Xesac
- X
- X: 'Determine if echo -n works'
- Xcase `echo -n foo` in
- X-n*) n="" ;;
- X*) n=-n ;;
- Xesac
- X
- X: 'Get answers from previous run'
- Xif test -r answers
- Xthen
- X . ./answers
- Xelse
- X rootdef="/tmp/abc"
- X abcdef="/usr/local"
- X libdef="/usr/local/lib/abc"
- X mandef="/usr/man/manl"
- Xfi
- X
- X: 'Are we preparing for cross compilation?'
- Xecho " "
- Xecho $n "Are you going to cross-compile the ABC system to a remote machine? [no] "
- Xif ./readyn "$n"
- Xthen
- Xremote=" remote"
- Xrootdir='blurfl'
- Xwhile test ! -d "$rootdir" ; do
- X case $rootdir in
- X blurfl)
- X echo " "
- X echo "Then please type the full pathname of a local directory"
- X echo "where you have write permission"
- X echo "and which we can use as a local root to install"
- X echo "the ABC system for you to copy to the remote machine"
- X echo $n " [default $rootdef] "
- X ;;
- X *) echo "$rootdir does not appear to exist."
- X echo $n "Are you sure you typed the right name? [no] "
- X if ./readyn "$n"
- X then
- X echo "Don't forget to make $rootdir before 'make install'."
- X else
- X echo $n "Please try again [default $rootdef] "
- X fi
- X ;;
- X esac
- X read rootdir
- X case $rootdir in
- X "") rootdir=$rootdef;;
- X esac
- Xdone
- Xelse
- Xecho "No cross compilation worries then."
- Xremote=""
- Xrootdir=""
- Xfi
- X
- X: 'What C compiler?'
- Xecho " "
- Xecho $n "C compiler to use [default cc] "
- Xread ans
- Xcase $ans in
- X'') cc="cc";;
- X*) cc="$ans";;
- Xesac
- Xecho "We will use '$cc' to invoke the C compiler."
- X
- X: 'What unix?'
- Xecho " "
- Xecho $n "Finding out about your brand of unix ... "
- Xcat >brand.c <<EOF
- X#include <stdio.h>
- X#include <signal.h>
- Xmain() {
- X#ifdef SIGXCPU
- X#ifdef SIGVTALRM
- X printf("BSD4_2\n");
- X#else
- X printf("BSD\n");
- X#endif
- X#else
- X#ifdef SIGPWR
- X printf("ATT\n");
- X#else
- X printf("unknown\n"); /* Version 7 we hope ... */
- X#endif
- X#endif
- X}
- XEOF
- X$cc brand.c -o brand
- Xunix=`./brand`
- Xrm -f brand*
- X
- Xecho " "
- Xcase $unix in
- XBSD4_2)
- X echo "You seem to be running Berkeley's BSD unix version 4.2,"
- X echo "or some compatible unix version."
- X defunix=1
- X ;;
- XBSD)
- X echo "You seem to be running Berkeley's BSD unix,"
- X echo "or some compatible unix version."
- X defunix=2
- X ;;
- XATT)
- X echo "You seem to be running ATT's System III or System V unix,"
- X echo "or some compatible unix version."
- X defunix=3
- X ;;
- X*) defunix=5;;
- Xesac
- X
- Xecho "The ABC system can be configured for:"
- Xecho " 1) Berkeley's BSD unix, version 4.2 or newer;"
- Xecho " 2) Berkeley's BSD unix, version 4.1 or older;"
- Xecho " 3) ATT's System III or System V unix;"
- Xecho " 4) Bell Labs Version 7;"
- Xecho " 5) any other unix."
- X
- Xans="again"
- Xwhile test "$ans" = "again" ; do
- X echo $n "Please type the number of the configuration you want [default $defunix] "
- X read ans
- X case $ans in
- X '') ans="default";;
- X 1|2|3|4|5) defunix=$ans;;
- X *) ans="again";;
- X esac
- Xdone
- X
- Xcase $defunix in
- X1) unix="BSD4_2";;
- X2) unix="BSD";;
- X3) unix="ATT";;
- X4) unix="VERSION7";;
- X5) unix="unknown"
- X echo "See ./unix/*.h (especially comp.h and os.h) and ./Problems in case of problems.";;
- Xesac
- X
- X: 'tty or termio system?'
- Xecho " "
- Xecho $n "Checking for tty or termio system ... "
- Xtermio=""
- Xcase $unix in
- XATT) files="termio.h sgtty.h";;
- X*) files="sgtty.h termio.h";;
- Xesac
- Xfor f in $files
- Xdo
- X if test -r /usr/include/$f
- X then
- X case $f in
- X termio.h)
- X termio="#define"
- X echo "termio.h found."
- X break;;
- X sgtty.h)
- X termio="#undef"
- X echo "sgtty.h found."
- X break;;
- X esac
- X fi
- Xdone
- Xcase $termio in
- X'') echo " "
- X echo "Neither termio.h nor sgtty.h found."
- X echo "See ./unix/trm.c, ./unix/keys.c and ./keys/abckeys.c"
- X echo "in case of problems."
- X termio="#undef "
- Xesac
- X
- X: 'Include <strings.h> or <string.h>?'
- Xecho " "
- Xecho $n "Finding include file for string operations ... "
- Xif test -r /usr/include/strings.h
- Xthen
- X strs="<strings.h>"
- X echo "strings.h found."
- Xelse
- X if test -r /usr/include/string.h
- X then
- X strs="<string.h>"
- X echo "string.h found."
- X else
- X strs="no_strs"
- X echo " "
- X echo "Neither strings.h nor string.h found."
- X echo "We will add some external definitions to ./unix/os.h."
- X fi
- Xfi
- X
- X: 'Some ATT System V have <unistd.h> for <sys/file.h>'
- X: 'Some systems have both and may need either one, so we must check'
- Xecho " "
- Xecho $n "Finding include file for access modes ... "
- Xcase $unix in
- XATT) files="sys/file.h unistd.h";;
- X*) files="unistd.h sys/file.h";;
- Xesac
- Xmodes="no_modes"
- Xfor f in $files
- Xdo
- X if $contains F_OK /usr/include/$f >/dev/null 2>&1
- X then
- X modes="<$f>"
- X echo "proper $f found."
- X break
- X fi
- Xdone
- Xcase $modes in
- Xno_modes)
- X echo " "
- X echo "No access mode definitions found in sys/file.h or unistd.h."
- X echo "We will substitute our own definitions in ./unix/os.h."
- X ;;
- Xesac
- X
- X: 'Some Berkeley systems (and the PC:-) have ftime(), including <sys/timeb.h>'
- Xecho " "
- Xecho $n "Finding include file for ftime(3) ... "
- Xif test -r /usr/include/sys/timeb.h
- Xthen
- X ftime="#define"
- X echo "sys/timeb.h found."
- Xelse
- X ftime="#undef "
- X echo " "
- X echo "No sys/timeb.h found."
- X echo "We will assume ftime(3) is not available in ./unix/comp.h."
- X echo "The ABC function \"now\" will only return entire seconds."
- Xfi
- X
- X: 'Check for void type'
- Xecho " "
- Xecho $n "Checking to see if your compiler accepts the void type ... "
- Xcat >void.c << EOF
- Xvoid main();
- XEOF
- Xif $cc -c void.c >/dev/null 2>&1
- Xthen
- X void="(void)"
- X echo "yes, it does."
- Xelse
- X void=" "
- X echo "no, it doesn't."
- X echo "We will use an empty VOID in casts."
- Xfi
- Xrm -f void.c void.o
- X
- X: 'Determine type for signal handlers'
- Xcase $void in
- X"(void)")
- Xecho " "
- Xecho $n "Finding type for signal handlers ... "
- Xecho "#include <signal.h>" >sigtype.c
- Xecho "main() { void (*oldsig)(); oldsig= signal(SIGINT, SIG_IGN); }" >>sigtype.c
- X$cc -c sigtype.c >warnings 2>&1
- Xif test -s warnings
- Xthen
- X sigtype=int
- X echo "assuming int."
- Xelse
- X sigtype=void
- X echo "found void."
- Xfi
- Xrm -f sigtype.c sigtype.o warnings
- X;;
- X*) sigtype=int;;
- Xesac
- X
- X: 'Floating point arithmetic ok?'
- Xecho " "
- Xcase $remote in
- X" remote")
- Xecho "Does your C compiler need a special flag for"
- Xecho $n "loading (probably software) floating point routines? "
- Xread ans
- Xcase $ans in
- Xy*|Y*) echo $n "What flag is needed [default -f] "
- X read fflag
- X case $fflag in
- X '') fflag="-f";;
- X esac
- X echo "We will try $fflag."
- X ;;
- X*) echo "Assuming no flag is needed."
- X fflag=
- X ;;
- Xesac
- X;;
- X*)
- Xecho $n "Checking your floating point ... "
- Xcat >float.c <<EOF
- X#include <stdio.h>
- Xdouble dadd(a, b) double a, b; {
- X return a+b;
- X}
- Xmain() {
- X double a, b, c;
- X double dadd();
- X a = 3.14;
- X b = 2.7 * a;
- X c = dadd(a, b);
- X exit(0);
- X}
- XEOF
- X$cc -O float.c -o float >/dev/null 2>&1
- Xif sh 2>/dev/null <<EOF
- X if ./float
- X then exit 0
- X else exit 1
- X fi
- XEOF
- Xthen
- X echo "seems to be alright."
- X fflag=""
- Xelse
- X echo " "
- X echo "Your C compiler seems to need a special flag for"
- X echo "loading (probably software) floating point routines."
- X echo $n "What flag is needed [default -f] "
- X read fflag
- X case $fflag in
- X '') fflag="-f";;
- X esac
- X $cc -O $fflag float.c -o float >/dev/null 2>&1
- X until sh 2>/dev/null <<EOF
- X if ./float
- X then echo "Flag $fflag seems to be allright."
- X exit 0
- X else exit 1
- X fi
- XEOF
- X do
- X echo "This flag doesn't seem to work."
- X echo "Try again ([RETURN] to give up) "
- X read fflag
- X case $fflag in
- X '') echo "Giving up on floating point flag"
- X break;;
- X esac
- X $cc -O $fflag float.c -o float >/dev/null 2>&1
- X done
- Xfi
- Xrm -f float* core
- X;;
- Xesac
- X
- X: 'termcap library for ABC editor'
- Xecho " "
- Xecho $n "Searching for your termcap-like library routines ... "
- Xif test -r /lib/libtermcap.a -o -r /usr/lib/libtermcap.a
- Xthen
- X termlib="-ltermcap"
- X echo "termcap library found."
- Xelif test -r /usr/local/lib/libtermcap.a
- Xthen
- X termlib="/usr/local/lib/libtermcap.a"
- X echo "local termcap library found."
- Xelif test -r /lib/libcurses.a -o -r /usr/lib/libcurses.a
- Xthen
- X termlib="-lcurses"
- X echo "terminfo library found."
- Xelif test -r /usr/local/lib/libcurses.a
- Xthen
- X termlib="/usr/local/lib/libcurses.a"
- X echo "local terminfo library found."
- Xelif test -r /lib/libtermlib.a -o -r /usr/lib/libtermlib.a
- Xthen
- X termlib="-ltermlib"
- X echo "termlib library found."
- Xelif test -r /usr/local/lib/libtermlib.a
- Xthen
- X termlib="/usr/local/lib/libtermlib.a"
- X echo "local termlib library found."
- Xelse
- X echo " "
- X echo "Your system appears NOT to have any termcap-like library."
- X echo $n "Is this true? "
- X read ans
- X case $ans in
- X n*|N*|f*|F*) termlib="ask_it"
- X ;;
- X *) termlib="libtermcap.a"
- X cat <<\EOF
- XWe will setup ./Makefile to use the public domain version of the
- Xtermcap routines from ./tc. Your users must set the $TERMCAP and
- X$TERM environment variables appropriately in their profile; or you
- Xcan install shell scripts that arrange these.
- XHowever, it would be better if your system administrator installs
- Xtermcap in the proper places. You should run Setup again after she
- Xhas done so.
- XSee ./tc/README for details.
- XEOF
- X ;;
- X esac
- Xfi
- Xwhile test "$termlib" = "ask_it" -o "$termlib" = "try_again"; do
- X case $termlib in
- X ask_it)
- X echo " "
- X echo "Please specify where the termcap-like routines are kept"
- X echo $n " (either full pathname or -lxxx option) "
- X ;;
- X try_again)
- X echo $n "Please try again (full pathname or -lyyy option) "
- X ;;
- X esac
- X read termlib
- X case $termlib in
- X -l*)
- X echo "Hope $termlib will do the job."
- X ;;
- X /*)
- X if test -r $termlib
- X then
- X echo "Ok, we will try $termlib."
- X else
- X echo "$termlib does not appear to exist."
- X termlib="try_again"
- X fi
- X ;;
- X *)
- X echo "$termlib is not a valid library specification."
- X termlib="try_again"
- X ;;
- X esac
- Xdone
- X
- X: 'Shall we make ABC public?'
- Xpublic="no"
- Xecho " "
- Xecho $n "Do you want to make ABC publically available? [no] "
- Xif ./readyn "$n"
- Xthen
- Xpublic="yes"
- Xabcdir='blurfl'
- Xwhile test ! -d "$rootdir$abcdir" ; do
- X case $abcdir in
- X blurfl)
- X echo " "
- X echo "Please type the full pathname of a$remote directory"
- X echo "in which you have write permission, and where you"
- X echo "want the binaries 'abc' and 'abckeys' installed"
- X echo $n " [default $abcdef] "
- X ;;
- X *) echo "$rootdir$abcdir does not appear to exist."
- X echo $n "Are you sure you typed the right name? "
- X read ans
- X case $ans in
- X y*|Y*) echo "Don't forget to make $rootdir$abcdir before 'make install'."
- X break
- X ;;
- X *) echo " "
- X echo $n "Please try again [default $abcdef] "
- X ;;
- X esac
- X ;;
- X esac
- X read abcdir
- X case $abcdir in
- X "") abcdir=$abcdef;;
- X esac
- Xdone
- Xlibdir='blurfl'
- Xwhile test ! -d "$rootdir$libdir" ; do
- X case $libdir in
- X blurfl)
- X echo " "
- X echo "Please type the full pathname of the$remote directory"
- X echo "where you want to install the auxiliary datafiles"
- X echo "needed by the ABC system"
- X echo $n " [default $libdef] "
- X ;;
- X *) echo "$rootdir$libdir does not appear to exist."
- X echo $n "Are you sure you typed the right name? "
- X read ans
- X case $ans in
- X y*|Y*) echo "Don't forget to make $rootdir$libdir before 'make install'."
- X break
- X ;;
- X *) echo " "
- X echo $n "Please try again [default $libdef] "
- X ;;
- X esac
- X ;;
- X esac
- X read libdir
- X case $libdir in
- X "") libdir=$libdef;;
- X esac
- Xdone
- Xmandir='blurfl'
- Xwhile test ! -d "$rootdir$mandir" ; do
- X case $mandir in
- X blurfl)
- X echo " "
- X echo "Please type the full pathname of the$remote directory"
- X echo "where you want to install the 'abc.1' manual page"
- X echo $n " [default $mandef] "
- X ;;
- X *) echo "$rootdir$mandir does not appear to exist."
- X echo $n "Are you sure you typed the right name? "
- X read ans
- X case $ans in
- X y*|Y*) echo "Don't forget to make $rootdir$mandir before 'make install'."
- X break
- X ;;
- X *) echo " "
- X echo $n "Please try again [default $mandef] "
- X ;;
- X esac
- X ;;
- X esac
- X read mandir
- X case $mandir in
- X "") mandir=$mandef;;
- X esac
- Xdone
- Xelse
- Xabcdir="$abcdef"
- Xlibdir="$libdef"
- Xmandir="$mandef"
- Xfi
- X
- Xcat >answers <<EOF
- Xrootdef="$rootdir"
- Xabcdef="$abcdir"
- Xlibdef="$libdir"
- Xmandef="$mandir"
- XEOF
- X
- Xecho " "
- Xecho "End of configuration questions for the ABC system."
- X
- Xrm -f ./contains
- X
- Xeditor="ed -"
- X
- X: 'Getting generic copies of Makefile and unix/comp.h and unix/os.h.'
- X: 'Since some tars leave the owner of the tape as the owner of the files'
- X: 'this will make sure the edit scripts will not fail.'
- X
- Xecho " "
- Xecho "Creating Makefile from Makefile.unix."
- X
- Xtouch Makefile || (echo "Oops!"; exit 1)
- Xcat >Makefile <<EOF
- X# This file was generated and edited by the Setup command.
- X# To make lasting changes edit the files Makefile.unix and Setup,
- X# and run Setup again.
- X#
- XEOF
- Xchmod 644 Makefile
- Xcat Makefile.unix >>Makefile || (echo "Oops!"; exit 1)
- X
- Xecho "Creating uhdrs/os.h from uhdrs/os.h.gen."
- X
- Xtouch uhdrs/os.h || (echo "Oops!"; exit 1)
- Xcat >uhdrs/os.h <<EOF
- X/* This file was generated and edited by the Setup command. */
- X/* To make lasting changes edit the files uhdrs/os.h.gen and Setup, */
- X/* and run Setup again. */
- X
- XEOF
- Xchmod 644 uhdrs/os.h
- Xcat uhdrs/os.h.gen >>uhdrs/os.h
- X
- Xecho " "
- Xecho $n "Editing appropriate definitions in these files ... "
- X
- Xcase $unix in
- XBSD4_2)
- X make="make \$(MFLAGS)"
- X strchr="index"
- X perror="#define"
- X mkdir="#define"
- X rename="#define"
- X select="#define"
- X readdir="#define"
- X getwd="#define"
- X getcwd="#undef "
- X ;;
- XBSD) make="make \$(MFLAGS)"
- X strchr="index"
- X perror="#define"
- X mkdir="#undef "
- X rename="#undef "
- X select="#undef "
- X readdir="#undef "
- X getwd="#undef "
- X getcwd="#undef "
- X ;;
- XATT) make="make -\$(MAKEFLAGS)"
- X strchr="strchr"
- X perror="#define"
- X mkdir="#define"
- X rename="#undef "
- X select="#undef "
- X readdir="#undef "
- X getwd="#undef "
- X getcwd="#define"
- X ;;
- XVERSION7|unknown|*)
- X make="make"
- X strchr="index"
- X perror="#undef "
- X mkdir="#undef "
- X rename="#undef "
- X select="#undef "
- X readdir="#undef "
- X getwd="#undef "
- X getcwd="#undef "
- X ;;
- Xesac
- X
- X$editor Makefile <<EOF
- X/^MAKE=/s?MAKE=.*?MAKE= $make?
- X/^CC=/s?CC=.*?CC= $cc?
- X/^FLOAT=/s?FLOAT=.*?FLOAT= $fflag?
- X/^TERMLIB=/s?TERMLIB=.*?TERMLIB= $termlib?
- Xw
- Xq
- XEOF
- X
- Xcase $public in
- Xyes)
- X $editor Makefile <<EOF
- X /^DESTABC=/s?DESTABC=.*?DESTABC= $abcdir?
- X /^DESTLIB=/s?DESTLIB=.*?DESTLIB= $libdir?
- X /^DESTMAN=/s?DESTMAN=.*?DESTMAN= $mandir?
- X w
- X q
- XEOF
- X ;;
- Xesac
- X
- X$editor uhdrs/os.h <<EOF
- X/^#include <strings.h>/s?<strings.h>?$strs?
- X/^#include <sys\/file.h>/s?<sys/file.h>?$modes?
- X/^#define VOID/s?(void)?$void?
- X/^#define SIGTYPE/s?int?$sigtype?
- X/^#undef TERMIO/s?#undef ?$termio?
- X/^#define HAS_FTIME/s?#define?$ftime?
- X/^#define HAS_PERROR/s?#define?$perror?
- X/^#define HAS_MKDIR/s?#define?$mkdir?
- X/^#define HAS_GETWD/s?#define?$getwd?
- X/^#undef HAS_GETCWD/s?#undef ?$getcwd?
- X/^#define HAS_RENAME/s?#define?$rename?
- X/^#define HAS_SELECT/s?#define?$select?
- X/^#define HAS_READDIR/s?#define?$readdir?
- Xw
- Xq
- XEOF
- X
- Xcase $strs in
- Xno_strs)
- X case $strchr in
- X "index") index=index; rindex=rindex;;
- X "strchr") index=strchr; rindex=strrchr;;
- X esac
- X $editor uhdrs/os.h <<EOF
- X/#include no_strs/c
- X
- Xextern char *strcat();
- Xextern int strcmp();
- Xextern int strncmp();
- Xextern char *strcpy();
- Xextern char *strncpy();
- Xextern int strlen();
- Xextern char *$index();
- Xextern char *$rindex();
- X
- X.
- Xw
- Xq
- XEOF
- X;;
- Xesac
- X
- Xcase $modes in
- Xno_modes)
- X $editor unix/os.h <<EOF
- X/#include no_modes/c
- X
- X#define R_OK 4
- X#define W_OK 2
- X#define F_OK 0
- X.
- Xw
- Xq
- XEOF
- X;;
- Xesac
- X
- Xcase $strchr in
- Xstrchr) $editor uhdrs/os.h <<EOF
- X/#define strchr/,/#define strrchr/d
- Xw
- Xq
- XEOF
- X;;
- Xesac
- X
- Xcase $termlib in
- Xlibtermcap.a)
- X $editor Makefile <<EOF
- X /TERMLIB=/s?.*?TERMLIB=?
- X /#OWNTLIB=/s?#??
- X /#KOWNTLIB=/s?#??
- X /#OWNTBASE=/s?#??
- X w
- X q
- XEOF
- X ;;
- Xesac
- X
- Xecho $n " "
- Xecho "done."
- X
- Xecho " "
- Xecho "This completes the setup of the ABC system."
- X
- Xcase $remote in
- X' remote')
- X cat <<EOF
- XYou should first compile mkconfig (from ./mkconfig.c and ./uhdrs/os.h)
- Xwith 'make mkconfig' here, run it on the remote machine and copy the
- Xresult to ./uhdrs/config.h.
- XAfter that you can proceed here with 'make all'.
- XEOF
- X ;;
- X*) echo "You can now try 'make all'."
- X ;;
- Xesac
- X
- Xcase $remote in
- X" remote")
- X if test ! -d "$rootdir"
- X then
- X echo " "
- X echo "You should 'mkdir $rootdir' before 'make install'."
- X fi
- X ;;
- Xesac
- X
- Xcase $public in
- Xyes)
- X if test ! -d "$rootdir$abcdir"
- X then
- X echo " "
- X echo "You should 'mkdir $rootdir$abcdir' before 'make install'."
- X fi
- X if test ! -d "$rootdir$libdir"
- X then
- X echo "You should 'mkdir $rootdir$libdir' before 'make install'."
- X fi
- X if test ! -d "$rootdir$mandir"
- X then
- X echo "You should 'mkdir $rootdir$mandir' before 'make install'."
- X fi
- X ;;
- Xesac
- X
- Xexit 0
- EOF
- chmod +x 'abc/Setup'
- echo 'x - abc/readyn'
- sed 's/^X//' > 'abc/readyn' << 'EOF'
- X: 'Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1990.'
- X:
- X: 'read yes or no [default no]'
- X
- Xn=$1
- X
- Xwhile true
- Xdo
- X read ans
- X case $ans in
- X y|Y|t|T|yes|Yes|YES|true|True|TRUE) exit 0;;
- X ''|n|N|f|F|no|No|NO|false|False|FALSE) exit 1;;
- X *) echo $n "Please answer with yes or no "
- X esac
- Xdone
- EOF
- chmod +x 'abc/readyn'
- echo 'x - abc/Makefile.unix'
- sed 's/^X//' > 'abc/Makefile.unix' << 'EOF'
- X#######################################################################
- X# #
- X# Makefile for ABC system under unix. #
- X# #
- X#######################################################################
- X
- X# --- Some make's only make love with the Bourne shell ---
- X#
- X
- XSHELL= /bin/sh
- X
- X
- X# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- X# +++ Start of editable macro definitions; filled in by ./Setup +++
- X# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- X
- X# --- pass make options ---
- X#
- X# On 4.{23}BSD the macro $(MFLAGS) is set by make to the collection of
- X# command line options (such as -k, -i) and passed to make in subdirectories.
- X# For System V use $(MAKEFLAGS). Otherwise just fill in 'make'.
- X
- XMAKE= make $(MFLAGS)
- X
- X
- X# --- C compiler to use ---
- X#
- X# In case you might want to change it to e.g. 'gcc' (the GNU C compiler).
- X
- XCC= cc
- X
- X
- X# --- Where to install the stuff ---
- X#
- X# These should all be absolute pathnames.
- X
- X# destination directory for binaries 'abc' and 'abckeys':
- X
- XDESTABC=/usr/local
- X
- X# destination directory for auxiliary data files:
- X
- XDESTLIB=/usr/local/lib/abc
- X
- X# destination directory for 'abc.1' manual page:
- X
- XDESTMAN=/usr/man/manl
- X
- X# local destination if you cross-compile; empty otherwise:
- X
- XDESTROOT=
- X# you should first generate uhdrs/config.h remotely;
- X# see 'make config' below.
- X
- X# directory where 'abc' and 'abckeys' should locate auxiliary files,
- X# when created in the current directory;
- X# change this to some proper absolute pathname, like /ufs/$user,
- X# if `pwd` gives an unsteady pathname, e.g. when using NFS mounted filesystems.
- X
- XDESTALL="`pwd`"
- X
- X
- X# --- Software floating point needed? ---
- X
- XFLOAT=
- X
- X
- X# --- Flags to the C compiler ---
- X
- XDEFS= -DNDEBUG
- XCFLAGS= -O $(FLOAT) $(DEFS)
- X
- X
- X# --- Flags to the loader ---
- X
- XLDFLAGS=
- X
- X
- X# --- Specify termcap or terminfo library ---
- X#
- X# Set TERMLIB to the appropriate termcap or terminfo library specification
- X# (either -lxxx option or absolute pathname) if your system has one.
- X# Otherwise leave TERMLIB empty and remove the comment symbols before
- X# the definitions of OWNTLIB, KOWNTLIB and OWNTBASE to install the
- X# public domain version from ./tc.
- X
- XTERMLIB= -ltermcap
- X
- X#OWNTLIB= libtermcap.a
- X#KOWNTLIB= ../libtermcap.a
- X#OWNTBASE= termcap
- X
- X
- X# --- Libraries for editor-interpreter 'abc' ---
- X
- XLIBS= -lm $(TERMLIB) $(OWNTLIB)
- X
- X
- X# --- Libraries for utility 'abckeys' ---
- X
- XKLIBS= $(TERMLIB) $(KOWNTLIB)
- X
- X
- X# +++++++++++++++++++++++++++++++++++++++++
- X# +++ End of editable macro definitions +++
- X# +++++++++++++++++++++++++++++++++++++++++
- X#
- X# The remaining macro definitions should only have to be edited
- X# if you make very drastic changes.
- X
- X# --- Include flags to the C compiler for editor and interpreter directories ---
- X
- XBINCL= -I../bhdrs -I../uhdrs
- XEINCL= -I../bhdrs -I../ehdrs -I../uhdrs -I../btr
- XIINCL= -I../bhdrs -I../ihdrs -I../uhdrs
- XUINCL= -I../bhdrs -I../ehdrs -I../ihdrs -I../uhdrs
- X
- X# --- Editor and interpreter directories ---
- X
- XCDIRS= b bed bint1 bint2 bint3 btr unix stc bio
- X
- XBDIRS= b
- XEDIRS= bed
- XIDIRS= bint1 bint2 bint3 btr stc bio
- XUDIRS= unix
- X
- X# --- Editor and interpreter files ---
- X
- XBOBJS= b/*.o
- XEOBJS= bed/*.o
- XIOBJS= bint1/*.o bint2/*.o bint3/*.o btr/*.o stc/*.o bio/*.o
- XUOBJS= unix/*.o
- X
- XBSRCS= b/*.c
- XESRCS= bed/*.c
- XISRCS= bint1/*.c bint2/*.c bint3/*.c btr/*.c stc/*.c bio/*.c
- XUSRCS= unix/*.c
- X
- XBHDRS= bhdrs/*.h
- XEHDRS= ehdrs/*.h
- XIHDRS= ihdrs/*.h btr/*.h bio/*.h
- XUHDRS= uhdrs/*.h
- X
- X# --- Preliminary dependencies (do not change for Unix) ---
- X
- XCONFIG= uhdrs/config.h
- XOSHDIR= uhdrs
- X
- XDEST= uhdrs/dest.h
- X
- X# --- Stuff for programmers ---
- X
- XLINT= lint
- X# change the next one to -p for ATT System V
- XLINTFLAGS= -abhxp
- XLINCL= -Ibhdrs -Iehdrs -Iihdrs -Iuhdrs -Ibtr
- X
- XTAGDIRS=b bed bint1 bint2 bint3 btr stc bio unix keys bhdrs ehdrs ihdrs uhdrs
- X
- X
- X# -------------------------------------------
- X# --- make all: make everything locally ---
- X# -------------------------------------------
- X#
- X# This makes all programs and utilities in the current directory.
- X# (Except for the ready-for-use default key definitions files).
- X
- Xall: alldest abc.ld abckeys.ld
- X @./ch_all "$(DESTROOT)"
- X
- X# The target 'alldest' is used to communicate the place of auxiliary files.
- X# This target is also used for a separate 'make abc' or 'make abckeys'.
- X#
- X# Dependency on the (non-existent) file "ALWAYS" causes this entry to
- X# be (re)made unconditionally. Make won't complain about ALWAYS not being
- X# found because there is also a rule referencing it as target at the
- X# very end (which actually doesn't make it, but make doesn't care).
- X
- Xalldest: ALWAYS
- X echo "#define ABCLIB \"$(DESTALL)\"" >dest
- X if cmp -s dest $(DEST); then rm dest; else mv dest $(DEST); fi
- X
- X# CONFIG: generate include file with info about the hardware configuration.
- X#
- X# Special care is taken to remove an incomplete $(CONFIG) if mkconfig
- X# fails halfway. Otherwise a subsequent 'make depend' will happily go on.
- X
- Xconfig: $(CONFIG)
- X
- X$(CONFIG): mkconfig.c $(OSHDIR)/osconf.h
- X @./ch_config "$(DESTROOT)" "$(CONFIG)"
- X $(CC) -I$(OSHDIR) mkconfig.c -o mkconfig
- X ./mkconfig >$(CONFIG) || (rm -f $(CONFIG) && exit 1)
- X
- X# abc: make the executable that is the kernel of the system.
- X#
- X# The load must be unconditional, since we cannot know whether
- X# any of the submakes had to update some subtarget.
- X
- Xabc: alldest abc.ld
- X
- Xabc.ld: $(CONFIG) $(BDIRS) $(EDIRS) $(IDIRS) $(UDIRS) \
- X $(OWNTLIB) $(OWNTBASE) ALWAYS
- X $(CC) $(LDFLAGS) $(BOBJS) $(EOBJS) $(IOBJS) $(UOBJS) $(LIBS) -o abc
- X
- X# Call make for each editor and interpreter subdirectory with proper flags.
- X#
- X# If a dependency line has more than one item left of the colon, the
- X# commands are executed for each of the items, with $@ substituted
- X# by the item's name.
- X
- X$(BDIRS): $(CONFIG) ALWAYS
- X cd $@; $(MAKE) -f MF -f DEP CFLAGS='$(CFLAGS) $(BINCL)' all
- X
- X$(EDIRS): $(CONFIG) ALWAYS
- X cd $@; $(MAKE) -f MF -f DEP CFLAGS='$(CFLAGS) $(EINCL)' all
- X
- X$(IDIRS): $(CONFIG) ALWAYS
- X cd $@; $(MAKE) -f MF -f DEP CFLAGS='$(CFLAGS) $(IINCL)' all
- X
- X$(UDIRS): $(CONFIG) ALWAYS
- X cd $@; $(MAKE) -f MF -f DEP CFLAGS='$(CFLAGS) $(UINCL)' all
- X
- X# Make utility 'abckeys' for redefinition of keybindings.
- X#
- X# The submake will find out whether recompilation is necessary.
- X
- Xabckeys: alldest abckeys.ld
- X
- Xabckeys.ld: $(CONFIG) $(OWNTLIB) $(OWNTBASE) ALWAYS
- X cd keys; \
- X $(MAKE) -f Makefile -f DEP \
- X CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" LIBS="$(KLIBS)" all
- X
- X
- X# ----------------------------------------------
- X# --- make examples: try the ABC interpreter ---
- X# ----------------------------------------------
- X
- Xexamples:
- X @cd ex; ./DoExamples local
- X# ch_examples is embedded in DoExamples to cope with cross compilation.
- X
- X
- X# ---------------------------------------------------------
- X# --- make try_editor: try the ABC editor interactively ---
- X# ---------------------------------------------------------
- X
- Xtry_editor:
- X @cd ex; ./TryEditor local
- X# ch_tryeditor embedded in TryEditor.
- X
- X# ---------------------------------------------------------
- X# --- make install: install everything in public places ---
- X# ---------------------------------------------------------
- X#
- X# The dependency of 'install' on installdest communicates the place
- X# and place of auxiliary files to the binaries 'abc' and 'abckeys'.
- X# The unconditional submakes of the targets 'abc.ld' and 'abckeys.ld'
- X# causes the proper files to be remade.
- X#
- X# The directory ukeys contains default keydefinitions files for
- X# several terminals.
- X
- Xinstall: installdest abc.ld abckeys.ld
- X cp abc abckeys $(DESTROOT)$(DESTABC)
- X cp abc.msg abc.hlp $(DESTROOT)$(DESTLIB)
- X cd ukeys; cp abckeys_* $(DESTROOT)$(DESTLIB)
- X cp abc.1 $(DESTROOT)$(DESTMAN)
- X @./ch_install "$(DESTABC)" "$(DESTLIB)" "$(DESTMAN)" "$(DESTROOT)"
- X
- Xinstalldest: ALWAYS
- X echo "#define ABCLIB \"$(DESTLIB)\"" >dest
- X if cmp -s dest $(DEST); then rm dest; else mv dest $(DEST); fi
- X
- X
- X# -------------------------------------------------
- X# --- Make our own termcap library and database ---
- X# -------------------------------------------------
- X#
- X# For systems that really don't have any termlib-like library
- X# this makes our own from public domain sources in ./tc.
- X# See ./tc/README for details.
- X# This happens automatically if you remove the comment symbols before
- X# the definitions of OWNTLIB and OWNTBASE above.
- X
- Xlibtermcap.a:
- X cd tc; make library
- X
- Xtermcap:
- X cd tc; make database
- X
- X
- X# -----------------------------------
- X# --- make clean: local cleanup ---
- X# -----------------------------------
- X
- Xclean:
- X rm -f */*.o mkconfig $(CONFIG) $(DEST) core ex/out
- X ./ch_clean
- X
- X
- X# ---------------------------------------------
- X# --- Utilities for the programmer/porter ---
- X# ---------------------------------------------
- X
- Xmflags:
- X echo MFLAGS="$(MFLAGS)", MAKEFLAGS="$(MAKEFLAGS)"
- X
- X# --- make makefiles: construct trivial makefiles in subdirectories ---
- X#
- X# This reconstructs trivial makefiles called 'MF' in relevant subdirectories.
- X# See ./Port for details.
- X
- Xmakefiles:
- X for i in $(CDIRS); do \
- X ( cd $$i; echo all: *.c | sed 's/\.c/.o/g' >MF ) done
- X
- X# No automatic makefile in ./keys. Edit that one yourself if need be.
- X
- X# --- How to generate dependency information for make ---
- X#
- X# Set MKDEP to $(CC) -M $(DEFS) or to ../scripts/mkdep $(DEFS).
- X# 'cc -M' is a 4.2BSD-only feature which causes the C preprocessor
- X# to output a list of dependencies that is directly usable by make.
- X# This can be simulated exactly by piping the output of your preprocessor
- X# through the shell script ./scripts/mkdep.
- X# Check the comments there to see if it needs polishing for your system.
- X
- XMKDEP= $(CC) -M $(DEFS)
- X
- X# --- make depend: construct makefiles with dependencies in subdirectories ---
- X#
- X# This reconstructs additional makefiles called 'DEP' in subdirectories
- X# containing the dependency information.
- X# Dependencies on system include files are grep'ed out, to make the
- X# resulting DEP files distributable.
- X# See ./Port.
- X
- Xdepend: $(CONFIG) $(DEST) bdep edep idep udep kdep
- X
- Xbdep:
- X for i in $(BDIRS); do \
- X ( echo $$i; cd $$i; $(MKDEP) $(BINCL) *.c | grep -v ': /' >DEP ) done
- X
- Xedep:
- X for i in $(EDIRS); do \
- X ( echo $$i; cd $$i; $(MKDEP) $(EINCL) *.c | grep -v ': /' >DEP ) done
- X
- Xidep:
- X for i in $(IDIRS); do \
- X ( echo $$i; cd $$i; $(MKDEP) $(IINCL) *.c | grep -v ': /' >DEP ) done
- X
- Xudep:
- X for i in $(UDIRS); do \
- X ( echo $$i; cd $$i; $(MKDEP) $(UINCL) *.c | grep -v ': /' >DEP ) done
- X
- Xkdep:
- X cd keys; \
- X $(MAKE) MKDEP="$(MKDEP)" DEFS="$(DEFS)" depend | grep -v ': /' >DEP
- X
- X$(DEST): alldest
- X
- X# --- make messages ---
- X#
- X# Make new messages file when you have changed or added any MESS/GMESS
- X# definitions in the source.
- X# Note: the Collect and Change scripts can be found in ./scripts.
- X# See ./Problems for details.
- X
- Xmessages: abc.msg
- X
- Xabc.msg: $(BSRCS) $(ESRCS) $(ISRCS) $(USRCS) \
- X ihdrs/i0err.h ehdrs/erro.h bio/i4bio.h
- X ./scripts/Collect $(BSRCS) $(ESRCS) $(ISRCS) $(USRCS) \
- X ihdrs/i0err.h ehdrs/erro.h bio/i4bio.h >abc.msg
- X
- X# --- make help ---
- X#
- X# Help file from manual entry.
- X# Sorry, the file unix/abc.mac was created from copyrighted material;
- X# therefore, it is not in the distribution.
- X#
- X
- Xhelp: abc.hlp
- X
- Xabc.hlp: unix/abc.mac abc.1
- X nroff unix/abc.mac abc.1 >abc.help
- X (echo "SUMMARY OF SPECIAL ACTIONS"; \
- X sed -e '1,/^SUMMARY/d' abc.help; \
- X echo " "; \
- X sed -e '/^SUMMARY/,$$d' abc.help) >abc.hlp
- X rm abc.help
- X
- X# --- make clobber: additional local cleanup ---
- X
- Xclobber:
- X rm -f abc abckeys */tags tags ID
- X
- X# --- make lint, tags and id ---
- X
- Xlint: $(DEST) abclint klint
- X
- Xabclint:
- X $(LINT) $(LINTFLAGS) $(DEFS) $(LINCL) \
- X $(BSRCS) $(ESRCS) $(ISRCS) $(USRCS)
- X
- Xklint:
- X cd keys; \
- X $(MAKE) LINT="$(LINT)" LINTFLAGS="$(LINTFLAGS)" DEFS="$(DEFS)" lint
- X
- Xtags: ALWAYS
- X etags */*.h */*.c
- X rm -f tags # Remove it so it will be remade when an interrupt hits
- X for i in $(TAGDIRS); \
- X do \
- X ( echo $$i; cd $$i; ctags -w *.[ch]; \
- X sed "s, , $$i/," tags \
- X ) \
- X done | sort -o tags
- X
- X
- Xid: ALWAYS
- X mkid */*.[hc]
- X
- X
- XALWAYS: # Must not exist, but must be mentioned in the makefile
- EOF
- echo 'x - abc/README'
- sed 's/^X//' > 'abc/README' << 'EOF'
- XCopyright (c) Stichting Mathematisch Centrum, Amsterdam, 1988.
- X
- XHOW TO INSTALL ABC:
- X
- XYou will need 2.5 megabytes in total to compile and load the ABC system.
- XTo start type:
- X
- X ./Setup
- X
- Xwhich will ask you some questions to set the ABC system up on your
- Xinstallation. You can call "Setup" any number of times without spoiling
- Xfiles. So run it once to see what questions you will be asked. If you
- Xdon't know the answer to some question, you can run it again.
- X
- X make all
- X
- Xwill compile and load the ABC system, producing the programs "abc" and
- X"abckeys" locally in this directory. You can test the ABC interpreter with:
- X
- X make examples
- X
- XThis runs some examples in ./ex. It does not test the ABC editor, however;
- Xthat can only be done interactively with
- X
- X make try_editor
- X
- XConsult the sheet "HOW TO TRY THE ABC EDITOR" (also in ./README2).
- X
- XIf all is well and you want to make ABC public
- X
- X make install
- X
- Xwill do some compiling to get the right pathnames in, and install the binaries
- X"abc" and "abckeys", the "abc.1" manual file, and the auxiliary files in the
- Xdirectories you indicated during setup. Finally
- X
- X make clean
- X
- Xwill clean all intermediate object files from the source directories.
- X
- XIf you have made ABC public, all necessary files have been copied to the
- Xpublic places, and you can get rid of the entire ABC file system hierarchy
- Xyou extracted from the tape, if you want.
- X
- XIf there are any problems, don't panic. See ./Problems for advice. Also
- Xedit the example Bug Report form in ./doc to communicate the problem to us.
- XWe can then send out diffs for fixed problems in the future.
- X
- XAbove all, we would be very grateful to receive any comments you have about
- Xthe setup procedure, or the ABC system in general, on how to make it easier
- Xto use.
- X
- XGood luck!
- EOF
- echo 'x - abc/Problems'
- sed 's/^X//' > 'abc/Problems' << 'EOF'
- XCopyright (c) Stichting Mathematisch Centrum, Amsterdam, 1988.
- X
- XHOW TO TACKLE PROBLEMS DURING ABC INSTALLATION
- X
- XThis file contains some detailed advice in case you run into problems while
- Xinstalling the ABC system.
- X
- XTHE SETUP PROCEDURE
- X
- XYour best bet if the "Setup" script fails is to read it, locate the
- Xproblem, change it and run it again. You can always shorten its runtime by
- Xchanging long pieces into the simple setting of a shell variable. For
- Xinstance, once you are sure your floating point is allright, you might
- Xreplace the whole section titled "Floating point arithmetic ok?" by a
- Xsimple "fflag=".
- X
- XNormally you should not edit the files that Setup creates (./Makefile
- Xand ./uhdrs/os.h) directly, but their ancestors (./Makefile.unix and
- X./uhdrs/os.h.gen) and run Setup to incorporate your changes.
- XIf you really want to change them directly, also change Setup to
- Xwork on them or remove Setup completely.
- X
- XMACHINE CONFIGURATION
- X
- XThe file ./uhdrs/config.h is created by compiling "mkconfig.c" and running
- X"mkconfig" on your target machine, since it tries to establish some facts
- Xabout the hardware configuration. (If you are cross-compiling you should
- Xdo that before a "make depend" since that would run mkconfig on the local
- X(compiling) machine.)
- X
- XIf you really have to edit uhdrs/config.h, you should edit the Makefile (or
- XMakefile.unix) so that it will not overwrite it anymore.
- X
- XThe problem most encountered with mkconfig is "unexpected over/underflow".
- XThis is usually caused by a bug in "printf", where it can't print very
- Xlarge or very small numbers. Look at the last line produced by mkconfig
- Xbefore it failed, and then locate the printf after the one that printed
- Xthat line. If it is trying to print a comment (rather than a #define),
- Xyou can safely comment out the printf and try again. (You might also want
- Xto report the bug to your UNIX supplier.)
- X
- XOTHER UNIX's
- X
- XThe installation of the ABC system has been tested under 4.3 BSD UNIX on
- XTahoe, Vax, Sun and Sparc machines, under ATT System V Release 3.0 UNIX on an
- XIntel 80386, and under MINIX, which is supposed to be VERSION 7 UNIX
- Xcompatible. The Setup script tries to find out whether your UNIX is one of
- Xthese, and creates ./uhdrs/os.h from ./uhdrs/os.h.gen accordingly. We
- Xexpect you will have no problems compiling the ABC system in this case.
- X
- XIf your UNIX is different, the Setup script will create a file ./uhdrs/os.h
- Xwith most defaults setup for a VERSION 7 UNIX system, since that makes a
- Xminimum number of assumptions. Examine the resulting file, and change the
- Xnames of system include files if they are different on your system. Also
- Xcheck the definitions and UNIX specific flags in this file. See the
- Xcomments, and use your systems manual to find out how to set them. Don't
- Xforget that this file is created by running Setup; change Setup if you want
- Xto edit uhdrs/os.h directly, or edit uhdrs/os.h.gen and run Setup again.
- X
- XIf your machine's memory is not that big, you might examine ./uhdrs/feat.h
- Xto turn off some features in an attempt to make the ABC editor-interpreter
- Xsmaller.
- X
- XWe have tried to gather the operating system dependent parts in ./unix/*.c
- Xand ./uhdrs/*.h. Examine these if any problems in compilation remain.
- X
- XEDITOR PROBLEMS
- X
- XOnce the ABC system is compiled, you may encounter problems when you use
- Xthe ABC editor. Our experience is that most of these problems are caused
- Xby erroneous or insufficiently detailed termcap entries, which decribe your
- Xterminal's capabilities; so first check the "termcap(5)" manual entry (or
- X"terminfo(4)" for terminfo systems). Ask your system's guru to give you a
- Xhand if you are not familiar with these.
- X
- XWe use the following entries from the termcap database if they are defined
- Xfor your terminal:
- X
- X Name Type Description
- X
- X AL str add n new blank lines
- X CM str screen-relative cursor motion
- X DL str delete n lines
- X al str add new blank line
- X am bool has automatic margins
- X bc str backspace character
- X bs bool terminal can backspace
- X cd str clear to end of display
- X ce str clear to end of line
- X cl str cursor home and clear screen
- X cm str cursor motion
- X co num number of columns in a line
- X cp str cursor position sense reply
- X cr str carriage return
- X cs str change scrolling region
- X da bool display may be retained above screen
- X db bool display may be retained below screen
- X dc str delete character
- X dl str delete line
- X dm str enter delete mode
- X do str cursor down one line
- X ed str end delete mode
- X ei str end insert mode
- X hc bool hardcopy terminal
- X ho str cursor home
- X ic str insert character (if necessary; may pad)
- X im str enter insert mode
- X in bool not save to have null chars on the screen
- X ke str keypad mode end
- X ks str keypad mode start
- X le str cursor left
- X li num number of lines on screen
- X mi bool move safely in insert (and delete?) mode
- X ms bool move safely in standout mode
- X nd str cursor right (non-destructive space)
- X nl str newline
- X pc str pad character
- X se str end standout mode
- X sf str scroll text up (from bottom of region)
- X sg num number of garbage characters left by so or se (default 0)
- X so str begin standout mode
- X sp str sense cursor position
- X sr str scroll text down (from top of region)
- X te str end termcap
- X ti str start termcap
- X ue str end underscore mode
- X up str cursor up
- X us str start underscore mode
- X vb str visible bell
- X ve str make cursor visible again
- X vi str make cursor invisible
- X xn bool newline ignored after 80 cols (VT100 / Concept glitch)
- X xs bool standout not erased by overwriting
- X
- XOf these your termcap entry should at least define the following:
- X
- X le OR bc OR bs
- X up
- X cm OR CM OR (ho AND do AND nd)
- X (al AND dl) OR (cs AND sr)
- X ce
- X (so AND se AND sg = 0 [or not defined]) OR (us AND ue)
- X
- XIf either of these requirements is not fulfilled, the ABC editor will
- Xcomplain that your terminal is too dumb.
- X
- XOne common problem on terminals with resizeable windows is that the ABC
- Xprompt shows up like
- X
- X >>>
- X ?
- X
- Xon two lines instead of one. This means that the "li#" entry in your
- XTERMCAP does not accurately reflect the number of lines actually in the
- Xwindow. This can be remedied by changing the setting of your TERMCAP
- Xenvironment variable, using the output of "stty size" (see stty(1)). (On
- Xsystems that have the TIOCGWINSZ ioctl, we use it to get the proper window
- Xsize; see tty(4) on BSD UNIX systems).
- X
- XERROR MESSAGES
- X
- XThe error messages that ABC displays are all gathered in a file and only
- Xread when necessary. This was done to diminish the store used for all
- Xthese strings and to enhance the adaptability of ABC to another natural
- Xlanguage.
- X
- XIf you want the error messages in another language, for example French, you
- Xonly have to replace the file ./abc.msg by a French version.
- EOF
- echo 'x - abc/ch_all'
- sed 's/^X//' > 'abc/ch_all' << 'EOF'
- X: 'Check if make all went allright.'
- X
- Xdestroot="$1"
- X
- Xerrors="no"
- X
- Xecho " "
- X
- Xfor f in abc abckeys
- Xdo
- X if test ! -s $f
- X then
- X echo "*** Failed to make $f"
- X errors="yes"
- X fi
- Xdone
- X
- Xcase $errors in
- Xyes)
- X exit 1
- X ;;
- Xno)
- X case $destroot in
- X '') echo "The 'abc' command should now work."
- X echo "You can test the ABC interpreter with 'make examples'."
- X ;;
- X *) echo "That 'make all' went well."
- X echo "Say 'make install' to install the ABC system in $destroot."
- X ;;
- X esac
- X exit 0
- X ;;
- Xesac
- EOF
- chmod +x 'abc/ch_all'
- echo 'x - abc/ch_install'
- sed 's/^X//' > 'abc/ch_install' << 'EOF'
- X: 'Check if make install went allright.'
- X
- Xabcdir="$1"
- Xlibdir="$2"
- Xmandir="$3"
- Xdestroot="$4"
- X
- Xerrors="no"
- X
- Xecho " "
- X
- Xfor f in abc abckeys
- Xdo
- X if test ! -s $destroot$abcdir/$f
- X then
- X echo "*** Failed to install '$f' in $destroot$abcdir"
- X errors="yes"
- X fi
- Xdone
- X
- Xfor f in abc.msg abc.hlp
- Xdo
- X if test ! -s $destroot$libdir/$f
- X then
- X echo "*** Failed to install '$f' in $destroot$libdir"
- X errors="yes"
- X fi
- Xdone
- X
- Xif test ! -s $destroot$mandir/abc.1
- Xthen
- X echo "*** Failed to install 'abc.1' manual in $destroot$mandir"
- X errors="yes"
- Xfi
- X
- Xcase $errors in
- Xyes)
- X exit 1
- X ;;
- Xno)
- X echo "The ABC system is installed."
- X case $destroot in
- X '') echo "You can clean up with 'make clean'.";;
- X *) echo "You can copy from $destroot to the target machine."
- X echo "To test ABC there also copy ./ex there,"
- X echo "and use ./ex/DoExamples and ./ex/TryEditor"
- X echo "to test the interpreter and the editor, respectively."
- X echo "If all is well, you can clean up here with 'make clean'."
- X ;;
- X esac
- X exit 0
- X ;;
- Xesac
- EOF
- chmod +x 'abc/ch_install'
- echo 'x - abc/ch_clean'
- sed 's/^X//' > 'abc/ch_clean' << 'EOF'
- X: 'from make clean to make clobber'
- X
- Xecho " "
- Xecho "You can clean up the results from 'make all' with 'make clobber'."
- X
- Xexit 0
- EOF
- chmod +x 'abc/ch_clean'
- patch ./abc/bhdrs/bfil.h <<EOF
- *** /ufs/timo/abcdist/abc/bhdrs/bfil.h Thu Jan 25 12:54:30 1990
- --- ./abc/bhdrs/bfil.h Fri Jan 4 09:46:54 1991
- ***************
- *** 1,8 ****
- /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1988. */
-
- ! /* MESSFILE and HELPFILE in ../?hdrs/dest.h. */
- !
- #define KEYSFILE "abc.key"
-
- #define PERMFILE "perm.abc"
- #define SUGGFILE "suggest.abc"
- --- 1,8 ----
- /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1988. */
-
- ! #define MESSFILE "abc.msg"
- #define KEYSFILE "abc.key"
- + #define HELPFILE "abc.hlp"
-
- #define PERMFILE "perm.abc"
- #define SUGGFILE "suggest.abc"
- EOF
- patch ./abc/bhdrs/bobj.h <<EOF
- *** /ufs/timo/abcdist/abc/bhdrs/bobj.h Thu Jan 25 12:54:30 1990
- --- ./abc/bhdrs/bobj.h Thu Jan 3 15:24:27 1991
- ***************
- *** 9,14 ****
- --- 9,15 ----
- #define log2 b_log2
- #define pi b_pi
- #define random b_random
- + #define remove b_remove
-
- /****************************** general ******************************/
-
- ***************
- *** 115,121 ****
- value root2();
- value log2();
- value pi();
- ! value e();
- value nowisthetime();
- value exactly();
- bool exact();
- --- 116,122 ----
- value root2();
- value log2();
- value pi();
- ! value e_natural();
- value nowisthetime();
- value exactly();
- bool exact();
- EOF
- patch ./abc/bhdrs/release.h <<EOF
- *** /ufs/timo/abcdist/abc/bhdrs/release.h Thu Jan 25 12:54:30 1990
- --- ./abc/bhdrs/release.h Thu Jan 3 15:30:18 1991
- ***************
- *** 1 ****
- ! #define RELEASE "1.02.01"
- --- 1 ----
- ! #define RELEASE "1.02.02"
- EOF
- patch ./abc/bint1/i1fun.c <<EOF
- *** /ufs/timo/abcdist/abc/bint1/i1fun.c Thu Jan 25 12:54:13 1990
- --- ./abc/bint1/i1fun.c Thu Jan 3 15:24:26 1991
- ***************
- *** 531,537 ****
- /* The rest of the mathematical functions */
-
- Visible value pi() { return (value) mk_approx(3.141592653589793238463, 0.0); }
- ! Visible value e() { return (value) mk_approx(2.718281828459045235360, 0.0); }
-
- Hidden real over_two_pi(v) value v; {
- real two_pi = mk_approx(6.283185307179586476926, 0.0);
- --- 531,537 ----
- /* The rest of the mathematical functions */
-
- Visible value pi() { return (value) mk_approx(3.141592653589793238463, 0.0); }
- ! Visible value e_natural() { return (value) mk_approx(2.718281828459045235360, 0.0); }
-
- Hidden real over_two_pi(v) value v; {
- real two_pi = mk_approx(6.283185307179586476926, 0.0);
- EOF
- patch ./abc/bint3/i3fpr.c <<EOF
- *** /ufs/timo/abcdist/abc/bint3/i3fpr.c Thu Jan 25 12:54:20 1990
- --- ./abc/bint3/i3fpr.c Thu Jan 3 15:24:26 1991
- ***************
- *** 55,61 ****
- {S_NUMBER, Dfd, Other, size2},
-
- {F_pi, Zfd, Other, pi},
- ! {F_e, Zfd, Other, e},
- {F_now, Zfd, Other, nowisthetime},
-
- {F_abs, Mfd, Nume, absval},
- --- 55,61 ----
- {S_NUMBER, Dfd, Other, size2},
-
- {F_pi, Zfd, Other, pi},
- ! {F_e, Zfd, Other, e_natural},
- {F_now, Zfd, Other, nowisthetime},
-
- {F_abs, Mfd, Nume, absval},
- EOF
- patch ./abc/ihdrs/i2par.h <<EOF
- *** /ufs/timo/abcdist/abc/ihdrs/i2par.h Thu Jan 25 12:54:32 1990
- --- ./abc/ihdrs/i2par.h Thu Jan 3 15:19:20 1991
- ***************
- *** 2,11 ****
-
- /***********************************************************************/
-
- - #ifdef macintosh
- /* Avoid name conflict with standard header files: */
- #define compound b_compound
- - #endif
-
- /* General parsing routines */
-
- --- 2,9 ----
- EOF
- patch ./abc/uhdrs/os.h.gen <<EOF
- *** /ufs/timo/abcdist/abc/uhdrs/os.h.gen Thu Jan 25 12:54:43 1990
- --- ./abc/uhdrs/os.h.gen Thu Jan 3 16:38:30 1991
- ***************
- *** 66,72 ****
- --- 66,74 ----
- #define HAS_FTIME /* ftime() and <sys/timeb.h> available */
- #define HAS_PERROR /* can use sys_errlist and sys_nerr (from perror(3)) */
- #define HAS_MKDIR /* mkdir() and rmdir() available */
- + /* define either one of the next two, or neither: */
- #define HAS_GETWD /* getwd() available */
- + #undef HAS_GETCWD /* getcwd() available instead */
- #define HAS_RENAME /* rename() available */
- #define HAS_SELECT /* 4.2 BSD select() system call available */
- #define HAS_READDIR /* Berkeley style directory reading routines */
- EOF
- patch ./abc/unix/u1file.c <<EOF
- *** /ufs/timo/abcdist/abc/unix/u1file.c Thu Jan 25 12:54:26 1990
- --- ./abc/unix/u1file.c Thu Jan 3 16:35:54 1991
- ***************
- *** 9,16 ****
- extern char *getwd();
-
- Visible char *curdir() {
- ! static char buffer[SIZE_PATH];
- return getwd(buffer);
- }
-
- Hidden string searchfile(base, abclib) string base; string abclib; {
- --- 9,22 ----
- extern char *getwd();
-
- Visible char *curdir() {
- ! static char buffer[1024];
- ! #ifdef HAS_GETCWD
- ! char *getcwd();
- ! return getcwd(buffer, 1024);
- ! #else
- ! char *getwd();
- return getwd(buffer);
- + #endif
- }
-
- Hidden string searchfile(base, abclib) string base; string abclib; {
- EOF
- patch ./abc/unix/u1os.c <<EOF
- *** /ufs/timo/abcdist/abc/unix/u1os.c Thu Jan 25 12:54:26 1990
- --- ./abc/unix/u1os.c Thu Jan 3 16:35:54 1991
- ***************
- *** 16,22 ****
- --- 16,24 ----
-
- #endif /* !NDEBUG */
-
- + #ifndef HAS_GETCWD
- #ifndef HAS_GETWD
- + /* neither getwd, nor getcwd provided; define our own: */
-
- /* getwd - get working directory */
-
- ***************
- *** 37,42 ****
- --- 39,45 ----
- return (char*) NULL;
- }
-
- + #endif /* !HAS_GETCWD */
- #endif /* !HAS_GETWD */
-
- #ifndef HAS_RENAME
- EOF
- patch ./abc/doc/BugReport <<EOF
- *** abc.1.02.01/doc/BugReport Thu Jan 25 12:54:44 1990
- --- abc/doc/BugReport Fri Jan 4 21:13:31 1991
- ***************
- *** 19,25 ****
- Operating System: O 4.3 BSD O Version 7 O System V O other: .......
-
- ==========================================================================
- ! ABC Release 1.02.01.
- ==========================================================================
-
- FAULTY PROGRAM:
- --- 19,25 ----
- Operating System: O 4.3 BSD O Version 7 O System V O other: .......
-
- ==========================================================================
- ! ABC Release 1.02.02.
- ==========================================================================
-
- FAULTY PROGRAM:
- EOF
- echo 'Second Authors patch for ABC system (bugfixes) complete.'
- exit 0
-
- exit 0 # Just in case...
-