DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T s

⟦418e1eb6d⟧ TextFile

    Length: 1384 (0x568)
    Types: TextFile
    Names: »signals.c«

Derivation

└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
    └─ ⟦this⟧ »EUUGD11/euug-87hel/sec1/elm/src/signals.c« 

TextFile

/**			signals.c		**/

/** This set of routines traps various signals and informs the
    user of the error, leaving the program in a nice, graceful
    manner.

	(C) Copyright 1986 Dave Taylor
**/

#include "headers.h"
#include <signal.h>

extern int pipe_abort;		/* set to TRUE if receive SIGPIPE */

quit_signal()
{
	dprint0(2,"\n\n** Received SIGQUIT **\n\n\n\n");
	leave();
}

term_signal() 
{
	dprint0(2,"\n\n** Received SIGTERM **\n\n\n\n");
	leave();
}

ill_signal()
{
	dprint0(1,"\n\n** Received SIGILL **\n\n\n\n");
	PutLine0(LINES, 0, "\n\nIllegal Instruction signal!\n\n");
	emergency_exit();
}

fpe_signal()  
{
	dprint0(1,"\n\n** Received SIGFPE **\n\n\n\n");
	PutLine0(LINES, 0,"\n\nFloating Point Exception signal!\n\n");
	emergency_exit();
}

bus_signal()
{
	dprint0(1,"\n\n** Received SIGBUS **\n\n\n\n");
	PutLine0(LINES, 0,"\n\nBus Error signal!\n\n");
	emergency_exit();
}

segv_signal()
{
	dprint0(1,"\n\n** Received SIGSEGV **\n\n\n\n");
	PutLine0(LINES, 0,"\n\nSegment Violation signal!\n\n");
	emergency_exit();
}

alarm_signal()
{	
	/** silently process alarm signal for timeouts... **/

	int alarm_signal();

	signal(SIGALRM, alarm_signal);
}

pipe_signal()
{
	/** silently process pipe signal... **/

	int pipe_signal();

	dprint0(2,"*** received SIGPIPE ***\n\n");
	
	pipe_abort = TRUE;	/* internal signal ... wheeee!  */

	signal(SIGPIPE, pipe_signal);
}