123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408 |
- {
- $Id$
- This file is part of the Free Pascal run time library.
- Copyright (c) 2003 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.}
- {************** from Types.p ***************}
- const
- noErr = 0;
- type
- SignedByte = shortint;
- SInt8 = SignedByte;
- SignedBytePtr = ^SignedByte;
- OSErr = Integer;
- OSType = Longint;
- 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';
- {************** from OSUtils.p ***************}
- type
- QElemPtr = ^QElem;
- QElem = record
- qLink: QElemPtr;
- qType: INTEGER;
- qData: array[0..0] of INTEGER;
- end;
- {************** 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
- IOCompletionUPP = UniversalProcPtr;
- 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;
- FSSpec = record
- vRefNum: Integer;
- parID: Longint;
- name: Str63;
- end;
- FSSpecPtr = ^FSSpec;
- function MemError: OSErr;
- external 'InterfaceLib';
- function FSpOpenDF(spec: FSSpec; permission: SignedByte;
- var refNum: Integer): OSErr;
- external 'InterfaceLib';
- function FSpCreate(spec: FSSpec; creator, fileType: OSType;
- scriptTag: ScriptCode): 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 GetFPos(refNum: Integer; var filePos: Longint): OSErr;
- external 'InterfaceLib';
- function SetFPos(refNum: Integer; posMode: Integer; posOff: Longint): OSErr;
- external 'InterfaceLib';
- function GetEOF(refNum: Integer; var logEOF: Longint): OSErr;
- external 'InterfaceLib';
- function SetEOF(refNum: Integer; logEOF: Longint): OSErr;
- external 'InterfaceLib';
- function FSMakeFSSpec (vRefNum: Integer; dirID: LongInt;
- fileName: Str255; VAR spec: FSSpec): OSErr;
- external 'InterfaceLib';
- function FSpDirCreate(spec: FSSpec; scriptTag: ScriptCode;
- var createdDirID: Longint): OSErr;
- external 'InterfaceLib';
- function FSpDelete(spec: FSSpec): OSErr;
- external 'InterfaceLib';
- function PBGetCatInfoSync (paramBlock: CInfoPBPtr): 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 Processes.p ***************}
- type
- ProcessSerialNumber = record
- highLongOfPSN: LONGINT;
- lowLongOfPSN: LONGINT;
- end;
- ProcessSerialNumberPtr = ^ProcessSerialNumber;
- 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;
- const
- { Process identifier - Various reserved process serial numbers }
- kNoProcess = 0;
- kSystemProcess = 1;
- kCurrentProcess = 2;
- 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. }
- 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 }
- 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 others ***************}
- procedure ExitToShell;
- external 'InterfaceLib';
- procedure SysBeep(dur: Integer);
- external 'SysBeep';
- 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';
|