OSErr PPIdentifyFile( MADLibrary *inMADDriver, char *type, char *AlienFile) { UNFILE refNum; short i; PPInfoRec InfoRec; OSErr iErr = noErr; strcpy( type, "!!!!"); // Check if we have access to this file refNum = iFileOpen( AlienFile); if( !refNum) return -1; else { if( iGetEOF( refNum) < 100) iErr = -36; iClose( refNum); if( iErr) return iErr; } // Is it a MAD file? iErr = CheckMADFile( AlienFile); if( iErr == noErr) { strcpy( type, "MADK"); return noErr; } for( i = 0; i < inMADDriver->TotalPlug; i++) { if( CallImportPlug( inMADDriver, i, 'TEST', AlienFile, NULL, &InfoRec) == noErr) { strcpy( type, inMADDriver->ThePlug[ i].type); return noErr; } } strcpy( type, "!!!!"); return MADCannotFindPlug; }
MADErr PPIdentifyFile(MADLibrary *inMADDriver, char *type, char *AlienFile) { UNFILE refNum; int i; MADInfoRec InfoRec; MADErr iErr = MADNoErr; strcpy(type, "!!!!"); // Check if we have access to this file refNum = iFileOpenRead(AlienFile); if (!refNum) return MADReadingErr; else { if (iGetEOF(refNum) < 100) iErr = MADIncompatibleFile; iClose(refNum); if (iErr) return iErr; } // Is it a MAD file? iErr = CheckMADFile(AlienFile); if (iErr == MADNoErr) { strcpy(type, "MADK"); return MADNoErr; } for (i = 0; i < inMADDriver->TotalPlug; i++) { if (CallImportPlug(inMADDriver, i, MADPlugTest, AlienFile, NULL, &InfoRec) == MADNoErr) { strcpy(type, inMADDriver->ThePlug[i].type); return MADNoErr; } } strcpy(type, "!!!!"); return MADCannotFindPlug; }
MADErr PPMADInfoFile(const char *AlienFile, MADInfoRec *InfoRec) { MADSpec *theMAD; long fileSize; UNFILE fileID; MADErr MADCheck; if ((MADCheck = CheckMADFile(AlienFile)) != MADNoErr) { return MADCheck; } theMAD = (MADSpec*)malloc(sizeof(MADSpec) + 200); fileID = iFileOpenRead(AlienFile); if (!fileID) { free(theMAD); return MADReadingErr; } fileSize = iGetEOF(fileID); iRead(sizeof(MADSpec), theMAD, fileID); iClose(fileID); strcpy(InfoRec->internalFileName, theMAD->name); InfoRec->totalPatterns = theMAD->numPat; InfoRec->partitionLength = theMAD->numPointers; InfoRec->totalTracks = theMAD->numChn; InfoRec->signature = 'MADK'; strcpy(InfoRec->formatDescription, "MADK"); InfoRec->totalInstruments = theMAD->numInstru; InfoRec->fileSize = fileSize; free(theMAD); theMAD = NULL; return MADNoErr; }