|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T i
Length: 2044 (0x7fc)
Types: TextFile
Names: »interrupts.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
└─⟦this⟧ »EUUGD18/General/Cent/interrupts.c«
#include "cent.h"
endgame()
{
signal(SIGINT,SIG_IGN);
mvaddstr(22,60,"[Press return");
mvaddstr(23,60," to continue]");
refresh();
nocrmode();
nl();
while (getchar() != '\n');
echo();
endwin();
printf("\n\n");
doscores();
exit(0);
}
catchint()
{
signal(SIGINT,SIG_IGN);
signal(SIGTSTP,SIG_IGN);
inter = 1;
}
catchstop()
{
signal(SIGTSTP,SIG_IGN);
signal(SIGINT,SIG_IGN);
stopped = 1;
}
stopawhile()
{
struct sgttyb curseterm;
move(23,0);
refresh();
putchar('\n');
fflush(stdout);
ioctl(0,TIOCGETP,&curseterm);
ioctl(0,TIOCSETP,&origterm);
signal(SIGTSTP,SIG_DFL);
kill(getpid(),SIGTSTP);
signal(SIGTSTP,SIG_IGN);
stopped = 0;
ioctl(0,TIOCSETP,&curseterm);
redrawscr();
ioctl(0,TIOCSETP,&curseterm); /* Just to make sure... */
waitboard();
signal(SIGTSTP,catchstop);
signal(SIGINT,catchint);
}
quit()
{
char ch;
signal(SIGQUIT,SIG_IGN);
mvaddstr(12,60,"Really quit?");
refresh();
ch = getchar();
move(12,60);
clrtoeol();
refresh();
if (ch == 'y' || ch == 'Y')
endgame();
inter = 0;
signal(SIGINT,catchint);
signal(SIGTSTP,catchstop);
signal(SIGQUIT,quit);
}
waitboard()
{
char ch;
signal(SIGTSTP,SIG_IGN);
signal(SIGINT,SIG_IGN);
mvaddstr(12,60,"Press return");
mvaddstr(13,60,"when ready");
refresh();
while ((ch = getchar()) != '\r')
{
#ifdef WIZARD
if (ch == '\020')
setname();
else if (ch == '\014')
#else
if (ch == '\014')
#endif
redrawscr();
else if (ch == 's' || ch == 'S')
savegame();
}
move(12,60);
clrtoeol();
move(13,60);
clrtoeol();
move(15,60);
clrtoeol();
signal(SIGINT,catchint);
signal(SIGTSTP,catchstop);
}
catchalarm()
{
gameover = 1;
}
ladie()
{
mvaddstr(10,60,"Your game is over");
mvaddstr(11,60,"due to the load av.");
endgame();
}
redrawscr()
{
curscr->_clear = 1;
touchwin(stdscr);
refresh();
}