[comp.unix.microport] Jove 4.14: Diffs for System V and Microport V/AT

tvf@frau.UUCP (Thomas V. Frauenhofer) (01/31/90)

Below is a shar file containing all the diffs needed to make Jove 4.14
compile and run under System V UNIX, specifically Microport V/AT 2.4.  A
couple of quick notes for people who might use this:

	1)	Define UPORT if you are using Microport.  This gets around
		two pieces of Microport brain-damage.  It removes large buffers
		from the stack (Microport's loader has an option that sup-
		posedly resizes the stack, but it doesn't seem to work).  It
		also deals with the problem where the Micoport people mis-typed
		the parameters for 'tgetstr' (Grr!).

	2)	The compile/link flag '-Ml' is also required for Microport,
		BUT SHOULD NOT BE USED FOR OTHER SYSTEM V SYSTEMS!

Things are still not perfect in Microport-world however.  Three outstanding
bugs are:

	1)	When you delete a line, another line magically "disappears"
		from the screen.  It's still in the buffer, and if you
		refresh the screen (using the 'clear-and-redraw' command)
		it reappears.  This is a bug in the ansi termifo that
		Microport supplies, I'll be playing with it to get something
		to work.

	2)	(Similar to the above) sometimes when I am scrolling down a
		file I see duplicate lines displayed.  'clear-and-redraw'
		again clears this up.

	3)	When JOVE is invoked in your HOME directory, it DOES NOT LOAD
		your .joverc file.  I'm not sure what the problem is here, it
		doesn't happen under the other System V machine I use.
		Wierd.

Personally, I can live with the above much better than I can tolerate vi (no
religious flames, please, this is a personal preferance).

Well, that's all for now.  This shar file has an exit at the end, so you
don't have to worry about the trailing garbage.

Thanks to Jon Payne for such a useful piece of software.

- Tom Frauenhofer (Signature at end)

------------------------------ CUT HERE -------------------------------------
:
# This shar file format does not care which shell (Bourne/C/Korn)
# you use, as it should always select Bourne (or Korn).
#
#
# COMMENTS
#
#	This contains context diffs for all the files I had to modify to get JOVE
#	version 4.14 to compile and execute under System V UNIX and Microport V/AT
#	version 2.4 (I believe that it will also compile under verions 2.3 as well).
#
# Files:
#	Makefile.diff
#	jove.c.diff
#	misc.c.diff
#	recover.c.diff
#	scandir.c.diff
#	sysdep.h.diff
#	term.c.diff
#	termcap.h.diff
#	util.c.diff
#
#
# Test if file exists
#
if [ -f Makefile.diff ]
then
echo "Will not overwrite existing file Makefile.diff"
else
#
# Extract contents of file Makefile.diff:
#
echo "-x Makefile.diff"
cat << \FLUNK_STUFF > 'Makefile.diff'
*** Makefile	Wed Jan 10 19:14:54 1990
--- Makefile.new	Sat Nov  4 08:17:56 1989
***************
*** 21,33 ****
  
  DESTDIR =
  
  TMPDIR = /tmp
  RECDIR = /tmp
! LIBDIR = $(HOME)/lib/jove
! BINDIR = $(HOME)/bin/sun3
! MANDIR = $(HOME)/lib/man$(MANEXT)
  MANEXT = l
! JSHELL = /bin/csh
  
  PROG = jove
  VERSION = 4.14
--- 21,34 ----
  
  DESTDIR =
  
+ ROOTDIR=/u/new
  TMPDIR = /tmp
  RECDIR = /tmp
! LIBDIR = $(ROOTDIR)/lib/jove
! BINDIR = $(ROOTDIR)/prebin
! MANDIR = $(ROOTDIR)/lib/man$(MANEXT)
  MANEXT = l
! JSHELL = /u/new/bin/ksh
  
  PROG = jove
  VERSION = 4.14
***************
*** 54,60 ****
  #	SCO Xenix: LIBS = -ltermcap -lx
  #	MIPS: -lbsd
  
! LIBS = -ltermcap
  
  # If you are not VMUNIX (vax running Berkeley Version 4), you must specify
  # the -i flags (split I/D space) and maybe the -x option (for adb to work).
--- 55,61 ----
  #	SCO Xenix: LIBS = -ltermcap -lx
  #	MIPS: -lbsd
  
! LIBS = -lcurses
  
  # If you are not VMUNIX (vax running Berkeley Version 4), you must specify
  # the -i flags (split I/D space) and maybe the -x option (for adb to work).
***************
*** 63,69 ****
  #	4.1BSD:	LDFLAGS =
  #	4.2BSD:	LDFLAGS =
  #	4.3BSD:	LDFLAGS =
! #	SysV Rel. 2: LDFLAGS = -Ml
  #	SCO Xenix: LDFLAGS = -Ml -F 3000
  #
  # SEPFLAG should be:
--- 64,71 ----
  #	4.1BSD:	LDFLAGS =
  #	4.2BSD:	LDFLAGS =
  #	4.3BSD:	LDFLAGS =
! #	SysV Rel. 2: LDFLAGS =
! #	Microport: LDFLAGS = -Ml -k8192
  #	SCO Xenix: LDFLAGS = -Ml -F 3000
  #
  # SEPFLAG should be:
***************
*** 72,78 ****
  #	PDP-11 without separate I&D:	SEPFLAG = -n
  #
  
! LDFLAGS =
  
  SEPFLAG =
  
--- 74,80 ----
  #	PDP-11 without separate I&D:	SEPFLAG = -n
  #
  
! LDFLAGS = -Ml -k8192
  
  SEPFLAG =
  
***************
*** 81,89 ****
  #	CFLAGS = -LARGE -O -F 3000 -K -Mle  (say -Mle2 for an 80286)
  # for MIPS, set
  #	CFLAGS = -O -I/usr/include/bsd
  
! CFLAGS = -O
  
  BASESEG = funcdefs.o keys.o argcount.o ask.o buf.o ctype.o delete.o \
  	  disp.o insert.o io.o jove.o marks.o misc.o re.o screen.o \
  	  tune.o util.o vars.o version.o list.o keymaps.o
--- 83,96 ----
  #	CFLAGS = -LARGE -O -F 3000 -K -Mle  (say -Mle2 for an 80286)
  # for MIPS, set
  #	CFLAGS = -O -I/usr/include/bsd
+ # for Microport, set
+ #	MEMFLAGS = -Ml
+ #	CFLAGS = $(MEMFLAGS) -DUPORT
  
! MEMFLAGS = -Ml
  
+ CFLAGS = $(MEMFLAGS) -DUPORT -g
+ 
  BASESEG = funcdefs.o keys.o argcount.o ask.o buf.o ctype.o delete.o \
  	  disp.o insert.o io.o jove.o marks.o misc.o re.o screen.o \
  	  tune.o util.o vars.o version.o list.o keymaps.o
***************
*** 91,97 ****
  OVLAY2 = c.o wind.o fp.o move.o
  OVLAY3 = extend.o macros.o
  OVLAY4 = iproc.o re1.o
! OVLAY5 = proc.o scandir.o term.o case.o
  
  OBJECTS = $(BASESEG) $(OVLAY1) $(OVLAY2) $(OVLAY3) $(OVLAY4) $(OVLAY5)
  
--- 98,104 ----
  OVLAY2 = c.o wind.o fp.o move.o
  OVLAY3 = extend.o macros.o
  OVLAY4 = iproc.o re1.o
! OVLAY5 = proc.o scandir.o term.o case.o termcap.o
  
  OBJECTS = $(BASESEG) $(OVLAY1) $(OVLAY2) $(OVLAY3) $(OVLAY4) $(OVLAY5)
  
***************
*** 99,105 ****
  	delete.c disp.c extend.c fp.c fmt.c insert.c io.c iproc.c \
  	jove.c list.c macros.c marks.c misc.c move.c paragraph.c \
  	proc.c re.c re1.c rec.c scandir.c screen.c term.c util.c \
! 	vars.c version.c wind.c getch.c mac.c keymaps.c pcscr.c
  
  SOURCES = $(C_SRC) portsrv.c recover.c setmaps.c teachjove.c kbd.c
  
--- 106,112 ----
  	delete.c disp.c extend.c fp.c fmt.c insert.c io.c iproc.c \
  	jove.c list.c macros.c marks.c misc.c move.c paragraph.c \
  	proc.c re.c re1.c rec.c scandir.c screen.c term.c util.c \
! 	vars.c version.c wind.c getch.c mac.c keymaps.c pcscr.c termcap.c
  
  SOURCES = $(C_SRC) portsrv.c recover.c setmaps.c teachjove.c kbd.c
  
***************
*** 218,260 ****
  	-mkdir $(DESTDIR)$(LIBDIR)
  
  $(TEACH-JOVE): doc/teach-jove
! 	install -c -m 644 doc/teach-jove $(TEACH-JOVE)
  
  doc/cmds.doc:	doc/cmds.doc.nr doc/jove.4 doc/jove.5
  	nroff doc/cmds.doc.nr doc/jove.4 doc/jove.5 > doc/cmds.doc
  
  $(CMDS.DOC): doc/cmds.doc
! 	install -c -m 644 doc/cmds.doc $(CMDS.DOC)
  
  $(JOVERC): doc/system.rc
! 	install -c -m 644 doc/system.rc $(JOVERC)
  
  $(PORTSRV): portsrv
! 	install -c -s -m 755 portsrv $(PORTSRV)
  
  $(KBD): kbd
! 	install -c -s -m 755 kbd $(KBD)
  
  $(RECOVER): recover
! 	install -c -s -m 755 recover $(RECOVER)
  
  $(JOVE): xjove
! 	install -c -m 755 xjove $(JOVE)
  
  $(TEACHJOVE): teachjove
! 	install -c -s -m 755 teachjove $(TEACHJOVE)
  
  $(JOVEM): doc/jove.nr
  	@sed -e 's;TMPDIR;$(TMPDIR);' \
  	     -e 's;LIBDIR;$(LIBDIR);' \
  	     -e 's;SHELL;$(JSHELL);' doc/jove.nr > /tmp/jove.nr
! 	install -m 644 /tmp/jove.nr $(JOVEM)
  
  $(TEACHJOVEM): doc/teachjove.nr
  	@sed -e 's;TMPDIR;$(TMPDIR);' \
  	     -e 's;LIBDIR;$(LIBDIR);' \
  	     -e 's;SHELL;$(JSHELL);' doc/teachjove.nr > /tmp/teachjove.nr
! 	install -m 644 /tmp/teachjove.nr $(TEACHJOVEM)
  
  echo:
  	@echo $(C-FILES) $(HEADERS)
--- 225,276 ----
  	-mkdir $(DESTDIR)$(LIBDIR)
  
  $(TEACH-JOVE): doc/teach-jove
! #	install -c -m 644 doc/teach-jove $(TEACH-JOVE)
! 	cp doc/teach-jove $(TEACH-JOVE)
  
  doc/cmds.doc:	doc/cmds.doc.nr doc/jove.4 doc/jove.5
  	nroff doc/cmds.doc.nr doc/jove.4 doc/jove.5 > doc/cmds.doc
  
  $(CMDS.DOC): doc/cmds.doc
! #	install -c -m 644 doc/cmds.doc $(CMDS.DOC)
! 	cp doc/cmds.doc $(CMDS.DOC)
  
  $(JOVERC): doc/system.rc
! #	install -c -m 644 doc/system.rc $(JOVERC)
  
  $(PORTSRV): portsrv
! #	install -c -s -m 755 portsrv $(PORTSRV)
! 	cp portsrv $(PORTSRV)
  
  $(KBD): kbd
! #	install -c -s -m 755 kbd $(KBD)
! 	cp kbd $(KBD)
  
  $(RECOVER): recover
! #	install -c -s -m 755 recover $(RECOVER)
! 	cp recover $(RECOVER)
  
  $(JOVE): xjove
! #	install -c -m 755 xjove $(JOVE)
! 	cp xjove $(JOVE)
  
  $(TEACHJOVE): teachjove
! #	install -c -s -m 755 teachjove $(TEACHJOVE)
! 	cp teachjove $(TEACHJOVE)
  
  $(JOVEM): doc/jove.nr
  	@sed -e 's;TMPDIR;$(TMPDIR);' \
  	     -e 's;LIBDIR;$(LIBDIR);' \
  	     -e 's;SHELL;$(JSHELL);' doc/jove.nr > /tmp/jove.nr
! #	install -m 644 /tmp/jove.nr $(JOVEM)
! 	cp /tmp/jove.nr $(JOVEM)
  
  $(TEACHJOVEM): doc/teachjove.nr
  	@sed -e 's;TMPDIR;$(TMPDIR);' \
  	     -e 's;LIBDIR;$(LIBDIR);' \
  	     -e 's;SHELL;$(JSHELL);' doc/teachjove.nr > /tmp/teachjove.nr
! #	install -m 644 /tmp/teachjove.nr $(TEACHJOVEM)
! 	cp /tmp/teachjove.nr $(TEACHJOVEM)
  
  echo:
  	@echo $(C-FILES) $(HEADERS)
FLUNK_STUFF
#
# Check file size of Makefile.diff
#
FWC=`wc -c Makefile.diff | awk '{printf ("%d", $1)}'`
if [ $FWC -ne 6343 ]
then
	echo "ERROR: File size of Makefile.diff should be 6343 is $FWC"
fi
fi
#
# Test if file exists
#
if [ -f jove.c.diff ]
then
echo "Will not overwrite existing file jove.c.diff"
else
#
# Extract contents of file jove.c.diff:
#
echo "-x jove.c.diff"
cat << \FLUNK_STUFF > 'jove.c.diff'
*** jove.c	Wed Jan 10 18:28:42 1990
--- jove.c.new	Fri Nov  3 19:23:28 1989
***************
*** 195,200 ****
--- 195,201 ----
  #ifdef UNIX
  	if (CoreDump)
  		abort();
+ 	cl_scr(1) ;
  #ifdef PROFILING
  	exit(0);
  #else
***************
*** 1233,1238 ****
--- 1234,1245 ----
  }
  #endif
  
+ #ifdef UPORT
+ static char	ms_iobuff[LBSIZE],
+ 		ms_genbuf[LBSIZE],
+ 		ms_linebuf[LBSIZE];
+ #endif /* UPORT */
+ 
  void
  
  #ifdef MAC	/* will get args from user, if option key held during launch */
***************
*** 1250,1258 ****
--- 1257,1271 ----
  	char	ttbuf[MAXTTYBUF];
  #ifndef MSDOS
  # ifndef VMUNIX
+ #ifdef UPORT
+ 	char	*s_iobuff = ms_iobuff,
+ 		*s_genbuf = ms_genbuf,
+ 		*s_linebuf = ms_linebuf ;
+ #else /* UPORT */
  	char	s_iobuff[LBSIZE],
  		s_genbuf[LBSIZE],
  		s_linebuf[LBSIZE];
+ #endif /* UPORT */
  	/* The way I look at it, there ain't no way I is gonna run
  	   out of stack space UNLESS I have some kind of infinite
  	   recursive bug.  So why use up some valuable memory, when
FLUNK_STUFF
#
# Check file size of jove.c.diff
#
FWC=`wc -c jove.c.diff | awk '{printf ("%d", $1)}'`
if [ $FWC -ne 1015 ]
then
	echo "ERROR: File size of jove.c.diff should be 1015 is $FWC"
fi
fi
#
# Test if file exists
#
if [ -f misc.c.diff ]
then
echo "Will not overwrite existing file misc.c.diff"
else
#
# Extract contents of file misc.c.diff:
#
echo "-x misc.c.diff"
cat << \FLUNK_STUFF > 'misc.c.diff'
*** misc.c	Wed Jan 10 18:30:09 1990
--- misc.c.new	Fri Nov  3 09:24:02 1989
***************
*** 96,101 ****
--- 96,102 ----
  void
  Leave()
  {
+ 	cl_scr(1) ;
  	longjmp(mainjmp, QUIT);
  }
  
FLUNK_STUFF
#
# Check file size of misc.c.diff
#
FWC=`wc -c misc.c.diff | awk '{printf ("%d", $1)}'`
if [ $FWC -ne 194 ]
then
	echo "ERROR: File size of misc.c.diff should be 194 is $FWC"
fi
fi
#
# Test if file exists
#
if [ -f recover.c.diff ]
then
echo "Will not overwrite existing file recover.c.diff"
else
#
# Extract contents of file recover.c.diff:
#
echo "-x recover.c.diff"
cat << \FLUNK_STUFF > 'recover.c.diff'
*** recover.c	Wed Jan 10 18:30:17 1990
--- recover.c.new	Thu Nov  2 21:56:39 1989
***************
*** 62,67 ****
--- 62,71 ----
  
  private struct rec_entry	*buflist[100];	/* system initializes to 0 */
  
+ #ifdef CCI
+ #define BSD_DIR
+ #endif /* CCI */
+ 
  #ifndef BSD_DIR
  
  typedef struct {
FLUNK_STUFF
#
# Check file size of recover.c.diff
#
FWC=`wc -c recover.c.diff | awk '{printf ("%d", $1)}'`
if [ $FWC -ne 299 ]
then
	echo "ERROR: File size of recover.c.diff should be 299 is $FWC"
fi
fi
#
# Test if file exists
#
if [ -f scandir.c.diff ]
then
echo "Will not overwrite existing file scandir.c.diff"
else
#
# Extract contents of file scandir.c.diff:
#
echo "-x scandir.c.diff"
cat << \FLUNK_STUFF > 'scandir.c.diff'
*** scandir.c	Wed Jan 10 18:30:25 1990
--- scandir.c.new	Thu Nov  2 21:56:39 1989
***************
*** 30,35 ****
--- 30,39 ----
  # undef scandir
  #endif
  
+ #ifdef CCI
+ #define BSD_DIR
+ #endif /* CCI */
+ 
  #ifdef BSD_DIR
  # define DIRSIZE(entry)	DIRSIZ((entry))
  #else
FLUNK_STUFF
#
# Check file size of scandir.c.diff
#
FWC=`wc -c scandir.c.diff | awk '{printf ("%d", $1)}'`
if [ $FWC -ne 278 ]
then
	echo "ERROR: File size of scandir.c.diff should be 278 is $FWC"
fi
fi
#
# Test if file exists
#
if [ -f sysdep.h.diff ]
then
echo "Will not overwrite existing file sysdep.h.diff"
else
#
# Extract contents of file sysdep.h.diff:
#
echo "-x sysdep.h.diff"
cat << \FLUNK_STUFF > 'sysdep.h.diff'
*** sysdep.h	Wed Jan 10 18:30:48 1990
--- sysdep.h.new	Thu Nov  2 21:56:35 1989
***************
*** 69,79 ****
  
  #ifdef UNIX
  			/* pick your version of Unix */
! # define BSD4_2		/* Berkeley 4.2 BSD */
! # define BSD4_3		/* Berkeley 4.3 BSD and 2.10 BSD */
  /*# define SYSV		/* for (System III/System V) UNIX systems */
  /*# define SYSVR2	/* system 5, rel. 2 */
! /*# define SYSVR3	/* system 5, rel. 3 */
  			/* M_XENIX is defined by the Compiler */
  #endif /* UNIX */
  
--- 69,79 ----
  
  #ifdef UNIX
  			/* pick your version of Unix */
! /*# define BSD4_2		/* Berkeley 4.2 BSD */
! /*# define BSD4_3		/* Berkeley 4.3 BSD and 2.10 BSD */
  /*# define SYSV		/* for (System III/System V) UNIX systems */
  /*# define SYSVR2	/* system 5, rel. 2 */
! # define SYSVR3	/* system 5, rel. 3 */
  			/* M_XENIX is defined by the Compiler */
  #endif /* UNIX */
  
FLUNK_STUFF
#
# Check file size of sysdep.h.diff
#
FWC=`wc -c sysdep.h.diff | awk '{printf ("%d", $1)}'`
if [ $FWC -ne 868 ]
then
	echo "ERROR: File size of sysdep.h.diff should be 868 is $FWC"
fi
fi
#
# Test if file exists
#
if [ -f term.c.diff ]
then
echo "Will not overwrite existing file term.c.diff"
else
#
# Extract contents of file term.c.diff:
#
echo "-x term.c.diff"
cat << \FLUNK_STUFF > 'term.c.diff'
*** term.c	Wed Jan 10 18:30:30 1990
--- term.c.new	Fri Nov  3 19:23:42 1989
***************
*** 118,123 ****
--- 118,127 ----
  	_exit(1);
  }
  
+ #ifdef UPORT
+ static char gt_tbuff[2048] ;
+ #endif /* UPORT */
+ 
  void
  getTERM()
  {
***************
*** 125,131 ****
--- 129,139 ----
  	char	termbuf[13],
  		*termname = NULL,
  		*termp = tspace,
+ #ifdef UPORT
+ 		*tbuff = gt_tbuff ;
+ #else /* UPORT */
  		tbuff[2048];	/* Good grief! */
+ #endif /* UPORT */
  	const char	*tsp = ts;
  	int	i;
  
***************
*** 174,180 ****
--- 182,192 ----
  
  		nm[0] = *tsp++;
  		nm[1] = *tsp++;
+ #ifdef UPORT
+ 		*(meas[i]) = (char *) tgetstr(nm, termp);
+ #else /* UPORT */
  		*(meas[i]) = (char *) tgetstr(nm, &termp);
+ #endif /* UPORT */
  		if (termp > tspace + sizeof(tspace))
  			goto wimperr;
  	}
FLUNK_STUFF
#
# Check file size of term.c.diff
#
FWC=`wc -c term.c.diff | awk '{printf ("%d", $1)}'`
if [ $FWC -ne 813 ]
then
	echo "ERROR: File size of term.c.diff should be 813 is $FWC"
fi
fi
#
# Test if file exists
#
if [ -f termcap.h.diff ]
then
echo "Will not overwrite existing file termcap.h.diff"
else
#
# Extract contents of file termcap.h.diff:
#
echo "-x termcap.h.diff"
cat << \FLUNK_STUFF > 'termcap.h.diff'
No differences encountered
FLUNK_STUFF
#
# Check file size of termcap.h.diff
#
FWC=`wc -c termcap.h.diff | awk '{printf ("%d", $1)}'`
if [ $FWC -ne 27 ]
then
	echo "ERROR: File size of termcap.h.diff should be 27 is $FWC"
fi
fi
#
# Test if file exists
#
if [ -f util.c.diff ]
then
echo "Will not overwrite existing file util.c.diff"
else
#
# Extract contents of file util.c.diff:
#
echo "-x util.c.diff"
cat << \FLUNK_STUFF > 'util.c.diff'
*** util.c	Wed Jan 10 18:30:39 1990
--- util.c.new	Thu Nov  2 21:56:39 1989
***************
*** 814,821 ****
--- 814,825 ----
  {
  	short	avg[3];
  
+ #ifndef CCI
  	gldav(avg);
  	*dp = (double) avg[0] / 256;
+ #else /* CCI */
+ 	*dp = 0.0 ;
+ #endif /* CCI */
  }
  
  #  endif
FLUNK_STUFF
#
# Check file size of util.c.diff
#
FWC=`wc -c util.c.diff | awk '{printf ("%d", $1)}'`
if [ $FWC -ne 281 ]
then
	echo "ERROR: File size of util.c.diff should be 281 is $FWC"
fi
fi
exit 0

-- 
Thomas V. Frauenhofer	...!rutgers!rochester!cci632!ccird7!tvf *or*
...!attctc!swamps!frau!tvf (tvf@frau, tvf@cci632)	Daffy Duck Sings:
"I once knew an acrobat's daughter who swung by her teeth from a noose. 'Til
one day her bridgework gave way, and she flew through the air like a Goose!"

hsu@hutcs.hut.fi (Heikki Suonsivu) (02/01/90)

In article <39@frau.UUCP> tvf@frau.UUCP (Thomas V. Frauenhofer) writes:
>		it reappears.  This is a bug in the ansi termifo that
>		Microport supplies, I'll be playing with it to get something

I have seen this behaviour with nethack also, and heard rumors about other
programs using terminfo failing with same symptoms (refresh clears it up).
Anybody else have any information about this? I think its not the terminfo
entry, same problem appears with many different terminfo entries which work
correctly with most other programs. 

-
Heikki Suonsivu, @ 2:504/1, Kuutamokatu 5 A 7/02210 Espoo/FINLAND,
hsu@otax.tky.hut.fi, riippu SN, voice +358-0-8030017 mornings (11-12am) EET,
Email preferable.