1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-18 17:10:05 +02:00
2015-04-07 22:10:17 -05:00

82 lines
3.2 KiB
C

// Routines that deal with some mac file system stuff -EAD
#include <Files.h>
#include <TextUtils.h>
#include <string.h>
//#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);
}