diff options
Diffstat (limited to 'rtl/aros/doslibd.inc')
-rw-r--r-- | rtl/aros/doslibd.inc | 1371 |
1 files changed, 1371 insertions, 0 deletions
diff --git a/rtl/aros/doslibd.inc b/rtl/aros/doslibd.inc new file mode 100644 index 0000000000..8e01a3c23b --- /dev/null +++ b/rtl/aros/doslibd.inc @@ -0,0 +1,1371 @@ +{ + 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 char; + fib_Protection : LongInt; + fib_EntryType : LongInt; + fib_Size : LongInt; + fib_NumBlocks : LongInt; + fib_Date : TDateStamp; + fib_Comment : Array[0..MAXCOMMENTLENGTH - 1] Of char; + + fib_OwnerUID : Word; + fib_OwnerGID : Word; + + fib_Reserved : array[0..31] of char; + 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 = Pointer; + 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 : PChar; + 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: PMsgPort; // 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 : LongInt; + fh_Func2 : LongInt; + fh_Func3 : Pointer; + fh_Arg1 : PtrInt; + fh_Arg2 : Pointer; + + { *** V39+ *** } + fh_Size : DWord; + fh_Buf2 : 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: PChar; + 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 char; + { * 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 : LongInt; + // 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_NoAROS1 : BPTR; { BPTR } + dvi_NoAROS2 : BPTR; { BPTR } + 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: PChar; + 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 Char; + { * 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..0] of char; + { * 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 : PChar; + ed_Type : LongInt; + ed_Size : Cardinal; + ed_Prot : Cardinal; + ed_Days : Cardinal; + ed_Mins : Cardinal; + ed_Ticks : Cardinal; + ed_Comment : PChar; + 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: PChar; + 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: PChar; + 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: PChar; // Directory patch for global variables or empty string "\0" for local variables + sv_Name: PChar; // Name of the variable + sv_Var: PChar; // 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: PChar; + 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 : PChar; + RDA_BufSiz : LongInt; + RDA_ExtHelp: PChar; + 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 : PChar; + nr_FullName: PChar; + nr_UserData: Cardinal; + 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 Cardinal; + 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; + + + + |