diff -uNr /usr/ports/cad/cider/Makefile cider/Makefile --- /usr/ports/cad/cider/Makefile Sun Jun 1 20:24:56 2003 +++ cider/Makefile Sun Oct 19 15:37:25 2003 @@ -7,7 +7,7 @@ PORTNAME= cider PORTVERSION= 1.b1 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= cad MASTER_SITES= ftp://ic.eecs.berkeley.edu/pub/Cider/new/ DISTNAME= cider1b1 @@ -15,6 +15,7 @@ MAINTAINER= amakawa@jp.FreeBSD.org COMMENT= A mixed-level circuit and device simulator (includes SPICE3) +CONFLICTS= spice-* WRKSRC= ${WRKDIR}/sim USE_XLIB= yes MAN1= sconvert.1 nutmeg.1 spice.1 cider.1 diff -uNr /usr/ports/cad/cider/files/FreeBSD cider/files/FreeBSD --- /usr/ports/cad/cider/files/FreeBSD Wed Dec 29 21:32:06 1999 +++ cider/files/FreeBSD Sun Aug 31 11:10:41 2003 @@ -5,6 +5,6 @@ CC_OPT = $(CFLAGS) #CC_OPT_SAFE = $(CFLAGS) -fno-strength-reduce X_DIR = $(X11BASE) -LDFLAGS = -L$(X11BASE)/lib -lreadline -lm -ltermcap +LDFLAGS = -L$(X11BASE)/lib -lm -ltermcap ASM_HACK = < /dev/null -SYS_CFLAGS = -Dbsd -DHAS_GNUREADLINE +SYS_CFLAGS = -Dbsd diff -uNr /usr/ports/cad/cider/files/patch-ad cider/files/patch-ad --- /usr/ports/cad/cider/files/patch-ad Wed Oct 10 21:53:14 2001 +++ cider/files/patch-ad Fri Oct 17 22:12:14 2003 @@ -1,20 +1,6 @@ --- spice/common/src/bin/main.c.orig Sat Mar 12 08:22:28 1994 -+++ spice/common/src/bin/main.c Wed Sep 19 11:06:34 2001 -@@ -25,6 +25,13 @@ - #include - #endif - -+#ifdef HAS_GNUREADLINE -+/* Added GNU Readline Support 11/3/97 -- Andrew Veliath */ -+#include -+#include -+#include "fteinput.h" -+#endif -+ - #ifdef HAS_UNIX_SIGS - #include - #endif -@@ -36,6 +43,11 @@ ++++ spice/common/src/bin/main.c Fri Oct 17 22:11:28 2003 +@@ -36,6 +36,11 @@ #endif #include "patchlev.h" @@ -26,172 +12,14 @@ #include "suffix.h" /* (Virtual) Machine architecture parameters */ -@@ -53,6 +65,11 @@ - bool ft_intrpt = false; /* Set by the (void) signal handlers. */ - bool ft_setflag = false; /* Don't abort after an interrupt. */ +@@ -214,6 +219,10 @@ + FILE *fp; + FILE *circuit_file; -+#ifdef HAS_GNUREADLINE -+char gnu_history_file[512]; -+static char *application_name; +#endif + - struct variable *(*if_getparam)( ); - - #ifdef BATCH -@@ -185,6 +202,95 @@ - - #endif - -+#ifdef HAS_GNUREADLINE -+/* Adapted ../lib/cp/lexical.c:prompt() for GNU Readline -- Andrew Veliath */ -+static char * -+prompt() -+{ -+ static char pbuf[128]; -+ int n = sizeof(pbuf); -+ 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 && (n > 1)) { -+ int w; -+ switch (strip(*s)) { -+ case '!': -+ w = snprintf(p, n, "%d", where_history() + 1); -+ w = (w >= n) ? n - 1 : w; -+ p += w; -+ n -= w; -+ break; -+ case '\\': -+ if (*(s + 1)) ++s; -+ default: -+ *p = strip(*s); ++p; -+ --n; -+ 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 */ -+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); -+ else if (line == NULL) cp_evloop("quit"); -+ } -+ /* History gets written in ../fte/misccoms.c com_quit */ -+} -+#endif /* HAS_GNUREADLINE */ -+ - char *hlp_filelist[] = { "spice", 0 }; - - void -@@ -216,6 +322,10 @@ - - #endif - +#ifdef __FreeBSD__ + fpsetmask(fpgetmask() & ~FP_X_INV & ~FP_X_DZ & ~FP_X_OFL); -+#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"); -@@ -236,6 +346,13 @@ - ARCHsize = 1; - #endif /* PARALLEL_ARCH */ - -+#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 -@@ -472,7 +589,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); -@@ -668,7 +789,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 */ -@@ -708,7 +833,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 + /* MFB tends to jump to 0 on errors. This tends to catch it. */ diff -uNr /usr/ports/cad/cider/files/patch-ae cider/files/patch-ae --- /usr/ports/cad/cider/files/patch-ae Wed Dec 29 21:32:09 1999 +++ cider/files/patch-ae Thu Jan 1 01:00:00 1970 @@ -1,81 +0,0 @@ -*** spice/common/src/lib/cp/history.c.orig Sat Jan 29 18:44:09 1994 ---- spice/common/src/lib/cp/history.c Sun Dec 12 14:56:43 1999 -*************** -*** 11,16 **** ---- 11,24 ---- - #include "cpdefs.h" - #include "suffix.h" - -+ #ifdef HAS_GNUREADLINE -+ -+ /* Added GNU Readline Support -- Andrew Veliath */ -+ #include -+ #include -+ -+ #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 */ -+ { -+ 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 -uNr /usr/ports/cad/cider/files/patch-af cider/files/patch-af --- /usr/ports/cad/cider/files/patch-af Wed Dec 29 21:32:09 1999 +++ cider/files/patch-af Thu Jan 1 01:00:00 1970 @@ -1,36 +0,0 @@ -*** spice/common/src/lib/fte/misccoms.c.orig Wed Mar 9 04:15:44 1994 ---- spice/common/src/lib/fte/misccoms.c Sun Dec 12 14:56:44 1999 -*************** -*** 11,16 **** ---- 11,24 ---- - #include "hlpdefs.h" - #include "suffix.h" - -+ #ifdef HAS_GNUREADLINE -+ #include -+ #include -+ -+ 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 */ -+ if (cp_interactive && (cp_maxhistlength > 0)) { -+ stifle_history(cp_maxhistlength); -+ write_history(gnu_history_file); -+ } -+ #endif /* HAS_GNUREADLINE */ - - exit(EXIT_NORMAL); - /* NOTREACHED */ diff -uNr /usr/ports/cad/cider/files/patch-ag cider/files/patch-ag --- /usr/ports/cad/cider/files/patch-ag Wed Dec 29 21:32:09 1999 +++ cider/files/patch-ag Thu Jan 1 01:00:00 1970 @@ -1,23 +0,0 @@ -*** spice/common/src/lib/fte/signal.c.orig Sat Jan 29 18:48:38 1994 ---- spice/common/src/lib/fte/signal.c Sun Dec 12 14:56:46 1999 -*************** -*** 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 -uNr /usr/ports/cad/cider/files/patch-ah cider/files/patch-ah --- /usr/ports/cad/cider/files/patch-ah Wed Dec 29 21:32:09 1999 +++ cider/files/patch-ah Thu Jan 1 01:00:00 1970 @@ -1,20 +0,0 @@ -*** spice/common/src/lib/fte/x10.c.orig Sat Jan 29 18:47:11 1994 ---- spice/common/src/lib/fte/x10.c Sun Dec 12 14:56:48 1999 -*************** -*** 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 -uNr /usr/ports/cad/cider/files/patch-ai cider/files/patch-ai --- /usr/ports/cad/cider/files/patch-ai Wed Dec 29 21:32:10 1999 +++ cider/files/patch-ai Thu Jan 1 01:00:00 1970 @@ -1,20 +0,0 @@ -*** spice/common/src/lib/fte/x11.c.orig Sat Jan 29 18:48:34 1994 ---- spice/common/src/lib/fte/x11.c Sun Dec 12 14:56:50 1999 -*************** -*** 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 -uNr /usr/ports/cad/cider/files/patch-bc cider/files/patch-bc --- /usr/ports/cad/cider/files/patch-bc Wed Oct 10 21:53:14 2001 +++ cider/files/patch-bc Fri Oct 17 22:20:13 2003 @@ -1,20 +1,6 @@ --- cider/common/src/bin/main.c.orig Sat Mar 12 08:20:59 1994 -+++ cider/common/src/bin/main.c Wed Sep 19 11:07:47 2001 -@@ -25,6 +25,13 @@ - #include - #endif - -+#ifdef HAS_GNUREADLINE -+/* Added GNU Readline Support 11/3/97 -- Andrew Veliath */ -+#include -+#include -+#include "fteinput.h" -+#endif -+ - #ifdef HAS_UNIX_SIGS - #include - #endif -@@ -36,6 +43,11 @@ ++++ cider/common/src/bin/main.c Fri Oct 17 22:19:55 2003 +@@ -36,6 +36,11 @@ #endif #include "patchlev.h" @@ -26,172 +12,14 @@ #include "suffix.h" /* (Virtual) Machine architecture parameters */ -@@ -53,6 +65,11 @@ - bool ft_intrpt = false; /* Set by the (void) signal handlers. */ - bool ft_setflag = false; /* Don't abort after an interrupt. */ +@@ -214,6 +219,10 @@ + FILE *fp; + FILE *circuit_file; -+#ifdef HAS_GNUREADLINE -+char gnu_history_file[512]; -+static char *application_name; +#endif + - struct variable *(*if_getparam)( ); - - #ifdef BATCH -@@ -185,6 +202,95 @@ - - #endif - -+#ifdef HAS_GNUREADLINE -+/* Adapted ../lib/cp/lexical.c:prompt() for GNU Readline -- Andrew Veliath */ -+static char * -+prompt() -+{ -+ static char pbuf[128]; -+ int n = sizeof(pbuf); -+ 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 && (n > 1)) { -+ int w; -+ switch (strip(*s)) { -+ case '!': -+ w = snprintf(p, n, "%d", where_history() + 1); -+ w = (w >= n) ? n - 1 : w; -+ p += w; -+ n -= w; -+ break; -+ case '\\': -+ if (*(s + 1)) ++s; -+ default: -+ *p = strip(*s); ++p; -+ --n; -+ 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 */ -+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); -+ else if (line == NULL) cp_evloop("quit"); -+ } -+ /* History gets written in ../fte/misccoms.c com_quit */ -+} -+#endif /* HAS_GNUREADLINE */ -+ - char *hlp_filelist[] = { "spice", "cider", 0 }; - - void -@@ -216,6 +322,10 @@ - - #endif - +#ifdef __FreeBSD__ + fpsetmask(fpgetmask() & ~FP_X_INV & ~FP_X_DZ & ~FP_X_OFL); -+#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"); -@@ -236,6 +346,13 @@ - ARCHsize = 1; - #endif /* PARALLEL_ARCH */ - -+#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 -@@ -472,7 +589,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); -@@ -668,7 +789,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 */ -@@ -708,7 +833,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 + /* MFB tends to jump to 0 on errors. This tends to catch it. */