home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga MA Magazine 1998 #6
/
amigamamagazinepolishissue1998.iso
/
coders
/
f2c
/
f77lib
/
s_paus.c~
< prev
next >
Wrap
Text File
|
2000-05-21
|
4KB
|
146 lines
#ifdef _AMIGA
#include <string.h>
#include <signal.h>
#include <stdlib.h>
#include <exec/types.h>
#include <intuition/intuition.h>
#include <libraries/dosextens.h>
#include <proto/exec.h>
#include <proto/dos.h>
#include <proto/intuition.h>
#include "f2c.h"
#else /* AMIGA */
#include "stdio.h"
#include "f2c.h"
#define PAUSESIG 15
#endif /* AMIGA */
#ifndef _AMIGA
#ifdef KR_headers
#define Void /* void */
#define Int /* int */
#else
#define Void void
#define Int int
#undef abs
#include "stdlib.h"
#include "signal.h"
extern int getpid(void), isatty(int), pause(void);
#endif
#else /* AMIGA */
#define Void void
#define Int int
#endif /* AMIGA */
#ifdef __cplusplus
extern "C" void f_exit(void);
#else
extern VOID f_exit(Void);
#endif
static VOID waitpause(Int n)
{
return;
}
#ifdef KR_headers
VOID s_paus(s, n) char *s; ftnlen n;
#else
void s_paus(char *s, ftnlen n)
#endif
{
#ifdef _AMIGA
static struct IntuiText Text2 = {
-1, -1, /* pen numbers */
0, /* draw mode */
14, 14, /* starting offsets */
NULL, /* text attribute pointer */
"Pause statement executed",
NULL
};
static struct IntuiText BodyText = {
-1, -1, /* pen numbers */
0, /* draw mode */
4, 4, /* starting offsets */
NULL, /* text attribute pointer */
NULL,
&Text2
};
static struct IntuiText ContinueText = {
-1, -1, /* pen numbers */
0, /* draw mode */
4, 4, /* starting offsets */
NULL, /* text attribute pointer */
"CONTINUE",
NULL
};
static struct IntuiText AbortText = {
-1, -1, /* pen numbers */
0, /* draw mode */
4, 4, /* starting offsets */
NULL, /* text attribute pointer */
"ABORT",
NULL
};
char temp[81];
struct IntuitionBase *IntuitionBase;
if (n > 79)
n = 79;
memcpy(temp, s, n);
temp[n+1] = '\0';
IntuitionBase = (struct IntuitionBase *)
OpenLibrary("intuition.library",0);
if (IntuitionBase == NULL) {
f_exit();
exit(0);
}
BodyText.IText = temp;
if (AutoRequest(NULL, &BodyText, &ContinueText, &AbortText,
0L, 0L, 250L, 60L) != TRUE) {
CloseLibrary(IntuitionBase);
f_exit();
exit(0);
} else {
CloseLibrary(IntuitionBase);
return;
}
#else /* AMIGA */
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");
#endif /* AMIGA */
}