home *** CD-ROM | disk | FTP | other *** search
- /* 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, ®s, ®s);
- }
-
- _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, ®s, ®s);
- }
-