12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391 |
- {
- This file is part of the Free Pascal run time library.
- Copyright (c) 2003 - 2004 by Olle Raab
- A selection of the MacOS API for FreePascal, written
- in the Turbo Pascal dialect.
- It is primarily for internal use in the rtl, please
- do not expect it to remain the same over time,
- it will be subject to changes.
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- **********************************************************************}
- {Note: Types like Mac_XXX corresponds to the type XXX defined
- in MacOS Universal Headers. The prefix is to avoid name clashes
- with FPC types.}
- {For a future possiblity of compiling the RTL under Carbon,
- sections containing Carbon only code should be under
- ifdef TARGET_API_MAC_CARBON, at the moment it is always undefinded: }
- {$UNDEF TARGET_API_MAC_CARBON }
- {$IFDEF TARGET_API_MAC_CARBON }
- {$DEFINE OPAQUE_TOOLBOX_STRUCTS }
- {$ENDIF}
- {$PACKRECORDS 2} {Alignment inherited from the m68k days}
- {************** from Types.p ***************}
- const
- noErr = 0;
- type
- SignedByte = shortint;
- SignedBytePtr = ^SignedByte;
- SInt8 = ShortInt; //-128..127;
- SInt16 = SmallInt; // INTEGER;
- SInt32 = LONGINT;
- // Overlapping types are now declared in the System unit (KB)
- //UInt8 = 0..255;
- //UInt16 = WORD;
- //UInt32 = LONGWORD;
- IntegerPtr = ^INTEGER;
- LongIntPtr = ^LONGINT;
- OSErr = Integer;
- FourCharCode = Longword;
- OSType = FourCharCode;
- ResType = FourCharCode;
- Mac_Ptr = pointer;
- Mac_Handle = ^Mac_Ptr;
- Str31 = string[31];
- Str32 = string[32];
- Str63 = string[63];
- Str255 = string[255];
- StringPtr = ^Str255;
- ProcPtr = Mac_Ptr;
- UniversalProcPtr = ProcPtr;
- ScriptCode = INTEGER;
- LangCode = INTEGER;
- Point = record
- case INTEGER of
- 0: (
- v: INTEGER;
- h: INTEGER;
- );
- 1: (
- vh: array[0..1] of INTEGER;
- );
- end;
- PointPtr = ^Point;
- Rect = record
- case INTEGER of
- 0: (
- top: INTEGER;
- left: INTEGER;
- bottom: INTEGER;
- right: INTEGER;
- );
- 1: (
- topLeft: Point;
- botRight: Point;
- );
- end;
- RectPtr = ^Rect;
- procedure Debugger;
- external 'InterfaceLib';
- procedure DebugStr(s: Str255);
- external 'InterfaceLib';
- {************** from Memory.p ***************}
- type
- Size = Longint;
- function NewHandle (byteCount: Size): Mac_Handle;
- external 'InterfaceLib';
- function NewPtr(logicalSize: Size): Mac_Ptr ;
- external 'InterfaceLib';
- procedure DisposePtr (p: Mac_Ptr);
- external 'InterfaceLib';
- function GetPtrSize (p: Mac_Ptr): Size;
- external 'InterfaceLib';
- procedure SetPtrSize (p: Mac_Ptr; newSize: Size);
- external 'InterfaceLib';
- procedure DisposeHandle (h: Mac_Handle);
- external 'InterfaceLib';
- procedure SetHandleSize (h: Mac_Handle; newSize: Size);
- external 'InterfaceLib';
- function GetHandleSize (h: Mac_Handle): Size;
- external 'InterfaceLib';
- function Mac_FreeMem: Longint;
- external 'InterfaceLib' name 'FreeMem';
- PROCEDURE MaxApplZone;
- external 'InterfaceLib';
- PROCEDURE HLock(h: Mac_Handle);
- external 'InterfaceLib';
- PROCEDURE HUnlock(h: Mac_Handle);
- external 'InterfaceLib';
- function MemError: OSErr;
- external 'InterfaceLib';
- {************** from GestaltEqu.p ***************}
- FUNCTION Gestalt(selector: OSType; VAR response: LONGINT): OSErr;
- external 'InterfaceLib' name 'Gestalt';
- const
- { Gestalt selector and values for the Appearance Manager }
- gestaltAliasMgrAttr = 'alis'; { Alias Mgr Attributes }
- gestaltAliasMgrPresent = 0; { True if the Alias Mgr is present }
- gestaltAliasMgrSupportsRemoteAppletalk = 1; { True if the Alias Mgr knows about Remote Appletalk }
- gestaltAliasMgrSupportsAOCEKeychain = 2; { True if the Alias Mgr knows about the AOCE Keychain }
- gestaltAliasMgrResolveAliasFileWithMountOptions = 3; { True if the Alias Mgr implements gestaltAliasMgrResolveAliasFileWithMountOptions() and IsAliasFile() }
- gestaltAliasMgrFollowsAliasesWhenResolving = 4;
- gestaltAliasMgrSupportsExtendedCalls = 5;
- gestaltAliasMgrSupportsFSCalls = 6; { true if Alias Mgr supports HFS+ Calls }
- gestaltAppearanceAttr = 'appr';
- gestaltAppearanceExists = 0;
- gestaltAppearanceCompatMode = 1;
- { Gestalt selector for determining Appearance Manager version }
- { If this selector does not exist, but gestaltAppearanceAttr }
- { does, it indicates that the 1.0 version is installed. This }
- { gestalt returns a BCD number representing the version of the }
- { Appearance Manager that is currently running, e.g. 0x0101 for }
- { version 1.0.1. }
- gestaltAppearanceVersion = 'apvr';
- gestaltCFMAttr = 'cfrg'; { Selector for information about the Code Fragment Manager }
- gestaltCFMPresent = 0; { True if the Code Fragment Manager is present }
- gestaltCFMPresentMask = $0001;
- gestaltCFM99Present = 2; { True if the CFM-99 features are present. }
- gestaltCFM99PresentMask = $0004;
- gestaltAppleEventsAttr = 'evnt'; { Apple Events attributes }
- gestaltAppleEventsPresent = 0; { True if Apple Events present }
- gestaltScriptingSupport = 1;
- gestaltOSLInSystem = 2; { OSL is in system so donÕt use the one linked in to app }
- gestaltFindFolderAttr = 'fold'; { Folder Mgr attributes }
- gestaltFindFolderPresent = 0; { True if Folder Mgr present }
- gestaltFolderDescSupport = 1; { True if Folder Mgr has FolderDesc calls }
- gestaltFolderMgrFollowsAliasesWhenResolving = 2; { True if Folder Mgr follows folder aliases }
- gestaltFolderMgrSupportsExtendedCalls = 3; { True if Folder Mgr supports the Extended calls }
- gestaltFolderMgrSupportsDomains = 4; { True if Folder Mgr supports domains for the first parameter to FindFolder }
- gestaltFolderMgrSupportsFSCalls = 5; { True if FOlder manager supports __FindFolderFSRef & __FindFolderExtendedFSRef }
- gestaltFPUType = 'fpu '; { fpu type }
- gestaltNoFPU = 0; { no FPU }
- gestalt68881 = 1; { 68881 FPU }
- gestalt68882 = 2; { 68882 FPU }
- gestalt68040FPU = 3; { 68040 built-in FPU }
- gestaltFSAttr = 'fs '; { file system attributes }
- gestaltFullExtFSDispatching = 0; { has really cool new HFSDispatch dispatcher }
- gestaltHasFSSpecCalls = 1; { has FSSpec calls }
- gestaltHasFileSystemManager = 2; { has a file system manager }
- gestaltFSMDoesDynamicLoad = 3; { file system manager supports dynamic loading }
- gestaltFSSupports4GBVols = 4; { file system supports 4 gigabyte volumes }
- gestaltFSSupports2TBVols = 5; { file system supports 2 terabyte volumes }
- gestaltHasExtendedDiskInit = 6; { has extended Disk Initialization calls }
- gestaltDTMgrSupportsFSM = 7; { Desktop Manager support FSM-based foreign file systems }
- gestaltFSNoMFSVols = 8; { file system doesn't supports MFS volumes }
- gestaltFSSupportsHFSPlusVols = 9; { file system supports HFS Plus volumes }
- gestaltFSIncompatibleDFA82 = 10; { VCB and FCB structures changed; DFA 8.2 is incompatible }
- gestaltHasHFSPlusAPIs = 12; { file system supports HFS Plus APIs }
- gestaltMustUseFCBAccessors = 13; { FCBSPtr and FSFCBLen are invalid - must use FSM FCB accessor functions }
- gestaltFSUsesPOSIXPathsForConversion = 14; { The path interchange routines operate on POSIX paths instead of HFS paths }
- gestaltOSAttr = 'os '; { o/s attributes }
- gestaltSysZoneGrowable = 0; { system heap is growable }
- gestaltLaunchCanReturn = 1; { can return from launch }
- gestaltLaunchFullFileSpec = 2; { can launch from full file var spec }
- gestaltLaunchControl = 3; { launch control support available }
- gestaltTempMemSupport = 4; { temp memory support }
- gestaltRealTempMemory = 5; { temp memory handles are real }
- gestaltTempMemTracked = 6; { temporary memory handles are tracked }
- gestaltIPCSupport = 7; { IPC support is present }
- gestaltSysDebuggerSupport = 8; { system debugger support is present }
- gestaltNativeProcessMgrBit = 19; { the process manager itself is native }
- gestaltQuickdrawVersion = 'qd '; { quickdraw version }
- gestaltOriginalQD = $0000; { original 1-bit QD }
- gestalt8BitQD = $0100; { 8-bit color QD }
- gestalt32BitQD = $0200; { 32-bit color QD }
- gestalt32BitQD11 = $0201; { 32-bit color QDv1.1 }
- gestalt32BitQD12 = $0220; { 32-bit color QDv1.2 }
- gestalt32BitQD13 = $0230; { 32-bit color QDv1.3 }
- gestaltAllegroQD = $0250; { Allegro QD OS 8.5 }
- gestaltMacOSXQD = $0300; { Mac OS X QD }
- gestaltScriptMgrVersion = 'scri'; { Script Manager version number }
- gestaltScriptCount = 'scr#'; { number of active script systems }
- gestaltStandardFileAttr = 'stdf'; { Standard File attributes }
- gestaltStandardFile58 = 0; { True if selectors 5-8 (StandardPutFile-CustomGetFile) are supported }
- gestaltStandardFileTranslationAware = 1; { True if standard file is translation manager aware }
- gestaltStandardFileHasColorIcons = 2; { True if standard file has 16x16 color icons }
- gestaltStandardFileUseGenericIcons = 3; { Standard file LDEF to use only the system generic icons if true }
- gestaltStandardFileHasDynamicVolumeAllocation = 4; { True if standard file supports more than 20 volumes }
- gestaltSystemVersion = 'sysv'; { system version }
- gestaltThreadMgrAttr = 'thds'; { Thread Manager attributes }
- gestaltThreadMgrPresent = 0; { bit true if Thread Mgr is present }
- gestaltSpecificMatchSupport = 1; { bit true if Thread Mgr supports exact match creation option }
- gestaltThreadsLibraryPresent = 2; { bit true if Thread Mgr shared library is present }
- {************** from OSUtils.p ***************}
- type
- QElemPtr = ^QElem;
- QElem = record
- qLink: QElemPtr;
- qType: INTEGER;
- qData: array[0..0] of INTEGER;
- end;
- CONST
- curSysEnvVers = 2; { Updated to equal latest SysEnvirons version }
- TYPE
- SysEnvRecPtr = ^SysEnvRec;
- SysEnvRec = RECORD
- environsVersion: INTEGER;
- machineType: INTEGER;
- systemVersion: INTEGER;
- processor: INTEGER;
- hasFPU: BOOLEAN;
- hasColorQD: BOOLEAN;
- keyBoardType: INTEGER;
- atDrvrVersNum: INTEGER;
- sysVRefNum: INTEGER;
- END;
- FUNCTION SysEnvirons(versionRequested: INTEGER; VAR theWorld: SysEnvRec): OSErr;
- external 'InterfaceLib';
- {************** from Finder.p ***************}
- type
- FInfo = record
- fdType: OSType; {the type of the file}
- fdCreator: OSType; {file's creator}
- fdFlags: INTEGER; {flags ex. hasbundle,invisible,locked, etc.}
- fdLocation: Point; {file's location in folder}
- fdFldr: INTEGER; {folder containing file}
- end;
- FXInfo = record
- fdIconID: INTEGER; {Icon ID}
- fdUnused: array[0..2] of INTEGER; {unused but reserved 6 bytes}
- fdScript: SInt8; {Script flag and number}
- fdXFlags: SInt8; {More flag bits}
- fdComment: INTEGER; {Comment ID}
- fdPutAway: LONGINT; {Home Dir ID}
- end;
- DInfo = record
- frRect: Rect; {folder rect}
- frFlags: INTEGER; {Flags}
- frLocation: Point; {folder location}
- frView: INTEGER; {folder view}
- end;
- DXInfo = record
- frScroll: Point; {scroll position}
- frOpenChain: LONGINT; {DirID chain of open folders}
- frScript: SInt8; {Script flag and number}
- frXFlags: SInt8; {More flag bits}
- frComment: INTEGER; {comment}
- frPutAway: LONGINT; {DirID}
- end;
- {************** from Files.p ***************}
- const
- fsAtMark = 0;
- fsCurPerm = 0;
- fsRdPerm = 1;
- fInvisible = 16384;
- fsWrPerm = 2;
- fsRdWrPerm = 3;
- fsRdWrShPerm = 4;
- fsFromStart = 1;
- fsFromLEOF = 2;
- fsFromMark = 3;
- rdVerify = 64;
- ioMapBuffer = 4;
- ioModeReserved = 8;
- ioDirFlg = 4; { see IM IV-125 }
- ioDirMask = $10;
- fsRtParID = 1;
- fsRtDirID = 2;
- type
- CatPositionRecPtr = ^CatPositionRec;
- CatPositionRec = RECORD
- initialize: LONGINT;
- priv: ARRAY [1..6] OF INTEGER;
- END;
- FSSpec = record
- vRefNum: Integer;
- parID: Longint;
- name: Str63;
- end;
- FSSpecPtr = ^FSSpec;
- ParmBlkPtr = ^ParamBlockRec;
- IOCompletionUPP = UniversalProcPtr;
- ParamBlockRecPtr = ^ParamBlockRec;
- ParamBlockRec = RECORD
- qLink: QElemPtr; { queue link in header }
- qType: INTEGER; { type byte for safety check }
- ioTrap: INTEGER; { FS: the Trap }
- ioCmdAddr: Mac_Ptr; { FS: address to dispatch to }
- ioCompletion: IOCompletionUPP; { completion routine addr (0 for synch calls) }
- ioResult: OSErr; { result code }
- ioNamePtr: StringPtr; { ptr to Vol:FileName string }
- ioVRefNum: INTEGER; { volume refnum (DrvNum for Eject and MountVol) }
- CASE INTEGER OF
- 0: (
- ioRefNum: INTEGER; { refNum for I/O operation }
- ioVersNum: SInt8; { version number }
- ioPermssn: SInt8; { Open: permissions (byte) }
- ioMisc: Mac_Ptr; { Rename: new name (GetEOF,SetEOF: logical end of file) (Open: optional ptr to buffer) (SetFileType: new type) }
- ioBuffer: Mac_Ptr; { data buffer Ptr }
- ioReqCount: LONGINT; { requested byte count; also = ioNewDirID }
- ioActCount: LONGINT; { actual byte count completed }
- ioPosMode: INTEGER; { initial file positioning }
- ioPosOffset: LONGINT; { file position offset }
- );
- 1: (
- ioFRefNum: INTEGER; { reference number }
- ioFVersNum: SInt8; { version number }
- filler1: SInt8;
- ioFDirIndex: INTEGER; { GetFInfo directory index }
- ioFlAttrib: SInt8; { GetFInfo: in-use bit=7, lock bit=0 }
- ioFlVersNum: SInt8; { file version number }
- ioFlFndrInfo: FInfo; { user info }
- ioFlNum: UInt32; { GetFInfo: file number; TF- ioDirID }
- ioFlStBlk: UInt16; { start file block (0 if none) }
- ioFlLgLen: LONGINT; { logical length (EOF) }
- ioFlPyLen: LONGINT; { physical length }
- ioFlRStBlk: UInt16; { start block rsrc fork }
- ioFlRLgLen: LONGINT; { file logical length rsrc fork }
- ioFlRPyLen: LONGINT; { file physical length rsrc fork }
- ioFlCrDat: UInt32; { file creation date& time (32 bits in secs) }
- ioFlMdDat: UInt32; { last modified date and time }
- );
- 2: (
- filler2: LONGINT;
- ioVolIndex: INTEGER; { volume index number }
- ioVCrDate: UInt32; { creation date and time }
- ioVLsBkUp: UInt32; { last backup date and time }
- ioVAtrb: UInt16; { volume attrib }
- ioVNmFls: UInt16; { number of files in directory }
- ioVDirSt: UInt16; { start block of file directory }
- ioVBlLn: INTEGER; { GetVolInfo: length of dir in blocks }
- ioVNmAlBlks: UInt16; { for compatibilty ioVNmAlBlks * ioVAlBlkSiz <= 2 GB }
- ioVAlBlkSiz: UInt32; { for compatibilty ioVAlBlkSiz is <= $0000FE00 (65,024) }
- ioVClpSiz: UInt32; { GetVolInfo: bytes to allocate at a time }
- ioAlBlSt: UInt16; { starting disk(512-byte) block in block map }
- ioVNxtFNum: UInt32; { GetVolInfo: next free file number }
- ioVFrBlk: UInt16; { GetVolInfo: # free alloc blks for this vol }
- );
- 3: (
- ioCRefNum: INTEGER; { refNum for I/O operation }
- csCode: INTEGER; { word for control status code }
- csParam: ARRAY [0..10] OF INTEGER; { operation-defined parameters }
- );
- 4: (
- ioSRefNum: INTEGER;
- ioSVersNum: SInt8;
- ioSPermssn: SInt8;
- ioSMix: Mac_Ptr;
- ioSFlags: INTEGER;
- ioSlot: SInt8;
- ioID: SInt8;
- );
- 5: (
- ioMRefNum: INTEGER;
- ioMVersNum: SInt8;
- ioMPermssn: SInt8;
- ioMMix: Mac_Ptr;
- ioMFlags: INTEGER;
- ioSEBlkPtr: Mac_Ptr;
- );
- END;
- CInfoPBRecPtr = ^CInfoPBRec;
- CInfoPBRec = record
- qLink: QElemPtr;
- qType: INTEGER;
- ioTrap: INTEGER;
- ioCmdAddr: Mac_Ptr;
- ioCompletion: IOCompletionUPP;
- ioResult: OSErr;
- ioNamePtr: StringPtr;
- ioVRefNum: INTEGER;
- ioFRefNum: INTEGER;
- ioFVersNum: SInt8;
- filler1: SInt8;
- ioFDirIndex: INTEGER;
- ioFlAttrib: SInt8;
- ioACUser: SInt8;
- case INTEGER of
- 0: (
- ioFlFndrInfo: FInfo;
- ioDirID: LONGINT;
- ioFlStBlk: INTEGER;
- ioFlLgLen: LONGINT;
- ioFlPyLen: LONGINT;
- ioFlRStBlk: INTEGER;
- ioFlRLgLen: LONGINT;
- ioFlRPyLen: LONGINT;
- ioFlCrDat: LONGINT;
- ioFlMdDat: LONGINT;
- ioFlBkDat: LONGINT;
- ioFlXFndrInfo: FXInfo;
- ioFlParID: LONGINT;
- ioFlClpSiz: LONGINT;
- );
- 1: (
- ioDrUsrWds: DInfo;
- ioDrDirID: LONGINT;
- ioDrNmFls: INTEGER;
- filler3: array[1..9] of INTEGER;
- ioDrCrDat: LONGINT;
- ioDrMdDat: LONGINT;
- ioDrBkDat: LONGINT;
- ioDrFndrInfo: DXInfo;
- ioDrParID: LONGINT;
- );
- end;
- CInfoPBPtr = ^CInfoPBRec;
- DTPBRecPtr = ^DTPBRec;
- DTPBRec = RECORD
- qLink: QElemPtr; { queue link in header }
- qType: INTEGER; { type byte for safety check }
- ioTrap: INTEGER; { FS: the Trap }
- ioCmdAddr: Mac_Ptr; { FS: address to dispatch to }
- ioCompletion: IOCompletionUPP; { completion routine addr (0 for synch calls) }
- ioResult: OSErr; { result code }
- ioNamePtr: StringPtr; { ptr to Vol:FileName string }
- ioVRefNum: INTEGER; { volume refnum (DrvNum for Eject and MountVol) }
- ioDTRefNum: INTEGER; { desktop refnum }
- ioIndex: INTEGER;
- ioTagInfo: LONGINT;
- ioDTBuffer: Mac_Ptr;
- ioDTReqCount: LONGINT;
- ioDTActCount: LONGINT;
- ioFiller1: SInt8;
- ioIconType: SInt8;
- ioFiller2: INTEGER;
- ioDirID: LONGINT;
- ioFileCreator: OSType;
- ioFileType: OSType;
- ioFiller3: LONGINT;
- ioDTLgLen: LONGINT;
- ioDTPyLen: LONGINT;
- ioFiller4: ARRAY [1..14] OF INTEGER;
- ioAPPLParID: LONGINT;
- END;
- DTPBPtr = ^DTPBRec;
- HParamBlockRecPtr = ^HParamBlockRec;
- HParamBlockRec = RECORD
- qLink: QElemPtr; { queue link in header }
- qType: INTEGER; { type byte for safety check }
- ioTrap: INTEGER; { FS: the Trap }
- ioCmdAddr: pointer; { FS: address to dispatch to }
- ioCompletion: IOCompletionUPP; { completion routine addr (0 for synch calls) }
- ioResult: OSErr; { result code }
- ioNamePtr: StringPtr; { ptr to Vol:FileName string }
- ioVRefNum: INTEGER; { volume refnum (DrvNum for Eject and MountVol) }
- CASE INTEGER OF
- 0: (
- ioRefNum: INTEGER;
- ioVersNum: SInt8;
- ioPermssn: SInt8;
- ioMisc: pointer;
- ioBuffer: pointer;
- ioReqCount: LONGINT;
- ioActCount: LONGINT;
- ioPosMode: INTEGER;
- ioPosOffset: LONGINT;
- );
- 1: (
- ioFRefNum: INTEGER;
- ioFVersNum: SInt8;
- filler1: SInt8;
- ioFDirIndex: INTEGER;
- ioFlAttrib: SInt8;
- ioFlVersNum: SInt8;
- ioFlFndrInfo: FInfo;
- ioDirID: LONGINT;
- ioFlStBlk: UInt16;
- ioFlLgLen: LONGINT;
- ioFlPyLen: LONGINT;
- ioFlRStBlk: UInt16;
- ioFlRLgLen: LONGINT;
- ioFlRPyLen: LONGINT;
- ioFlCrDat: UInt32;
- ioFlMdDat: UInt32;
- );
- 2: (
- filler2: LONGINT;
- ioVolIndex: INTEGER;
- ioVCrDate: UInt32;
- ioVLsMod: UInt32;
- ioVAtrb: INTEGER;
- ioVNmFls: UInt16;
- ioVBitMap: UInt16;
- ioAllocPtr: UInt16;
- ioVNmAlBlks: UInt16;
- ioVAlBlkSiz: UInt32;
- ioVClpSiz: UInt32;
- ioAlBlSt: UInt16;
- ioVNxtCNID: UInt32;
- ioVFrBlk: UInt16;
- ioVSigWord: UInt16;
- ioVDrvInfo: INTEGER;
- ioVDRefNum: INTEGER;
- ioVFSID: INTEGER;
- ioVBkUp: UInt32;
- ioVSeqNum: UInt16;
- ioVWrCnt: UInt32;
- ioVFilCnt: UInt32;
- ioVDirCnt: UInt32;
- ioVFndrInfo: ARRAY [1..8] OF LONGINT;
- );
- 3: (
- filler3: INTEGER;
- ioDenyModes: INTEGER; { access rights data }
- filler4: INTEGER;
- filler5: SInt8;
- ioACUser: SInt8; { access rights for directory only }
- filler6: LONGINT;
- ioACOwnerID: LONGINT; { owner ID }
- ioACGroupID: LONGINT; { group ID }
- ioACAccess: LONGINT; { access rights }
- );
- 4: (
- filler7: INTEGER;
- ioObjType: INTEGER; { function code }
- ioObjNamePtr: StringPtr; { ptr to returned creator/group name }
- ioObjID: LONGINT; { creator/group ID }
- );
- 5: (
- ioDstVRefNum: INTEGER; { destination vol identifier }
- filler8: INTEGER;
- ioNewName: StringPtr; { ptr to destination pathname }
- ioCopyName: StringPtr; { ptr to optional name }
- ioNewDirID: LONGINT; { destination directory ID }
- );
- 6: (
- ioWDCreated: INTEGER;
- ioWDIndex: INTEGER;
- ioWDProcID: LONGINT;
- ioWDVRefNum: INTEGER;
- filler10: INTEGER;
- filler11: LONGINT;
- filler12: LONGINT;
- filler13: LONGINT;
- ioWDDirID: LONGINT;
- );
- 7: (
- filler14: LONGINT;
- ioDestNamePtr: StringPtr; { dest file name }
- filler15: LONGINT;
- ioDestDirID: LONGINT; { dest file's directory id }
- filler16: LONGINT;
- filler17: LONGINT;
- ioSrcDirID: LONGINT; { source file's directory id }
- filler18: INTEGER;
- ioFileID: LONGINT; { file ID }
- );
- 8: (
- ioMatchPtr: FSSpecPtr; { match array }
- ioReqMatchCount: LONGINT; { maximum allowable matches }
- ioActMatchCount: LONGINT; { actual match count }
- ioSearchBits: LONGINT; { search criteria selector }
- ioSearchInfo1: CInfoPBPtr; { search values and range lower bounds }
- ioSearchInfo2: CInfoPBPtr; { search values and range upper bounds }
- ioSearchTime: LONGINT; { length of time to run search }
- ioCatPosition: CatPositionRec; { current position in the catalog }
- ioOptBuffer: pointer; { optional performance enhancement buffer }
- ioOptBufSize: LONGINT; { size of buffer pointed to by ioOptBuffer }
- );
- 9: (
- ioFiller21: LONGINT;
- ioFiller22: LONGINT;
- ioForeignPrivBuffer: pointer;
- ioForeignPrivActCount: LONGINT;
- ioForeignPrivReqCount: LONGINT;
- ioFiller23: LONGINT;
- ioForeignPrivDirID: LONGINT;
- ioForeignPrivInfo1: LONGINT;
- ioForeignPrivInfo2: LONGINT;
- ioForeignPrivInfo3: LONGINT;
- ioForeignPrivInfo4: LONGINT;
- );
- END;
- HParmBlkPtr = ^HParamBlockRec;
- WDPBRecPtr = ^WDPBRec;
- WDPBRec = RECORD
- qLink: QElemPtr;
- qType: INTEGER;
- ioTrap: INTEGER;
- ioCmdAddr: pointer;
- ioCompletion: IOCompletionUPP;
- ioResult: OSErr;
- ioNamePtr: StringPtr;
- ioVRefNum: INTEGER;
- filler1: INTEGER;
- ioWDIndex: INTEGER;
- ioWDProcID: LONGINT;
- ioWDVRefNum: INTEGER;
- filler2: ARRAY [1..7] OF INTEGER;
- ioWDDirID: LONGINT;
- END;
- WDPBPtr = ^WDPBRec;
- FUNCTION PBGetVInfoSync(paramBlock: ParmBlkPtr): OSErr;
- external 'InterfaceLib';
- FUNCTION GetVol(volName: StringPtr; VAR vRefNum: INTEGER): OSErr;
- external 'InterfaceLib';
- function FSpOpenDF(var spec: FSSpec; permission: SignedByte;
- var refNum: Integer): OSErr;
- external 'InterfaceLib';
- function FSpCreate(var spec: FSSpec; creator, fileType: OSType;
- scriptTag: ScriptCode): OSErr;
- external 'InterfaceLib';
- function FSpDirCreate(var spec: FSSpec; scriptTag: ScriptCode;
- var createdDirID: Longint): OSErr;
- external 'InterfaceLib';
- function FSpDelete(var spec: FSSpec): OSErr;
- external 'InterfaceLib';
- FUNCTION FSpGetFInfo(var spec: FSSpec; VAR fndrInfo: FInfo): OSErr;
- external 'InterfaceLib';
- FUNCTION FSpSetFInfo(var spec: FSSpec; var fndrInfo: FInfo): OSErr;
- external 'InterfaceLib';
- FUNCTION FSpSetFLock(var spec: FSSpec): OSErr;
- external 'InterfaceLib';
- FUNCTION FSpRstFLock(var spec: FSSpec): OSErr;
- external 'InterfaceLib';
- function FSClose(refNum: Integer): OSErr;
- external 'InterfaceLib';
- function FSRead(refNum: Integer; var count: Longint; buffPtr: Mac_Ptr): OSErr;
- external 'InterfaceLib';
- function FSWrite(refNum: Integer; var count: Longint; buffPtr: Mac_Ptr): OSErr;
- external 'InterfaceLib';
- function GetEOF(refNum: Integer; var logEOF: Longint): OSErr;
- external 'InterfaceLib';
- function SetEOF(refNum: Integer; logEOF: Longint): OSErr;
- external 'InterfaceLib';
- function GetFPos(refNum: Integer; var filePos: Longint): OSErr;
- external 'InterfaceLib';
- function SetFPos(refNum: Integer; posMode: Integer; posOff: Longint): OSErr;
- external 'InterfaceLib';
- FUNCTION PBGetWDInfoSync(paramBlock: WDPBPtr): OSErr;
- external 'InterfaceLib';
- function PBGetCatInfoSync (paramBlock: CInfoPBPtr): OSErr;
- external 'InterfaceLib';
- FUNCTION PBSetCatInfoSync(paramBlock: CInfoPBPtr): OSErr;
- external 'InterfaceLib';
- FUNCTION PBHGetVInfoSync(paramBlock: HParmBlkPtr): OSErr;
- external 'InterfaceLib';
- function FSMakeFSSpec (vRefNum: Integer; dirID: LongInt;
- fileName: Str255; VAR spec: FSSpec): OSErr;
- external 'InterfaceLib';
- FUNCTION HGetFInfo(vRefNum: INTEGER; dirID: LONGINT; fileName: Str255;
- VAR fndrInfo: FInfo): OSErr;
- external 'InterfaceLib';
- FUNCTION PBDTGetPath(paramBlock: DTPBPtr): OSErr;
- external 'InterfaceLib';
- FUNCTION PBDTGetAPPLSync(paramBlock: DTPBPtr): OSErr;
- external 'InterfaceLib';
- {************** from Aliases.p ***************}
- type
- AliasHandle = Mac_Handle;
- function NewAliasMinimalFromFullPath(fullPathLength: Integer;
- fullPath: Mac_Ptr; zoneName: Str32; serverName: Str31;
- var alias: AliasHandle):OSErr;
- external 'InterfaceLib';
- function ResolveAlias(fromFile: FSSpecPtr; alias: AliasHandle;
- var target: FSSpec; var wasChanged: Boolean):OSErr;
- external 'InterfaceLib';
- {************** from Folders.p ***************}
- CONST
- kOnSystemDisk = -32768; { previously was 0x8000 but that is an unsigned value whereas vRefNum is signed }
- kOnAppropriateDisk = -32767; { Generally, the same as kOnSystemDisk, but it's clearer that this isn't always the 'boot' disk. }
- { Folder Domains - Carbon only. The constants above can continue to be used, but the folder/volume returned will }
- { be from one of the domains below. }
- kSystemDomain = -32766; { Read-only system hierarchy. }
- kLocalDomain = -32765; { All users of a single machine have access to these resources. }
- kNetworkDomain = -32764; { All users configured to use a common network server has access to these resources. }
- kUserDomain = -32763; { Read/write. Resources that are private to the user. }
- kClassicDomain = -32762; { Domain referring to the currently configured Classic System Folder }
- kCreateFolder = true;
- kDontCreateFolder = false;
- kSystemFolderType = 'macs'; { the system folder }
- kDesktopFolderType = 'desk'; { the desktop folder; objects in this folder show on the desk top. }
- kSystemDesktopFolderType = 'sdsk'; { the desktop folder at the root of the hard drive, never the redirected user desktop folder }
- kTrashFolderType = 'trsh'; { the trash folder; objects in this folder show up in the trash }
- kSystemTrashFolderType = 'strs'; { the trash folder at the root of the drive, never the redirected user trash folder }
- kWhereToEmptyTrashFolderType = 'empt'; { the "empty trash" folder; Finder starts empty from here down }
- kPrintMonitorDocsFolderType = 'prnt'; { Print Monitor documents }
- kStartupFolderType = 'strt'; { Finder objects (applications, documents, DAs, aliases, to...) to open at startup go here }
- kShutdownFolderType = 'shdf'; { Finder objects (applications, documents, DAs, aliases, to...) to open at shutdown go here }
- kAppleMenuFolderType = 'amnu'; { Finder objects to put into the Apple menu go here }
- kControlPanelFolderType = 'ctrl'; { Control Panels go here (may contain INITs) }
- kSystemControlPanelFolderType = 'sctl'; { System control panels folder - never the redirected one, always "Control Panels" inside the System Folder }
- kExtensionFolderType = 'extn'; { System extensions go here }
- kFontsFolderType = 'font'; { Fonts go here }
- kPreferencesFolderType = 'pref'; { preferences for applications go here }
- kSystemPreferencesFolderType = 'sprf'; { System-type Preferences go here - this is always the system's preferences folder, never a logged in user's }
- kTemporaryFolderType = 'temp'; { temporary files go here (deleted periodically, but don't rely on it.) }
- FUNCTION FindFolder(vRefNum: INTEGER; folderType: OSType; createFolder: BOOLEAN; VAR foundVRefNum: INTEGER; VAR foundDirID: LONGINT): OSErr;
- external 'InterfaceLib';
- {************** from Events.p ***************}
- TYPE
- EventKind = UInt16;
- EventMask = UInt16;
- EventModifiers = UInt16;
- TYPE
- EventRecordPtr = ^EventRecord;
- EventRecord = RECORD
- what: EventKind;
- message: UInt32;
- when: UInt32;
- where: Point;
- modifiers: EventModifiers;
- END;
- {************** from Processes.p ***************}
- type
- ProcessSerialNumberPtr = ^ProcessSerialNumber;
- ProcessSerialNumber = record
- highLongOfPSN: LONGINT;
- lowLongOfPSN: LONGINT;
- end;
- const
- { Process identifier - Various reserved process serial numbers }
- kNoProcess = 0;
- kSystemProcess = 1;
- kCurrentProcess = 2;
- TYPE
- LaunchFlags = UInt16;
- CONST
- launchContinue = $4000;
- launchNoFileFlags = $0800;
- launchUseMinimum = $0400;
- launchDontSwitch = $0200;
- launchAllow24Bit = $0100;
- launchInhibitDaemon = $0080;
- { Format for first AppleEvent to pass to new process. The size of the overall
- buffer variable: the message body immediately follows the messageLength }
- TYPE
- AppParametersPtr = ^AppParameters;
- AppParameters = RECORD
- theMsgEvent: EventRecord;
- eventRefCon: UInt32;
- messageLength: UInt32;
- END;
- { Parameter block to _Launch }
- LaunchParamBlockRecPtr = ^LaunchParamBlockRec;
- LaunchParamBlockRec = RECORD
- reserved1: UInt32;
- reserved2: UInt16;
- launchBlockID: UInt16;
- launchEPBLength: UInt32;
- launchFileFlags: UInt16;
- launchControlFlags: LaunchFlags;
- launchAppSpec: FSSpecPtr;
- launchProcessSN: ProcessSerialNumber;
- launchPreferredSize: UInt32;
- launchMinimumSize: UInt32;
- launchAvailableSize: UInt32;
- launchAppParameters: AppParametersPtr;
- END;
- LaunchPBPtr = ^LaunchParamBlockRec;
- CONST
- extendedBlock = $4C43; { 'LC' }
- extendedBlockLen = 32;
- TYPE
- ProcessInfoRec = record
- processInfoLength: LONGINT;
- processName: StringPtr;
- processNumber: ProcessSerialNumber;
- processType: LONGINT;
- processSignature: OSType;
- processMode: LONGINT;
- processLocation: Mac_Ptr;
- processSize: LONGINT;
- processFreeMem: LONGINT;
- processLauncher: ProcessSerialNumber;
- processLaunchDate: LONGINT;
- processActiveTime: LONGINT;
- processAppSpec: FSSpecPtr;
- end;
- ProcessInfoRecPtr = ^ProcessInfoRec;
- FUNCTION LaunchApplication(LaunchParams: LaunchPBPtr): OSErr;
- external 'InterfaceLib';
- function GetProcessInformation ({CONST} var PSN: ProcessSerialNumber;
- var info: ProcessInfoRec): OSErr;
- external 'InterfaceLib';
- {************** from Script.p ***************}
- const
- smSystemScript = -1;
- {************** from MacErrors.p ***************}
- {Contains error codes for all File Manager calls, except
- for PBVolumeMount and for File ID Routines (from UI 3.4).
- And also memFullErr}
- const
- dirFulErr = -33; { Directory full }
- dskFulErr = -34; { disk full }
- nsvErr = -35; { no such volume }
- ioErr = -36; { I/O error (bummers) }
- bdNamErr = -37; { there may be no bad names in the final system! }
- fnOpnErr = -38; { File not open }
- eofErr = -39; { End of file }
- posErr = -40; { tried to position to before start of file (r/w) }
- mFulErr = -41; { memory full (open) or file won't fit (load) }
- tmfoErr = -42; { too many files open }
- fnfErr = -43; { File not found }
- wPrErr = -44; { diskette is write protected. }
- fLckdErr = -45; { file is locked }
- vLckdErr = -46; { volume is locked }
- fBsyErr = -47; { File is busy (delete) }
- dupFNErr = -48; { duplicate filename (rename) }
- opWrErr = -49; { file already open with with write permission }
- rfNumErr = -51; { refnum error }
- gfpErr = -52; { get file position error }
- volOffLinErr=-53; { volume not on line error (was Ejected) }
- permErr = -54; { permissions error (on file open) }
- volOnLinErr= -55; { drive volume already on-line at MountVol }
- nsDrvErr = -56; { no such drive (tried to mount a bad drive num) }
- noMacDskErr= -57; { not a mac diskette (sig bytes are wrong) }
- extFSErr = -58; { volume in question belongs to an external fs }
- fsRnErr = -59; { file system internal error:during rename the old entry was deleted but could not be restored. }
- badMDBErr = -60; { bad master directory block }
- wrPermErr = -61; { write permissions error }
- dirNFErr = -120; { Directory not found }
- tmwdoErr = -121; { No free WDCB available }
- badMovErr = -122; { Move into offspring error }
- wrgVolTypErr=-123; { Wrong volume type error [operation not supported for MFS] }
- volGoneErr = -124; { Server volume has been disconnected. }
- { Process Manager errors }
- procNotFound = -600; { no eligible process with specified descriptor }
- memFragErr = -601; { not enough room to launch app w/special requirements }
- appModeErr = -602; { memory mode is 32-bit, but app not 32-bit clean }
- protocolErr = -603; { app made module calls in improper order }
- hardwareConfigErr = -604; { hardware configuration not correct for call }
- appMemFullErr = -605; { application SIZE not big enough for launch }
- appIsDaemon = -606; { app is BG-only, and launch flags disallow this }
- bufferIsSmall = -607; { error returns from Post and Accept }
- noOutstandingHLE = -608;
- connectionInvalid = -609;
- noUserInteractionAllowed = -610; { no user interaction allowed }
- diffVolErr = -1303; { files on different volumes }
- catChangedErr= -1304; { the catalog has been modified }
- afpAccessDenied= -5000; { Insufficient access privileges for operation }
- afpDenyConflict= -5006; { Specified open/deny modes conflict with current open modes }
- afpItemNotFound = -5012;{ Unknown UserName/UserID or missing comment/APPL entry }
- afpNoMoreLocks= -5015; { Maximum lock limit reached }
- afpRangeNotLocked= -5020; { Tried to unlock range that was not locked by user }
- afpRangeOverlap= -5021; { Some or all of range already locked by same user }
- afpObjectTypeErr= -5025; { File/Directory specified where Directory/File expected }
- afpCatalogChanged= -5037;
- afpSameObjectErr= -5038;
- memFullErr = -108; { Not enough room in heap zone }
- {************** from Resources ***************}
- function GetResource(theType: ResType; theID: Integer): Mac_Handle;
- external 'InterfaceLib';
- function Get1Resource(theType: ResType; theID: Integer): Mac_Handle;
- external 'InterfaceLib';
- function GetNamedResource(theType: ResType; name: Str255): Mac_Handle;
- external 'InterfaceLib';
- function Get1NamedResource(theType: ResType; name: Str255): Mac_Handle;
- external 'InterfaceLib';
- procedure ReleaseResource(theResource: Mac_Handle);
- external 'InterfaceLib';
- {************** from DateTimeUtils ***************}
- type
- DateTimeRecPtr = ^DateTimeRec;
- DateTimeRec = RECORD
- year: INTEGER;
- month: INTEGER;
- day: INTEGER;
- hour: INTEGER;
- minute: INTEGER;
- second: INTEGER;
- dayOfWeek: INTEGER;
- END;
- PROCEDURE GetTime(var d: DateTimeRec);
- external 'InterfaceLib';
- PROCEDURE SetTime(var d: DateTimeRec);
- //PROCEDURE SetTime(const d: DateTimeRec);
- external 'InterfaceLib';
- PROCEDURE DateToSeconds({CONST}VAR d: DateTimeRec; VAR secs: UInt32);
- external 'InterfaceLib';
- PROCEDURE SecondsToDate(secs: UInt32; VAR d: DateTimeRec);
- external 'InterfaceLib';
- {************** from TextUtils ***************}
- PROCEDURE UpperString(VAR theString: Str255; diacSensitive: BOOLEAN);
- external 'InterfaceLib';
- {************** from Quickdraw ***************}
- TYPE
- { this was called 'Bits16', but that conflicts with softfpu internal types on m68k (KB) }
- MacBits16 = ARRAY [0..15] OF INTEGER;
- PatternPtr = ^Pattern;
- Pattern = RECORD
- pat: PACKED ARRAY [0..7] OF UInt8;
- END;
- PatPtr = ^Pattern;
- BitMapPtr = ^BitMap;
- BitMap = RECORD
- baseAddr: pointer;
- rowBytes: INTEGER;
- bounds: Rect;
- END;
- BitMapHandle = ^BitMapPtr;
- CursorPtr = ^Cursor;
- Cursor = RECORD
- data: MacBits16;
- mask: MacBits16;
- hotSpot: Point;
- END;
- CursPtr = ^Cursor;
- GrafPtr = pointer; //TODO Should actually point to a GrafPort.
- QDGlobalsPtr = ^QDGlobals;
- QDGlobals = RECORD
- privates: PACKED ARRAY [0..75] OF CHAR;
- randSeed: LONGINT; { in Carbon use GetQDGlobalsRandomSeed }
- screenBits: BitMap; { in Carbon use GetQDGlobalsScreenBits }
- arrow: Cursor; { in Carbon use GetQDGlobalsArrow }
- dkGray: Pattern; { in Carbon use GetQDGlobalsDarkGray }
- ltGray: Pattern; { in Carbon use GetQDGlobalsLightGray }
- gray: Pattern; { in Carbon use GetQDGlobalsGray }
- black: Pattern; { in Carbon use GetQDGlobalsBlack }
- white: Pattern; { in Carbon use GetQDGlobalsWhite }
- thePort: GrafPtr; { in Carbon use GetQDGlobalsThePort }
- END;
- QDGlobalsHdl = ^QDGlobalsPtr;
- PROCEDURE InitGraf(globalPtr: Mac_Ptr);
- external 'InterfaceLib';
- {************** from Fonts ***************}
- PROCEDURE SetFScaleDisable(fscaleDisable: BOOLEAN);
- external 'InterfaceLib';
- {************** from AEDataModel ***************}
- { Apple event descriptor types }
- CONST
- typeBoolean = 'bool';
- typeChar = 'TEXT';
- { Preferred numeric Apple event descriptor types }
- typeSInt16 = 'shor';
- typeSInt32 = 'long';
- typeUInt32 = 'magn';
- typeSInt64 = 'comp';
- typeIEEE32BitFloatingPoint = 'sing';
- typeIEEE64BitFloatingPoint = 'doub';
- type128BitFloatingPoint = 'ldbl';
- typeDecimalStruct = 'decm';
- { Non-preferred Apple event descriptor types }
- typeSMInt = 'shor';
- typeShortInteger = 'shor';
- typeInteger = 'long';
- typeLongInteger = 'long';
- typeMagnitude = 'magn';
- typeComp = 'comp';
- typeSMFloat = 'sing';
- typeShortFloat = 'sing';
- typeFloat = 'doub';
- typeLongFloat = 'doub';
- typeExtended = 'exte';
- typeApplSignature = 'sign';
- { Constants used creating an AppleEvent }
- { Constant for the returnID param of AECreateAppleEvent }
- kAutoGenerateReturnID = -1; { AECreateAppleEvent will generate a session-unique ID }
- { Constant for transaction IDÕs }
- kAnyTransactionID = 0; { no transaction is in use }
- { Apple event manager data types }
- TYPE
- DescType = ResType;
- AEKeyword = FourCharCode;
- {$IFDEF OPAQUE_TOOLBOX_STRUCTS }
- AEDataStorage = ^LONGINT; { an opaque 32-bit type }
- AEDataStoragePtr = ^AEDataStorage; { when a VAR xx:AEDataStorage parameter can be nil, it is changed to xx: AEDataStoragePtr }
- {$ELSE}
- AEDataStorage = Mac_Handle;
- {$ENDIF OPAQUE_TOOLBOX_STRUCTS}
- AEDescPtr = ^AEDesc;
- AEDesc = RECORD
- descriptorType: DescType;
- dataHandle: AEDataStorage;
- END;
- AEKeyDescPtr = ^AEKeyDesc;
- AEKeyDesc = RECORD
- descKey: AEKeyword;
- descContent: AEDesc;
- END;
- { a list of AEDesc's is a special kind of AEDesc }
- AEDescList = AEDesc;
- AEDescListPtr = ^AEDescList;
- { AERecord is a list of keyworded AEDesc's }
- AERecord = AEDescList;
- AERecordPtr = ^AERecord;
- { an AEDesc which contains address data }
- AEAddressDesc = AEDesc;
- AEAddressDescPtr = ^AEAddressDesc;
- { an AERecord that contains an AppleEvent, and related data types }
- AppleEvent = AERecord;
- AppleEventPtr = ^AppleEvent;
- AEReturnID = SInt16;
- AETransactionID = SInt32;
- AEEventClass = FourCharCode;
- AEEventID = FourCharCode;
- AEArrayType = SInt8;
- TYPE
- AESendPriority = SInt16;
- CONST
- kAENormalPriority = $00000000; { post message at the end of the event queue }
- kAEHighPriority = $00000001; { post message at the front of the event queue (same as nAttnMsg) }
- TYPE
- AESendMode = SInt32;
- CONST
- kAENoReply = $00000001; { sender doesn't want a reply to event }
- kAEQueueReply = $00000002; { sender wants a reply but won't wait }
- kAEWaitReply = $00000003; { sender wants a reply and will wait }
- kAEDontReconnect = $00000080; { don't reconnect if there is a sessClosedErr from PPCToolbox }
- kAEWantReceipt = $00000200; { (nReturnReceipt) sender wants a receipt of message }
- kAENeverInteract = $00000010; { server should not interact with user }
- kAECanInteract = $00000020; { server may try to interact with user }
- kAEAlwaysInteract = $00000030; { server should always interact with user where appropriate }
- kAECanSwitchLayer = $00000040; { interaction may switch layer }
- kAEDontRecord = $00001000; { don't record this event - available only in vers 1.0.1 and greater }
- kAEDontExecute = $00002000; { don't send the event for recording - available only in vers 1.0.1 and greater }
- kAEProcessNonReplyEvents = $00008000; { allow processing of non-reply events while awaiting synchronous AppleEvent reply }
- { Constants for timeout durations }
- kAEDefaultTimeout = -1; { timeout value determined by AEM }
- kNoTimeOut = -2; { wait until reply comes back, however long it takes }
- FUNCTION AECreateDesc(typeCode: DescType; dataPtr: Mac_Ptr; dataSize: Size; VAR result: AEDesc): OSErr;
- external 'InterfaceLib';
- FUNCTION AEDisposeDesc(VAR theAEDesc: AEDesc): OSErr;
- external 'InterfaceLib';
- FUNCTION AEDuplicateDesc(var theAEDesc: AEDesc; VAR result: AEDesc): OSErr;
- external 'InterfaceLib';
- FUNCTION AECreateAppleEvent(theAEEventClass: AEEventClass; theAEEventID: AEEventID; var target: AEAddressDesc;
- returnID: AEReturnID; transactionID: AETransactionID; VAR result: AppleEvent): OSErr;
- external 'InterfaceLib';
- FUNCTION AEPutParamPtr(VAR theAppleEvent: AppleEvent; theAEKeyword: AEKeyword; typeCode: DescType; dataPtr: Mac_Ptr; dataSize: Size): OSErr;
- external 'InterfaceLib';
- FUNCTION AEGetParamDesc(var theAppleEvent: AppleEvent; theAEKeyword: AEKeyword; desiredType: DescType; VAR result: AEDesc): OSErr;
- external 'InterfaceLib';
- {************** from AEInteraction ***************}
- type
- AEIdleUPP = ^LONGINT; { an opaque UPP }
- AEFilterUPP = ^LONGINT; { an opaque UPP }
- FUNCTION AESend(var theAppleEvent: AppleEvent; VAR reply: AppleEvent; sendMode: AESendMode; sendPriority: AESendPriority;
- timeOutInTicks: LONGINT; idleProc: AEIdleUPP; filterProc: AEFilterUPP): OSErr;
- external 'InterfaceLib';
- {************** from others ***************}
- procedure ExitToShell;
- external 'InterfaceLib';
- procedure SysBeep(dur: Integer);
- external 'InterfaceLib';
- function TickCount: Longint;
- external 'InterfaceLib';
- function Munger (h: Mac_Handle; offset: LONGINT; ptr1: Mac_Ptr;
- len1: LONGINT; ptr2: Mac_Ptr; len2: LONGINT): LONGINT;
- external 'InterfaceLib';
- {************** misc MPW support routines ***************}
- FUNCTION ResolveFolderAliases (volume: INTEGER; directory: LONGINT;
- path: StringPtr; resolveLeafName: BOOLEAN;
- VAR theSpec: FSSpec; VAR isFolder, hadAlias,
- leafIsAlias: BOOLEAN): OSErr;
- external 'InterfaceLib'; {??}
- { ...from CIncludes:IntEnv.h }
- PROCEDURE InitCursorCtl(newCursors: pointer);
- external 'PPCToolLib';
- PROCEDURE SpinCursor(increment: INTEGER);
- external 'PPCToolLib';
- {************** API to StdCLib in MacOS ***************}
- {$ifdef MACOS_USE_STDCLIB}
- {The prefix C_ or c_ is used where names conflicts with pascal
- keywords and names. Suffix Ptr is added for pointer to a type.}
- type
- size_t = Longint;
- off_t = Longint;
- C_int = Longint;
- C_short = Integer;
- C_long = Longint;
- C_unsigned_int = Cardinal;
- var
- errno: C_int; external 'StdCLib' name 'errno';
- MacOSErr: C_short; external 'StdCLib' name 'MacOSErr';
- const
- _IOFBF = $00;
- _IOLBF = $40;
- _IONBF = $04;
- O_RDONLY = $00; // Open for reading only.
- O_WRONLY = $01; // Open for writing only.
- O_RDWR = $02; // Open for reading & writing.
- O_APPEND = $08; // Write to the end of the file.
- O_RSRC = $10; // Open the resource fork.
- O_ALIAS = $20; // Open alias file.
- O_CREAT = $100; // Open or create a file.
- O_TRUNC = $200; // Open and truncate to zero length.
- O_EXCL = $400; // Create file only; fail if exists.
- O_BINARY = $800; // Open as a binary stream.
- O_NRESOLVE = $4000; // Don't resolve any aliases.
- SEEK_SET = 0;
- SEEK_CUR = 1;
- SEEK_END = 2;
- FIOINTERACTIVE = $00006602; // If device is interactive
- FIOBUFSIZE = $00006603; // Return optimal buffer size
- FIOFNAME = $00006604; // Return filename
- FIOREFNUM = $00006605; // Return fs refnum
- FIOSETEOF = $00006606; // Set file length
- TIOFLUSH = $00007408; // discard unread input. arg is ignored
- function c_open(path: PChar; oflag: C_int): C_int; cdecl;
- external 'StdCLib' name 'open';
- function c_close(filedes: C_int): C_int; cdecl;
- external 'StdCLib' name 'close';
- function c_write(filedes: C_int; buf: pointer; nbyte: size_t): size_t; cdecl;
- external 'StdCLib' name 'write';
- function c_read(filedes: C_int; buf: pointer; nbyte: size_t): size_t; cdecl;
- external 'StdCLib' name 'read';
- function lseek(filedes: C_int; offset: off_t; whence: C_int): off_t; cdecl;
- external 'StdCLib' name 'lseek';
- function ioctl(filedes: C_int; cmd: C_unsigned_int; arg: pointer): C_int; cdecl;
- external 'StdCLib' name 'ioctl';
- function remove(filename: PChar): C_int; cdecl;
- external 'StdCLib';
- function c_rename(old, c_new: PChar): C_int; cdecl;
- external 'StdCLib' name 'rename';
- procedure c_exit(status: C_int); cdecl;
- external 'StdCLib' name 'exit';
- {cdecl is actually only needed for m68k}
- var
- {Is set to zero for MPWTool, nonzero otherwise.}
- StandAlone: C_int; external name 'StandAlone';
- CONST
- Sys_EPERM = 1; { No permission match }
- Sys_ENOENT = 2; { No such file or directory }
- Sys_ENORSRC = 3; { Resource not found *}
- Sys_EINTR = 4; { System service interrupted *}
- Sys_EIO = 5; { I/O error }
- Sys_ENXIO = 6; { No such device or address }
- Sys_E2BIG = 7; { Insufficient space for return argument * }
- Sys_ENOEXEC = 8; { File not executable * }
- Sys_EBADF = 9; { Bad file number }
- Sys_ECHILD = 10; { No child processes }
- Sys_EAGAIN = 11; { Resource temporarily unavailable * }
- Sys_ENOMEM = 12; { Not enough space * }
- Sys_EACCES = 13; { Permission denied }
- Sys_EFAULT = 14; { Illegal filename * }
- Sys_ENOTBLK = 15; { Block device required }
- Sys_EBUSY = 16; { Device or resource busy }
- Sys_EEXIST = 17; { File exists }
- Sys_EXDEV = 18; { Cross-device link }
- Sys_ENODEV = 19; { No such device }
- Sys_ENOTDIR = 20; { Not a directory }
- Sys_EISDIR = 21; { Is a directory }
- Sys_EINVAL = 22; { Invalid parameter * }
- Sys_ENFILE = 23; { File table overflow }
- Sys_EMFILE = 24; { Too many open files }
- Sys_ENOTTY = 25; { Not a typewriter }
- Sys_ETXTBSY = 26; { Text file busy. The new process was
- a pure procedure (shared text) file which was
- open for writing by another process, or file
- which was open for writing by another process,
- or while the pure procedure file was being
- executed an open(2) call requested write access
- requested write access.
- (Probably not applicable on macos)}
- Sys_EFBIG = 27; { File too large }
- Sys_ENOSPC = 28; { No space left on device }
- Sys_ESPIPE = 29; { Illegal seek }
- Sys_EROFS = 30; { Read-only file system }
- Sys_EMLINK = 31; { Too many links }
- Sys_EPIPE = 32; { Broken pipe }
- Sys_EDOM = 33; { Math argument out of domain of func }
- Sys_ERANGE = 34; { Math result not representable }
- { Note * is slightly different, compared to rtl/sunos/errno.inc}
- {$endif}
- {$PACKRECORDS NORMAL}
|