// Routines that deal with some mac file system stuff -EAD #include #include #include //#include "MiscellaneousUtilities.h" //========================================================================= // Function prototypes //========================================================================= void set_mac_file_type(char *filename); void GetFullPath(FSSpec *theSpec, StringPtr theName); void PathNameFromDirID(long dirID, short vRefNum, StringPtr fullPathName); //========================================================================= // Set the output soundfile type and creator //========================================================================= void set_mac_file_type(char *filename) { Str255 fName; FSSpec fSpec; FInfo fFInfo; fFInfo.fdType = 'AIFF'; fFInfo.fdCreator = 'Sd2a'; BlockMoveData(filename, &fName[1], 256); fName[0] = strlen(filename); FSMakeFSSpec(0, 0, fName, &fSpec); FSpSetFInfo(&fSpec, &fFInfo); } //================================================================================================================================== // void GetFullPath(FSSpec *theSpec, StringPtr theName) //================================================================================================================================== // Extracts the full pathname for the file pointed to by theSpec and returns it in theName. //================================================================================================================================== void GetFullPath(FSSpec *theSpec, StringPtr theName) { *theName = 0; if (theSpec->parID != 1) PathNameFromDirID(theSpec->parID, theSpec->vRefNum, theName); // was: pstrcat(theName, theSpec->name); strcat(P2CStr(theName), P2CStr(theSpec->name)); C2PStr((char *) theName); C2PStr((char *) theSpec->name); //pstrcat(theName, "\p:"); theName[*theName + 1] = 0; } //================================================================================================================================== // void PathNameFromDirID(long dirID, short vRefNum, StringPtr fullPathName) //================================================================================================================================== // Given a vRefNum and a directory ID, creates a full path specification. //================================================================================================================================== void PathNameFromDirID(long dirID, short vRefNum, StringPtr fullPathName) { Str255 directoryName; DirInfo block; OSErr err; fullPathName[0] = 0; block.ioDrDirID = block.ioDrParID = dirID; block.ioNamePtr = directoryName; do { block.ioVRefNum = vRefNum; block.ioFDirIndex = -1; block.ioDrDirID = block.ioDrParID; err = PBGetCatInfo((CInfoPBPtr)&block, false); //pstrcat(directoryName, (StringPtr)"\p:"); //pstrinsert(fullPathName, directoryName); strcat(P2CStr(directoryName), ":"); strcat((char *) directoryName, (char *) fullPathName); strcpy((char *)fullPathName, (char *) directoryName); } while (block.ioDrDirID != 2); C2PStr((char *) fullPathName); }