[comp.unix.microport] more porting results: sc

hedrick@athos.rutgers.edu (Charles Hedrick) (02/29/88)

This is yet another in my series of reports on porting software to the
Microport System V/AT.  This is a report on sc, a public-domain
spreadsheet system for Unix.  I have just ported version 5.1 of sc.  It
is available from the comp.sources.unix archives, as v13i016-v13i018. 
The changes are because of a known bug in the uport C compiler.  In the
version 2.3 release notes there is a comment that the compiler will
reject an array if the number of elements in the array times the size
per element is greater than 64K, even if the array is actually an array
of pointers.  This is a bug, since an array of pointer should use the
number of elements time the size of a pointer (in this case, 4 bytes). 
Of course one could simply reduce the size of the array, but in this
case I have chosen to adopt a kludge.  I declare the array in one module
as an array of longs (same size as a pointer, so the right amount of
space gets allocated).  Everywhere else, I refer to it without
specifying the size, so the compiler doesn't get upset. 

By the way, I tried this with my special version of malloc.  For some
reason it causes certain control characters not to be read correctly. 
It appears that curses somehow will not work with my malloc.  I've
tried an obvious workaround and failed, so for the moment I'm using
the normal system malloc.

*** Makefile.ORIG	Sun Feb 28 20:44:16 1988
--- Makefile	Sun Feb 28 23:59:44 1988
***************
*** 22,30
  #SIMPLE=-DSIMPLE
  
  # Use this for system V.2
! #CFLAGS= -O -DSYSV2
! #LDFLAGS=
! #LIB=-lm -lcurses
  
  # Use this for system V.3
  #CFLAGS= -O -DSYSV3

--- 22,30 -----
  #SIMPLE=-DSIMPLE
  
  # Use this for system V.2
! CFLAGS= -O -DSYSV2 -Ml
! LDFLAGS=
! LIB=-lm -lcurses
  
  # Use this for system V.3
  #CFLAGS= -O -DSYSV3
***************
*** 37,45
  #LIB=-lm -lcurses -ltermcap
  
  # Use this for BSD 4.3
! CFLAGS= -O -DBSD43
! LDFLAGS=
! LIB=-lm -lcurses -ltermcap
  
  # Use this for system III (XENIX)
  #CFLAGS= -O -DSYSIII

--- 37,45 -----
  #LIB=-lm -lcurses -ltermcap
  
  # Use this for BSD 4.3
! #CFLAGS= -O -DBSD43
! #LDFLAGS=
! #LIB=-lm -lcurses -ltermcap
  
  # Use this for system III (XENIX)
  #CFLAGS= -O -DSYSIII
***************
*** 52,58
  #LIB=-lm -lcurses -ltermcap
  
  # The objects
! OBJS=sc.o lex.o gram.o interp.o cmds.o crypt.o xmalloc.o range.o
  
  $(name):	$(OBJS)
  	cc ${CFLAGS} ${LDFLAGS} ${OBJS} ${LIB} -o $(name)

--- 52,58 -----
  #LIB=-lm -lcurses -ltermcap
  
  # The objects
! OBJS=sc.o lex.o gram.o interp.o cmds.o crypt.o xmalloc.o range.o table.o
  
  $(name):	$(OBJS)
  	cc ${CFLAGS} ${LDFLAGS} ${OBJS} ${LIB} -o $(name)
*** sc.c.ORIG	Sun Feb 28 20:43:35 1988
--- sc.c	Sun Feb 28 23:17:51 1988
***************
*** 39,45
  
  /* Globals defined in sc.h */
  
- struct ent *tbl[MAXROWS][MAXCOLS];
  int strow, stcol;
  int currow, curcol;
  int savedrow, savedcol;

--- 39,44 -----
  
  /* Globals defined in sc.h */
  
  int strow, stcol;
  int currow, curcol;
  int savedrow, savedcol;
*** sc.h.ORIG	Sun Feb 28 20:43:29 1988
--- sc.h	Sun Feb 28 20:49:06 1988
***************
*** 122,128
  
  #define ctl(c) ('c'&037)
  
! extern struct ent *tbl[MAXROWS][MAXCOLS];
  
  extern int strow, stcol;
  extern int currow, curcol;

--- 122,129 -----
  
  #define ctl(c) ('c'&037)
  
! /* hack for microport buggy compiler */
! extern struct ent *tbl[1][MAXCOLS];
  
  extern int strow, stcol;
  extern int currow, curcol;