summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xConfigure96
-rw-r--r--Makefile.SH123
-rw-r--r--README2
-rw-r--r--hints/altos486.sh3
-rw-r--r--hints/apollo_C6_8.sh20
-rw-r--r--lib/assert.pl52
-rw-r--r--patchlevel.h2
-rw-r--r--usub/bsdcurses.mus684
-rw-r--r--x2p/Makefile.SH15
9 files changed, 913 insertions, 84 deletions
diff --git a/Configure b/Configure
index 9c4c3857a7..aba4247556 100755
--- a/Configure
+++ b/Configure
@@ -8,7 +8,7 @@
# and edit it to reflect your system. Some packages may include samples
# of config.h for certain machines, so you might look for one of those.)
#
-# $RCSfile: Configure,v $$Revision: 4.0.1.2 $$Date: 91/06/07 10:09:34 $
+# $RCSfile: Configure,v $$Revision: 4.0.1.5 $$Date: 91/11/05 23:11:32 $
#
# Yes, you may rip this off to use in other distribution packages.
# (Note: this Configure script was generated automatically. Rather than
@@ -17,13 +17,12 @@
cat >/tmp/c1$$ <<EOF
ARGGGHHHH!!!!!
-SCO csh still thinks true is false. Write to SCO today and tell them that next
-year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
+Your csh still thinks true is false. Write to your vendor today and tell
+them that next year Configure ought to "rm /bin/csh" unless they fix their
+blasted shell. :-)
-(Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
-we'd have to do is go in and swap the && and || tokens, wherever they are.)
-
-[End of diatribe. We now return you to your regularly scheduled programming...]
+[End of diatribe. We now return you to your regularly scheduled
+programming...]
EOF
cat >/tmp/c2$$ <<EOF
@@ -249,7 +248,7 @@ ndirc=''
ndiro=''
mallocsrc=''
mallocobj=''
-usemymalloc=''
+d_mymalloc=''
mallocptrtype=''
mansrc=''
manext=''
@@ -304,7 +303,21 @@ define='define'
undef='undef'
: change the next line if compiling for Xenix/286 on Xenix/386
xlibpth='/usr/lib/386 /lib/386'
-libpth='/usr/ccs/lib /usr/lib /usr/ucblib /usr/local/lib /usr/lib/large /lib '$xlibpth' /lib/large /usr/lib/small /lib/small'
+
+: the hints files may add more components to libpth
+test -d /usr/cs/lib && libpth="$libpth /usr/cs/lib"
+test -d /usr/ccs/lib && libpth="$libpth /usr/ccs/lib"
+test -d /usr/lib && libpth="$libpth /usr/lib"
+test -d /usr/ucblib && libpth="$libpth /usr/ucblib"
+test -d /usr/local/lib && libpth="$libpth /usr/local/lib"
+test -d /usr/lib/large && libpth="$libpth /usr/lib/large"
+test -d /lib && libpth="$libpth /lib"
+ libpth="$libpth $xlibpth"
+test -d /lib/large && libpth="$libpth /lib/large"
+test -d /usr/lib/small && libpth="$libpth /usr/lib/small"
+test -d /lib/small && libpth="$libpth /lib/small"
+test -d /usr/lib/cmplrs/cc && libpth="$libpth /usr/lib/cmplrs/cc"
+
smallmach='pdp11 i8086 z8000 i80286 iAPX286'
trap 'echo " "; exit 1' 1 2 3
@@ -341,7 +354,7 @@ serve_unix_tcp=""
d_ndir=ndir
voidwant=1
voidwant=7
-libswanted="c_s net_s net nsl_s nsl socket nm ndir ndbm dbm malloc sun m bsd BSD x posix ucb"
+libswanted="c_s net_s net nsl_s nsl socket nm ndir ndbm dbm PW malloc sun m bsd BSD x posix ucb"
inclwanted='/usr/include /usr/netinclude /usr/include/sun /usr/include/bsd /usr/include/lan /usr/ucbinclude'
: Now test for existence of everything in MANIFEST
@@ -737,6 +750,8 @@ if test -f ../config.sh; then
hint=previous
;;
esac
+else
+ lastuname=`(uname -a) 2>&1`
fi
if test -d ../hints && test ! -f ../config.sh; then
echo ' '
@@ -1262,6 +1277,11 @@ gcc*) cpp=`./loc gcc-cpp $cpp $pth`
n*) nativegcc="$undef"; gccflags='-fpcc-struct-return';;
*) nativegcc="$define"; gccflags='';;
esac
+ case "$gccflags" in
+ *-ansi*) ;;
+ *-traditional*) ;;
+ *) gccflags="$gccflags -traditional -Dvolatile=__volatile__" ;;
+ esac
;;
esac
@@ -1710,7 +1730,12 @@ EOT
cd ..
echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
chmod 755 cppstdin
-wrapper=`pwd`/cppstdin
+wrapper=cppstdin
+
+case "$cppstdin" in
+/*cppstdin) cppstdin=cppstdin;;
+esac
+cp cppstdin UU
cd UU
if test "X$cppstdin" != "X" && \
@@ -1736,12 +1761,6 @@ elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
echo "Yup, it does."
cppstdin="$cc -E"
cppminus='-';
-elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
- $wrapper <testcpp.c >testcpp.out 2>&1; \
- $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
- cppstdin="$wrapper"
- cppminus=''
- echo "Eureka!."
elif echo 'No such luck, maybe "'$cpp'" will work...'; \
$cpp <testcpp.c >testcpp.out 2>&1; \
$contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
@@ -1754,6 +1773,12 @@ elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
echo "Hooray, it works! I was beginning to wonder."
cppstdin="$cpp"
cppminus='-';
+elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
+ $wrapper <testcpp.c >testcpp.out 2>&1; \
+ $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+ cppstdin="$wrapper"
+ cppminus=''
+ echo "Eureka!."
elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
$cc -P <testcpp.c >testcpp.out 2>&1; \
$contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
@@ -2497,7 +2522,8 @@ echo " "
if $test -r $usrinclude/pwd.h ; then
i_pwd="$define"
echo "pwd.h found."
- $cppstdin $cppflags $cppminus <$usrinclude/pwd.h >pwd.txt
+ $cppstdin $cppflags $cppminus <$usrinclude/pwd.h | \
+ sed -n '/struct[ ][ ]*passwd/,/^};/p' >pwd.txt
if $contains 'pw_quota' pwd.txt >/dev/null 2>&1; then
d_pwquota="$define"
else
@@ -3029,15 +3055,23 @@ intsize="$ans"
: determine which malloc to compile in
echo " "
-case "$usemymalloc" in
+case "$d_mymalloc" in
'')
- if bsd || v7; then
- dflt='y'
- else
- dflt='n'
- fi
+ case "$usemymalloc" in
+ '')
+ if bsd || v7; then
+ dflt='y'
+ else
+ dflt='n'
+ fi
+ ;;
+ n*) dflt=n;;
+ *) dflt=y;;
+ esac
;;
-*) dflt="$usemymalloc"
+define) dflt="y"
+ ;;
+*) dflt="n"
;;
esac
rp="Do you wish to attempt to use the malloc that comes with $package? [$dflt]"
@@ -3046,10 +3080,10 @@ $echo $n "$rp $c"
case "$ans" in
'') ans=$dflt;;
esac
-usemymalloc="$ans"
case "$ans" in
y*) mallocsrc='malloc.c'; mallocobj='malloc.o'
libs=`echo $libs | sed 's/-lmalloc//'`
+ val="$define"
case "$mallocptrtype" in
'')
cat >usemymalloc.c <<'END'
@@ -3070,8 +3104,14 @@ END
echo " "
echo "Your system wants malloc to return $mallocptrtype*, it would seem."
;;
-*) mallocsrc=''; mallocobj=''; mallocptrtype=void;;
+*) mallocsrc='';
+ mallocobj='';
+ mallocptrtype=void
+ val="$define"
+ ;;
esac
+set d_mymalloc
+eval $setvar
: determine where private executables go
case "$privlib" in
@@ -3734,7 +3774,7 @@ ndirc='$ndirc'
ndiro='$ndiro'
mallocsrc='$mallocsrc'
mallocobj='$mallocobj'
-usemymalloc='$usemymalloc'
+d_mymalloc='$d_mymalloc'
mallocptrtype='$mallocptrtype'
mansrc='$mansrc'
manext='$manext'
diff --git a/Makefile.SH b/Makefile.SH
index 3efc862e28..cc60bf39c6 100644
--- a/Makefile.SH
+++ b/Makefile.SH
@@ -25,9 +25,13 @@ esac
echo "Extracting Makefile (with variable substitutions)"
cat >Makefile <<!GROK!THIS!
-# $RCSfile: Makefile.SH,v $$Revision: 4.0.1.2 $$Date: 91/06/07 10:14:43 $
+# $RCSfile: Makefile.SH,v $$Revision: 4.0.1.3 $$Date: 91/11/05 15:48:11 $
#
# $Log: Makefile.SH,v $
+# Revision 4.0.1.3 91/11/05 15:48:11 lwall
+# patch11: saberized perl
+# patch11: added support for dbz
+#
# Revision 4.0.1.2 91/06/07 10:14:43 lwall
# patch4: cflags now emits entire cc command except for the filename
# patch4: alternate make programs are now semi-supported
@@ -56,6 +60,7 @@ LARGE = $large $split
mallocsrc = $mallocsrc
mallocobj = $mallocobj
SLN = $sln
+RMS = rm -f
libs = $libs $cryptlib
@@ -91,8 +96,14 @@ c3 = stab.c str.c toke.c util.c usersub.c
c = $(c1) $(c2) $(c3)
+s1 = array.c cmd.c cons.c consarg.c doarg.c doio.c dolist.c dump.c
+s2 = eval.c form.c hash.c perl.c regcomp.c regexec.c
+s3 = stab.c str.c toke.c util.c usersub.c perly.c
+
+saber = $(s1) $(s2) $(s3)
+
obj1 = array.o cmd.o cons.o consarg.o doarg.o doio.o dolist.o dump.o
-obj2 = eval.o form.o hash.o $(mallocobj) perl.o regcomp.o regexec.o
+obj2 = eval.o form.o $(mallocobj) perl.o regcomp.o regexec.o
obj3 = stab.o str.o toke.o util.o
obj = $(obj1) $(obj2) $(obj3)
@@ -122,14 +133,26 @@ all: $(public) $(private) $(util) uperl.o $(scripts)
# The $& notation is tells Sequent machines that it can do a parallel make,
# and is harmless otherwise.
-perl: $& perly.o $(obj) usersub.o
- $(CC) $(LARGE) $(CLDFLAGS) $(obj) perly.o usersub.o $(libs) -o perl
+perl: $& perly.o $(obj) hash.o usersub.o
+ $(CC) $(LARGE) $(CLDFLAGS) $(obj) hash.o perly.o usersub.o $(libs) -o perl
+
+# This command assumes that /usr/include/dbz.h and /usr/lib/dbz.o exist.
+
+dbzperl: $& perly.o $(obj) zhash.o usersub.o
+ $(CC) $(LARGE) $(CLDFLAGS) $(obj) zhash.o /usr/lib/dbz.o perly.o usersub.o $(libs) -o dbzperl
+
+zhash.o: hash.c $(h)
+ $(RMS) zhash.c
+ $(SLN) hash.c zhash.c
+ $(CCCMD) -DWANT_DBZ zhash.c
+ $(RMS) zhash.c
-uperl.o: $& perly.o $(obj)
- -ld $(LARGE) $(LDFLAGS) -r $(obj) perly.o -o uperl.o
+uperl.o: $& perly.o $(obj) hash.o
+ -ld $(LARGE) $(LDFLAGS) -r $(obj) hash.o perly.o -o uperl.o
-saber: perly.c
- # load $(c) perly.c
+saber: $(saber)
+ # load $(saber)
+ # load /lib/libm.a
# This version, if specified in Configure, does ONLY those scripts which need
# set-id emulation. Suidperl must be setuid root. It contains the "taint"
@@ -152,124 +175,124 @@ taintperl: $& tperly.o tperl.o $(tobj) usersub.o
# Replicating all this junk is yucky, but I don't see a portable way to fix it.
tperly.o: perly.c perly.h $(h)
- /bin/rm -f tperly.c
+ $(RMS) tperly.c
$(SLN) perly.c tperly.c
$(CCCMD) -DTAINT tperly.c
- /bin/rm -f tperly.c
+ $(RMS) tperly.c
tperl.o: perl.c perly.h patchlevel.h perl.h $(h)
- /bin/rm -f tperl.c
+ $(RMS) tperl.c
$(SLN) perl.c tperl.c
$(CCCMD) -DTAINT tperl.c
- /bin/rm -f tperl.c
+ $(RMS) tperl.c
sperl.o: perl.c perly.h patchlevel.h $(h)
- /bin/rm -f sperl.c
+ $(RMS) sperl.c
$(SLN) perl.c sperl.c
$(CCCMD) -DTAINT -DIAMSUID sperl.c
- /bin/rm -f sperl.c
+ $(RMS) sperl.c
tarray.o: array.c $(h)
- /bin/rm -f tarray.c
+ $(RMS) tarray.c
$(SLN) array.c tarray.c
$(CCCMD) -DTAINT tarray.c
- /bin/rm -f tarray.c
+ $(RMS) tarray.c
tcmd.o: cmd.c $(h)
- /bin/rm -f tcmd.c
+ $(RMS) tcmd.c
$(SLN) cmd.c tcmd.c
$(CCCMD) -DTAINT tcmd.c
- /bin/rm -f tcmd.c
+ $(RMS) tcmd.c
tcons.o: cons.c $(h) perly.h
- /bin/rm -f tcons.c
+ $(RMS) tcons.c
$(SLN) cons.c tcons.c
$(CCCMD) -DTAINT tcons.c
- /bin/rm -f tcons.c
+ $(RMS) tcons.c
tconsarg.o: consarg.c $(h)
- /bin/rm -f tconsarg.c
+ $(RMS) tconsarg.c
$(SLN) consarg.c tconsarg.c
$(CCCMD) -DTAINT tconsarg.c
- /bin/rm -f tconsarg.c
+ $(RMS) tconsarg.c
tdoarg.o: doarg.c $(h)
- /bin/rm -f tdoarg.c
+ $(RMS) tdoarg.c
$(SLN) doarg.c tdoarg.c
$(CCCMD) -DTAINT tdoarg.c
- /bin/rm -f tdoarg.c
+ $(RMS) tdoarg.c
tdoio.o: doio.c $(h)
- /bin/rm -f tdoio.c
+ $(RMS) tdoio.c
$(SLN) doio.c tdoio.c
$(CCCMD) -DTAINT tdoio.c
- /bin/rm -f tdoio.c
+ $(RMS) tdoio.c
tdolist.o: dolist.c $(h)
- /bin/rm -f tdolist.c
+ $(RMS) tdolist.c
$(SLN) dolist.c tdolist.c
$(CCCMD) -DTAINT tdolist.c
- /bin/rm -f tdolist.c
+ $(RMS) tdolist.c
tdump.o: dump.c $(h)
- /bin/rm -f tdump.c
+ $(RMS) tdump.c
$(SLN) dump.c tdump.c
$(CCCMD) -DTAINT tdump.c
- /bin/rm -f tdump.c
+ $(RMS) tdump.c
teval.o: eval.c $(h)
- /bin/rm -f teval.c
+ $(RMS) teval.c
$(SLN) eval.c teval.c
$(CCCMD) -DTAINT teval.c
- /bin/rm -f teval.c
+ $(RMS) teval.c
tform.o: form.c $(h)
- /bin/rm -f tform.c
+ $(RMS) tform.c
$(SLN) form.c tform.c
$(CCCMD) -DTAINT tform.c
- /bin/rm -f tform.c
+ $(RMS) tform.c
thash.o: hash.c $(h)
- /bin/rm -f thash.c
+ $(RMS) thash.c
$(SLN) hash.c thash.c
$(CCCMD) -DTAINT thash.c
- /bin/rm -f thash.c
+ $(RMS) thash.c
tregcomp.o: regcomp.c $(h)
- /bin/rm -f tregcomp.c
+ $(RMS) tregcomp.c
$(SLN) regcomp.c tregcomp.c
$(CCCMD) -DTAINT tregcomp.c
- /bin/rm -f tregcomp.c
+ $(RMS) tregcomp.c
tregexec.o: regexec.c $(h)
- /bin/rm -f tregexec.c
+ $(RMS) tregexec.c
$(SLN) regexec.c tregexec.c
$(CCCMD) -DTAINT tregexec.c
- /bin/rm -f tregexec.c
+ $(RMS) tregexec.c
tstab.o: stab.c $(h)
- /bin/rm -f tstab.c
+ $(RMS) tstab.c
$(SLN) stab.c tstab.c
$(CCCMD) -DTAINT tstab.c
- /bin/rm -f tstab.c
+ $(RMS) tstab.c
tstr.o: str.c $(h) perly.h
- /bin/rm -f tstr.c
+ $(RMS) tstr.c
$(SLN) str.c tstr.c
$(CCCMD) -DTAINT tstr.c
- /bin/rm -f tstr.c
+ $(RMS) tstr.c
ttoke.o: toke.c $(h) perly.h
- /bin/rm -f ttoke.c
+ $(RMS) ttoke.c
$(SLN) toke.c ttoke.c
$(CCCMD) -DTAINT ttoke.c
- /bin/rm -f ttoke.c
+ $(RMS) ttoke.c
tutil.o: util.c $(h)
- /bin/rm -f tutil.c
+ $(RMS) tutil.c
$(SLN) util.c tutil.c
$(CCCMD) -DTAINT tutil.c
- /bin/rm -f tutil.c
+ $(RMS) tutil.c
perly.h: perly.c
@ echo Dummy dependency for dumb parallel make
@@ -298,6 +321,7 @@ realclean: clean
rm -f *.orig */*.orig *~ */*~ core $(addedbyconf) h2ph h2ph.man
rm -f perly.c perly.h t/perl Makefile config.h makedepend makedir
rm -f makefile x2p/Makefile x2p/makefile cflags x2p/cflags
+ rm -f c2ph pstruct
# The following lint has practically everything turned on. Unfortunately,
# you have to wade through a lot of mumbo jumbo that can't be suppressed.
@@ -327,7 +351,7 @@ shlist:
echo $(sh) | tr ' ' '\012' >.shlist
# AUTOMATICALLY GENERATED MAKE DEPENDENCIES--PUT NOTHING BELOW THIS LINE
-$(obj):
+$(obj) hash.o:
@ echo "You haven't done a "'"make depend" yet!'; exit 1
makedepend: makedepend.SH
/bin/sh makedepend.SH
@@ -339,3 +363,4 @@ case `pwd` in
ln Makefile ../Makefile
;;
esac
+rm -f makefile
diff --git a/README b/README
index 0e55e7c9e3..c52c7f4986 100644
--- a/README
+++ b/README
@@ -149,6 +149,8 @@ Installation
If you have GDBM available and want it instead of NDBM, say -DHAS_GDBM.
C's that don't try to restore registers on longjmp() may need -DJMPCLOBBER.
(Try this if you get random glitches.)
+ If you get duplicates upon linking for malloc et al, say -DHIDEMYMALLOC.
+ Turn on support for 64-bit integers (long longs) with -DQUAD.
5) make test
diff --git a/hints/altos486.sh b/hints/altos486.sh
new file mode 100644
index 0000000000..b85f907e34
--- /dev/null
+++ b/hints/altos486.sh
@@ -0,0 +1,3 @@
+: have heard of problems with -lc_s on Altos 486
+set `echo " $libswanted " | sed "s/ c_s / /"`
+libswanted="$*"
diff --git a/hints/apollo_C6_8.sh b/hints/apollo_C6_8.sh
new file mode 100644
index 0000000000..06fe7d73eb
--- /dev/null
+++ b/hints/apollo_C6_8.sh
@@ -0,0 +1,20 @@
+optimize=''
+ccflags='-DDEBUGGING -A cpu,mathchip -W0,-opt,2'
+
+cat <<'EOF'
+Some tests may fail unless you use 'chacl -B'. Also, op/stat
+test 2 may fail occasionally because Apollo doesn't guarantee
+that mtime will be equal to ctime on a newly created unmodified
+file. Finally, the sleep test will sometimes fail. See the
+sleep(3) man page to learn why.
+
+And a note on ccflags:
+
+ Lastly, while -A cpu,mathchip generates optimal code for your DN3500
+ running sr10.3, be aware that you should be using -A cpu,mathlib_sr10
+ if your perl must also run on any machines running sr10.0, sr10.1, or
+ sr10.2. The -A cpu,mathchip option generates code that doesn't work on
+ pre-sr10.3 nodes. See the cc(1) man page for more details.
+ -- Steve Vinoski
+
+EOF
diff --git a/lib/assert.pl b/lib/assert.pl
new file mode 100644
index 0000000000..cfda70cf29
--- /dev/null
+++ b/lib/assert.pl
@@ -0,0 +1,52 @@
+# assert.pl
+# tchrist@convex.com (Tom Christiansen)
+#
+# Usage:
+#
+# &assert('@x > @y');
+# &assert('$var > 10', $var, $othervar, @various_info);
+#
+# That is, if the first expression evals false, we blow up. The
+# rest of the args, if any, are nice to know because they will
+# be printed out by &panic, which is just the stack-backtrace
+# routine shamelessly borrowed from the perl debugger.
+
+sub assert {
+ &panic("ASSERTION BOTCHED: $_[0]",$@) unless eval $_[0];
+}
+
+sub panic {
+ select(STDERR);
+
+ print "\npanic: @_\n";
+
+ exit 1 if $] <= 4.003; # caller broken
+
+ # stack traceback gratefully borrowed from perl debugger
+
+ local($i,$_);
+ local($p,$f,$l,$s,$h,$a,@a,@sub);
+ for ($i = 0; ($p,$f,$l,$s,$h,$w) = caller($i); $i++) {
+ @a = @DB'args;
+ for (@a) {
+ if (/^StB\000/ && length($_) == length($_main{'_main'})) {
+ $_ = sprintf("%s",$_);
+ }
+ else {
+ s/'/\\'/g;
+ s/([^\0]*)/'$1'/ unless /^-?[\d.]+$/;
+ s/([\200-\377])/sprintf("M-%c",ord($1)&0177)/eg;
+ s/([\0-\37\177])/sprintf("^%c",ord($1)^64)/eg;
+ }
+ }
+ $w = $w ? '@ = ' : '$ = ';
+ $a = $h ? '(' . join(', ', @a) . ')' : '';
+ push(@sub, "$w&$s$a from file $f line $l\n");
+ }
+ for ($i=0; $i <= $#sub; $i++) {
+ print $sub[$i];
+ }
+ exit 1;
+}
+
+1;
diff --git a/patchlevel.h b/patchlevel.h
index 4e0e918bcb..98702f8e84 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -1 +1 @@
-#define PATCHLEVEL 10
+#define PATCHLEVEL 11
diff --git a/usub/bsdcurses.mus b/usub/bsdcurses.mus
new file mode 100644
index 0000000000..48e2df7f34
--- /dev/null
+++ b/usub/bsdcurses.mus
@@ -0,0 +1,684 @@
+/* $RCSfile: bsdcurses.mus,v $$Revision: 4.0.1.1 $$Date: 91/11/05 19:04:53 $
+ *
+ * $Log: bsdcurses.mus,v $
+ * Revision 4.0.1.1 91/11/05 19:04:53 lwall
+ * initial checkin
+ *
+ * Revision 4.0 91/03/20 01:56:13 lwall
+ * 4.0 baseline.
+ *
+ * Revision 3.0.1.1 90/08/09 04:05:21 lwall
+ * patch19: Initial revision
+ *
+ */
+
+#include "EXTERN.h"
+#include "perl.h"
+
+char *savestr();
+
+#include <curses.h>
+
+static enum uservars {
+ UV_curscr,
+ UV_stdscr,
+ UV_Def_term,
+ UV_My_term,
+ UV_ttytype,
+ UV_LINES,
+ UV_COLS,
+ UV_ERR,
+ UV_OK,
+};
+
+static enum usersubs {
+ US_addch,
+ US_waddch,
+ US_addstr,
+ US_waddstr,
+ US_box,
+ US_clear,
+ US_wclear,
+ US_clearok,
+ US_clrtobot,
+ US_wclrtobot,
+ US_clrtoeol,
+ US_wclrtoeol,
+ US_delch,
+ US_wdelch,
+ US_deleteln,
+ US_wdeleteln,
+ US_erase,
+ US_werase,
+ US_flushok,
+ US_idlok,
+ US_insch,
+ US_winsch,
+ US_insertln,
+ US_winsertln,
+ US_move,
+ US_wmove,
+ US_overlay,
+ US_overwrite,
+ US_printw,
+ US_wprintw,
+ US_refresh,
+ US_wrefresh,
+ US_standout,
+ US_wstandout,
+ US_standend,
+ US_wstandend,
+ US_cbreak,
+ US_nocbreak,
+ US_echo,
+ US_noecho,
+ US_getch,
+ US_wgetch,
+ US_getstr,
+ US_wgetstr,
+ US_raw,
+ US_noraw,
+ US_scanw,
+ US_wscanw,
+ US_baudrate,
+ US_delwin,
+ US_endwin,
+ US_erasechar,
+ US_getcap,
+ US_getyx,
+ US_inch,
+ US_winch,
+ US_initscr,
+ US_killchar,
+ US_leaveok,
+ US_longname,
+ US_fullname,
+ US_mvwin,
+ US_newwin,
+ US_nl,
+ US_nonl,
+ US_scrollok,
+ US_subwin,
+ US_touchline,
+ US_touchoverlap,
+ US_touchwin,
+ US_unctrl,
+ US_gettmode,
+ US_mvcur,
+ US_scroll,
+ US_savetty,
+ US_resetty,
+ US_setterm,
+ US_tstp,
+ US__putchar,
+ US_testcallback,
+};
+
+static int usersub();
+static int userset();
+static int userval();
+
+int
+init_curses()
+{
+ struct ufuncs uf;
+ char *filename = "curses.c";
+
+ uf.uf_set = userset;
+ uf.uf_val = userval;
+
+#define MAGICVAR(name, ix) uf.uf_index = ix, magicname(name, &uf, sizeof uf)
+
+ MAGICVAR("curscr", UV_curscr);
+ MAGICVAR("stdscr", UV_stdscr);
+ MAGICVAR("Def_term",UV_Def_term);
+ MAGICVAR("My_term", UV_My_term);
+ MAGICVAR("ttytype", UV_ttytype);
+ MAGICVAR("LINES", UV_LINES);
+ MAGICVAR("COLS", UV_COLS);
+ MAGICVAR("ERR", UV_ERR);
+ MAGICVAR("OK", UV_OK);
+
+ make_usub("addch", US_addch, usersub, filename);
+ make_usub("waddch", US_waddch, usersub, filename);
+ make_usub("addstr", US_addstr, usersub, filename);
+ make_usub("waddstr", US_waddstr, usersub, filename);
+ make_usub("box", US_box, usersub, filename);
+ make_usub("clear", US_clear, usersub, filename);
+ make_usub("wclear", US_wclear, usersub, filename);
+ make_usub("clearok", US_clearok, usersub, filename);
+ make_usub("clrtobot", US_clrtobot, usersub, filename);
+ make_usub("wclrtobot", US_wclrtobot, usersub, filename);
+ make_usub("clrtoeol", US_clrtoeol, usersub, filename);
+ make_usub("wclrtoeol", US_wclrtoeol, usersub, filename);
+ make_usub("delch", US_delch, usersub, filename);
+ make_usub("wdelch", US_wdelch, usersub, filename);
+ make_usub("deleteln", US_deleteln, usersub, filename);
+ make_usub("wdeleteln", US_wdeleteln, usersub, filename);
+ make_usub("erase", US_erase, usersub, filename);
+ make_usub("werase", US_werase, usersub, filename);
+ make_usub("flushok", US_flushok, usersub, filename);
+ make_usub("idlok", US_idlok, usersub, filename);
+ make_usub("insch", US_insch, usersub, filename);
+ make_usub("winsch", US_winsch, usersub, filename);
+ make_usub("insertln", US_insertln, usersub, filename);
+ make_usub("winsertln", US_winsertln, usersub, filename);
+ make_usub("move", US_move, usersub, filename);
+ make_usub("wmove", US_wmove, usersub, filename);
+ make_usub("overlay", US_overlay, usersub, filename);
+ make_usub("overwrite", US_overwrite, usersub, filename);
+ make_usub("printw", US_printw, usersub, filename);
+ make_usub("wprintw", US_wprintw, usersub, filename);
+ make_usub("refresh", US_refresh, usersub, filename);
+ make_usub("wrefresh", US_wrefresh, usersub, filename);
+ make_usub("standout", US_standout, usersub, filename);
+ make_usub("wstandout", US_wstandout, usersub, filename);
+ make_usub("standend", US_standend, usersub, filename);
+ make_usub("wstandend", US_wstandend, usersub, filename);
+ make_usub("cbreak", US_cbreak, usersub, filename);
+ make_usub("nocbreak", US_nocbreak, usersub, filename);
+ make_usub("echo", US_echo, usersub, filename);
+ make_usub("noecho", US_noecho, usersub, filename);
+ make_usub("getch", US_getch, usersub, filename);
+ make_usub("wgetch", US_wgetch, usersub, filename);
+ make_usub("getstr", US_getstr, usersub, filename);
+ make_usub("wgetstr", US_wgetstr, usersub, filename);
+ make_usub("raw", US_raw, usersub, filename);
+ make_usub("noraw", US_noraw, usersub, filename);
+ make_usub("scanw", US_scanw, usersub, filename);
+ make_usub("wscanw", US_wscanw, usersub, filename);
+ make_usub("baudrate", US_baudrate, usersub, filename);
+ make_usub("delwin", US_delwin, usersub, filename);
+ make_usub("endwin", US_endwin, usersub, filename);
+ make_usub("erasechar", US_erasechar, usersub, filename);
+ make_usub("getcap", US_getcap, usersub, filename);
+ make_usub("getyx", US_getyx, usersub, filename);
+ make_usub("inch", US_inch, usersub, filename);
+ make_usub("winch", US_winch, usersub, filename);
+ make_usub("initscr", US_initscr, usersub, filename);
+ make_usub("killchar", US_killchar, usersub, filename);
+ make_usub("leaveok", US_leaveok, usersub, filename);
+ make_usub("longname", US_longname, usersub, filename);
+ make_usub("fullname", US_fullname, usersub, filename);
+ make_usub("mvwin", US_mvwin, usersub, filename);
+ make_usub("newwin", US_newwin, usersub, filename);
+ make_usub("nl", US_nl, usersub, filename);
+ make_usub("nonl", US_nonl, usersub, filename);
+ make_usub("scrollok", US_scrollok, usersub, filename);
+ make_usub("subwin", US_subwin, usersub, filename);
+ make_usub("touchline", US_touchline, usersub, filename);
+ make_usub("touchoverlap", US_touchoverlap,usersub, filename);
+ make_usub("touchwin", US_touchwin, usersub, filename);
+ make_usub("unctrl", US_unctrl, usersub, filename);
+ make_usub("gettmode", US_gettmode, usersub, filename);
+ make_usub("mvcur", US_mvcur, usersub, filename);
+ make_usub("scroll", US_scroll, usersub, filename);
+ make_usub("savetty", US_savetty, usersub, filename);
+ make_usub("resetty", US_resetty, usersub, filename);
+ make_usub("setterm", US_setterm, usersub, filename);
+ make_usub("tstp", US_tstp, usersub, filename);
+ make_usub("_putchar", US__putchar, usersub, filename);
+ make_usub("testcallback", US_testcallback,usersub, filename);
+};
+
+static int
+usersub(ix, sp, items)
+int ix;
+register int sp;
+register int items;
+{
+ STR **st = stack->ary_array + sp;
+ register int i;
+ register char *tmps;
+ register STR *Str; /* used in str_get and str_gnum macros */
+
+ switch (ix) {
+CASE int addch
+I char ch
+END
+
+CASE int waddch
+I WINDOW* win
+I char ch
+END
+
+CASE int addstr
+I char* str
+END
+
+CASE int waddstr
+I WINDOW* win
+I char* str
+END
+
+CASE int box
+I WINDOW* win
+I char vert
+I char hor
+END
+
+CASE int clear
+END
+
+CASE int wclear
+I WINDOW* win
+END
+
+CASE int clearok
+I WINDOW* win
+I bool boolf
+END
+
+CASE int clrtobot
+END
+
+CASE int wclrtobot
+I WINDOW* win
+END
+
+CASE int clrtoeol
+END
+
+CASE int wclrtoeol
+I WINDOW* win
+END
+
+CASE int delch
+END
+
+CASE int wdelch
+I WINDOW* win
+END
+
+CASE int deleteln
+END
+
+CASE int wdeleteln
+I WINDOW* win
+END
+
+CASE int erase
+END
+
+CASE int werase
+I WINDOW* win
+END
+
+CASE int flushok
+I WINDOW* win
+I bool boolf
+END
+
+CASE int idlok
+I WINDOW* win
+I bool boolf
+END
+
+CASE int insch
+I char c
+END
+
+CASE int winsch
+I WINDOW* win
+I char c
+END
+
+CASE int insertln
+END
+
+CASE int winsertln
+I WINDOW* win
+END
+
+CASE int move
+I int y
+I int x
+END
+
+CASE int wmove
+I WINDOW* win
+I int y
+I int x
+END
+
+CASE int overlay
+I WINDOW* win1
+I WINDOW* win2
+END
+
+CASE int overwrite
+I WINDOW* win1
+I WINDOW* win2
+END
+
+ case US_printw:
+ if (items < 1)
+ fatal("Usage: &printw($fmt, $arg1, $arg2, ... )");
+ else {
+ int retval;
+ STR* str = str_new(0);
+
+ do_sprintf(str, items - 1, st + 1);
+ retval = addstr(str->str_ptr);
+ str_numset(st[0], (double) retval);
+ str_free(str);
+ }
+ return sp;
+
+ case US_wprintw:
+ if (items < 2)
+ fatal("Usage: &wprintw($win, $fmt, $arg1, $arg2, ... )");
+ else {
+ int retval;
+ STR* str = str_new(0);
+ WINDOW* win = *(WINDOW**) str_get(st[1]);
+
+ do_sprintf(str, items - 1, st + 1);
+ retval = waddstr(win, str->str_ptr);
+ str_numset(st[0], (double) retval);
+ str_free(str);
+ }
+ return sp;
+
+CASE int refresh
+END
+
+CASE int wrefresh
+I WINDOW* win
+END
+
+CASE int standout
+END
+
+CASE int wstandout
+I WINDOW* win
+END
+
+CASE int standend
+END
+
+CASE int wstandend
+I WINDOW* win
+END
+
+CASE int cbreak
+END
+
+CASE int nocbreak
+END
+
+CASE int echo
+END
+
+CASE int noecho
+END
+
+ case US_getch:
+ if (items != 0)
+ fatal("Usage: &getch()");
+ else {
+ int retval;
+ char retch;
+
+ retval = getch();
+ if (retval == EOF)
+ st[0] = &str_undef;
+ else {
+ retch = retval;
+ str_nset(st[0], &retch, 1);
+ }
+ }
+ return sp;
+
+ case US_wgetch:
+ if (items != 1)
+ fatal("Usage: &wgetch($win)");
+ else {
+ int retval;
+ char retch;
+ WINDOW* win = *(WINDOW**) str_get(st[1]);
+
+ retval = wgetch(win);
+ if (retval == EOF)
+ st[0] = &str_undef;
+ else {
+ retch = retval;
+ str_nset(st[0], &retch, 1);
+ }
+ }
+ return sp;
+
+CASE int getstr
+IO char* str
+END
+
+CASE int wgetstr
+I WINDOW* win
+IO char* str
+END
+
+CASE int raw
+END
+
+CASE int noraw
+END
+
+CASE int baudrate
+END
+
+CASE int delwin
+I WINDOW* win
+END
+
+CASE int endwin
+END
+
+CASE int erasechar
+END
+
+CASE char* getcap
+I char* str
+END
+
+ case US_getyx:
+ if (items != 3)
+ fatal("Usage: &getyx($win, $y, $x)");
+ else {
+ int retval;
+ STR* str = str_new(0);
+ WINDOW* win = *(WINDOW**) str_get(st[1]);
+ int y;
+ int x;
+
+ do_sprintf(str, items - 1, st + 1);
+ retval = getyx(win, y, x);
+ str_numset(st[2], (double)y);
+ str_numset(st[3], (double)x);
+ str_numset(st[0], (double) retval);
+ str_free(str);
+ }
+ return sp;
+
+
+CASE int inch
+END
+
+CASE int winch
+I WINDOW* win
+END
+
+CASE WINDOW* initscr
+END
+
+CASE int killchar
+END
+
+CASE int leaveok
+I WINDOW* win
+I bool boolf
+END
+
+CASE char* longname
+I char* termbuf
+IO char* name
+END
+
+CASE int fullname
+I char* termbuf
+IO char* name
+END
+
+CASE int mvwin
+I WINDOW* win
+I int y
+I int x
+END
+
+CASE WINDOW* newwin
+I int lines
+I int cols
+I int begin_y
+I int begin_x
+END
+
+CASE int nl
+END
+
+CASE int nonl
+END
+
+CASE int scrollok
+I WINDOW* win
+I bool boolf
+END
+
+CASE WINDOW* subwin
+I WINDOW* win
+I int lines
+I int cols
+I int begin_y
+I int begin_x
+END
+
+CASE int touchline
+I WINDOW* win
+I int y
+I int startx
+I int endx
+END
+
+CASE int touchoverlap
+I WINDOW* win1
+I WINDOW* win2
+END
+
+CASE int touchwin
+I WINDOW* win
+END
+
+CASE char* unctrl
+I char ch
+END
+
+CASE int gettmode
+END
+
+CASE int mvcur
+I int lasty
+I int lastx
+I int newy
+I int newx
+END
+
+CASE int scroll
+I WINDOW* win
+END
+
+CASE int savetty
+END
+
+CASE void resetty
+END
+
+CASE int setterm
+I char* name
+END
+
+CASE int tstp
+END
+
+CASE int _putchar
+I char ch
+END
+
+ case US_testcallback:
+ sp = callback("callback", sp + items, curcsv->wantarray, 1, items);
+ break;
+
+ default:
+ fatal("Unimplemented user-defined subroutine");
+ }
+ return sp;
+}
+
+static int
+userval(ix, str)
+int ix;
+STR *str;
+{
+ switch (ix) {
+ case UV_COLS:
+ str_numset(str, (double)COLS);
+ break;
+ case UV_Def_term:
+ str_set(str, Def_term);
+ break;
+ case UV_ERR:
+ str_numset(str, (double)ERR);
+ break;
+ case UV_LINES:
+ str_numset(str, (double)LINES);
+ break;
+ case UV_My_term:
+ str_numset(str, (double)My_term);
+ break;
+ case UV_OK:
+ str_numset(str, (double)OK);
+ break;
+ case UV_curscr:
+ str_nset(str, &curscr, sizeof(WINDOW*));
+ break;
+ case UV_stdscr:
+ str_nset(str, &stdscr, sizeof(WINDOW*));
+ break;
+ case UV_ttytype:
+ str_set(str, ttytype);
+ break;
+ }
+ return 0;
+}
+
+static int
+userset(ix, str)
+int ix;
+STR *str;
+{
+ switch (ix) {
+ case UV_COLS:
+ COLS = (int)str_gnum(str);
+ break;
+ case UV_Def_term:
+ Def_term = savestr(str_get(str)); /* never freed */
+ break;
+ case UV_LINES:
+ LINES = (int)str_gnum(str);
+ break;
+ case UV_My_term:
+ My_term = (bool)str_gnum(str);
+ break;
+ case UV_ttytype:
+ strcpy(ttytype, str_get(str)); /* hope it fits */
+ break;
+ }
+ return 0;
+}
diff --git a/x2p/Makefile.SH b/x2p/Makefile.SH
index f4a1c665a4..a8a77175a2 100644
--- a/x2p/Makefile.SH
+++ b/x2p/Makefile.SH
@@ -13,15 +13,14 @@ case $CONFIG in
. ./config.sh
;;
esac
-case "$mallocsrc" in
-'') ;;
-*) mallocsrc="../$mallocsrc";;
-esac
echo "Extracting x2p/Makefile (with variable substitutions)"
cat >Makefile <<!GROK!THIS!
-# $RCSfile: Makefile.SH,v $$Revision: 4.0.1.1 $$Date: 91/06/07 12:12:14 $
+# $RCSfile: Makefile.SH,v $$Revision: 4.0.1.2 $$Date: 91/11/05 19:19:04 $
#
# $Log: Makefile.SH,v $
+# Revision 4.0.1.2 91/11/05 19:19:04 lwall
+# patch11: random cleanup
+#
# Revision 4.0.1.1 91/06/07 12:12:14 lwall
# patch4: cflags now emits entire cc command except for the filename
#
@@ -119,7 +118,7 @@ realclean: clean
lint:
lint $(lintflags) $(defs) $(c) > a2p.fuzz
-depend: ../makedepend
+depend: $(mallocsrc) ../makedepend
../makedepend
clist:
@@ -135,6 +134,9 @@ config.sh: ../config.sh
rm -f config.sh
ln ../config.sh .
+malloc.c: ../malloc.c
+ sed 's/"perl.h"/"..\/perl.h"/' ../malloc.c >malloc.c
+
# AUTOMATICALLY GENERATED MAKE DEPENDENCIES--PUT NOTHING BELOW THIS LINE
$(obj):
@ echo "You haven't done a "'"make depend" yet!'; exit 1
@@ -148,3 +150,4 @@ case `pwd` in
ln Makefile ../Makefile
;;
esac
+rm -f makefile