Change directory creation API call for MacOS.

This commit is contained in:
2021-03-14 04:55:42 +00:00
parent 88161c7a0d
commit 5c109c184b
10 changed files with 127 additions and 18 deletions

View File

@@ -63,7 +63,8 @@ void FileAttributes(const char* path)
FInfo finderInfo;
int32_t count;
HFileInfo* fpb;
CInfoPBRec cipbr;
CInfoPBRec cipbr;
HParamBlockRec dirPB;
snprintf((char*)str255, 255, "%s", path);
hpb.ioNamePtr = str255;
@@ -77,13 +78,23 @@ void FileAttributes(const char* path)
}
refNum = hpb.ioVRefNum;
rc = DirCreate(refNum, fsRtDirID, (unsigned char*)"\pATTRS", &dirId);
memset(&dirPB, 0, sizeof(HParamBlockRec));
dirPB.fileParam.ioCompletion = 0; // Nothing, sync
dirPB.fileParam.ioVRefNum = refNum; // Volume specification
dirPB.fileParam.ioNamePtr = (StringPtr) "\pATTRS"; // Directory name to create
dirPB.fileParam.ioDirID = 0; // ID of parent directory, 0 for root of volume
rc = PBDirCreate(&dirPB, 0);
if(rc)
{
printf("Error %d creating working directory.\n", rc);
return;
}
dirId = dirPB.fileParam.ioDirID;
printf("Creating attribute files.\n");
memset(&finderInfo, 0, sizeof(FInfo));

View File

@@ -62,7 +62,8 @@ void DeleteFiles(const char* path)
FInfo finderInfo;
int32_t count;
char filename[9];
int pos = 0;
int pos = 0;
HParamBlockRec dirPB;
snprintf((char*)str255, 255, "%s", path);
hpb.ioNamePtr = str255;
@@ -76,13 +77,23 @@ void DeleteFiles(const char* path)
}
refNum = hpb.ioVRefNum;
rc = DirCreate(refNum, fsRtDirID, (unsigned char*)"\pDELETED", &dirId);
memset(&dirPB, 0, sizeof(HParamBlockRec));
dirPB.fileParam.ioCompletion = 0; // Nothing, sync
dirPB.fileParam.ioVRefNum = refNum; // Volume specification
dirPB.fileParam.ioNamePtr = (StringPtr) "\pDELETED"; // Directory name to create
dirPB.fileParam.ioDirID = 0; // ID of parent directory, 0 for root of volume
rc = PBDirCreate(&dirPB, 0);
if(rc)
{
printf("Error %d creating working directory.\n", rc);
return;
}
dirId = dirPB.fileParam.ioDirID;
printf("Creating and deleting files.\n");
for(pos = 0; pos < 64; pos++)

View File

@@ -62,7 +62,8 @@ void DirectoryDepth(const char* path)
FInfo finderInfo;
int32_t count;
char filename[9];
int pos = 0;
int pos = 0;
HParamBlockRec dirPB;
snprintf((char*)str255, 255, "%s", path);
hpb.ioNamePtr = str255;
@@ -76,13 +77,23 @@ void DirectoryDepth(const char* path)
}
refNum = hpb.ioVRefNum;
rc = DirCreate(refNum, fsRtDirID, (unsigned char*)"\pDEPTH", &dirId);
memset(&dirPB, 0, sizeof(HParamBlockRec));
dirPB.fileParam.ioCompletion = 0; // Nothing, sync
dirPB.fileParam.ioVRefNum = refNum; // Volume specification
dirPB.fileParam.ioNamePtr = (StringPtr) "\pDEPTH"; // Directory name to create
dirPB.fileParam.ioDirID = 0; // ID of parent directory, 0 for root of volume
rc = PBDirCreate(&dirPB, 0);
if(rc)
{
printf("Error %d creating working directory.\n", rc);
return;
}
dirId = dirPB.fileParam.ioDirID;
printf("Creating deepest directory tree.\n");
while(!rc)
@@ -92,7 +103,16 @@ void DirectoryDepth(const char* path)
str255[0] = 8;
memcpy(str255 + 1, filename, 8);
rc = DirCreate(refNum, dirId, str255, &dirId);
dirId = dirPB.fileParam.ioDirID;
memset(&dirPB, 0, sizeof(HParamBlockRec));
dirPB.fileParam.ioCompletion = 0; // Nothing, sync
dirPB.fileParam.ioVRefNum = refNum; // Volume specification
dirPB.fileParam.ioNamePtr = str255; // Directory name to create
dirPB.fileParam.ioDirID = dirId; // ID of parent directory, 0 for root of volume
rc = PBDirCreate(&dirPB, 0);
pos++;
/* Mac OS has no limit, but it will crash because the catalog is single threaded */

View File

@@ -62,7 +62,8 @@ void Filenames(const char* path)
FInfo finderInfo;
int32_t count;
char message[300];
int pos = 0;
int pos = 0;
HParamBlockRec dirPB;
snprintf((char*)str255, 255, "%s", path);
hpb.ioNamePtr = str255;
@@ -76,13 +77,23 @@ void Filenames(const char* path)
}
refNum = hpb.ioVRefNum;
rc = DirCreate(refNum, fsRtDirID, (unsigned char*)"\pFILENAME", &dirId);
memset(&dirPB, 0, sizeof(HParamBlockRec));
dirPB.fileParam.ioCompletion = 0; // Nothing, sync
dirPB.fileParam.ioVRefNum = refNum; // Volume specification
dirPB.fileParam.ioNamePtr = (StringPtr) "\pFILENAME"; // Directory name to create
dirPB.fileParam.ioDirID = 0; // ID of parent directory, 0 for root of volume
rc = PBDirCreate(&dirPB, 0);
if(rc)
{
printf("Error %d creating working directory.\n", rc);
return;
}
dirId = dirPB.fileParam.ioDirID;
printf("Creating files with different filenames.\n");
for(pos = 0; filenames[pos]; pos++)

View File

@@ -62,7 +62,8 @@ void MillionFiles(const char* path)
FInfo finderInfo;
int32_t count;
char filename[9];
int pos = 0;
int pos = 0;
HParamBlockRec dirPB;
snprintf((char*)str255, 255, "%s", path);
hpb.ioNamePtr = str255;
@@ -76,7 +77,17 @@ void MillionFiles(const char* path)
}
refNum = hpb.ioVRefNum;
rc = DirCreate(refNum, fsRtDirID, (unsigned char*)"\pMILLION", &dirId);
memset(&dirPB, 0, sizeof(HParamBlockRec));
dirPB.fileParam.ioCompletion = 0; // Nothing, sync
dirPB.fileParam.ioVRefNum = refNum; // Volume specification
dirPB.fileParam.ioNamePtr = (StringPtr) "\pMILLION"; // Directory name to create
dirPB.fileParam.ioDirID = 0; // ID of parent directory, 0 for root of volume
rc = PBDirCreate(&dirPB, 0);
dirId = dirPB.fileParam.ioDirID;
if(rc)
{
printf("Error %d creating working directory.\n", rc);

View File

@@ -67,6 +67,7 @@ void Fragmentation(const char* path, size_t clusterSize)
int32_t dirId;
int32_t count;
long i;
HParamBlockRec dirPB;
snprintf((char*)str255, 255, "%s", path);
hpb.ioNamePtr = str255;
@@ -80,7 +81,17 @@ void Fragmentation(const char* path, size_t clusterSize)
}
refNum = hpb.ioVRefNum;
rc = DirCreate(refNum, fsRtDirID, (unsigned char*)"\pFRAGS", &dirId);
memset(&dirPB, 0, sizeof(HParamBlockRec));
dirPB.fileParam.ioCompletion = 0; // Nothing, sync
dirPB.fileParam.ioVRefNum = refNum; // Volume specification
dirPB.fileParam.ioNamePtr = (StringPtr) "\pFRAGS"; // Directory name to create
dirPB.fileParam.ioDirID = 0; // ID of parent directory, 0 for root of volume
rc = PBDirCreate(&dirPB, 0);
dirId = dirPB.fileParam.ioDirID;
if(rc)
{
printf("Error %d creating working directory.\n", rc);

View File

@@ -99,7 +99,8 @@ void Links(const char* path)
char filename[9];
int pos = 0;
FSSpec targetSpec, aliasSpec;
int32_t count;
int32_t count;
HParamBlockRec dirPB;
rc = Gestalt(gestaltAliasMgrAttr, &gestaltResponse);
if(rc || !(gestaltResponse & (1 << gestaltAliasMgrPresent)))
@@ -120,13 +121,23 @@ void Links(const char* path)
}
refNum = hpb.ioVRefNum;
rc = DirCreate(refNum, fsRtDirID, (unsigned char*)"\pLINKS", &dirId);
memset(&dirPB, 0, sizeof(HParamBlockRec));
dirPB.fileParam.ioCompletion = 0; // Nothing, sync
dirPB.fileParam.ioVRefNum = refNum; // Volume specification
dirPB.fileParam.ioNamePtr = (StringPtr) "\pLINKS"; // Directory name to create
dirPB.fileParam.ioDirID = 0; // ID of parent directory, 0 for root of volume
rc = PBDirCreate(&dirPB, 0);
if(rc)
{
printf("Error %d creating working directory.\n", rc);
return;
}
dirId = dirPB.fileParam.ioDirID;
printf("Creating aliases.\n");
for(pos = 0; pos < 64; pos++)

View File

@@ -12,6 +12,7 @@ enum
};
#define PBHGetVInfo(pb, async) ((async) ? PBHGetVInfoAsync(pb) : PBHGetVInfoSync(pb))
#define PBDirCreate(pb, async) ((async) ? PBDirCreateAsync(pb) : PBDirCreateSync(pb))
#define FOUR_CHAR_CODE(x) (x)

View File

@@ -101,7 +101,8 @@ void ResourceFork(const char* path)
FInfo finderInfo;
int32_t count;
HFileInfo* fpb;
CInfoPBRec cipbr;
CInfoPBRec cipbr;
HParamBlockRec dirPB;
snprintf((char*)str255, 255, "%s", path);
hpb.ioNamePtr = str255;
@@ -115,13 +116,23 @@ void ResourceFork(const char* path)
}
refNum = hpb.ioVRefNum;
rc = DirCreate(refNum, fsRtDirID, (unsigned char*)"\pRSRC", &dirId);
memset(&dirPB, 0, sizeof(HParamBlockRec));
dirPB.fileParam.ioCompletion = 0; // Nothing, sync
dirPB.fileParam.ioVRefNum = refNum; // Volume specification
dirPB.fileParam.ioNamePtr = (StringPtr) "\pRSRC"; // Directory name to create
dirPB.fileParam.ioDirID = 0; // ID of parent directory, 0 for root of volume
rc = PBDirCreate(&dirPB, 0);
if(rc)
{
printf("Error %d creating working directory.\n", rc);
return;
}
dirId = dirPB.fileParam.ioDirID;
printf("Creating resource forks.\n");
memset(&finderInfo, 0, sizeof(FInfo));

View File

@@ -64,7 +64,8 @@ void Timestamps(const char* path)
int32_t count;
HFileInfo* fpb;
CInfoPBRec cipbr;
char message[300];
char message[300];
HParamBlockRec dirPB;
snprintf((char*)str255, 255, "%s", path);
hpb.ioNamePtr = str255;
@@ -78,13 +79,23 @@ void Timestamps(const char* path)
}
refNum = hpb.ioVRefNum;
rc = DirCreate(refNum, fsRtDirID, (unsigned char*)"\pTIMES", &dirId);
memset(&dirPB, 0, sizeof(HParamBlockRec));
dirPB.fileParam.ioCompletion = 0; // Nothing, sync
dirPB.fileParam.ioVRefNum = refNum; // Volume specification
dirPB.fileParam.ioNamePtr = (StringPtr) "\pTIMES"; // Directory name to create
dirPB.fileParam.ioDirID = 0; // ID of parent directory, 0 for root of volume
rc = PBDirCreate(&dirPB, 0);
if(rc)
{
printf("Error %d creating working directory.\n", rc);
return;
}
dirId = dirPB.fileParam.ioDirID;
printf("Creating timestamped files.\n");
rc = HCreate(refNum, dirId, "\pMAXCTIME", ostUnknown, ftGenericDocumentPC);