fpc/rtl/aros/doslibd.inc
Michael VAN CANNEYT 1852006c61 * Char -> AnsiChar
2023-07-14 17:26:09 +02:00

1372 lines
36 KiB
PHP

{
This file is part of the Free Pascal run time library.
dos definitions (V50) for MorphOS/PowerPC
Copyright (c) 2002 The MorphOS Development Team, All Rights Reserved.
Free Pascal conversion
Copyright (c) 2004 Karoly Balogh for Genesi S.a.r.l. <www.genesi.lu>
AROS conversion
Copyright (c) 2011 Marcus Sackrow
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.
**********************************************************************}
{ * dos global definitions
*********************************************************************
* }
const // Checked OK 04.08.2011 ALB
DOSNAME = 'dos.library';
const // Checked OK 04.08.2011 ALB
DOSTRUE = -1;
DOSFALSE = 0;
const // Checked OK 04.08.2011 ALB
MODE_OLDFILE = 1005;
MODE_NEWFILE = 1006;
MODE_READWRITE = 1004;
const // Checked OK 04.08.2011 ALB
OFFSET_BEGINNING = -1;
OFFSET_CURRENT = 0;
OFFSET_END = 1;
const // Checked OK 04.08.2011 ALB
BITSPERBYTE = 8;
BYTESPERLONG = 4;
BITSPERLONG = 32;
_MAXINT = $7FFFFFFF;
_MININT = $80000000;
const // Checked OK 04.08.2011 ALB
SHARED_LOCK = -2;
ACCESS_READ = SHARED_LOCK;
EXCLUSIVE_LOCK = -1;
ACCESS_WRITE = EXCLUSIVE_LOCK;
type // Checked OK 04.08.2011 ALB
PDateStamp = ^TDateStamp;
TDateStamp = record
ds_Days : LongInt;
ds_Minute: LongInt;
ds_Tick : LongInt;
end;
const // Checked OK 04.08.2011 ALB
TICKS_PER_SECOND = 50;
const // Checked OK 04.08.2011 ALB
MAXFILENAMELENGTH = 108;
MAXCOMMENTLENGTH = 80;
type // Checked OK 04.08.2011 ALB
PFileInfoBlock = ^TFileInfoBlock;
TFileInfoBlock = record
fib_DiskKey : PtrUInt;
fib_DirEntryType: LongInt;
fib_FileName : array[0..MAXFILENAMELENGTH - 1] of AnsiChar;
fib_Protection : LongInt;
fib_EntryType : LongInt;
fib_Size : LongInt;
fib_NumBlocks : LongInt;
fib_Date : TDateStamp;
fib_Comment : Array[0..MAXCOMMENTLENGTH - 1] Of AnsiChar;
fib_OwnerUID : Word;
fib_OwnerGID : Word;
fib_Reserved : array[0..31] of AnsiChar;
end;
const // Checked OK 04.08.2011 ALB
FIBB_OTR_READ = 15;
FIBB_OTR_WRITE = 14;
FIBB_OTR_EXECUTE = 13;
FIBB_OTR_DELETE = 12;
FIBB_GRP_READ = 11;
FIBB_GRP_WRITE = 10;
FIBB_GRP_EXECUTE = 9;
FIBB_GRP_DELETE = 8;
FIBB_SCRIPT = 6; // File is a script (DOS or ARexx).
FIBB_PURE = 5; // Make program resident on execution.
FIBB_ARCHIVE = 4; // File was archived (not used by OS).
FIBB_READ = 3; // File is readable.
FIBB_WRITE = 2; // File is writable.
FIBB_EXECUTE = 1; // File is executable (no scripts!).
FIBB_DELETE = 0; // File is deleteable.
const // Checked OK 04.08.2011 ALB
FIBF_OTR_READ = (1 shl FIBB_OTR_READ);
FIBF_OTR_WRITE = (1 shl FIBB_OTR_WRITE);
FIBF_OTR_EXECUTE = (1 shl FIBB_OTR_EXECUTE);
FIBF_OTR_DELETE = (1 shl FIBB_OTR_DELETE);
FIBF_GRP_READ = (1 shl FIBB_GRP_READ);
FIBF_GRP_WRITE = (1 shl FIBB_GRP_WRITE);
FIBF_GRP_EXECUTE = (1 shl FIBB_GRP_EXECUTE);
FIBF_GRP_DELETE = (1 shl FIBB_GRP_DELETE);
FIBF_SCRIPT = (1 shl FIBB_SCRIPT);
FIBF_PURE = (1 shl FIBB_PURE);
FIBF_ARCHIVE = (1 shl FIBB_ARCHIVE);
FIBF_READ = (1 shl FIBB_READ);
FIBF_WRITE = (1 shl FIBB_WRITE);
FIBF_EXECUTE = (1 shl FIBB_EXECUTE);
FIBF_DELETE = (1 shl FIBB_DELETE);
const // Checked OK 04.08.2011 ALB
FAULT_MAX = 82;
type // Checked OK 04.08.2011 ALB
BPTR = PtrInt;
BSTR = Pointer;
type // Checked OK 04.08.2011 ALB
PInfoData = ^TInfoData;
TInfoData = record
id_NumSoftErrors: LongInt; // Number of soft errors on device.
id_UnitNumber : LongInt; // Unit number of device.
id_DiskState : LongInt; // State the current volume is in (see below).
id_NumBlocks : LongInt; // Number of blocks on device.
id_NumBlocksUsed: LongInt; // Number of blocks in use.
id_BytesPerBlock: LongInt; // Bytes per block.
id_DiskType : LongInt; // Type of disk (see below).
id_VolumeNode : BPTR;
id_InUse : PtrUInt; // Set, if device is in use.
end;
const // Checked OK 04.08.2011 ALB
ID_WRITE_PROTECTED = 80;
ID_VALIDATING = 81;
ID_VALIDATED = 82;
ID_NO_DISK_PRESENT = -1;
ID_UNREADABLE_DISK = $42414400;
ID_DOS_DISK = $444F5300;
ID_FFS_DISK = $444F5301;
ID_INTER_DOS_DISK = $444F5302;
ID_INTER_FFS_DISK = $444F5303;
ID_FASTDIR_DOS_DISK = $444F5304;
ID_FASTDIR_FFS_DISK = $444F5305;
ID_LNFS_DOS_DISK = $444F5306;
ID_LNFS_FFS_DISK = $444F5307;
ID_NOT_REALLY_DOS = $4E444F53;
ID_KICKSTART_DISK = $4B49434B;
ID_MSDOS_DISK = $4d534400;
ID_SFS_BE_DISK = $53465330;
ID_SFS_LE_DISK = $73667330;
const // Checked OK 04.08.2011 ALB
ERROR_UNKNOWN = 100;
ERROR_NO_FREE_STORE = 103;
ERROR_TASK_TABLE_FULL = 105;
ERROR_BAD_TEMPLATE = 114;
ERROR_BAD_NUMBER = 115;
ERROR_REQUIRED_ARG_MISSING = 116;
ERROR_KEY_NEEDS_ARG = 117;
ERROR_TOO_MANY_ARGS = 118;
ERROR_UNMATCHED_QUOTES = 119;
ERROR_LINE_TOO_LONG = 120;
ERROR_FILE_NOT_OBJECT = 121;
ERROR_INVALID_RESIDENT_LIBRARY = 122;
ERROR_NO_DEFAULT_DIR = 201;
ERROR_OBJECT_IN_USE = 202;
ERROR_OBJECT_EXISTS = 203;
ERROR_DIR_NOT_FOUND = 204;
ERROR_OBJECT_NOT_FOUND = 205;
ERROR_BAD_STREAM_NAME = 206;
ERROR_OBJECT_TOO_LARGE = 207;
ERROR_ACTION_NOT_KNOWN = 209;
ERROR_INVALID_COMPONENT_NAME = 210;
ERROR_INVALID_LOCK = 211;
ERROR_OBJECT_WRONG_TYPE = 212;
ERROR_DISK_NOT_VALIDATED = 213;
ERROR_DISK_WRITE_PROTECTED = 214;
ERROR_RENAME_ACROSS_DEVICES = 215;
ERROR_DIRECTORY_NOT_EMPTY = 216;
ERROR_TOO_MANY_LEVELS = 217;
ERROR_DEVICE_NOT_MOUNTED = 218;
ERROR_SEEK_ERROR = 219;
ERROR_COMMENT_TOO_BIG = 220;
ERROR_DISK_FULL = 221;
ERROR_DELETE_PROTECTED = 222;
ERROR_WRITE_PROTECTED = 223;
ERROR_READ_PROTECTED = 224;
ERROR_NOT_A_DOS_DISK = 225;
ERROR_NO_DISK = 226;
ERROR_NO_MORE_ENTRIES = 232;
ERROR_IS_SOFT_LINK = 233;
ERROR_OBJECT_LINKED = 234;
ERROR_BAD_HUNK = 235;
ERROR_NOT_IMPLEMENTED = 236;
ERROR_RECORD_NOT_LOCKED = 240;
ERROR_LOCK_COLLISION = 241;
ERROR_LOCK_TIMEOUT = 242;
ERROR_UNLOCK_ERROR = 243;
const // Checked OK 04.08.2011 ALB
RETURN_OK = 0;
RETURN_WARN = 5;
RETURN_ERROR = 10;
RETURN_FAIL = 20;
const // Checked OK 04.08.2011 ALB
SIGBREAKB_CTRL_C = 12;
SIGBREAKB_CTRL_D = 13;
SIGBREAKB_CTRL_E = 14;
SIGBREAKB_CTRL_F = 15;
SIGBREAKF_CTRL_C = (1 shl SIGBREAKB_CTRL_C);
SIGBREAKF_CTRL_D = (1 shl SIGBREAKB_CTRL_D);
SIGBREAKF_CTRL_E = (1 shl SIGBREAKB_CTRL_E);
SIGBREAKF_CTRL_F = (1 shl SIGBREAKB_CTRL_F);
const // Checked OK 04.08.2011 ALB
LOCK_DIFFERENT = -1;
LOCK_SAME = 0;
LOCK_SAME_VOLUME = 1;
const // Checked OK 04.08.2011 ALB
CHANGE_LOCK = 0;
CHANGE_FH = 1;
const // Checked OK 04.08.2011 ALB
LINK_HARD = 0;
LINK_SOFT = 1;
const // Checked OK 04.08.2011 ALB
ITEM_EQUAL = -2;
ITEM_ERROR = -1;
ITEM_NOTHING = 0;
ITEM_UNQUOTED = 1;
ITEM_QUOTED = 2;
const // Checked OK 04.08.2011 ALB
DOS_FILEHANDLE = 0;
DOS_EXALLCONTROL = 1;
DOS_FIB = 2;
DOS_STDPKT = 3;
DOS_CLI = 4;
DOS_RDARGS = 5;
{ * dos date/time definitions
*********************************************************************
* }
type // Checked OK 04.08.2011 ALB
{ * Required to avoid conflict with default types * }
_PDateTime = ^_TDateTime;
_TDateTime = record
dat_Stamp : TDateStamp;
dat_Format : Byte;
dat_Flags : Byte;
dat_StrDay : PByte;
dat_StrDate: PByte;
dat_StrTime: PByte;
end;
const // Checked OK 04.08.2011 ALB
LEN_DATSTRING = 16;
const // Checked OK 04.08.2011 ALB
DTB_SUBST = 0;
DTF_SUBST = (1 Shl DTB_SUBST);
DTB_FUTURE = 1;
DTF_FUTURE = (1 Shl DTB_FUTURE);
const // Checked OK 04.08.2011 ALB
FORMAT_DOS = 0;
FORMAT_INT = 1;
FORMAT_USA = 2;
FORMAT_CDN = 3;
FORMAT_MAX = FORMAT_CDN;
FORMAT_DEF = 4;
{ * dos extended structures definitions
*********************************************************************
* }
type // Checked OK 04.08.2011 ALB
PProcess = ^TProcess;
TProcess = record
pr_Task : TTask; // Embedded task structure
pr_MsgPort : TMsgPort; // Processes standard message-port. Used for various puposes.
pr_Pad : Word; // Private
pr_SegList : BPTR; // SegList array, used by this process.
pr_StackSize : LongInt; // StackSize of the current process.
pr_GlobVec : Pointer;
pr_TaskNum : LongInt; // CLI process number. This may be 0, in which case the process is not connected to a CLI.
pr_StackBase : BPTR; // Pointer to upper end of stack.
pr_Result2 : PtrInt; // Secondary return-value
pr_CurrentDir : BPTR; // Lock of the current directory
pr_CIS : BPTR; { BPTR }
pr_COS : BPTR; { BPTR }
pr_ConsoleTask : Pointer;
pr_FileSystemTask: Pointer;
pr_CLI : BPTR; { BPTR }
pr_ReturnAddr : Pointer;
pr_PktWait : Pointer;
pr_WindowPtr : Pointer;
pr_HomeDir : BPTR; { BPTR }
pr_Flags : LongInt;
pr_ExitCode : Pointer; { Procedure }
pr_ExitData : PtrUInt;
pr_Arguments : PAnsiChar;
pr_LocalVars : TMinList;
pr_ShellPrivate : DWord;
pr_CES : BPTR; { BPTR }
end;
const // Checked OK 04.08.2011 ALB
PRB_FREESEGLIST = 0;
PRF_FREESEGLIST = (1 shl PRB_FREESEGLIST);
PRB_FREECURRDIR = 1;
PRF_FREECURRDIR = (1 shl PRB_FREECURRDIR);
PRB_FREECLI = 2;
PRF_FREECLI = (1 shl PRB_FREECLI);
PRB_CLOSEINPUT = 3;
PRF_CLOSEINPUT = (1 shl PRB_CLOSEINPUT);
PRB_CLOSEOUTPUT = 4;
PRF_CLOSEOUTPUT = (1 shl PRB_CLOSEOUTPUT);
PRB_FREEARGS = 5;
PRF_FREEARGS = (1 shl PRB_FREEARGS);
PRB_CLOSEERROR = 6;
PRF_CLOSEERROR = (1 shl PRB_CLOSEERROR);
PRB_SYNCHRONOUS = 7;
PRF_SYNCHRONOUS = (1 shl PRB_SYNCHRONOUS);
PRB_WAITINGFORCHILD = 8; // This one is subject to change!
PRF_WAITINGFORCHILD = (1 shl PRB_WAITINGFORCHILD);
PRB_NOTIFYONDEATH = 9;
PRF_NOTIFYONDEATH = (1 shl PRB_NOTIFYONDEATH);
type // Checked OK 04.08.2011 ALB
PFileHandle = ^TFileHandle;
TFileHandle = record
// The next three are used with packet-based filesystems
fh_Flags : DWord;
fh_Interactive: LongInt; // packet reply port // alias -> fh_Port
fh_Type : PMsgPort; // port to send packets to
fh_Buf : BPTR;
fh_Pos : LongInt;
fh_End : LongInt;
fh_Func1 : PtrInt; // SIPTR
fh_Func2 : PtrInt; // SIPTR
fh_Func3 : PtrInt; // SIPTR
fh_Arg1 : PtrInt; // SIPTR
fh_Arg2 : PtrInt; // SIPTR
{ *** V39+ *** }
fh_BufSize : DWord;
fh_OrigBuf : BPTR;
end;
(* OBSOLETE *************************
type
PDOSPacket = ^TDOSPacket;
TDOSPacket = record
dp_Link: PMessage;
dp_Port: PMsgPort;
case Byte of
0 : ( dp_Action : Longint;
dp_Status : Longint;
dp_Status2: Longint;
dp_BufAddr: Longint;
);
1 : ( dp_Type: Longint;
dp_Res1: Longint;
dp_Res2: Longint;
dp_Arg1: Longint;
dp_Arg2: Longint;
dp_Arg3: Longint;
dp_Arg4: Longint;
dp_Arg5: Longint;
dp_Arg6: Longint;
dp_Arg7: Longint;
);
end;
type
PStandardPacket = ^TStandardPacket;
TStandardPacket = record
sp_Msg: TMessage;
sp_Pkt: TDOSPacket;
end;
const
ACTION_NIL = 0;
ACTION_STARTUP = 0;
ACTION_GET_BLOCK = 2; { *** OBSOLETE *** }
ACTION_SET_MAP = 4;
ACTION_DIE = 5;
ACTION_EVENT = 6;
ACTION_CURRENT_VOLUME = 7;
ACTION_LOCATE_OBJECT = 8;
ACTION_RENAME_DISK = 9;
ACTION_WRITE = 'W';
ACTION_READ = 'R';
ACTION_FREE_LOCK = 15;
ACTION_DELETE_OBJECT = 16;
ACTION_RENAME_OBJECT = 17;
ACTION_MORE_CACHE = 18;
ACTION_COPY_DIR = 19;
ACTION_WAIT_CHAR = 20;
ACTION_SET_PROTECT = 21;
ACTION_CREATE_DIR = 22;
ACTION_EXAMINE_OBJECT = 23;
ACTION_EXAMINE_NEXT = 24;
ACTION_DISK_INFO = 25;
ACTION_INFO = 26;
ACTION_FLUSH = 27;
ACTION_SET_COMMENT = 28;
ACTION_PARENT = 29;
ACTION_TIMER = 30;
ACTION_INHIBIT = 31;
ACTION_DISK_TYPE = 32;
ACTION_DISK_CHANGE = 33;
ACTION_SET_DATE = 34;
ACTION_SAME_LOCK = 40;
ACTION_SCREEN_MODE = 994;
ACTION_CHANGE_SIGNAL = 995;
ACTION_READ_RETURN = 1001;
ACTION_WRITE_RETURN = 1002;
ACTION_SEEK = 1008;
ACTION_FINDUPDATE = 1004;
ACTION_FINDINPUT = 1005;
ACTION_FINDOUTPUT = 1006;
ACTION_END = 1007;
ACTION_FORMAT = 1020;
ACTION_MAKE_LINK = 1021;
ACTION_SET_FILE_SIZE = 1022;
ACTION_WRITE_PROTECT = 1023;
ACTION_READ_LINK = 1024;
ACTION_FH_FROM_LOCK = 1026;
ACTION_IS_FILESYSTEM = 1027;
ACTION_CHANGE_MODE = 1028;
ACTION_COPY_DIR_FH = 1030;
ACTION_PARENT_FH = 1031;
ACTION_EXAMINE_ALL = 1033;
ACTION_EXAMINE_FH = 1034;
ACTION_EXAMINE_ALL_END = 1035;
ACTION_SET_OWNER = 1036;
ACTION_LOCK_RECORD = 2008;
ACTION_FREE_RECORD = 2009;
ACTION_ADD_NOTIFY = 4097;
ACTION_REMOVE_NOTIFY = 4098;
ACTION_SERIALIZE_DISK = 4200;
ACTION_GET_DISK_FSSM = 4201;
ACTION_FREE_DISK_FSSM = 4202;
*)
type // Checked OK 04.08.2011 ALB
PErrorString = ^TErrorString;
TErrorString = record
estr_Nums: PLongInt;
estr_Strings: PAnsiChar;
end;
type // Checked OK 04.08.2011 ALB
PRootNode = ^TRootNode;
TRootNode = record
rn_TaskArray : BPTR; { BPTR }
rn_ConsoleSegment : BPTR; { BPTR }
rn_Time : TDateStamp;
rn_RestartSeg : Pointer;
rn_Info : BPTR; { BPTR }
rn_FileHandlerSegment: BPTR; { BPTR }
rn_CliList : TMinList;
rn_BootProc : PMsgPort;
rn_ShellSegment : BPTR; { BPTR }
rn_Flags : LongInt;
// Aros Special
rn_RootLock : TSignalSemaphore;
end;
type // Checked OK 04.08.2011 ALB
// AROS Specific
PCLIInfo = ^TCLIInfo;
TCLIInfo = record
ci_Node: TNode;
ci_Process: PProcess;
end;
type // Checked OK 05.08.2011 ALB
PDOSLibrary = ^TDOSLibrary;
TDOSLibrary = record
dl_Lib : TLibrary;
dl_Root : PRootNode;
{$ifdef AROS_BINCOMPAT}
dl_GV : Pointer;
dl_A2 : LongInt;
dl_A5 : LongInt;
dl_A6 : LongInt;
{$endif}
dl_Errors : PErrorString;
dl_TimeReq : PTimeRequest;
dl_UtilityBase : PLibrary;
dl_IntuitionBase: PLibrary;
// AROS Specific private Fields
dl_TimerBase : PDevice;
dl_TimerIO : TTimeRequest;
dl_DevInfo : BPTR; //PDosList;
dl_SysBase : PExecBase;
dl_SegList : BPTR;
dl_NulHandler : PDevice;
dl_NulLock : PUnit;
// LDDemon private Data
dl_LDObjectsListSigSem : TSignalSemaphore;
dl_LDObjectsList : TEList;
dl_LDHandler : TInterrupt;
dl_LDDemonPort : PMsgPort;
dl_LDDemonTask : PProcess;
dl_LDReturn : Cardinal;
// AROS-specific and private. Can go away in future
dl_SYSLock: BPTR;
// The flags are ORed with RootNode->rn_Flags. See below for definitions.
dl_Flags: Cardinal;
end;
const // Checked OK 04.08.2011 ALB
RNB_WILDSTAR = 24;
RNF_WILDSTAR = (1 Shl RNB_WILDSTAR);
type // Checked OK 04.08.2011 ALB
PDOSInfo = ^TDOSInfo;
TDOSInfo = record
di_McName : BPTR; { BPTR }
di_DevInfo : BPTR; { BPTR }
di_Devices : BPTR; { BPTR }
di_Handlers : BPTR; { BPTR }
di_NetHand : BPTR; // Alias di_ResList
di_DevLock : TSignalSemaphore;
di_EntryLock : TSignalSemaphore;
di_DeleteLock: TSignalSemaphore;
end;
type // Checked OK 04.08.2011 ALB
PSegment = ^TSegment;
TSegment = record
seg_Next : PSegment; // Pointer to next segment.
seg_UC : LongInt;
seg_Seg : BPTR; { BPTR }
seg_Name : Array[0..3] of AnsiChar;
{ * seg_Name continues * }
end;
const // Checked OK 04.08.2011 ALB
CMD_SYSTEM = -1;
CMD_INTERNAL = -2;
CMD_DISABLED = -999;
type // Checked TODO 04.08.2011 ALB
PDeviceList = ^TDeviceList;
TDeviceList = record
dl_Next : PDeviceList; { BPTR }
dl_Type : LongInt;
dl_Task : PMsgPort;
dl_Lock : BPTR; { BPTR }
dl_VolumeDate: TDateStamp;
dl_LockList : BPTR; { BPTR }
dl_DiskType : LongInt;
dl_unused : BPTR;
// Padding Bytes?
dl_Name : BSTR; { BSTR }
// Missing DosListAROSExt
end;
type // Checked OK 04.08.2011 ALB
PFileLock = ^TFileLock;
TFileLock = record
fl_Link : PFileLock; // (PFileLock) Pointer to next lock.
fl_Key : PtrUInt;
fl_Access: LongInt;
fl_Task : PMsgPort;
fl_Volume: PDeviceList; // (BPTR)
end;
type // Checked OK 04.08.2011 ALB
PCommandLineInterface = ^TCommandLineInterface;
TCommandLineInterface = record
cli_Result2 : LongInt; // Secondary error code, set by last command.
cli_SetName : BSTR; // Name of the current directory.
cli_CommandDir : PFileLock; // Lock of the first directory in path.
cli_ReturnCode : LongInt; // Error code, the last command returned.
cli_CommandName : BSTR; // Name of the command that is currently executed.
cli_FailLevel : LongInt; // Fail-Level as set by the command "FailAt".
cli_Prompt : BSTR; // Current prompt in the CLI window.
cli_StandardInput : PFileLock; // Standard/Default input file.
cli_CurrentInput : PFileLock; // Current input file.
cli_CommandFile : BSTR; // Name of the file that is currently executed.
cli_Interactive : LongInt; // TRUE if the currently CLI is connected to a controlling terminal, otherwise FALSE.
cli_Background : LongInt; // FALSE if there is no controlling terminal, otherwise TRUE.
cli_CurrentOutput : PFileLock; // Current output file. }
cli_DefaultStack : LongInt; // Default stack size as set by the command "Stack"
cli_StandardOutput: PFileLock; // Standard/Default output file.
cli_Module : BPTR; // SegList of currently loaded command.
// Aros Specific Part
cli_Standard_Error: PFileLock; // Standard/Default Error file.
end;
const // Checked OK 04.08.2011 ALB
CLI_DEFAULTSTACK_UNIT = SizeOf(PtrUInt);
type // Checked TODO 04.08.2011 ALB
PDevInfo = ^TDevInfo;
TDevInfo = record
dvi_Next : PDevInfo; { BPTR }
dvi_Type : LongInt;
dvi_Task : PMsgPort;
dvi_Lock : BPTR; { BPTR }
dvi_Handler : BSTR; { BSTR }
dvi_StackSize: LongInt;
dvi_Priority : LongInt;
dvi_Startup : BPTR;
dvi_SegList : BPTR; { BPTR }
dvi_GlobalVec: BPTR; { BPTR } // aka dvi_GlobVec
dvi_Name : BSTR; { BSTR }
// missing Aros Extension... DosListAROSExt;
end;
type // Checked TODO 04.08.2011 ALB
PAssignList = ^TAssignList;
TAssignList = record
al_Next: PAssignList; // Pointer to next assign node.
al_Lock: PFileLock; // Lock of on of the directories.
end;
type // Checked TODO 04.08.2011 ALB
PDOSList = ^TDOSList;
TDOSList = record
dol_Next: BPTR; // PDOSList
dol_Type: LongInt;
dol_Task: PMsgPort;
dol_Lock: PFileLock; { BPTR }
case Byte of
0: ( dol_handler : record
dol_Handler : BSTR; { BSTR }
dol_StackSize: LongInt;
dol_Priority : LongInt;
dol_Startup : BPTR;
dol_NoAROS1 : BPTR; { BPTR }
dol_NoAROS2 : BPTR; { BPTR }
dol_NoAROS3 : BPTR; { BPTR }
end;
);
1: ( dol_volume : record
dol_VolumeDate: TDateStamp;
dol_LockList : BPTR; { BPTR }
dol_DiskType : LongInt;
dol_unused : BPTR;
end;
);
2: ( dol_assign : record
dol_AssignName: PAnsiChar;
dol_List : PAssignList;
end;
);
3: ( dol_Misc: array[0..23] of Byte;
dol_Name: BSTR;
);
// missing Aros Extension... DosListAROSExt;
end;
const // Checked OK 04.08.2011 ALB
DLT_DEVICE = 0;
DLT_DIRECTORY = 1;
DLT_VOLUME = 2;
DLT_LATE = 3;
DLT_NONBINDING = 4;
DLT_PRIVATE = -1;
type // Checked OK 04.08.2011 ALB
PDevProc = ^TDevProc;
TDevProc = record
dvp_Port : PMsgPort;
dvp_Lock : PFileLock; { BPTR }
dvp_Flags : DWord; // see below
dvp_DevNode: PDOSList; // Private
end;
const // Checked OK 04.08.2011 ALB
DVPB_UNLOCK = 0;
DVPF_UNLOCK = (1 shl DVPB_UNLOCK);
DVPB_ASSIGN = 1;
DVPF_ASSIGN = (1 shl DVPB_ASSIGN);
const // Checked OK 04.08.2011 ALB
LDB_READ = 0;
LDF_READ = (1 shl LDB_READ);
LDB_WRITE = 1;
LDF_WRITE = (1 shl LDB_WRITE);
LDB_DEVICES = 2;
LDF_DEVICES = (1 shl LDB_DEVICES);
LDB_VOLUMES = 3;
LDF_VOLUMES = (1 shl LDB_VOLUMES);
LDB_ASSIGNS = 4;
LDF_ASSIGNS = (1 shl LDB_ASSIGNS);
LDB_ENTRY = 5;
LDF_ENTRY = (1 shl LDB_ENTRY);
LDB_DELETE = 6;
LDF_DELETE = (1 shl LDB_DELETE);
LDF_ALL = (LDF_DEVICES or LDF_VOLUMES or LDF_ASSIGNS);
const // Checked OK 04.08.2011 ALB
REPORT_STREAM = 0;
REPORT_TASK = 1;
REPORT_LOCK = 2;
REPORT_VOLUME = 3;
REPORT_INSERT = 4;
const // Checked OK 04.08.2011 ALB
ABORT_DISK_ERROR = 296;
ABORT_BUSY = 288;
const // Checked OK 04.08.2011 ALB
RUN_EXECUTE = -1;
RUN_SYSTEM = -2;
RUN_SYSTEM_ASYNCH = -3;
const // Checked OK 04.08.2011 ALB
ST_ROOT = 1;
ST_USERDIR = 2;
ST_SOFTLINK = 3;
ST_LINKDIR = 4;
ST_FILE = -3;
ST_LINKFILE = -4;
ST_PIPEFILE = -5;
{ * dos asl definitions
*********************************************************************
* }
type // Checked OK 04.08.2011 ALB
PAChain = ^TAChain;
TAChain = record
an_Child : PAChain;
an_Parent: PAChain;
an_Lock : BPTR;
an_Info : TFileInfoBlock;
an_Flags : ShortInt;
an_String: array[0..0] of AnsiChar;
{ * an_String continues * }
end;
type // Checked OK 04.08.2011 ALB
PAnchorPath = ^TAnchorPath;
TAnchorPath = record
case Byte of // its not defined in AROS struct just by defines...
0 : ( ap_First: PAChain;
ap_Last: PAChain;
ap_L1: LongInt;
ap_L2: LongInt;
ap_Length: ShortInt;
);
1 : ( ap_Base: PAChain;
ap_Current: PAChain;
ap_BreakBits: LongInt;
ap_FoundBreak: LongInt;
ap_Flags: ShortInt;
ap_Reserved: ShortInt;
ap_Strlen: SmallInt;
ap_Info: TFileInfoBlock;
ap_Buf: array[0..255] of AnsiChar;
{ * an_Buf continues * }
);
end;
const // Checked OK 04.08.2011 ALB
// Please check for wildcards in supplied string.
APB_DOWILD = 0;
APF_DOWILD = (1 Shl APB_DOWILD);
// There is actually a wildcard in the supplied string. READ-ONLY
APB_ITSWILD = 1;
APF_ITSWILD = (1 Shl APB_ITSWILD);
// Set, if a directory is to be entered. Applications may clear this bit to prohibit the
// matching-functions from entering a directory.
APB_DODIR = 2;
APF_DODIR = (1 Shl APB_DODIR);
// Set, if directory was already searched. READ-ONLY
APB_DIDDIR = 3;
APF_DIDDIR = (1 Shl APB_DIDDIR);
// Set, if function was out of memory. READ-ONLY
APB_NOMEMERR = 4;
APF_NOMEMERR = (1 Shl APB_NOMEMERR);
// '.' may refer to the current directory (unix-style).
APB_DODOT = 5;
APF_DODOT = (1 Shl APB_DODOT);
// Directory changed since last call.
APB_DirChanged = 6;
APF_DirChanged = (1 Shl APB_DirChanged);
// Follow hardlinks, too.
APB_FollowHLinks = 7;
APF_FollowHLinks = (1 Shl APB_FollowHLinks);
const // Checked OK 04.08.2011 ALB
DDB_PatternBit = 0;
DDF_PatternBit = (1 Shl DDB_PatternBit);
DDB_ExaminedBit = 1;
DDF_ExaminedBit = (1 Shl DDB_ExaminedBit);
DDB_Completed = 2;
DDF_Completed = (1 Shl DDB_Completed);
DDB_AllBit = 3;
DDF_AllBit = (1 Shl DDB_AllBit);
DDB_Single = 4;
DDF_Single = (1 Shl DDB_Single);
const // Checked OK 04.08.2011 ALB
P_ANY = $80; // Matches everything ('#?' and '*')
P_SINGLE = $81; // Any character ('?')
P_ORSTART = $82; // Opening parenthesis for OR'ing ('(')
P_ORNEXT = $83; // Field delimiter for OR'ing ('|')
P_OREND = $84; // Closing parenthesis for OR'ing (')')
P_NOT = $85; // Inversion ('~')
P_NOTEND = $86; // Inversion end
P_NOTCLASS = $87; // Inversion class ('^')
P_CLASS = $88; // Class ('[' and ']')
P_REPBEG = $89; // Beginning of repetition ('[')
P_REPEND = $8A; // End of repetition (']')
P_STOP = $8B;
const // Checked OK 04.08.2011 ALB
COMPLEX_BIT = 1;
EXAMINE_BIT = 2;
const // Checked OK 04.08.2011 ALB
ERROR_BUFFER_OVERFLOW = 303;
ERROR_BREAK = 304;
ERROR_NOT_EXECUTABLE = 305;
{ * dos hunk definitions
*********************************************************************
* }
const // Checked OK 04.08.2011 ALB
HUNK_UNIT = 999;
HUNK_NAME = 1000;
HUNK_CODE = 1001;
HUNK_DATA = 1002;
HUNK_BSS = 1003;
HUNK_RELOC32 = 1004;
HUNK_ABSRELOC32 = HUNK_RELOC32;
HUNK_RELOC16 = 1005;
HUNK_RELRELOC16 = HUNK_RELOC16;
HUNK_RELOC8 = 1006;
HUNK_RELRELOC8 = HUNK_RELOC8;
HUNK_EXT = 1007;
HUNK_SYMBOL = 1008;
HUNK_DEBUG = 1009;
HUNK_END = 1010;
HUNK_HEADER = 1011;
HUNK_OVERLAY = 1013;
HUNK_BREAK = 1014;
HUNK_DREL32 = 1015;
HUNK_DREL16 = 1016;
HUNK_DREL8 = 1017;
HUNK_LIB = 1018;
HUNK_INDEX = 1019;
HUNK_RELOC32SHORT = 1020;
HUNK_RELRELOC32 = 1021;
HUNK_ABSRELOC16 = 1022;
const // Checked OK 04.08.2011 ALB
HUNKB_ADVISORY = 29;
HUNKB_CHIP = 30;
HUNKB_FAST = 31;
HUNKF_ADVISORY = (1 shl HUNKB_ADVISORY);
HUNKF_CHIP = (1 shl HUNKB_CHIP);
HUNKF_FAST = (1 shl HUNKB_FAST);
const // Checked OK 04.08.2011 ALB
EXT_SYMB = 0;
EXT_DEF = 1;
EXT_ABS = 2;
EXT_REF32 = 129;
EXT_ABSREF32 = EXT_REF32;
EXT_COMMON = 130;
EXT_ABSCOMMON = EXT_COMMON;
EXT_REF16 = 131;
EXT_RELREF16 = EXT_REF16;
EXT_REF8 = 132;
EXT_RELREF8 = EXT_REF8;
EXT_DEXT32 = 133;
EXT_DEXT16 = 134;
EXT_DEXT8 = 135;
EXT_RELREF32 = 136;
EXT_RELCOMMON = 137;
EXT_ABSREF16 = 138;
EXT_ABSREF8 = 139;
{ * dos ExAll definitions
*********************************************************************
* }
const // Checked OK 04.08.2011 ALB
ED_NAME = 1;
ED_TYPE = 2;
ED_SIZE = 3;
ED_PROTECTION = 4;
ED_DATE = 5;
ED_COMMENT = 6;
ED_OWNER = 7;
type // Checked OK 04.08.2011 ALB
PExAllData = ^TExAllData;
TExAllData = record
ed_Next : PExAllData;
ed_Name : PAnsiChar;
ed_Type : LongInt;
ed_Size : Cardinal;
ed_Prot : Cardinal;
ed_Days : Cardinal;
ed_Mins : Cardinal;
ed_Ticks : Cardinal;
ed_Comment : PAnsiChar;
ed_OwnerUID: Word;
ed_OwnerGID: Word;
end;
type // Checked OK 04.08.2011 ALB
PExAllControl = ^TExAllControl;
TexAllControl = record
eac_Entries : Cardinal;
eac_LastKey : PtrUInt; // private
eac_MatchString: PAnsiChar;
eac_MatchFunc : PHook;
end;
{ * dos record definitions
*********************************************************************
* }
const // Checked OK 04.08.2011 ALB
REC_EXCLUSIVE = 0;
REC_EXCLUSIVE_IMMED = 1;
REC_SHARED = 2;
REC_SHARED_IMMED = 3;
type // Checked OK 04.08.2011 ALB
PRecordLock = ^TRecordLock;
TRecordLock = record
rec_FH : PFileHandle;
rec_Offset: Cardinal;
rec_Length: Cardinal;
rec_Mode : Cardinal;
end;
{ * dos tag definitions
*********************************************************************
* }
const // Checked OK 04.08.2011 ALB
SYS_Dummy = (TAG_USER + 32);
SYS_Input = (SYS_Dummy + 1);
SYS_Output = (SYS_Dummy + 2);
SYS_Asynch = (SYS_Dummy + 3);
SYS_UserShell = (SYS_Dummy + 4);
SYS_CustomShell = (SYS_Dummy + 5);
{ *** Aros Specific *** }
SYS_Error = (SYS_Dummy + 10);
SYS_ScriptInput = (SYS_Dummy + 11);
SYS_Background = (SYS_Dummy + 12);
SYS_CliNumPtr = (SYS_Dummy + 13);
SYS_DupStream = 1;
const // Checked OK 04.08.2011 ALB
NP_Dummy = (TAG_USER + 1000);
NP_Seglist = (NP_Dummy + 1);
NP_FreeSeglist = (NP_Dummy + 2);
NP_Entry = (NP_Dummy + 3);
NP_Input = (NP_Dummy + 4);
NP_Output = (NP_Dummy + 5);
NP_CloseInput = (NP_Dummy + 6);
NP_CloseOutput = (NP_Dummy + 7);
NP_Error = (NP_Dummy + 8);
NP_CloseError = (NP_Dummy + 9);
NP_CurrentDir = (NP_Dummy + 10);
NP_StackSize = (NP_Dummy + 11);
NP_Name = (NP_Dummy + 12);
NP_Priority = (NP_Dummy + 13);
NP_ConsoleTask = (NP_Dummy + 14);
NP_WindowPtr = (NP_Dummy + 15);
NP_HomeDir = (NP_Dummy + 16);
NP_CopyVars = (NP_Dummy + 17);
NP_Cli = (NP_Dummy + 18);
NP_Path = (NP_Dummy + 19);
NP_CommandName = (NP_Dummy + 20);
NP_Arguments = (NP_Dummy + 21);
NP_NotifyOnDeath = (NP_Dummy + 22);
NP_Synchronous = (NP_Dummy + 23);
NP_ExitCode = (NP_Dummy + 24);
NP_ExitData = (NP_Dummy + 25);
{ *** AROS Specific *** }
NP_UserData = (NP_Dummy + 26);
const // Checked OK 04.08.2011 ALB
ADO_Dummy = (TAG_USER + 2000);
ADO_FH_Mode = (ADO_Dummy + 1);
ADO_DirLen = (ADO_Dummy + 2);
ADO_CommNameLen = (ADO_Dummy + 3);
ADO_CommFileLen = (ADO_Dummy + 4);
ADO_PromptLen = (ADO_Dummy + 5);
{ * dos stdio definitions
*********************************************************************
* }
const // Checked OK 04.08.2011 ALB
BUF_LINE = 0;
BUF_FULL = 1;
BUF_NONE = 2;
const // Checked OK 04.08.2011 ALB
ENDSTREAMCH = -1;
{ * dos env-var definitions
*********************************************************************
* }
type // Checked OK 04.08.2011 ALB
PLocalVar = ^TLocalVar;
TLocalVar = record
lv_Node : TNode;
lv_Flags: Word;
lv_Value: PAnsiChar;
lv_Len : Cardinal;
end;
type // Checked OK 04.08.2011 ALB
PScanVarsMsg = ^TScanVarsMsg;
TScanVarsMsg = record
sv_SVMSize: Cardinal; // Size of ScanVarsMsg structure
sv_Flags: Cardinal; // The flags parameter given to ScanVars()
sv_GDir: PAnsiChar; // Directory patch for global variables or empty string "\0" for local variables
sv_Name: PAnsiChar; // Name of the variable
sv_Var: PAnsiChar; // Pointer to the contents of the variable
sv_VarLen: Cardinal; // Size of the variable
end;
const // Checked OK 04.08.2011 ALB
LV_VAR = 0;
LV_ALIAS = 1;
const // Checked OK 04.08.2011 ALB
LVB_IGNORE = 7;
LVF_IGNORE = (1 Shl LVB_IGNORE);
GVB_GLOBAL_ONLY = 8;
GVF_GLOBAL_ONLY = (1 Shl GVB_GLOBAL_ONLY);
GVB_LOCAL_ONLY = 9;
GVF_LOCAL_ONLY = (1 Shl GVB_LOCAL_ONLY);
GVB_BINARY_VAR = 10;
GVF_BINARY_VAR = (1 Shl GVB_BINARY_VAR);
GVB_DONT_NULL_TERM = 11;
GVF_DONT_NULL_TERM = (1 Shl GVB_DONT_NULL_TERM);
GVB_SAVE_VAR = 12;
GVF_SAVE_VAR = (1 Shl GVB_SAVE_VAR);
{ * dos ReadArgs definitions
*********************************************************************
* }
type // Checked OK 04.08.2011 ALB
PCSource = ^TCSource;
TCSource = record
CS_Buffer: PAnsiChar;
CS_Length: LongInt;
CS_CurChr: LongInt;
end;
type // Checked OK 04.08.2011 ALB
PRDArgs = ^TRDArgs;
TRDArgs = record
RDA_Source : TCSource;
RDA_DAList : PtrUInt;
RDA_Buffer : PAnsiChar;
RDA_BufSiz : LongInt;
RDA_ExtHelp: PAnsiChar;
RDA_Flags : LongInt;
end;
const // Checked OK 04.08.2011 ALB
RDAB_STDIN = 0;
RDAF_STDIN = (1 Shl RDAB_STDIN);
RDAB_NOALLOC = 1;
RDAF_NOALLOC = (1 Shl RDAB_NOALLOC);
RDAB_NOPROMPT = 2;
RDAF_NOPROMPT = (1 Shl RDAB_NOPROMPT);
const // Checked OK 04.08.2011 ALB
MAX_TEMPLATE_ITEMS = 100;
MAX_MULTIARGS = 128;
{ * dos filehandler definitions
*********************************************************************
* }
type // Checked OK 04.08.2011 ALB
PDosEnvec = ^TDosEnvec;
TDosEnvec = record
de_TableSize : PtrUInt;
de_SizeBlock : PtrUInt;
de_SecOrg : PtrUInt;
de_Surfaces : PtrUInt;
de_SectorPerBlock: PtrUInt;
de_BlocksPerTrack: PtrUInt;
de_Reserved : PtrUInt;
de_PreAlloc : PtrUInt;
de_Interleave : PtrUInt;
de_LowCyl : PtrUInt;
de_HighCyl : PtrUInt;
de_NumBuffers : PtrUInt;
de_BufMemType : PtrUInt;
de_MaxTransfer : PtrUInt;
de_Mask : PtrUInt;
de_BootPri : PtrInt;
de_DosType : PtrUInt;
de_Baud : PtrUInt;
de_Control : PtrUInt;
de_BootBlocks : PtrUInt;
end;
const // Checked OK 04.08.2011 ALB
DE_TABLESIZE = 0;
DE_SIZEBLOCK = 1;
DE_BLOCKSIZE = 2;
DE_NUMHEADS = 3;
DE_SECSPERBLOCK = 4;
DE_BLKSPERTRACK = 5;
DE_RESERVEDBLKS = 6;
DE_PREFAC = 7;
DE_INTERLEAVE = 8;
DE_LOWCYL = 9;
DE_HIGHCYL = 10;
DE_UPPERCYL = DE_HIGHCYL;
DE_NUMBUFFERS = 11;
DE_BUFMEMTYPE = 12;
DE_MEMBUFTYPE = DE_BUFMEMTYPE;
DE_MAXTRANSFER = 13;
DE_MASK = 14;
DE_BOOTPRI = 15;
DE_DOSTYPE = 16;
DE_BAUD = 17;
DE_CONTROL = 18;
DE_BOOTBLOCKS = 19;
type // Checked OK 04.08.2011 ALB
PFileSysStartupMsg = ^TFileSysStartupMsg;
TFileSysStartupMsg = record
fssm_Unit : PtrUInt;
fssm_Device : BSTR;
fssm_Environ: BPTR;
fssm_Flags : Cardinal;
end;
type // Checked TODO 04.08.2011 ALB
PDeviceNode = ^TDeviceNode;
TDeviceNode = record
dn_Next : PDeviceNode;
dn_Type : Cardinal;
dn_Task : PMsgPort;
dn_Lock : BPTR;
dn_Handler : BSTR;
dn_StackSize: Cardinal;
dn_Priority : LongInt;
dn_Startup : BPTR;
dn_SegList : BPTR;
dn_GlobalVec: BPTR;
dn_Name : BSTR;
// Missing Extension DosListAROSExt
end;
{ * dos notification definitions
*********************************************************************
* }
const // Checked OK 04.08.2011 ALB
NOTIFY_CLASS = $40000000;
NOTIFY_CODE = $1234;
type // Checked OK 04.08.2011 ALB
PNotifyRequest = ^TNotifyRequest;
TNotifyRequest = record
nr_Name : PAnsiChar;
nr_FullName: PAnsiChar;
nr_UserData: PtrUInt;
nr_Flags : Cardinal;
nr_stuff : record
case Byte of
0 : ( nr_Msg : record
nr_Port: PMsgPort;
end );
1 : ( nr_Signal : record
nr_Task : PTask;
nr_SignalNum: Byte;
nr_pad : array[0..2] of Byte;
end );
end;
nr_Reserved: array[0..3] of PtrUInt;
nr_MsgCount: Cardinal;
nr_Handler : PMsgPort;
end;
type // Checked OK 04.08.2011 ALB
PNotifyMessage = ^TNotifyMessage;
TNotifyMessage = record
nm_ExecMessage: TMessage;
nm_Class : Cardinal;
nm_Code : Word;
nm_NReq : PNotifyRequest;
nm_DoNotTouch : PtrUInt;
nm_DoNotTouch2: PtrUInt;
end;
const // Checked OK 04.08.2011 ALB
NRB_SEND_MESSAGE = 0;
NRB_SEND_SIGNAL = 1;
NRB_WAIT_REPLY = 3;
NRB_NOTIFY_INITIAL = 4;
NRB_MAGIC = 31;
NRF_SEND_MESSAGE = (1 shl NRB_SEND_MESSAGE);
NRF_SEND_SIGNAL = (1 shl NRB_SEND_SIGNAL);
NRF_WAIT_REPLY = (1 shl NRB_WAIT_REPLY);
NRF_NOTIFY_INITIAL = (1 shl NRB_NOTIFY_INITIAL);
NRF_MAGIC = (1 shl NRB_MAGIC);
NR_HANDLER_FLAGS = $ffff0000;