summaryrefslogtreecommitdiff
path: root/cad
diff options
context:
space:
mode:
authordmcmahill <dmcmahill@pkgsrc.org>1999-10-01 17:05:14 +0000
committerdmcmahill <dmcmahill@pkgsrc.org>1999-10-01 17:05:14 +0000
commitfe4bb072fe0801a07b7a2922b41af715972a49ae (patch)
tree15905d474e3744ebdfeb6fed2f43951700cd4a7d /cad
parent75a82ad848f182357c0fd28ff13fb68e13a81cc9 (diff)
downloadpkgsrc-fe4bb072fe0801a07b7a2922b41af715972a49ae.tar.gz
- added missing -Wl,-Rpath for the X11 libraries
- fixed program version number reported when spice is run to make it consistent with the version of the program. - several patches to fix compilation warnings due to missing header files and some inconsistent variable types. - broke out previous patch-aa which patched several files into 1 patch per file. - fixed some code which returned the address of a local char array variable. - added GNU readline support (a huge improvement in the interface) - changed USE_X11BASE to USE_X11. No reason to install into X11BASE. - removed 'x' target from package Makefile
Diffstat (limited to 'cad')
-rw-r--r--cad/spice/Makefile17
-rw-r--r--cad/spice/files/NetBSD8
-rw-r--r--cad/spice/patches/patch-aa97
-rw-r--r--cad/spice/patches/patch-ab151
-rw-r--r--cad/spice/patches/patch-ac91
-rw-r--r--cad/spice/patches/patch-ad94
-rw-r--r--cad/spice/patches/patch-ae143
-rw-r--r--cad/spice/patches/patch-af64
-rw-r--r--cad/spice/patches/patch-ag51
-rw-r--r--cad/spice/patches/patch-ah193
-rw-r--r--cad/spice/patches/patch-ai84
-rw-r--r--cad/spice/patches/patch-aj39
-rw-r--r--cad/spice/patches/patch-ak26
-rw-r--r--cad/spice/patches/patch-al23
-rw-r--r--cad/spice/patches/patch-am22
-rw-r--r--cad/spice/patches/patch-an57
-rw-r--r--cad/spice/patches/patch-ao13
-rw-r--r--cad/spice/patches/patch-ap22
-rw-r--r--cad/spice/patches/patch-aq10
-rw-r--r--cad/spice/patches/patch-ar10
-rw-r--r--cad/spice/patches/patch-as11
21 files changed, 856 insertions, 370 deletions
diff --git a/cad/spice/Makefile b/cad/spice/Makefile
index c62f19d32e8..e27b3dbd990 100644
--- a/cad/spice/Makefile
+++ b/cad/spice/Makefile
@@ -1,9 +1,9 @@
-# $NetBSD: Makefile,v 1.9 1999/04/13 15:31:05 agc Exp $
+# $NetBSD: Makefile,v 1.10 1999/10/01 17:05:14 dmcmahill Exp $
# FreeBSD Id: Makefile,v 1.10 1998/06/08 09:21:37 tg Exp
#
DISTNAME= sp3f4.kit
-PKGNAME= spice-3f5
+PKGNAME= spice-3f5.1
CATEGORIES= cad
MASTER_SITES= ftp://ic.eecs.berkeley.edu/pub/Spice3/
EXTRACT_SUFX= .tar.Z
@@ -11,13 +11,15 @@ EXTRACT_SUFX= .tar.Z
MAINTAINER= packages@netbsd.org
HOMEPAGE= http://infopad.eecs.berkeley.edu/~icdesign/SPICE/
+DEPENDS+= readline-4.0:../../devel/readline
+
# documentation in ftp://ic.eecs.berkeley.edu/pub/Spice3/um.3f3.ps
-# These are included as patch-ab
+# These are included as patch-ae
#PATCH_SITES= ftp://ilpsoft.eecs.berkeley.edu/pub/SPICE3F5/
#PATCHFILES= grid.patch newcoms.patch spsmp.patch
-USE_X11BASE= yes
+USE_X11= yes
NO_WRKSUBDIR= yes
do-configure:
@@ -49,12 +51,7 @@ do-install:
${INSTALL_MAN} ${WRKSRC}/man/man3/mfb.3 ${PREFIX}/man/man3/mfb.3
post-install:
- ${MKDIR} ${PREFIX}/share/examples/spice3
+ ${INSTALL_DATA_DIR} ${PREFIX}/share/examples/spice3
${INSTALL_DATA} ${WRKSRC}/examples/*.cir ${PREFIX}/share/examples/spice3
.include "../../mk/bsd.pkg.mk"
-
-x:
-.if exists(${PACKAGES})
- ls -lad ${PACKAGES}
-.endif
diff --git a/cad/spice/files/NetBSD b/cad/spice/files/NetBSD
index bd773c12939..ecc4224a80d 100644
--- a/cad/spice/files/NetBSD
+++ b/cad/spice/files/NetBSD
@@ -1,12 +1,12 @@
# FreeBSD/NetBSD config exception file
-# $NetBSD: NetBSD,v 1.2 1998/08/07 10:36:28 agc Exp $
+# $NetBSD: NetBSD,v 1.3 1999/10/01 17:05:15 dmcmahill Exp $
MAKE = /usr/bin/make
INTERFACE_OPTS = -DWANT_X11
CC = gcc
-CC_OPT = -O2 -pipe
-CC_OPT_SAFE = -O2 -fno-strength-reduce -pipe
-LDFLAGS = -L${X11BASE}/lib -lm -ltermcap
+CC_OPT = -O2 -pipe -I${LOCALBASE}/include
+CC_OPT_SAFE = -O2 -fno-strength-reduce -pipe -I${LOCALBASE}/include
+LDFLAGS = -L${LOCALBASE}/lib -Wl,-R${LOCALBASE}/lib -lreadline -lm -ltermcap
ASM_HACK = < /dev/null
SYS_CFLAGS = -Dbsd
diff --git a/cad/spice/patches/patch-aa b/cad/spice/patches/patch-aa
index 4522ed2a31b..54bf9bfe77b 100644
--- a/cad/spice/patches/patch-aa
+++ b/cad/spice/patches/patch-aa
@@ -1,4 +1,4 @@
-$NetBSD: patch-aa,v 1.4 1999/01/15 20:13:24 frueauf Exp $
+$NetBSD: patch-aa,v 1.5 1999/10/01 17:05:15 dmcmahill Exp $
*** util/build.orig Sun Mar 31 10:56:09 1996
--- util/build Sun Mar 31 10:57:21 1996
@@ -19,98 +19,3 @@ $NetBSD: patch-aa,v 1.4 1999/01/15 20:13:24 frueauf Exp $
echo > "${TMP_TRAILER}"
BAD=false
DEBUG=
-*** src/lib/fte/resource.c.orig Sun Mar 31 10:59:57 1996
---- src/lib/fte/resource.c Sun Mar 31 11:00:57 1996
-***************
-*** 369,375 ****
---- 369,377 ----
- long x;
- SIGNAL_TYPE (*orig_signal)( );
-
-+ #if !(defined(__FreeBSD__) || defined(__NetBSD__))
- if (getenv("SPICE_NO_DATASEG_CHECK"))
-+ #endif
- return 0;
-
- low = 0;
-*** src/include/misc.h.orig Thu Dec 1 09:17:02 1994
---- src/include/misc.h Sun Mar 31 12:32:58 1996
-***************
-*** 86,92 ****
---- 86,94 ----
- extern char *realloc();
- extern char *getenv();
- extern int errno;
-+ #if !(defined(__FreeBSD__) || defined(__NetBSD__))
- extern char *sys_errlist[];
-+ #endif
- extern char *getenv();
- extern char *getwd();
- extern int rand();
-***************
-*** 111,122 ****
---- 111,124 ----
- # endif /* clearerr */
- # endif /* HAS_CLEARERR */
-
-+ #if !(defined(__FreeBSD__) || defined(__NetBSD__))
- # ifndef bzero
- extern int bzero();
- # endif
- # ifndef bcopy
- extern void bcopy();
- # endif
-+ #endif /* defined(__FreeBSD__) || defined(__NetBSD__) */
-
- # ifndef index
- # ifdef HAS_INDEX
-*** src/include/os_bsd.h.orig Sat Apr 24 18:09:46 1993
---- src/include/os_bsd.h Tue Jun 2 22:28:04 1998
-***************
-*** 8,19 ****
-
- #include "os_unix.h"
-
- #define HAS_NO_ATRIGH_DECL /* if asinh( ) is not in math.h */
-- #define HAS_ATRIGH /* acosh( ), asinh( ), atanh( ) */
- #define HAS_FTIME /* ftime( ), <times.h> */
- #define HAS_TERMCAP /* tgetxxx( ) */
- #define HAS_VFORK /* BSD-ism, should not be necessary */
-- #define HAS_INDEX /* index( ) instead of strchr( ) */
- #define HAS_BCOPY /* bcopy( ), bzero( ) */
- #define HAS_BSDRANDOM /* srandom( ) and random( ) */
- #define HAS_BSDTTY /* <sgtty.h> */
---- 8,23 ----
-
- #include "os_unix.h"
-
-+ #if !(defined(__FreeBSD__) || defined(__NetBSD__))
- #define HAS_NO_ATRIGH_DECL /* if asinh( ) is not in math.h */
- #define HAS_FTIME /* ftime( ), <times.h> */
-+ #define HAS_INDEX /* index( ) instead of strchr( ) */
-+ #define HAS_STRINGS /* use <strings.h> instead of <string.h> */
-+ #endif
-+
-+ #define HAS_ATRIGH /* acosh( ), asinh( ), atanh( ) */
- #define HAS_TERMCAP /* tgetxxx( ) */
- #define HAS_VFORK /* BSD-ism, should not be necessary */
- #define HAS_BCOPY /* bcopy( ), bzero( ) */
- #define HAS_BSDRANDOM /* srandom( ) and random( ) */
- #define HAS_BSDTTY /* <sgtty.h> */
-***************
-*** 22,25 ****
- #define HAS_BSDRLIMIT /* getrlimit( ) */
- #define HAS_DUP2
- #define HAS_GETWD /* getwd(buf) */
-! #define HAS_STRINGS /* use <strings.h> instead of <string.h> */
---- 26,35 ----
- #define HAS_BSDRLIMIT /* getrlimit( ) */
- #define HAS_DUP2
- #define HAS_GETWD /* getwd(buf) */
-!
-! #if defined(__FreeBSD__) || defined(__NetBSD__)
-! #define HAS_BSDSOCKETS /* <net/inet.h>, socket( ), etc. */
-! #define HAS_BSDTIME /* gettimeofday( ) return time */
-! #define HAS_FLOAT_H /* float.h */
-! #define HAS_STRCHR /* strchr( ) instead of index( ) */
-! #endif
diff --git a/cad/spice/patches/patch-ab b/cad/spice/patches/patch-ab
index 95786963ccf..25dab97421d 100644
--- a/cad/spice/patches/patch-ab
+++ b/cad/spice/patches/patch-ab
@@ -1,143 +1,16 @@
-$NetBSD: patch-ab,v 1.2 1998/08/07 10:36:29 agc Exp $
+$NetBSD: patch-ab,v 1.3 1999/10/01 17:05:15 dmcmahill Exp $
-NOTE: This are Berkeley patches for 3F4
-*** src/lib/fte/grid.c.orig Sun Apr 25 14:53:11 1993
---- src/lib/fte/grid.c Sat Jan 29 10:47:59 1994
+*** src/lib/fte/resource.c.orig Sun Mar 31 10:59:57 1996
+--- src/lib/fte/resource.c Sun Mar 31 11:00:57 1996
***************
-*** 17,22 ****
---- 17,23 ----
- #include "suffix.h"
+*** 369,375 ****
+--- 369,377 ----
+ long x;
+ SIGNAL_TYPE (*orig_signal)( );
- #define RAD_TO_DEG (180.0 / M_PI)
-+ #define LABEL_CHARS 20
++ #if !(defined(__FreeBSD__) || defined(__NetBSD__))
+ if (getenv("SPICE_NO_DATASEG_CHECK"))
++ #endif
+ return 0;
- static double *lingrid(), *loggrid();
- static void polargrid(), smithgrid();
-***************
-*** 225,231 ****
- int max;
- static double dd[2];
- int mult = 1;
-! char buf[16], *s;
- int slim, digits;
-
- if (axis == y_axis && graph->grid.ysized) {
---- 226,232 ----
- int max;
- static double dd[2];
- int mult = 1;
-! char buf[LABEL_CHARS], *s;
- int slim, digits;
-
- if (axis == y_axis && graph->grid.ysized) {
-***************
-*** 477,483 ****
- drawlingrid(graph, units, spacing, nsp, dst, lmt, hmt, onedec, mult, mag,
- digits, axis)
- GRAPH *graph;
-! char units[16];
- bool onedec;
- int nsp, spacing, mult;
- double hmt, lmt, dst;
---- 478,484 ----
- drawlingrid(graph, units, spacing, nsp, dst, lmt, hmt, onedec, mult, mag,
- digits, axis)
- GRAPH *graph;
-! char *units;
- bool onedec;
- int nsp, spacing, mult;
- double hmt, lmt, dst;
-***************
-*** 488,494 ****
-
- int i, j;
- double m, step;
-! char buf[16];
-
- /* i counts how many pixels we have drawn, and j counts which unit
- * we are at.
---- 489,495 ----
-
- int i, j;
- double m, step;
-! char buf[LABEL_CHARS];
-
- /* i counts how many pixels we have drawn, and j counts which unit
- * we are at.
-***************
-*** 567,573 ****
- double k;
- double decs;
- double mag, gain;
-! char buf[32], *s;
-
- if (axis == x_axis && graph->grid.xsized) {
- lmt = graph->grid.xaxis.log.lmt;
---- 568,574 ----
- double k;
- double decs;
- double mag, gain;
-! char buf[LABEL_CHARS], *s;
-
- if (axis == x_axis && graph->grid.xsized) {
- lmt = graph->grid.xaxis.log.lmt;
-***************
-*** 671,677 ****
- {
- int i, j, k, l, m;
- double t;
-! char buf[16];
-
- /* Now plot every pp'th decade line, with subs lines between them. */
- if (subs > 1)
---- 672,678 ----
- {
- int i, j, k, l, m;
- double t;
-! char buf[LABEL_CHARS];
-
- /* Now plot every pp'th decade line, with subs lines between them. */
- if (subs > 1)
-*** src/lib/fte/newcoms.c.orig Sun Mar 7 16:30:58 1993
---- src/lib/fte/newcoms.c Wed Feb 23 22:39:55 1994
-***************
-*** 151,156 ****
---- 151,160 ----
- /* Copy from the first */
- vname = cp_unquote(wl->wl_word);
- dv = vec_get(vname);
-+ if (!dv) {
-+ printf("'%s' reference vector not found\n", vname);
-+ return;
-+ }
- numdims = dv->v_numdims;
- dims = dv->v_dims;
- wl = wl->wl_next;
-*** src/lib/sparse/spsmp.c.orig Wed Feb 3 14:20:50 1993
---- src/lib/sparse/spsmp.c Sun Jan 30 11:53:10 1994
-***************
-*** 483,492 ****
- int CreateIfMissing;
- {
- MatrixPtr Matrix = (MatrixPtr)eMatrix;
-! ElementPtr Element = Matrix->FirstInCol[Col];
-
- /* Begin `SMPfindElt'. */
- ASSERT( IS_SPARSE( Matrix ) );
- Element = spcFindElementInCol(Matrix, &Element, Row, Col, CreateIfMissing);
- return (SMPelement *)Element;
- }
---- 485,497 ----
- int CreateIfMissing;
- {
- MatrixPtr Matrix = (MatrixPtr)eMatrix;
-! ElementPtr Element;
-
- /* Begin `SMPfindElt'. */
- ASSERT( IS_SPARSE( Matrix ) );
-+ Row = Matrix->ExtToIntRowMap[Row];
-+ Col = Matrix->ExtToIntColMap[Col];
-+ Element = Matrix->FirstInCol[Col];
- Element = spcFindElementInCol(Matrix, &Element, Row, Col, CreateIfMissing);
- return (SMPelement *)Element;
- }
+ low = 0;
diff --git a/cad/spice/patches/patch-ac b/cad/spice/patches/patch-ac
index 775952639a0..0c68b1a2e17 100644
--- a/cad/spice/patches/patch-ac
+++ b/cad/spice/patches/patch-ac
@@ -1,64 +1,33 @@
-$NetBSD: patch-ac,v 1.2 1998/08/07 10:36:35 agc Exp $
+$NetBSD: patch-ac,v 1.3 1999/10/01 17:05:15 dmcmahill Exp $
-*** src/bin/sconvert.c.orig Tue Aug 19 17:44:17 1997
---- src/bin/sconvert.c Tue Aug 19 17:47:11 1997
+*** src/include/misc.h.orig Thu Dec 1 09:17:02 1994
+--- src/include/misc.h Sun Mar 31 12:32:58 1996
***************
-*** 80,98 ****
-
- case 1: printf("Input file: ");
- (void) fflush(stdout);
-! (void) gets(buf);
- sf = copy(buf);
- printf("Input type: ");
- (void) fflush(stdout);
-! (void) gets(buf);
- f = buf[0];
- printf("Output file: ");
- (void) fflush(stdout);
-! (void) gets(buf);
- af = copy(buf);
- printf("Output type: ");
- (void) fflush(stdout);
-! (void) gets(buf);
- t = buf[0];
- break;
- default:
---- 80,98 ----
-
- case 1: printf("Input file: ");
- (void) fflush(stdout);
-! (void) fgets(buf,BSIZE_SP,stdin);
- sf = copy(buf);
- printf("Input type: ");
- (void) fflush(stdout);
-! (void) fgets(buf,BSIZE_SP,stdin);
- f = buf[0];
- printf("Output file: ");
- (void) fflush(stdout);
-! (void) fgets(buf,BSIZE_SP,stdin);
- af = copy(buf);
- printf("Output type: ");
- (void) fflush(stdout);
-! (void) fgets(buf,BSIZE_SP,stdin);
- t = buf[0];
- break;
- default:
-*** src/lib/fte/inp.c.orig Tue Aug 19 17:38:25 1997
---- src/lib/fte/inp.c Tue Aug 19 17:33:01 1997
+*** 86,92 ****
+--- 86,94 ----
+ extern char *realloc();
+ extern char *getenv();
+ extern int errno;
++ #if !(defined(__FreeBSD__) || defined(__NetBSD__))
+ extern char *sys_errlist[];
++ #endif
+ extern char *getenv();
+ extern char *getwd();
+ extern int rand();
***************
-*** 666,672 ****
-
- fprintf(cp_out, "run circuit? ");
- fflush(cp_out);
-! (void) gets(buf);
- if (buf[0] != 'n') {
- fprintf(cp_out, "running circuit\n");
- com_run(NULL);
---- 666,672 ----
-
- fprintf(cp_out, "run circuit? ");
- fflush(cp_out);
-! (void) fgets(buf,BSIZE_SP,stdin);
- if (buf[0] != 'n') {
- fprintf(cp_out, "running circuit\n");
- com_run(NULL);
+*** 111,122 ****
+--- 111,124 ----
+ # endif /* clearerr */
+ # endif /* HAS_CLEARERR */
+
++ #if !(defined(__FreeBSD__) || defined(__NetBSD__))
+ # ifndef bzero
+ extern int bzero();
+ # endif
+ # ifndef bcopy
+ extern void bcopy();
+ # endif
++ #endif /* defined(__FreeBSD__) || defined(__NetBSD__) */
+
+ # ifndef index
+ # ifdef HAS_INDEX
diff --git a/cad/spice/patches/patch-ad b/cad/spice/patches/patch-ad
index 9abd51c1f29..497b690818c 100644
--- a/cad/spice/patches/patch-ad
+++ b/cad/spice/patches/patch-ad
@@ -1,61 +1,35 @@
-$NetBSD: patch-ad,v 1.1 1999/01/15 20:13:25 frueauf Exp $
+$NetBSD: patch-ad,v 1.2 1999/10/01 17:05:15 dmcmahill Exp $
---- conf/defaults.orig Thu Jul 29 23:33:56 1993
-+++ conf/defaults Fri Jan 15 19:10:03 1999
-@@ -65,7 +65,7 @@
- # the following definition:
- # SYS_DIR = $(DIST_DIR)
-
--SYS_DIR = $(TOP1)/$(SYSTEM)
-+SYS_DIR = $(TOP0)/$(SYSTEM)
-
- # OBJ_TOP is the directory in which intermidiate files reside
- # These are ".o" files, synthesized ".c" files, ".a" files,
-@@ -105,12 +105,12 @@
- # identified as and SYSTEM is the name of the per-system definitions
- # file listed on the "build" command line.
-
--SPICE_DIR = $(TOP1)/$(SYSTEM)
--SPICE_LIB_DIR = $(SPICE_DIR)/lib
-+SPICE_DIR = ${PREFIX}
-+SPICE_LIB_DIR = $(SPICE_DIR)/share/spice3
- SPICE_EXEC_DIR = $(SPICE_DIR)/bin
-
- S_SPICE_DIR = $(SPICE_DIR)
--S_SPICE_LIB_DIR = $(S_SPICE_DIR)/lib
-+S_SPICE_LIB_DIR = $(S_SPICE_DIR)/share/spice3
- S_SPICE_EXEC_DIR= $(S_SPICE_DIR)/bin
-
- # INSTALL_DIRS lists the directories that need to be created before
-@@ -129,11 +129,11 @@
- # an extra definition to work around the same strange bug. See either
- # file "conf/vax" or "conf/gcc".
-
--CC = cc
-+CC = gcc
-
- # CC_OPT: Default compile options (optimization/debug level, other)
-
--CC_OPT = -O
-+CC_OPT = -O2 -pipe
-
- # CC_OPT_SAFE: Special compile options to override CC_OPT for code
- # which typically causes problems for most compilers (bsim1 and bsim2).
-@@ -203,7 +203,7 @@
- # X_DIR indicates the top of the X11 lib/include hierarchy; it is only
- # a convenience that is used in the following definitions.
-
--X_DIR = /usr
-+X_DIR = ${X11BASE}
-
- # INCX lists the X include directories. This may be different between
- # MIT X11r5, X11r4, and your vendor's version of X11, though listing
-@@ -218,7 +218,7 @@
- # which is not available with all versions of X11. If you do not have
- # it, then you do not need it (delete the following reference to it).
-
--LIBX = -L$(X_DIR)/lib -lXaw -lXt -lXext -lXmu -lX11
-+LIBX = -L$(X_DIR)/lib -lXaw -lXt -lXext -lXmu -lSM -lICE -lX11
-
-
-
+--- src/include/os_bsd.h.orig Sat Apr 24 19:09:46 1993
++++ src/include/os_bsd.h Thu Sep 30 12:02:51 1999
+@@ -9,10 +9,14 @@
+ #include "os_unix.h"
+
++#if !(defined(__FreeBSD__) || defined(__NetBSD__))
+ #define HAS_NO_ATRIGH_DECL /* if asinh( ) is not in math.h */
+-#define HAS_ATRIGH /* acosh( ), asinh( ), atanh( ) */
+ #define HAS_FTIME /* ftime( ), <times.h> */
++#define HAS_INDEX /* index( ) instead of strchr( ) */
++#define HAS_STRINGS /* use <strings.h> instead of <string.h> */
++#endif
++
++#define HAS_ATRIGH /* acosh( ), asinh( ), atanh( ) */
+ #define HAS_TERMCAP /* tgetxxx( ) */
+ #define HAS_VFORK /* BSD-ism, should not be necessary */
+-#define HAS_INDEX /* index( ) instead of strchr( ) */
+ #define HAS_BCOPY /* bcopy( ), bzero( ) */
+ #define HAS_BSDRANDOM /* srandom( ) and random( ) */
+@@ -23,3 +27,12 @@
+ #define HAS_DUP2
+ #define HAS_GETWD /* getwd(buf) */
+-#define HAS_STRINGS /* use <strings.h> instead of <string.h> */
++
++#if defined(__FreeBSD__) || defined(__NetBSD__)
++#define HAS_BSDSOCKETS /* <net/inet.h>, socket( ), etc. */
++#define HAS_BSDTIME /* gettimeofday( ) return time */
++#define HAS_FLOAT_H /* float.h */
++#define HAS_STRCHR /* strchr( ) instead of index( ) */
++#define HAS_LIMITS_H /* limits.h exists */
++#define HAS_INTWAITSTATUS /* wait(int *status) */
++#define HAS_GNUREADLINE /* compile in readline support */
++#endif
diff --git a/cad/spice/patches/patch-ae b/cad/spice/patches/patch-ae
new file mode 100644
index 00000000000..fce9f3b520b
--- /dev/null
+++ b/cad/spice/patches/patch-ae
@@ -0,0 +1,143 @@
+$NetBSD: patch-ae,v 1.1 1999/10/01 17:05:15 dmcmahill Exp $
+
+NOTE: This are Berkeley patches for 3F4
+*** src/lib/fte/grid.c.orig Sun Apr 25 14:53:11 1993
+--- src/lib/fte/grid.c Sat Jan 29 10:47:59 1994
+***************
+*** 17,22 ****
+--- 17,23 ----
+ #include "suffix.h"
+
+ #define RAD_TO_DEG (180.0 / M_PI)
++ #define LABEL_CHARS 20
+
+ static double *lingrid(), *loggrid();
+ static void polargrid(), smithgrid();
+***************
+*** 225,231 ****
+ int max;
+ static double dd[2];
+ int mult = 1;
+! char buf[16], *s;
+ int slim, digits;
+
+ if (axis == y_axis && graph->grid.ysized) {
+--- 226,232 ----
+ int max;
+ static double dd[2];
+ int mult = 1;
+! char buf[LABEL_CHARS], *s;
+ int slim, digits;
+
+ if (axis == y_axis && graph->grid.ysized) {
+***************
+*** 477,483 ****
+ drawlingrid(graph, units, spacing, nsp, dst, lmt, hmt, onedec, mult, mag,
+ digits, axis)
+ GRAPH *graph;
+! char units[16];
+ bool onedec;
+ int nsp, spacing, mult;
+ double hmt, lmt, dst;
+--- 478,484 ----
+ drawlingrid(graph, units, spacing, nsp, dst, lmt, hmt, onedec, mult, mag,
+ digits, axis)
+ GRAPH *graph;
+! char *units;
+ bool onedec;
+ int nsp, spacing, mult;
+ double hmt, lmt, dst;
+***************
+*** 488,494 ****
+
+ int i, j;
+ double m, step;
+! char buf[16];
+
+ /* i counts how many pixels we have drawn, and j counts which unit
+ * we are at.
+--- 489,495 ----
+
+ int i, j;
+ double m, step;
+! char buf[LABEL_CHARS];
+
+ /* i counts how many pixels we have drawn, and j counts which unit
+ * we are at.
+***************
+*** 567,573 ****
+ double k;
+ double decs;
+ double mag, gain;
+! char buf[32], *s;
+
+ if (axis == x_axis && graph->grid.xsized) {
+ lmt = graph->grid.xaxis.log.lmt;
+--- 568,574 ----
+ double k;
+ double decs;
+ double mag, gain;
+! char buf[LABEL_CHARS], *s;
+
+ if (axis == x_axis && graph->grid.xsized) {
+ lmt = graph->grid.xaxis.log.lmt;
+***************
+*** 671,677 ****
+ {
+ int i, j, k, l, m;
+ double t;
+! char buf[16];
+
+ /* Now plot every pp'th decade line, with subs lines between them. */
+ if (subs > 1)
+--- 672,678 ----
+ {
+ int i, j, k, l, m;
+ double t;
+! char buf[LABEL_CHARS];
+
+ /* Now plot every pp'th decade line, with subs lines between them. */
+ if (subs > 1)
+*** src/lib/fte/newcoms.c.orig Sun Mar 7 16:30:58 1993
+--- src/lib/fte/newcoms.c Wed Feb 23 22:39:55 1994
+***************
+*** 151,156 ****
+--- 151,160 ----
+ /* Copy from the first */
+ vname = cp_unquote(wl->wl_word);
+ dv = vec_get(vname);
++ if (!dv) {
++ printf("'%s' reference vector not found\n", vname);
++ return;
++ }
+ numdims = dv->v_numdims;
+ dims = dv->v_dims;
+ wl = wl->wl_next;
+*** src/lib/sparse/spsmp.c.orig Wed Feb 3 14:20:50 1993
+--- src/lib/sparse/spsmp.c Sun Jan 30 11:53:10 1994
+***************
+*** 483,492 ****
+ int CreateIfMissing;
+ {
+ MatrixPtr Matrix = (MatrixPtr)eMatrix;
+! ElementPtr Element = Matrix->FirstInCol[Col];
+
+ /* Begin `SMPfindElt'. */
+ ASSERT( IS_SPARSE( Matrix ) );
+ Element = spcFindElementInCol(Matrix, &Element, Row, Col, CreateIfMissing);
+ return (SMPelement *)Element;
+ }
+--- 485,497 ----
+ int CreateIfMissing;
+ {
+ MatrixPtr Matrix = (MatrixPtr)eMatrix;
+! ElementPtr Element;
+
+ /* Begin `SMPfindElt'. */
+ ASSERT( IS_SPARSE( Matrix ) );
++ Row = Matrix->ExtToIntRowMap[Row];
++ Col = Matrix->ExtToIntColMap[Col];
++ Element = Matrix->FirstInCol[Col];
+ Element = spcFindElementInCol(Matrix, &Element, Row, Col, CreateIfMissing);
+ return (SMPelement *)Element;
+ }
diff --git a/cad/spice/patches/patch-af b/cad/spice/patches/patch-af
new file mode 100644
index 00000000000..308cb38400e
--- /dev/null
+++ b/cad/spice/patches/patch-af
@@ -0,0 +1,64 @@
+$NetBSD: patch-af,v 1.1 1999/10/01 17:05:15 dmcmahill Exp $
+
+*** src/bin/sconvert.c.orig Tue Aug 19 17:44:17 1997
+--- src/bin/sconvert.c Tue Aug 19 17:47:11 1997
+***************
+*** 80,98 ****
+
+ case 1: printf("Input file: ");
+ (void) fflush(stdout);
+! (void) gets(buf);
+ sf = copy(buf);
+ printf("Input type: ");
+ (void) fflush(stdout);
+! (void) gets(buf);
+ f = buf[0];
+ printf("Output file: ");
+ (void) fflush(stdout);
+! (void) gets(buf);
+ af = copy(buf);
+ printf("Output type: ");
+ (void) fflush(stdout);
+! (void) gets(buf);
+ t = buf[0];
+ break;
+ default:
+--- 80,98 ----
+
+ case 1: printf("Input file: ");
+ (void) fflush(stdout);
+! (void) fgets(buf,BSIZE_SP,stdin);
+ sf = copy(buf);
+ printf("Input type: ");
+ (void) fflush(stdout);
+! (void) fgets(buf,BSIZE_SP,stdin);
+ f = buf[0];
+ printf("Output file: ");
+ (void) fflush(stdout);
+! (void) fgets(buf,BSIZE_SP,stdin);
+ af = copy(buf);
+ printf("Output type: ");
+ (void) fflush(stdout);
+! (void) fgets(buf,BSIZE_SP,stdin);
+ t = buf[0];
+ break;
+ default:
+*** src/lib/fte/inp.c.orig Tue Aug 19 17:38:25 1997
+--- src/lib/fte/inp.c Tue Aug 19 17:33:01 1997
+***************
+*** 666,672 ****
+
+ fprintf(cp_out, "run circuit? ");
+ fflush(cp_out);
+! (void) gets(buf);
+ if (buf[0] != 'n') {
+ fprintf(cp_out, "running circuit\n");
+ com_run(NULL);
+--- 666,672 ----
+
+ fprintf(cp_out, "run circuit? ");
+ fflush(cp_out);
+! (void) fgets(buf,BSIZE_SP,stdin);
+ if (buf[0] != 'n') {
+ fprintf(cp_out, "running circuit\n");
+ com_run(NULL);
diff --git a/cad/spice/patches/patch-ag b/cad/spice/patches/patch-ag
new file mode 100644
index 00000000000..025de107519
--- /dev/null
+++ b/cad/spice/patches/patch-ag
@@ -0,0 +1,51 @@
+$NetBSD: patch-ag,v 1.1 1999/10/01 17:05:15 dmcmahill Exp $
+
+--- conf/defaults.orig Thu Jul 29 17:33:56 1993
++++ conf/defaults Wed Sep 29 21:30:44 1999
+@@ -66,5 +66,5 @@
+ # SYS_DIR = $(DIST_DIR)
+
+-SYS_DIR = $(TOP1)/$(SYSTEM)
++SYS_DIR = $(TOP0)/$(SYSTEM)
+
+ # OBJ_TOP is the directory in which intermidiate files reside
+@@ -106,10 +106,10 @@
+ # file listed on the "build" command line.
+
+-SPICE_DIR = $(TOP1)/$(SYSTEM)
+-SPICE_LIB_DIR = $(SPICE_DIR)/lib
++SPICE_DIR = ${PREFIX}
++SPICE_LIB_DIR = $(SPICE_DIR)/share/spice3
+ SPICE_EXEC_DIR = $(SPICE_DIR)/bin
+
+ S_SPICE_DIR = $(SPICE_DIR)
+-S_SPICE_LIB_DIR = $(S_SPICE_DIR)/lib
++S_SPICE_LIB_DIR = $(S_SPICE_DIR)/share/spice3
+ S_SPICE_EXEC_DIR= $(S_SPICE_DIR)/bin
+
+@@ -130,9 +130,9 @@
+ # file "conf/vax" or "conf/gcc".
+
+-CC = cc
++CC = gcc
+
+ # CC_OPT: Default compile options (optimization/debug level, other)
+
+-CC_OPT = -O
++CC_OPT = -O2 -pipe
+
+ # CC_OPT_SAFE: Special compile options to override CC_OPT for code
+@@ -204,5 +204,5 @@
+ # a convenience that is used in the following definitions.
+
+-X_DIR = /usr
++X_DIR = ${X11BASE}
+
+ # INCX lists the X include directories. This may be different between
+@@ -219,5 +219,5 @@
+ # it, then you do not need it (delete the following reference to it).
+
+-LIBX = -L$(X_DIR)/lib -lXaw -lXt -lXext -lXmu -lX11
++LIBX = -L$(X_DIR)/lib -Wl,-R$(X_DIR)/lib -lXaw -lXt -lXext -lXmu -lSM -lICE -lX11
+
+
diff --git a/cad/spice/patches/patch-ah b/cad/spice/patches/patch-ah
new file mode 100644
index 00000000000..f9601af88e0
--- /dev/null
+++ b/cad/spice/patches/patch-ah
@@ -0,0 +1,193 @@
+$NetBSD: patch-ah,v 1.1 1999/10/01 17:05:15 dmcmahill Exp $
+
+--- src/bin/main.c.orig Thu Jul 29 01:48:32 1993
++++ src/bin/main.c Mon Mar 8 12:00:35 1999
+@@ -25,6 +25,13 @@
+ #include <pwd.h>
+ #endif
+
++#ifdef HAS_GNUREADLINE
++/* Added GNU Readline Support 11/3/97 -- Andrew Veliath <veliaa@rpi.edu> */
++#include <readline/readline.h>
++#include <readline/history.h>
++#include "fteinput.h"
++#endif
++
+ #ifdef HAS_UNIX_SIGS
+ #include <signal.h>
+ #endif
+@@ -36,6 +43,11 @@
+ #endif
+
+ #include "patchlev.h"
++
++#ifdef __FreeBSD__
++#include <floatingpoint.h>
++#endif
++
+ #include "suffix.h"
+
+ int Patch_Level = PATCHLEVEL;
+@@ -49,6 +61,11 @@
+ bool ft_intrpt = false; /* Set by the (void) signal handlers. */
+ bool ft_setflag = false; /* Don't abort after an interrupt. */
+
++#ifdef HAS_GNUREADLINE
++char gnu_history_file[512];
++static char *application_name;
++#endif
++
+ struct variable *(*if_getparam)( );
+
+ #ifdef BATCH
+@@ -181,6 +198,89 @@
+
+ #endif
+
++#ifdef HAS_GNUREADLINE
++/* Adapted ../lib/cp/lexical.c:prompt() for GNU Readline -- Andrew Veliath <veliaa@rpi.edu> */
++static char *
++prompt()
++{
++ static char pbuf[128];
++ char *p = pbuf, *s;
++
++ if (cp_interactive == false)
++ return;
++ if (cp_promptstring == NULL)
++ s = "-> ";
++ else
++ s = cp_promptstring;
++ if (cp_altprompt)
++ s = cp_altprompt;
++ while (*s) {
++ switch (strip(*s)) {
++ case '!':
++ p += sprintf(p, "%d", where_history() + 1);
++ break;
++ case '\\':
++ if (*(s + 1))
++ p += sprintf(p, "%c", strip(*++s));
++ default:
++ *p = strip(*s); ++p;
++ break;
++ }
++ s++;
++ }
++ *p = 0;
++ return pbuf;
++}
++
++/* Process device events in Readline's hook since there is no where
++ else to do it now - AV */
++int rl_event_func()
++{
++ static REQUEST reqst = { checkup_option, 0 };
++ Input(&reqst, NULL);
++ return 0;
++}
++
++/* Added GNU Readline Support -- Andrew Veliath <veliaa@rpi.edu> */
++void app_rl_readlines()
++{
++ char *line, *expanded_line;
++
++ strcpy(gnu_history_file, getenv("HOME"));
++ strcat(gnu_history_file, "/.");
++ strcat(gnu_history_file, application_name);
++ strcat(gnu_history_file, "_history");
++
++ using_history();
++ read_history(gnu_history_file);
++
++ rl_readline_name = application_name;
++ rl_instream = cp_in;
++ rl_outstream = cp_out;
++ rl_event_hook = rl_event_func;
++
++ while (1) {
++ history_set_pos(history_length);
++ line = readline(prompt());
++ if (line && *line) {
++ int s = history_expand(line, &expanded_line);
++
++ if (s == 2) {
++ fprintf(stderr, "-> %s\n", expanded_line);
++ } else if (s == -1) {
++ fprintf(stderr, "readline: %s\n", expanded_line);
++ } else {
++ cp_evloop(expanded_line);
++ add_history(expanded_line);
++ }
++ free(expanded_line);
++ }
++ if (line) free(line);
++ }
++ /* History gets written in ../fte/misccoms.c com_quit */
++}
++#endif /* HAS_GNUREADLINE */
++
+ char *hlp_filelist[] = { "spice", 0 };
+
+ void
+@@ -210,6 +310,10 @@
+
+ #endif
+
++#ifdef __FreeBSD__
++ fpsetmask(fpgetmask() & ~FP_X_INV);
++#endif
++
+ /* MFB tends to jump to 0 on errors. This tends to catch it. */
+ if (started) {
+ fprintf(cp_err, "main: Internal Error: jump to zero\n");
+@@ -217,6 +321,13 @@
+ }
+ started = true;
+
++#ifdef HAS_GNUREADLINE
++ if (!(application_name = strrchr(av[0],'/')))
++ application_name = av[0];
++ else
++ ++application_name;
++#endif
++
+ #ifdef HAS_MAC_ARGCARGV
+ ac = initmac(&av);
+ #endif
+@@ -393,7 +504,11 @@
+ # ifdef HAS_UNIX_SIGS
+ /* Set up (void) signal handling */
+ if (!ft_batchmode) {
++# ifdef HAS_GNUREADLINE
++ (void) signal(SIGINT, SIG_IGN);
++# else
+ (void) signal(SIGINT, ft_sigintr);
++# endif
+ (void) signal(SIGFPE, sigfloat);
+ # ifdef SIGTSTP
+ (void) signal(SIGTSTP, sigstop);
+@@ -588,7 +703,11 @@
+ } else {
+ (void) setjmp(jbuf);
+ cp_interactive = true;
++#ifdef HAS_GNUREADLINE
++ app_rl_readlines();
++#else
+ while (cp_evloop((char *) NULL) == 1) ;
++#endif /* ifelse HAS_GNUREADLINE */
+ }
+
+ # else /* if BATCH */
+@@ -627,7 +746,11 @@
+ /* Nutmeg "main" */
+ (void) setjmp(jbuf);
+ cp_interactive = true;
++#ifdef HAS_GNUREADLINE
++ app_rl_readlines();
++#else
+ while (cp_evloop((char *) NULL) == 1) ;
++#endif /* ifelse HAS_GNUREADLINE */
+
+ #endif
+
diff --git a/cad/spice/patches/patch-ai b/cad/spice/patches/patch-ai
new file mode 100644
index 00000000000..b432a715ced
--- /dev/null
+++ b/cad/spice/patches/patch-ai
@@ -0,0 +1,84 @@
+$NetBSD: patch-ai,v 1.1 1999/10/01 17:05:15 dmcmahill Exp $
+
+diff -cr spice3f4/src/lib/cp/history.c src/lib/cp/history.c
+*** spice3f4/src/lib/cp/history.c Thu Jun 17 17:32:40 1993
+--- src/lib/cp/history.c Tue Nov 4 22:18:54 1997
+***************
+*** 11,16 ****
+--- 11,24 ----
+ #include "cpdefs.h"
+ #include "suffix.h"
+
++ #ifdef HAS_GNUREADLINE
++
++ /* Added GNU Readline Support -- Andrew Veliath <veliaa@rpi.edu> */
++ #include <readline/readline.h>
++ #include <readline/history.h>
++
++ #endif /* HAS_GNUREADLINE */
++
+ static char *dohs();
+ static void freehist();
+ static wordlist *dohmod();
+***************
+*** 19,24 ****
+--- 27,33 ----
+ static wordlist *hpattern();
+ static wordlist *hprefix();
+
++
+ struct histent *cp_lastone = NULL;
+ int cp_maxhistlength = 1000;
+ char cp_hat = '^';
+***************
+*** 345,352 ****
+--- 354,363 ----
+ cp_lastone->hi_next = NULL;
+ cp_lastone->hi_event = event;
+ cp_lastone->hi_wlist = wl_copy(wlist);
++ #ifndef HAS_GNUREADLINE
+ freehist(histlength - cp_maxhistlength);
+ histlength++;
++ #endif
+ return;
+ }
+
+***************
+*** 483,492 ****
+--- 494,529 ----
+ wl = wl->wl_next;
+ rev = true;
+ }
++ #ifdef HAS_GNUREADLINE
++ /* Added GNU Readline Support -- Andrew Veliath <veliaa@rpi.edu> */
++ {
++ HIST_ENTRY *he;
++ int i, N;
++
++ N = (wl == NULL) ? history_length : atoi(wl->wl_word);
++
++ if (N < 0) N = 0;
++ if (N > history_length) N = history_length;
++
++ if (rev)
++ for (i = history_length; i > 0 && N; --i, --N) {
++ he = history_get(i);
++ if (!he) return;
++ fprintf(cp_out, "%d\t%s\n", i, he->line);
++ }
++ else
++ for (i = history_length - N + 1; i <= history_length; ++i) {
++ he = history_get(i);
++ if (!he) return;
++ fprintf(cp_out, "%d\t%s\n", i, he->line);
++ }
++ }
++ #else
+ if (wl == NULL)
+ cp_hprint(cp_event - 1, cp_event - histlength, rev);
+ else
+ cp_hprint(cp_event - 1, cp_event - 1 - atoi(wl->wl_word), rev);
++ #endif /* ifelse HAS_GNUREADLINE */
+ return;
+ }
+
diff --git a/cad/spice/patches/patch-aj b/cad/spice/patches/patch-aj
new file mode 100644
index 00000000000..089b1894351
--- /dev/null
+++ b/cad/spice/patches/patch-aj
@@ -0,0 +1,39 @@
+$NetBSD: patch-aj,v 1.1 1999/10/01 17:05:15 dmcmahill Exp $
+
+diff -cr spice3f4/src/lib/fte/misccoms.c src/lib/fte/misccoms.c
+*** spice3f4/src/lib/fte/misccoms.c Thu Jun 17 17:32:53 1993
+--- src/lib/fte/misccoms.c Tue Nov 4 22:18:54 1997
+***************
+*** 11,16 ****
+--- 11,24 ----
+ #include "hlpdefs.h"
+ #include "suffix.h"
+
++ #ifdef HAS_GNUREADLINE
++ #include <readline/readline.h>
++ #include <readline/history.h>
++
++ extern int gnu_history_lines;
++ extern char gnu_history_file[];
++ #endif
++
+ static void byemesg();
+
+ void
+***************
+*** 299,304 ****
+--- 307,320 ----
+ byemesg();
+ } else
+ byemesg();
++
++ #ifdef HAS_GNUREADLINE
++ /* Added GNU Readline Support -- Andrew Veliath <veliaa@rpi.edu> */
++ if (cp_interactive && (cp_maxhistlength > 0)) {
++ stifle_history(cp_maxhistlength);
++ write_history(gnu_history_file);
++ }
++ #endif /* HAS_GNUREADLINE */
+
+ exit(EXIT_NORMAL);
+ /* NOTREACHED */
diff --git a/cad/spice/patches/patch-ak b/cad/spice/patches/patch-ak
new file mode 100644
index 00000000000..a69e9c331e1
--- /dev/null
+++ b/cad/spice/patches/patch-ak
@@ -0,0 +1,26 @@
+$NetBSD: patch-ak,v 1.1 1999/10/01 17:05:15 dmcmahill Exp $
+
+diff -cr spice3f4/src/lib/fte/signal.c src/lib/fte/signal.c
+*** spice3f4/src/lib/fte/signal.c Thu Jun 17 17:32:59 1993
+--- src/lib/fte/signal.c Tue Nov 4 22:19:01 1997
+***************
+*** 32,37 ****
+--- 32,39 ----
+ * is true.
+ */
+
++ /* not using SIGINT with GNU Readline - AV */
++ #ifndef HAS_GNUREADLINE
+ SIGNAL_TYPE
+ ft_sigintr()
+ {
+***************
+*** 58,63 ****
+--- 60,66 ----
+ cp_resetcontrol();
+ longjmp(jbuf, 1);
+ }
++ #endif /* !HAS_GNUREADLINE */
+
+ /* ARGSUSED */
+ SIGNAL_TYPE
diff --git a/cad/spice/patches/patch-al b/cad/spice/patches/patch-al
new file mode 100644
index 00000000000..0032902b515
--- /dev/null
+++ b/cad/spice/patches/patch-al
@@ -0,0 +1,23 @@
+$NetBSD: patch-al,v 1.1 1999/10/01 17:05:15 dmcmahill Exp $
+
+diff -cr spice3f4/src/lib/fte/x10.c src/lib/fte/x10.c
+*** spice3f4/src/lib/fte/x10.c Thu Jun 17 17:32:54 1993
+--- src/lib/fte/x10.c Tue Nov 4 22:18:54 1997
+***************
+*** 726,737 ****
+--- 726,740 ----
+ graph->commandline, fx0, fx1, fy0, fy1);
+ }
+
++ /* don't use the following if using GNU Readline - AV */
++ #ifndef HAS_GNUREADLINE
+ /* hack for Gordon Jacobs */
+ /* add to history list if plothistory is set */
+ if (cp_getvar("plothistory", VT_BOOL, (char *) &dummy)) {
+ wl = cp_parse(buf);
+ (void) cp_addhistent(cp_event++, wl);
+ }
++ #endif /* HAS_GNUREADLINE */
+
+ (void) cp_evloop(buf);
+
diff --git a/cad/spice/patches/patch-am b/cad/spice/patches/patch-am
new file mode 100644
index 00000000000..4b2f12f71de
--- /dev/null
+++ b/cad/spice/patches/patch-am
@@ -0,0 +1,22 @@
+$NetBSD: patch-am,v 1.1 1999/10/01 17:05:15 dmcmahill Exp $
+
+diff -cr spice3f4/src/lib/fte/x11.c src/lib/fte/x11.c
+*** spice3f4/src/lib/fte/x11.c Thu Jun 17 17:32:59 1993
+--- src/lib/fte/x11.c Tue Nov 4 22:18:54 1997
+***************
+*** 773,784 ****
+--- 773,787 ----
+ graph->commandline, fx0, fx1, fy0, fy1);
+ }
+
++ /* don't use the following if using GNU Readline - AV */
++ #ifndef HAS_GNUREADLINE
+ /* hack for Gordon Jacobs */
+ /* add to history list if plothistory is set */
+ if (cp_getvar("plothistory", VT_BOOL, (char *) &dummy)) {
+ wl = cp_parse(buf);
+ (void) cp_addhistent(cp_event++, wl);
+ }
++ #endif /* HAS_GNUREADLINE */
+
+ (void) cp_evloop(buf);
diff --git a/cad/spice/patches/patch-an b/cad/spice/patches/patch-an
new file mode 100644
index 00000000000..276b95f52f0
--- /dev/null
+++ b/cad/spice/patches/patch-an
@@ -0,0 +1,57 @@
+$NetBSD: patch-an,v 1.1 1999/10/01 17:05:16 dmcmahill Exp $
+
+--- src/lib/fte//dimens.c.orig Sun Apr 25 18:03:19 1993
++++ src/lib/fte//dimens.c Thu Sep 30 10:02:10 1999
+@@ -21,9 +21,21 @@
+ {
+ int i;
+- char buf[BSIZE_SP];
++ char *buf;
++ if ( (buf = (char *) malloc(BSIZE_SP*sizeof(char))) == NULL)
++ {
++ fprintf(stderr,"lib:fte:dimns:dimstring: malloc failed\n");
++ exit(1);
++ }
+
+ if (!data || length < 1)
+ return NULL;
+
++ if (length > BSIZE_SP)
++ {
++ fprintf(stderr,"WARNING, lib:fte:dimns:dimstring: length=%d > BSIZE_SP=%d\n",
++ length,BSIZE_SP);
++ length = BSIZE_SP;
++ }
++
+ buf[0] = '\0';
+ for (i=0; i < length; i++) {
+@@ -31,5 +43,5 @@
+ (i < length - 1) ? "," : "");
+ }
+- /* XXX Should I return a copy instead? */
++
+ return(buf);
+ }
+@@ -44,8 +56,21 @@
+ {
+ int i;
+- char buf[BSIZE_SP];
++ char *buf;
++
++ if ( (buf = (char *) malloc(BSIZE_SP*sizeof(char))) == NULL)
++ {
++ fprintf(stderr,"lib:fte:dimns:indexstring: malloc failed\n");
++ exit(1);
++ }
+
+ if (!data || length < 1)
+ return NULL;
++
++ if (length > BSIZE_SP)
++ {
++ fprintf(stderr,"WARNING, lib:fte:dimns:indexstring: length=%d > BSIZE_SP=%d\n",
++ length,BSIZE_SP);
++ length = BSIZE_SP;
++ }
+
+ buf[0] = '\0';
diff --git a/cad/spice/patches/patch-ao b/cad/spice/patches/patch-ao
new file mode 100644
index 00000000000..075026df5d4
--- /dev/null
+++ b/cad/spice/patches/patch-ao
@@ -0,0 +1,13 @@
+$NetBSD: patch-ao,v 1.1 1999/10/01 17:05:16 dmcmahill Exp $
+
+--- src/lib/hlp/readhelp.c.orig Wed Apr 21 03:56:00 1993
++++ src/lib/hlp/readhelp.c Thu Sep 30 10:06:32 1999
+@@ -42,6 +42,6 @@
+ static char *getsubject();
+ static toplink *getsubtoplink();
+-extern void sortlist(), tlfree();
+-extern int sortcmp();
++static void sortlist(), tlfree();
++static int sortcmp();
+
+ static topic *alltopics = NULL;
diff --git a/cad/spice/patches/patch-ap b/cad/spice/patches/patch-ap
new file mode 100644
index 00000000000..848233340ff
--- /dev/null
+++ b/cad/spice/patches/patch-ap
@@ -0,0 +1,22 @@
+$NetBSD: patch-ap,v 1.1 1999/10/01 17:05:16 dmcmahill Exp $
+
+--- src/lib/fte/aspice.c.orig Sun Apr 25 20:57:55 1993
++++ src/lib/fte/aspice.c Thu Sep 30 11:42:40 1999
+@@ -175,4 +175,10 @@
+ FILE *fp;
+ int pid;
++#ifdef HAS_INTWAITSTATUS
++ int status;
++#else
++ union wait status;
++#endif
++
+ static bool here = false; /* Don't want to be re-entrant. */
+
+@@ -183,5 +189,5 @@
+
+ while (numchanged > 0) {
+- pid = wait((union wait *) NULL);
++ pid = wait(&status);
+ if (pid == -1) {
+ fprintf(cp_err,
diff --git a/cad/spice/patches/patch-aq b/cad/spice/patches/patch-aq
new file mode 100644
index 00000000000..049104ce146
--- /dev/null
+++ b/cad/spice/patches/patch-aq
@@ -0,0 +1,10 @@
+$NetBSD: patch-aq,v 1.1 1999/10/01 17:05:16 dmcmahill Exp $
+
+--- src/lib/cp/unixcom.c.orig Tue Apr 13 21:15:50 1993
++++ src/lib/cp/unixcom.c Thu Sep 30 12:06:53 1999
+@@ -7,4 +7,5 @@
+ * Routines to do execution of unix commands.
+ */
++#include <unistd.h>
+
+ #include "spice.h"
diff --git a/cad/spice/patches/patch-ar b/cad/spice/patches/patch-ar
new file mode 100644
index 00000000000..a5addef3924
--- /dev/null
+++ b/cad/spice/patches/patch-ar
@@ -0,0 +1,10 @@
+$NetBSD: patch-ar,v 1.1 1999/10/01 17:05:16 dmcmahill Exp $
+
+--- src/lib/cp/cshpar.c.orig Wed Jul 14 20:06:30 1993
++++ src/lib/cp/cshpar.c Thu Sep 30 13:36:32 1999
+@@ -7,4 +7,5 @@
+ * The main entry point for cshpar.
+ */
++#include <unistd.h>
+
+ #include "spice.h"
diff --git a/cad/spice/patches/patch-as b/cad/spice/patches/patch-as
new file mode 100644
index 00000000000..ab4f152a05e
--- /dev/null
+++ b/cad/spice/patches/patch-as
@@ -0,0 +1,11 @@
+$NetBSD: patch-as,v 1.1 1999/10/01 17:05:16 dmcmahill Exp $
+
+--- util/skeleton/make_def.bd.orig Thu Jul 29 17:35:18 1993
++++ util/skeleton/make_def.bd Fri Oct 1 01:47:31 1999
+@@ -9,5 +9,5 @@
+ PS = /
+ REVISION =
+-VERSION = 3f4
++VERSION = 3f5.1
+ VERSION_REVISION= $(VERSION)$(REVISION)
+ NOTICE =