From 86b6c6a9c55398b789167ca323cabffdd9b9b1b0 Mon Sep 17 00:00:00 2001 From: Chuck Robey Date: Mon, 8 Mar 1999 18:40:17 +0000 Subject: Fix floating point problem and flatten out multi-file patch. PR: 10481 Submitted by: Kouichi Hirabayashi --- cad/spice/files/patch-ad | 191 +++++++++++++++++++++++++++++++++++++++++++++++ cad/spice/files/patch-ae | 82 ++++++++++++++++++++ cad/spice/files/patch-af | 37 +++++++++ cad/spice/files/patch-ag | 24 ++++++ cad/spice/files/patch-ah | 21 ++++++ cad/spice/files/patch-ai | 20 +++++ 6 files changed, 375 insertions(+) create mode 100644 cad/spice/files/patch-ad create mode 100644 cad/spice/files/patch-ae create mode 100644 cad/spice/files/patch-af create mode 100644 cad/spice/files/patch-ag create mode 100644 cad/spice/files/patch-ah create mode 100644 cad/spice/files/patch-ai (limited to 'cad') diff --git a/cad/spice/files/patch-ad b/cad/spice/files/patch-ad new file mode 100644 index 000000000000..4e0d9369e1dd --- /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 + #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 @@ + #endif + + #include "patchlev.h" ++ ++#ifdef __FreeBSD__ ++#include ++#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 */ ++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 */ ++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 000000000000..edef5cc3890c --- /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 */ ++ #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 --git a/cad/spice/files/patch-af b/cad/spice/files/patch-af new file mode 100644 index 000000000000..de9afa6d9613 --- /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 ++ #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 --git a/cad/spice/files/patch-ag b/cad/spice/files/patch-ag new file mode 100644 index 000000000000..a7dcec3bb76b --- /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 000000000000..8a743e3cdb66 --- /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 000000000000..a462128cf45e --- /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); -- cgit v1.2.3