home *** CD-ROM | disk | FTP | other *** search
-
- /* SP_InfoSubs.c
- - Functions for SPO-Support -
- (c) 1994 by Andreas R. Kleinert
- Last changes : 27.03.1994
- */
-
- #include "spobject.h"
-
-
- /* PUBLIC functions (high level) */
-
- ULONG __saveds __asm SPO_FileInfoRequest( register __a1 struct SPObjectHandle *SPObjectHandle_a1, register __a2 struct Window *window, register __a3 ULONG future);
- ULONG __saveds __asm SPO_CheckFileType(register __a1 BPTR handle, register __a2 UBYTE *filename, register __a3 APTR future);
-
-
- /* *************************************************** */
- /* * * */
- /* * SPO_FileInfoRequest : Display File Information * */
- /* * * */
- /* *************************************************** */
-
- ULONG __saveds __asm SPO_FileInfoRequest( register __a1 struct SPObjectHandle *SPObjectHandle_a1, register __a2 struct Window *window, register __a3 ULONG future)
- {
- struct SPObjectHandle *SPObjectHandle = SPObjectHandle_a1;
-
- ULONG retval = SPERR_NO_ERROR;
- char buffer [1024], hbuf[80];
- ULONG idcmp = N, noinfo = TRUE;
- struct EasyStruct *estr;
- struct Window *disp_win = window;
-
- if(!SPObjectHandle) return(SPERR_NO_HANDLE);
-
- buffer[0] = (char) 0;
-
- if(SPObjectHandle->ah_SPOHeader)
- {
- noinfo = FALSE;
-
- strcat(buffer, "\n File Information"
- "\n\n File Type : SPO Sample");
-
- strcat(buffer, "\n");
-
- sprintf(hbuf, "\n Length : %ld Bytes", (ULONG) SPObjectHandle->ah_SPOHeader->spo_SampleLength);
- strcat(buffer, hbuf);
-
- sprintf(hbuf, "\n Frequency : %ld Hz", (ULONG) SPObjectHandle->ah_SPOHeader->spo_Frequency);
- strcat(buffer, hbuf);
-
- strcat(buffer, "\n");
-
- }else retval = SPERR_NO_HANDLE;
-
- if(!retval)
- {
- if(noinfo)
- {
- strcat(buffer, "\n File Information"
- "\n\n No information available\n");
- }
-
- estr = AllocVec(sizeof(struct EasyStruct), MEMF_CLEAR);
- if(estr)
- {
- estr->es_StructSize = sizeof(struct EasyStruct);
- estr->es_Flags = N;
- estr->es_Title = "SuperPlay InfoRequester";
- estr->es_TextFormat = buffer;
- estr->es_GadgetFormat = "Confirm";
-
- if(!disp_win) disp_win = SPObjectHandle->ah_ReqIOWindow;
-
- EasyRequestArgs(disp_win, estr, &idcmp, N);
- FreeVec(estr);
- }
- }
-
- return(retval);
- }
-
- /* *************************************************** */
- /* * * */
- /* * SPLI_CheckFileType : ... * */
- /* * * */
- /* *************************************************** */
-
- ULONG __saveds __asm SPO_CheckFileType(register __a1 BPTR handle_a1, register __a2 UBYTE *filename, register __a3 APTR future)
- {
- BPTR handle = handle_a1;
- BPTR handle2;
- ULONG retval = FALSE;
- UBYTE SPO_id[256];
- char spo_name [256];
-
- Seek(handle, N, OFFSET_BEGINNING);
- Read(handle, &SPO_id[0], 256);
- Seek(handle, N, OFFSET_BEGINNING);
-
- if(!strncmp(SPO_id, SPO_ID, strlen(SPO_ID))) retval = TRUE;
-
- if(!retval && filename)
- {
- strcpy(spo_name, filename);
- strcat(spo_name, ".spo");
-
- handle2 = Open(spo_name, MODE_OLDFILE);
- if(handle2)
- {
- Read(handle2, &SPO_id[0], 256);
-
- if(!strncmp(SPO_id, SPO_ID, strlen(SPO_ID))) retval = TRUE;
-
- Close(handle2);
- }
- }
-
- return(retval);
- }
-
- extern void Fmt(void); /* Assembler-Routine for RawDoFmt */
-
- void __saveds __stdargs SPLI_SPrintf(APTR buffer, char *formatstring, ...)
- {
- RawDoFmt((APTR) formatstring, (APTR) (((ULONG *)&formatstring)+1), (APTR) &Fmt, (APTR) buffer);
- }
-