home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga MA Magazine 1998 #6
/
amigamamagazinepolishissue1998.iso
/
datatypes
/
macpict2-dtc
/
desc_macpict2.c
next >
Wrap
C/C++ Source or Header
|
1980-01-02
|
2KB
|
67 lines
;/*
SC resopt desc_MacPICT2.c nodebug opt optsize link nostrt nostkext nostkchk
quit
*/
/* Execute this file to compile with SAS C
* Ex. "1.Ram:>execute desc_MacPICT2.c"
*
* Otherwise it must be compiled with no stack checking.
* It must not be linked with any startup code so that DTHook is
* the entry point for the executable.
*
*/
#include <exec/types.h>
#include <exec/memory.h>
#include <dos/dos.h>
#include <dos/dosextens.h>
#include <datatypes/datatypes.h>
#include <datatypes/pictureclass.h>
#include <clib/exec_protos.h>
#include <clib/dos_protos.h>
#include <clib/utility_protos.h>
#include <pragmas/exec_pragmas.h>
#include <pragmas/dos_pragmas.h>
#include <pragmas/utility_pragmas.h>
#define SysBase dthc->dthc_SysBase
#define DOSBase dthc->dthc_DOSBase
#define UtilityBase dthc->dthc_UtilityBase
#define HEADER_SIZE 0x200
#define PICT_picVersion 0x0011
#define PICT_MacPICT2 0x02ff
#define BUFSIZE 0x80
#define MAXCHECK 0x3e /* BUFSIZE/2 - 2 */
BOOL __asm DTHook (register __a0 struct DTHookContext * dthc)
{
BOOL retval = FALSE;
ULONG n;
UWORD *buffer;
BPTR fh;
/* Make sure we have a filehandle */
if (fh = dthc->dthc_FileHandle) {
/* Allocate a buffer */
if(buffer = AllocVec(BUFSIZE, MEMF_PUBLIC)) {
Seek(fh, HEADER_SIZE, OFFSET_BEGINNING);
if(Read(fh, buffer, BUFSIZE) == BUFSIZE) {
n = 5;
while((n < MAXCHECK) && (buffer[n]==0)) n++;
if((buffer[n]==PICT_picVersion) && (buffer[n+1]==PICT_MacPICT2))
retval = TRUE;
}
/* Do not steal memory */
FreeVec(buffer);
}
}
return retval;
}