mirror of
https://github.com/ksherlock/mpw.git
synced 2024-11-21 09:30:55 +00:00
FSpOpenDF
This commit is contained in:
parent
7eb33de435
commit
1e2c1a8f5d
@ -182,6 +182,34 @@ namespace OS {
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t FSpOpenDF()
|
||||
{
|
||||
// FUNCTION FSpOpenDF (spec: FSSpec; permission: SignedByte; VAR refNum: Integer): OSErr;
|
||||
|
||||
uint32_t spec;
|
||||
uint8_t permission;
|
||||
uint32_t refNum;
|
||||
|
||||
StackFrame<10>(spec, permission, refNum);
|
||||
|
||||
int parentID = memoryReadLong(spec + 2);
|
||||
std::string sname = ToolBox::ReadPString(spec + 6, false);
|
||||
|
||||
Log(" FSpOpenDF(%s, %02x, %04x)\n", sname.c_str(), permission, refNum);
|
||||
|
||||
sname = OS::FSSpecManager::ExpandPath(sname, parentID);
|
||||
if (sname.empty())
|
||||
{
|
||||
return MacOS::dirNFErr;
|
||||
}
|
||||
|
||||
int fd = Internal::FDEntry::open(sname, permission, 0);
|
||||
if (fd < 0) return fd;
|
||||
|
||||
memoryWriteWord(fd, refNum);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t FSpGetFInfo()
|
||||
{
|
||||
@ -363,6 +391,9 @@ namespace OS {
|
||||
case 0x0001:
|
||||
d0 = FSMakeFSSpec();
|
||||
break;
|
||||
case 0x0002:
|
||||
d0 = FSpOpenDF();
|
||||
break;
|
||||
|
||||
case 0x0004:
|
||||
d0 = FSpCreate();
|
||||
|
Loading…
Reference in New Issue
Block a user