diff options
Diffstat (limited to 'contrib/libf2c/libF77/s_paus.c')
-rw-r--r-- | contrib/libf2c/libF77/s_paus.c | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/contrib/libf2c/libF77/s_paus.c b/contrib/libf2c/libF77/s_paus.c new file mode 100644 index 0000000..7969136 --- /dev/null +++ b/contrib/libf2c/libF77/s_paus.c @@ -0,0 +1,71 @@ +#include <stdio.h> +#include "f2c.h" +#define PAUSESIG 15 + +#include "signal1.h" +#undef abs +#undef min +#undef max +#include <stdlib.h> +extern int getpid (void), isatty (int), pause (void); + +extern void f_exit (void); + +static void +waitpause (Sigarg) +{ + Use_Sigarg; + return; +} + +static void +s_1paus (FILE * fin) +{ + fprintf (stderr, + "To resume execution, type go. Other input will terminate the job.\n"); + fflush (stderr); + if (getc (fin) != 'g' || getc (fin) != 'o' || getc (fin) != '\n') + { + fprintf (stderr, "STOP\n"); +#ifdef NO_ONEXIT + f_exit (); +#endif + exit (0); + } +} + +int +s_paus (char *s, ftnlen n) +{ + fprintf (stderr, "PAUSE "); + if (n > 0) + fprintf (stderr, " %.*s", (int) n, s); + fprintf (stderr, " statement executed\n"); + if (isatty (fileno (stdin))) + s_1paus (stdin); + else + { +#if (defined (MSDOS) && !defined (GO32)) || defined (_WIN32) + FILE *fin; + fin = fopen ("con", "r"); + if (!fin) + { + fprintf (stderr, "s_paus: can't open con!\n"); + fflush (stderr); + exit (1); + } + s_1paus (fin); + fclose (fin); +#else + fprintf (stderr, + "To resume execution, execute a kill -%d %d command\n", + PAUSESIG, getpid ()); + signal1 (PAUSESIG, waitpause); + fflush (stderr); + pause (); +#endif + } + fprintf (stderr, "Execution resumes after PAUSE.\n"); + fflush (stderr); + return 0; /* NOT REACHED */ +} |