home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 8
/
FreshFishVol8-CD2.bin
/
bbs
/
util
/
macsnd_dt-1.7.lha
/
MacSND_dt
/
Source
/
dtc_function.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-09-03
|
2KB
|
75 lines
/*
** MacSND DataType
**
** Written by Olaf `Olsen' Barthel <olsen@sourcery.han.de>
** Public domain
**
** :ts=4
*/
#include "Global.h"
// We want to use the hook data
#undef SysBase
#define SysBase Hook -> dthc_SysBase
#undef DOSBase
#define DOSBase Hook -> dthc_DOSBase
/* DTHook(register __a0 struct DTHookContext *Hook):
*
* Examine a file and return if we know its format.
*/
BOOL __asm __saveds
DTHook(register __a0 struct DTHookContext *Hook)
{
// Did we get everything we needed?
if(Hook -> dthc_Lock && Hook -> dthc_FIB && Hook -> dthc_FileHandle)
{
// Examine the file
if(Examine(Hook -> dthc_Lock,Hook -> dthc_FIB))
{
// Is this really a file?
if(Hook -> dthc_FIB -> fib_DirEntryType < 0)
{
// Seek back to the beginning
if(Seek(Hook -> dthc_FileHandle,0,OFFSET_BEGINNING) != -1)
{
struct SoundDataHeader Header;
LONG Error;
// Try to read the MacBinary header
if(ReadMacBinaryHeader(Hook -> dthc_FileHandle,&Error,(struct ExecBase *)SysBase,(struct DosLibrary *)DOSBase))
{
// Look for a "snd " resource
if(ScanResource(Hook -> dthc_FileHandle,&Header,&Error,(struct ExecBase *)SysBase,(struct DosLibrary *)DOSBase))
return(TRUE);
}
// Seek back to the beginning
if(Seek(Hook -> dthc_FileHandle,0,OFFSET_BEGINNING) != -1)
{
// Look for a "snd " resource
if(ScanResource(Hook -> dthc_FileHandle,&Header,&Error,(struct ExecBase *)SysBase,(struct DosLibrary *)DOSBase))
return(TRUE);
}
}
}
}
}
// No success
return(FALSE);
}