System V IPC code from Danny Boulet, chewed on a bit by the NetBSD group
[unix-history] / lib / libF77 / s_paus.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
#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)
{
return;
}
#ifdef KR_headers
int s_paus(s, n) char *s; ftnlen n;
#else
int s_paus(char *s, ftnlen n)
#endif
{
int i;
fprintf(stderr, "PAUSE ");
if(n > 0)
for(i = 0; i<n ; ++i)
putc(*s++, stderr);
fprintf(stderr, " statement executed\n");
if( isatty(fileno(stdin)) )
{
fprintf(stderr, "To resume execution, type go. Any other input will terminate job.\n");
fflush(stderr);
if( getchar()!='g' || getchar()!='o' || getchar()!='\n' )
{
fprintf(stderr, "STOP\n");
f_exit();
exit(0);
}
}
else
{
fprintf(stderr, "To resume execution, execute a kill -%d %d command\n",
PAUSESIG, getpid() );
signal(PAUSESIG, waitpause);
fflush(stderr);
pause();
}
fprintf(stderr, "Execution resumes after PAUSE.\n");
#ifdef __cplusplus
return 0; /* NOT REACHED */
}
#endif
}