89 lines
1.5 KiB
C
89 lines
1.5 KiB
C
|
#include "stdio.h"
|
||
|
#include "f2c.h"
|
||
|
#define PAUSESIG 15
|
||
|
|
||
|
#ifdef KR_headers
|
||
|
#define Void /* void */
|
||
|
#define Int /* int */
|
||
|
#else
|
||
|
#define Void void
|
||
|
#define Int int
|
||
|
#undef abs
|
||
|
#undef min
|
||
|
#undef max
|
||
|
#include "stdlib.h"
|
||
|
#include "signal.h"
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
extern int getpid(void), isatty(int), pause(void);
|
||
|
#endif
|
||
|
|
||
|
extern VOID f_exit(Void);
|
||
|
|
||
|
static VOID
|
||
|
waitpause(Int n)
|
||
|
{ n = n; /* shut up compiler warning */
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
static VOID
|
||
|
#ifdef KR_headers
|
||
|
s_1paus(fin) FILE *fin;
|
||
|
#else
|
||
|
s_1paus(FILE *fin)
|
||
|
#endif
|
||
|
{
|
||
|
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
|
||
|
#ifdef KR_headers
|
||
|
s_paus(s, n) char *s; ftnlen n;
|
||
|
#else
|
||
|
s_paus(char *s, ftnlen n)
|
||
|
#endif
|
||
|
{
|
||
|
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 {
|
||
|
#ifdef MSDOS
|
||
|
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() );
|
||
|
signal(PAUSESIG, waitpause);
|
||
|
fflush(stderr);
|
||
|
pause();
|
||
|
#endif
|
||
|
}
|
||
|
fprintf(stderr, "Execution resumes after PAUSE.\n");
|
||
|
fflush(stderr);
|
||
|
return 0; /* NOT REACHED */
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
}
|