aboutsummaryrefslogtreecommitdiffstats
path: root/cad/spice
diff options
context:
space:
mode:
Diffstat (limited to 'cad/spice')
-rw-r--r--cad/spice/files/patch-ad191
-rw-r--r--cad/spice/files/patch-ae82
-rw-r--r--cad/spice/files/patch-af37
-rw-r--r--cad/spice/files/patch-ag24
-rw-r--r--cad/spice/files/patch-ah21
-rw-r--r--cad/spice/files/patch-ai20
6 files changed, 375 insertions, 0 deletions
diff --git a/cad/spice/files/patch-ad b/cad/spice/files/patch-ad
new file mode 100644
index 00000000000..4e0d9369e1d
--- /dev/null
+++ b/cad/spice/files/patch-ad
@@ -0,0 +1,191 @@
+--- 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/files/patch-ae b/cad/spice/files/patch-ae
new file mode 100644
index 00000000000..edef5cc3890
--- /dev/null
+++ b/cad/spice/files/patch-ae
@@ -0,0 +1,82 @@
+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/files/patch-af b/cad/spice/files/patch-af
new file mode 100644
index 00000000000..de9afa6d961
--- /dev/null
+++ b/cad/spice/files/patch-af
@@ -0,0 +1,37 @@
+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/files/patch-ag b/cad/spice/files/patch-ag
new file mode 100644
index 00000000000..a7dcec3bb76
--- /dev/null
+++ b/cad/spice/files/patch-ag
@@ -0,0 +1,24 @@
+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/files/patch-ah b/cad/spice/files/patch-ah
new file mode 100644
index 00000000000..8a743e3cdb6
--- /dev/null
+++ b/cad/spice/files/patch-ah
@@ -0,0 +1,21 @@
+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/files/patch-ai b/cad/spice/files/patch-ai
new file mode 100644
index 00000000000..a462128cf45
--- /dev/null
+++ b/cad/spice/files/patch-ai
@@ -0,0 +1,20 @@
+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);