home *** CD-ROM | disk | FTP | other *** search
-
- /*
- * DOS.H
- */
-
- #ifdef NOTDEF
- #include "exec/types.h"
- #include "exec/memory.h"
- #include "libraries/dos.h"
- #include "libraries/dosextens.h"
- #include "libraries/filehandler.h"
- #endif NOTDEF
-
- /*
- * ACTIONS which do not exist in dosextens.h but which indeed exist on
- * the Amiga.
- */
-
- #define ACTION_OPENRW 1004
- #define ACTION_OPENOLD 1005
- #define ACTION_OPENNEW 1006
- #define ACTION_CLOSE 1007
- #define ACTION_SEEK 1008
- #define ACTION_RAWMODE 994
- #define ACTION_MORECACHE 18
- #define ACTION_FLUSH 27
-
- #define CTOB(x) (void *)(((long)(x))>>2) /* BCPL conversion */
- #define BTOC(x) (void *)(((long)(x))<<2)
-
- #define bmov(ss,dd,nn) CopyMem(ss,dd,nn) /* my habit */
-
- #define DOS_FALSE 0
- #define DOS_TRUE -1
-
- #define RAMFILE struct _RAMFILE /* less restrictive typedefs */
- #define FENTRY struct _FENTRY
- #define LOCKLINK struct _LL
- #define MYFH struct _MYFH
-
- typedef unsigned char ubyte; /* unsigned quantities */
- typedef unsigned short uword;
- typedef unsigned long ulong;
-
- typedef struct Interrupt INTERRUPT;
- typedef struct Task TASK;
- typedef struct FileLock LOCK; /* See LOCKLINK */
- typedef struct FileInfoBlock FIB;
- typedef struct DosPacket PACKET;
- typedef struct Process PROC;
- typedef struct DeviceNode DEVNODE;
- typedef struct DeviceList DEVLIST;
- typedef struct DosInfo DOSINFO;
- typedef struct RootNode ROOTNODE;
- typedef struct FileHandle FH;
- typedef struct MsgPort PORT;
- typedef struct Message MSG;
- typedef struct MinList LIST;
- typedef struct MinNode NODE;
- typedef struct DateStamp STAMP;
- typedef struct InfoData INFODATA;
- typedef struct DosLibrary DOSLIB;
-
- #define FILE_DIR 1
- #define FILE_FILE -1
-
-
- RAMFILE {
- NODE node;
- RAMFILE *parent;
- char *name;
- char *comment;
- short flags;
- short type; /* -1 = file, 1 = dir, 0 = dummy entry */
- short locks; /* <0:exclusive 0:none >0:shared */
- ulong protection;
- ulong bytes;
- LIST list; /* list of FENTRY's or RAMFILE's */
- STAMP date;
- };
-
- FENTRY {
- NODE node;
- ubyte *buf;
- ulong bytes;
- };
-
- /*
- * We use this structure to link locks together in a list for internal
- * usage. I could have use the link field in the lock structure as a
- * real linked list, but didn't want to have to sequentially search the
- * list to remove a node.
- *
- * NOTE: You CANNOT simply extend the FileLock (LOCK) structure. Some
- * programs assume it is sizeof(LOCK) big and break. I found this out the
- * hard way.
- */
-
- LOCKLINK {
- NODE node;
- LOCK *lock;
- };
-
- MYFH {
- NODE node;
- RAMFILE *file; /* file header */
- FENTRY *fentry;
- long base; /* base of FENTRY */
- long offset; /* offset into FENTRY */
- };
-
- /*
- * (void *) in Aztec C means 'pointer to anything'. I use it
- * extensively.
- */
-
- extern void *AbsExecBase;
-
- extern void *AllocMem(), *RemHead(), *CreatePort(), *GetMsg();
- extern void *FindTask(), *Open(), *OpenLibrary();
-
- extern void *dosalloc(), *NextNode(), *GetHead();
- extern void freedata(), freeramfile(), ramunlock(), btos(), returnpacket();
- extern LOCK *ramlock();
- extern RAMFILE *searchpath(), *createramfile(), *getlockfile();
-
- extern char *getpathelement();
- extern char *typetostr();
-
- #define PType (packet->dp_Type)
- #define PArg1 (packet->dp_Arg1)
- #define PArg2 (packet->dp_Arg2)
- #define PArg3 (packet->dp_Arg3)
- #define PArg4 (packet->dp_Arg4)
- #define PRes1 (packet->dp_Res1)
- #define PRes2 (packet->dp_Res2)
-