
/* fshook.c */

#include "kernel.h"
#include "swis.h"
#include "debug.h"
#include <stdlib.h>

#include "fshook.h"

extern void *wsp;

extern void RealFileHook(void);

_kernel_oserror *FileHook(_kernel_swi_regs * r)
{
	TRACE("OS_File %d, \"%s\"\n", r->r[0], (const char *) r->r[1]);

	return NULL;
}

static void RemoveFSHook(void)
{
	_kernel_swi_regs regs;

	regs.r[0] = (int) 8;
	regs.r[1] = (int) RealFileHook;
	regs.r[2] = (int) wsp;

	(void) _kernel_swi(OS_Release, &regs, &regs);
}

_kernel_oserror *InstallFSHook()
{
	_kernel_swi_regs regs;

	atexit(RemoveFSHook);

	regs.r[0] = (int) 8;
	regs.r[1] = (int) RealFileHook;
	regs.r[2] = (int) wsp;

	return _kernel_swi(OS_Claim, &regs, &regs);
}
