attribute for ‘struct XXXX’ must follow the ‘struct’ keyword
[AROS.git] / compiler / include / dos / dosextens.h
blobcf66971b1149d8abc656c148c4387021cf2029dd
1 #ifndef DOS_DOSEXTENS_H
2 #define DOS_DOSEXTENS_H
4 /*
5 Copyright © 1995-2012, The AROS Development Team. All rights reserved.
6 $Id$
8 Desc: LibBase and some important structures
9 Lang: English
12 #ifndef EXEC_TYPES_H
13 # include <exec/types.h>
14 #endif
15 #ifndef EXEC_TASKS_H
16 # include <exec/tasks.h>
17 #endif
18 #ifndef EXEC_PORTS_H
19 # include <exec/ports.h>
20 #endif
21 #ifndef EXEC_LIBRARIES_H
22 # include <exec/libraries.h>
23 #endif
24 #ifndef EXEC_DEVICES_H
25 # include <exec/devices.h>
26 #endif
27 #ifndef EXEC_SEMAPHORES
28 # include <exec/semaphores.h>
29 #endif
30 #ifndef DEVICES_TIMER_H
31 # include <devices/timer.h>
32 #endif
33 #ifndef EXEC_INTERRUPTS_H
34 # include <exec/interrupts.h>
35 #endif
36 #ifndef DOS_DOS_H
37 # include <dos/dos.h>
38 #endif
40 /**********************************************************************
41 ***************************** DosLibrary *****************************
42 **********************************************************************/
44 /* This is how the base of dos.library looks like. */
45 struct DosLibrary
47 /* A normal library-base as defined in <exec/libraries.h>. */
48 struct Library dl_lib;
50 struct RootNode * dl_Root;
52 /* private BCPL fields. Do not use. */
53 APTR dl_GV;
54 SIPTR dl_A2;
55 SIPTR dl_A5;
56 SIPTR dl_A6;
58 /* The following fields are PRIVATE! */
59 struct ErrorString * dl_Errors;
60 struct timerequest * dl_TimeReq;
61 struct Library * dl_UtilityBase;
62 struct Library * dl_IntuitionBase;
65 /* dl_Flags/rn_Flags */
66 #define RNB_WILDSTAR 24 /* Activate '*' as wildcard character. */
67 #define RNF_WILDSTAR (1L << RNB_WILDSTAR)
70 struct RootNode
72 /* (IPTR *) Pointer to an array containing pointers to CLI processes.
73 The CLI process number is equal to the index of that array. The
74 first field (index 0) contains the maximal number of CLI processes.
75 See also rn_CliList. */
76 BPTR rn_TaskArray;
77 /* (void *) Pointer to the SegList for CLIs. */
78 BPTR rn_ConsoleSegment;
79 /* The current time. */
80 struct DateStamp rn_Time;
81 /* (APTR) The SegList of the process that handles validation of devices.
83 APTR rn_RestartSeg;
84 /* (struct DosInfo *) see below for DosInfo */
85 BPTR rn_Info;
86 /* BPTR to default (FFS) filesystem, used for example by WB C:Mount
87 * when mountlist filesystem is not specified */
88 BPTR rn_FileHandlerSegment;
89 /* List of all CLI processes (struct CliProcList - see below). See also
90 rn_TaskArray. */
91 struct MinList rn_CliList;
92 /* Message port of boot filesystem. (PRIVATE) */
93 struct MsgPort * rn_BootProc;
94 /* (void *) Pointer to the SegList for shells. */
95 BPTR rn_ShellSegment;
96 /* Additional flags (see above). */
97 LONG rn_Flags;
99 /* RootNode arbitrator */
100 struct SignalSemaphore rn_RootLock;
104 /* Structure that is linked into the rootnode's rn_CliList. Completely
105 private, of course! ... and it's not compatible to AmigaOS. */
106 struct CLIInfo
108 struct Node ci_Node;
109 struct Process *ci_Process;
112 struct DosInfo
114 BPTR di_McName; /* Used as resident segment list (says official documentation but it is wrong) */
115 BPTR di_DevInfo; /* Devices list */
116 BPTR di_Devices; /* Reserved */
117 BPTR di_Handlers; /* Reserved */
118 BPTR di_NetHand; /* Reserved (actually resident segment list) */
120 /* The following semaphores are PRIVATE. */
121 struct SignalSemaphore di_DevLock;
122 struct SignalSemaphore di_EntryLock;
123 struct SignalSemaphore di_DeleteLock;
125 #define di_ResList di_NetHand
127 /**********************************************************************
128 ***************************** Processes ******************************
129 **********************************************************************/
131 /* Standard process structure. Processes are just extended tasks. */
132 struct Process
134 /* Embedded task structure as defined in <exec/tasks.h>. */
135 struct Task pr_Task;
137 /* Processes standard message-port. Used for various puposes. */
138 struct MsgPort pr_MsgPort;
139 WORD pr_Pad; /* PRIVATE */
140 /* SegList array, used by this process. (void **) */
141 BPTR pr_SegList;
142 /* StackSize of the current process. */
143 LONG pr_StackSize;
144 APTR pr_GlobVec;
145 /* CLI process number. This may be 0, in which case the process is not
146 connected to a CLI. */
147 LONG pr_TaskNum;
148 /* Pointer to upper end of stack. (void *) */
149 BPTR pr_StackBase;
150 /* Secondary return-value, as defined in <dos/dos.h>. As of now this
151 field is declared PRIVATE. Use IoErr()/SetIoErr() to access it. */
152 SIPTR pr_Result2;
153 /* Lock of the current directory. As of now this is declared READ-ONLY.
154 Use CurrentDir() to set it. (struct FileLock *) */
155 BPTR pr_CurrentDir;
156 /* Standard input file. As of now this is declared WRITE-ONLY. Use
157 Input() to query it. */
158 BPTR pr_CIS;
159 /* Standard output file. As of now this is declared WRITE-ONLY. Use
160 Output() to query it. */
161 BPTR pr_COS;
162 /* Task to handle the console associated with process. */
163 APTR pr_ConsoleTask;
164 /* The task that is responsible for handling the filesystem. */
165 APTR pr_FileSystemTask;
166 /* CLI the process is connected to. (struct CommandLineInterface *) */
167 BPTR pr_CLI;
168 APTR pr_ReturnAddr;
169 /* Function to be called, when process waits for a packet-message. */
170 APTR pr_PktWait;
171 /* Standard-Window of process. */
172 APTR pr_WindowPtr;
173 /* Lock to home-directory of process. (struct FileLock *) */
174 BPTR pr_HomeDir;
175 LONG pr_Flags; /* see below */
177 /* Code that is called, when the process exits. pr_ExitData takes an
178 argument to be passed to this code. */
179 void (* pr_ExitCode)();
180 IPTR pr_ExitData;
181 /* Arguments passed to the process from caller. */
182 STRPTR pr_Arguments;
184 /* List of local environment variables. This list should be in
185 alphabetical order. Multiple entries may have the same name, if they
186 are of different types. See <dos/var.h> for more information. */
187 struct MinList pr_LocalVars;
188 ULONG pr_ShellPrivate;
189 /* Standard error file. May be NULL, in which case pr_COS is to be used.
190 Use this instead of Output() to report errors. */
191 BPTR pr_CES;
194 /* pr_Flags (all PRIVATE) They mainly descibe what happens if the process
195 exits, i.e. which resources the process should clean itself. The flags
196 are self-explaining. */
197 #define PRB_FREESEGLIST 0
198 #define PRB_FREECURRDIR 1
199 #define PRB_FREECLI 2
200 #define PRB_CLOSEINPUT 3
201 #define PRB_CLOSEOUTPUT 4
202 #define PRB_FREEARGS 5
203 #define PRB_CLOSEERROR 6
204 /* The following are AROS-specific */
205 #define PRB_SYNCHRONOUS 18
206 #define PRB_WAITINGFORCHILD 19 /* This one is subject to change! */
207 #define PRB_NOTIFYONDEATH 20
208 #define PRB_CLOSECLIERROR 21
210 #define PRF_FREESEGLIST (1L << PRB_FREESEGLIST)
211 #define PRF_FREECURRDIR (1L << PRB_FREECURRDIR)
212 #define PRF_FREECLI (1L << PRB_FREECLI)
213 #define PRF_CLOSEINPUT (1L << PRB_CLOSEINPUT)
214 #define PRF_CLOSEOUTPUT (1L << PRB_CLOSEOUTPUT)
215 #define PRF_FREEARGS (1L << PRB_FREEARGS)
216 #define PRF_CLOSEERROR (1L << PRB_CLOSEERROR)
217 #define PRF_SYNCHRONOUS (1L << PRB_SYNCHRONOUS)
218 #define PRF_WAITINGFORCHILD (1L << PRB_WAITINGFORCHILD)
219 #define PRF_NOTIFYONDEATH (1L << PRB_NOTIFYONDEATH)
220 #define PRF_CLOSECLIERROR (1L << PRB_CLOSECLIERROR)
222 /* Structure used for CLIs and Shells. Allocate this structure with
223 AllocDosObject() only! */
224 struct CommandLineInterface
226 /* Secondary error code, set by last command. */
227 LONG cli_Result2;
228 /* Name of the current directory. */
229 BSTR cli_SetName;
230 /* Lock of the first directory in path. (struct FileLock *) */
231 BPTR cli_CommandDir;
232 /* Error code, the last command returned. See <dos/dos.h> for
233 definitions. */
234 LONG cli_ReturnCode;
235 /* Name of the command that is currently executed. */
236 BSTR cli_CommandName;
237 /* Fail-Level as set by the command "FailAt". */
238 LONG cli_FailLevel;
239 /* Current prompt in the CLI window. */
240 BSTR cli_Prompt;
241 /* Standard/Default input file. (struct FileLock *) */
242 BPTR cli_StandardInput;
243 /* Current input file. (struct FileLock *) */
244 BPTR cli_CurrentInput;
245 /* Name of the file that is currently executed. */
246 BSTR cli_CommandFile;
247 /* TRUE if the currently CLI is connected to a controlling terminal,
248 otherwise FALSE. */
249 LONG cli_Interactive;
250 /* FALSE if there is no controlling terminal, otherwise TRUE. */
251 LONG cli_Background;
252 /* Current output file. (struct FileLock *) */
253 BPTR cli_CurrentOutput;
254 /* Default stack size as set by the command "Stack". */
255 LONG cli_DefaultStack;
256 /* Standard/Default output file. (struct FileLock *) */
257 BPTR cli_StandardOutput;
258 /* SegList of currently loaded command. */
259 BPTR cli_Module;
261 /* Here begins the aros specific part */
262 /* Standard/Default Error file. (struct FileLock *) */
263 BPTR cli_StandardError;
266 /* CLI_DEFAULTSTACK_UNIT * cli_DefaultStack = stack in bytes */
268 #define CLI_DEFAULTSTACK_UNIT sizeof(IPTR)
270 /* Devices process structure as returned by GetDeviceProc(). */
271 struct DevProc
273 struct MsgPort * dvp_Port;
274 BPTR dvp_Lock; /* struct FileLock * */
275 ULONG dvp_Flags; /* see below */
276 struct DosList * dvp_DevNode; /* PRIVATE */
279 /* dvp_Flags */
280 #define DVPB_UNLOCK 0
281 #define DVPB_ASSIGN 1
282 #define DVPF_UNLOCK (1L<<DVPB_UNLOCK)
283 #define DVPF_ASSIGN (1L<<DVPB_ASSIGN)
285 /**********************************************************************
286 ******************************* Files ********************************
287 **********************************************************************/
289 /* Standard file-handle as returned by Open() (as BPTR). Generally said, you
290 should not use this structure in any way and only use library-calls to
291 access files. Note that this structure is very different to the structure
292 used in AmigaOS! Treat this structure as PRIVATE. If you want to create
293 this structure nevertheless, use AllocDosObject(). */
294 struct FileHandle64
296 /* The next three are used with packet-based filesystems */
297 ULONG fh_Flags;
298 LONG fh_Interactive; /* interactive handle flag */
299 struct MsgPort * fh_Type; /* port to send packets to */
301 BPTR fh_Buf;
302 UQUAD fh_Pos;
303 UQUAD fh_End;
305 SIPTR fh_Funcs;
306 SIPTR fh_Func2;
307 SIPTR fh_Func3;
308 SIPTR fh_Args;
309 SIPTR fh_Arg2;
311 /* v39+ */
312 IPTR fh_BufSize; /* Size of buffered io buffer */
313 BPTR fh_OrigBuf; /* Always the same as fh_Buf */
316 struct FileHandle32
318 /* The next three are used with packet-based filesystems */
319 ULONG fh_Flags;
320 LONG fh_Interactive; /* interactive handle flag */
321 struct MsgPort * fh_Type; /* port to send packets to */
323 BPTR fh_Buf;
324 LONG fh_Pos;
325 LONG fh_End;
327 SIPTR fh_Funcs;
328 SIPTR fh_Func2;
329 SIPTR fh_Func3;
330 SIPTR fh_Args;
331 SIPTR fh_Arg2;
333 /* v39+ */
334 ULONG fh_BufSize; /* Size of buffered io buffer */
335 BPTR fh_OrigBuf; /* Always the same as fh_Buf */
338 #if (__DOS64)
339 #define FileHandle FileHandle64
340 #else
341 #define FileHandle FileHandle32
342 #endif
344 /* Original AmigaOS aliases */
345 #define fh_Port fh_Interactive
346 #define fh_Func1 fh_Funcs
347 #define fh_Arg1 fh_Args
349 /* Structure of a lock. This is provided as it may be required internally by
350 * packet-based filesystems.
352 struct FileLock
354 BPTR fl_Link; /* (struct FileLock *) Pointer to next lock. */
355 IPTR fl_Key;
356 LONG fl_Access;
357 struct MsgPort * fl_Task;
358 BPTR fl_Volume; /* (struct DeviceList * - see below) */
361 /* Constants, defining of what kind a file is. These constants are used in
362 many structures, including FileInfoBlock (<dos/dos.h>) and ExAllData
363 (<dos/exall.h>). */
364 #define ST_PIPEFILE -5 /* File is a pipe */
365 #define ST_LINKFILE -4 /* Hard link to a file */
366 #define ST_FILE -3 /* Plain file */
367 #define ST_ROOT 1 /* Root directory of filesystem */
368 #define ST_USERDIR 2 /* Normal directory */
369 #define ST_SOFTLINK 3 /* Soft link (may be a file or directory) */
370 #define ST_LINKDIR 4 /* Hard link to a directory */
372 /**********************************************************************
373 ****************************** DosLists ******************************
374 **********************************************************************/
376 /* This structure is returned by LockDosList() and similar calls. This
377 * structure is identical the AmigaOS one, but this structure is PRIVATE
378 * anyway. Use system-calls for dos list-handling.
380 struct DosList
382 /* PRIVATE pointer to next entry. */
383 BPTR dol_Next;
384 /* Type of the current node (see below). */
385 LONG dol_Type;
386 /* Filesystem task handling this entry (for old-style filesystems) */
387 struct MsgPort * dol_Task;
388 /* The lock passed to AssignLock(). Only set if the type is
389 DLT_DIRECTORY. */
390 BPTR dol_Lock;
392 /* This union combines all the different types. */
393 union {
394 /* See struct DevInfo below. */
395 struct {
396 BSTR dol_Handler;
397 LONG dol_StackSize;
398 LONG dol_Priority;
399 BPTR dol_Startup;
400 BPTR dol_SegList;
401 BPTR dol_GlobVec;
402 } dol_handler;
403 /* See struct DeviceList below. */
404 struct {
405 struct DateStamp dol_VolumeDate;
406 BPTR dol_LockList;
407 LONG dol_DiskType;
408 BPTR dol_unused;
409 } dol_volume;
410 /* Structure used for assigns. */
411 struct {
412 /* The name for the late or nonbinding assign. */
413 UBYTE *dol_AssignName;
414 /* A list of locks, used by AssignAdd(). */
415 struct AssignList *dol_List;
416 } dol_assign;
417 } dol_misc;
419 /* Name as a BCPL string */
420 BSTR dol_Name;
423 /* dol_Type/dl_Type/dvi_Type. Given to MakeDosEntry(). */
424 #define DLT_DEVICE 0 /* A real filesystem (or similar) */
425 #define DLT_DIRECTORY 1 /* Just a simple assign */
426 #define DLT_VOLUME 2 /* Volume node (for removable media) */
427 #define DLT_LATE 3 /* Late binding assign (not yet) */
428 #define DLT_NONBINDING 4 /* Nonbinding assign (not yet) */
431 /* The following structures are essentially the same as DosList above. The
432 difference is that they support just one type of entry. You can use them
433 instead of DosList if you have a list containing just one type of
434 entry. For more information see above.
435 Note that these two entries have the same size, and dl_Name has the same
436 offset. Also they have to correspond to the union above.
439 struct DeviceList
441 BPTR dl_Next;
442 LONG dl_Type; /* see above, always = DLT_VOLUME */
443 struct MsgPort * dl_Task;
444 BPTR dl_Lock;
446 struct DateStamp dl_VolumeDate; /* At this date the volume was created. */
447 /* ULONG padding is inserted here on 64 bits */
448 BPTR dl_LockList; /* (void *) List of all locks on the volume. */
449 LONG dl_DiskType; /* Type of the disk. (see <dos/dos.h> for definitions) */
450 /* ULONG padding is inserted here on 64 bits */
451 BPTR dl_unused; /* PRIVATE */
453 BSTR dl_Name;
457 /* Structure that describes a device. This is essentially the same structure
458 as DeviceNode, defined in <dos/filehandler.h>. */
459 struct DevInfo
461 BPTR dvi_Next;
462 LONG dvi_Type; /* see above, always = DLT_DEVICE */
463 struct MsgPort * dvi_Task;
464 BPTR dvi_Lock;
466 BSTR dvi_Handler; /* Device name for handler. */
467 LONG dvi_StackSize; /* Packet-handler initial stack size */
468 LONG dvi_Priority; /* Packet-handler initial priority */
469 BPTR dvi_Startup; /* (struct FileSysStartupMsg *) */
470 BPTR dvi_SegList; /* SegList for the handler */
471 BPTR dvi_GlobalVec; /* Global Vector, should be (BPTR)-1 */
473 BSTR dvi_Name;
476 /* Dos list scanning and locking modes as used in LockDosList() */
477 /* Specify either LDF_READ, if you want a non-exclusive lock, or LDF_WRITE,
478 if you want an exclusive lock (i.e. if you want to modify the list).
480 #define LDB_READ 0 /* Non-exclusive/read lock */
481 #define LDB_WRITE 1 /* Exclusive/write lock */
482 /* Specify which list(s) to lock. */
483 #define LDB_DEVICES 2 /* Device list */
484 #define LDB_VOLUMES 3 /* Volume list */
485 #define LDB_ASSIGNS 4 /* Assign list */
486 #define LDB_ENTRY 5
487 #define LDB_DELETE 6
489 #define LDF_READ (1L<<LDB_READ)
490 #define LDF_WRITE (1L<<LDB_WRITE)
491 #define LDF_DEVICES (1L<<LDB_DEVICES)
492 #define LDF_VOLUMES (1L<<LDB_VOLUMES)
493 #define LDF_ASSIGNS (1L<<LDB_ASSIGNS)
494 #define LDF_ENTRY (1L<<LDB_ENTRY)
495 #define LDF_DELETE (1L<<LDB_DELETE)
496 #define LDF_ALL (LDF_DEVICES | LDF_VOLUMES | LDF_ASSIGNS)
499 /* Used for assigns that point to multiple directories. */
500 struct AssignList
502 struct AssignList * al_Next; /* Pointer to next assign node. */
503 BPTR al_Lock; /* (struct FileLock *) Lock of on of the
504 directories. */
507 /**********************************************************************
508 ********************** Low Level File Handling ***********************
509 **********************************************************************/
511 /* Allocate this structure with AllocDosObject(). */
512 struct DosPacket
514 struct Message * dp_Link; /* Pointer to a standard exec message. */
515 struct MsgPort * dp_Port; /* Reply-Port of that packet. */
517 LONG dp_Type; /* see below */
518 SIPTR dp_Res1; /* Normal return value. */
519 SIPTR dp_Res2; /* Secondary return value (as returned by IoErr()). See
520 <dos/dos.h> for possible values. */
522 /* The actual data. */
523 SIPTR dp_Arg1;
524 SIPTR dp_Arg2;
525 SIPTR dp_Arg3;
526 SIPTR dp_Arg4;
527 SIPTR dp_Arg5;
528 SIPTR dp_Arg6;
529 SIPTR dp_Arg7;
531 #define dp_Action dp_Type
532 #define dp_Status dp_Res1
533 #define dp_Status2 dp_Res2
534 #define dp_BufAddr dp_Arg1
537 /* These are defined for DOS Packet filesystems, and are
538 * passed by DoPkt(), SendPkt(), and others
541 /* dp_Type */
542 #define ACTION_NIL 0
543 #define ACTION_STARTUP 0
544 #define ACTION_GET_BLOCK 2 /* Obsolete */
545 #define ACTION_SET_MAP 4
546 #define ACTION_DIE 5
547 #define ACTION_EVENT 6
548 #define ACTION_CURRENT_VOLUME 7
549 #define ACTION_LOCATE_OBJECT 8
550 #define ACTION_RENAME_DISK 9
551 #define ACTION_FREE_LOCK 15
552 #define ACTION_DELETE_OBJECT 16
553 #define ACTION_RENAME_OBJECT 17
554 #define ACTION_MORE_CACHE 18
555 #define ACTION_COPY_DIR 19
556 #define ACTION_WAIT_CHAR 20
557 #define ACTION_SET_PROTECT 21
558 #define ACTION_CREATE_DIR 22
559 #define ACTION_EXAMINE_OBJECT 23
560 #define ACTION_EXAMINE_NEXT 24
561 #define ACTION_DISK_INFO 25
562 #define ACTION_INFO 26
563 #define ACTION_FLUSH 27
564 #define ACTION_SET_COMMENT 28
565 #define ACTION_PARENT 29
566 #define ACTION_TIMER 30
567 #define ACTION_INHIBIT 31
568 #define ACTION_DISK_TYPE 32
569 #define ACTION_DISK_CHANGE 33
570 #define ACTION_SET_DATE 34
571 #define ACTION_SAME_LOCK 40
573 #define ACTION_WRITE 'W'
574 #define ACTION_READ 'R'
576 #define ACTION_SCREEN_MODE 994
577 #define ACTION_CHANGE_SIGNAL 995
578 #define ACTION_READ_RETURN 1001
579 #define ACTION_WRITE_RETURN 1002
580 #define ACTION_FINDUPDATE 1004
581 #define ACTION_FINDINPUT 1005
582 #define ACTION_FINDOUTPUT 1006
583 #define ACTION_END 1007
584 #define ACTION_SEEK 1008
585 #define ACTION_FORMAT 1020
586 #define ACTION_MAKE_LINK 1021
587 #define ACTION_SET_FILE_SIZE 1022
588 #define ACTION_WRITE_PROTECT 1023
589 #define ACTION_READ_LINK 1024
590 #define ACTION_FH_FROM_LOCK 1026
591 #define ACTION_IS_FILESYSTEM 1027
592 #define ACTION_CHANGE_MODE 1028
593 #define ACTION_COPY_DIR_FH 1030
594 #define ACTION_PARENT_FH 1031
595 #define ACTION_EXAMINE_ALL 1033
596 #define ACTION_EXAMINE_FH 1034
597 #define ACTION_EXAMINE_ALL_END 1035
598 #define ACTION_SET_OWNER 1036
600 #define ACTION_LOCK_RECORD 2008
601 #define ACTION_FREE_RECORD 2009
603 #define ACTION_ADD_NOTIFY 4097
604 #define ACTION_REMOVE_NOTIFY 4098
606 #define ACTION_SERIALIZE_DISK 4200
608 #define ACTION_CHANGE_FILE_POSITION64 8001
609 #define ACTION_GET_FILE_POSITION64 8002
610 #define ACTION_CHANGE_FILE_SIZE64 8003
611 #define ACTION_GET_FILE_SIZE64 8004
613 /* Structure for easy handling of DosPackets. DosPackets don't have to be in
614 this structure, but this struture may ease the use of it. */
615 struct StandardPacket
617 struct Message sp_Msg;
618 struct DosPacket sp_Pkt;
622 /* NOTE: AROS doesn't use startup packets. This will ONLY make a difference
623 for shell writers... */
625 /* Types of command execution */
626 #define RUN_EXECUTE -1
627 #define RUN_SYSTEM -2
628 #define RUN_SYSTEM_ASYNCH -3
631 /**********************************************************************
632 ****************************** Segments ******************************
633 **********************************************************************/
635 /* Resident list structure as returned by AddSegment(). */
636 struct Segment
638 BPTR seg_Next; /* Pointer to next segment. */
639 LONG seg_UC; /* Usage count/type */
640 BPTR seg_Seg; /* Actual Segment */
641 UBYTE seg_Name[4]; /* The first characters of the name (BSTR). */
644 #define CMD_SYSTEM -1
645 #define CMD_INTERNAL -2
646 #define CMD_DISABLED -999
648 /**********************************************************************
649 *************************** Error Handling ***************************
650 **********************************************************************/
652 struct ErrorString
654 LONG * estr_Nums;
655 STRPTR estr_Strings;
658 /* Return values for ErrorReport(). */
659 #define REPORT_STREAM 0
660 #define REPORT_TASK 1
661 #define REPORT_LOCK 2
662 #define REPORT_VOLUME 3
663 #define REPORT_INSERT 4
665 #define ABORT_BUSY 288
666 #define ABORT_DISK_ERROR 296
668 #endif /* DOS_DOSEXTENS_H */