[comp.sys.atari.st] C help - Critical replacement

cs325ec@ux1.cso.uiuc.edu (03/12/90)

	woops... I took out eval which took (long (*addr)())
	as a param.

	-Greg

cs325ec@ux1.cso.uiuc.edu (03/12/90)

	I am trying to set a function name to an absolute value in
	Turbo C:

	Could someone just drop a note on how to call olderrh (the
	old critical error handler) if I do not want to service the
	call?

	Thanks in advance

			-- Greg


	I have tried this and more:

#include <stdio.h>
#include <tos.h>

#define drivebits 0x0030

void *olderrh;

/****************************
	Critical Error Handler
****************************/
long criterr(int err, int drive)
	{
	if (drive & drivebits)
		return(1L);
	else
		return(eval(olderrh));
	}

/****************************
	Replace Error Handler
****************************/
void replerr(void)
	{
	olderrh = (void *)(*(long *)0x404L);
	*(long *)0x404L = (long)criterr;
	}

void main(void)
	{
	Supexec(replerr);
	Ptermres(0x400L,0);
	}