#include <signal.h>
#include "header.h"
static char copyright[]="Larn is copyrighted 1986 by Noah Morgan.\n";
#define BIT(a) (1<<((a)-1))
extern char savefilename[],wizard,predostuff,nosignal;
static s2choose()	/* text to be displayed if ^C during intro screen */
	{
	cursor(1,24); lprcat("Press "); setbold(); lprcat("return"); resetbold();
	lprcat(" to continue: ");   lflush(); 
	}

static cntlc()	/* what to do for a ^C */
	{
	if (nosignal) return;	/* dont do anything if inhibbited */
	signal(SIGQUIT,SIG_IGN);	signal(SIGINT,SIG_IGN);
	quit(); if (predostuff==1) s2choose(); else showplayer();
	lflush();
	signal(SIGQUIT,cntlc);	signal(SIGINT,cntlc);
	}

/*
 *	subroutine to save the game if a hangup signal
 */
static sgam()
	{
	savegame(savefilename);  wizard=1;  died(-257); /* hangup signal */
	}

#ifdef SIGTSTP
static tstop() /* control Y	*/
	{
	if (nosignal)   return;  /* nothing if inhibbited */
	lcreat(0);  clearvt100();	lflush();	  signal(SIGTSTP,SIG_DFL);
#ifdef SIGVTALRM
	/* looks like BSD4.2 or higher - must clr mask for signal to take effect*/
	sigsetmask(sigblock(0)& ~BIT(SIGTSTP));
#endif
	kill(getpid(),SIGTSTP);

	setupvt100();  signal(SIGTSTP,tstop);
	if (predostuff==1) s2choose(); else drawscreen();
	showplayer();	lflush();
	}
#endif SIGTSTP
/*
	subroutine to issue the needed signal traps  called from main()
 */
sigsetup()
	{
	signal(SIGQUIT,cntlc); 		signal(SIGINT,cntlc); 
	signal(SIGKILL,SIG_IGN);
#ifdef SIGTSTP
	signal(SIGTSTP,tstop);		signal(SIGSTOP,tstop);
#endif SIGTSTP
	signal(SIGTERM,SIG_IGN);	signal(SIGHUP,sgam);
	}
