home *** CD-ROM | disk | FTP | other *** search
-
- /*
- * DOS.H
- */
-
- #include <stdio.h>
- #include <local/typedefs.h>
- #include <local/xmisc.h>
- #include "/server/servers.h"
- #include "/dnet/channel.h"
- #include "/lib/dnetlib.h"
-
- #ifdef LATTICE
- #include <stdlib.h>
- #include <string.h>
- #endif
-
- #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 DOS_FALSE 0
- #define DOS_TRUE -1
-
- typedef struct DosPacket PACKET;
- typedef struct DeviceNode DEVNODE;
- typedef struct DeviceList DEVLIST;
- typedef struct DosInfo DOSINFO;
- typedef struct RootNode ROOTNODE;
- typedef struct FileHandle FH;
- typedef struct DateStamp STAMP;
- typedef struct InfoData INFODATA;
- typedef struct DosLibrary DOSLIB;
-
- #define FILE_DIR 1
- #define FILE_FILE -1
-
- #define LOCKLINK struct _LOCKLINK
- #define HANDLE struct _HANDLE
-
- /*
- * 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;
- };
-
- /*
- * OPERATION STRUCTURES
- */
-
- typedef struct {
- long DirHandle; /* relative to directory (0=root) */
- uword Modes; /* open modes */
- } OpOpen;
-
- typedef struct {
- long Handle;
- ulong Prot;
- long Type;
- long Size;
- STAMP Date; /* date stamp */
- } RtOpen;
-
-
- typedef struct {
- long Handle; /* file handle to read from */
- long Bytes; /* # of bytes to read */
- } OpRead;
-
- typedef struct {
- long Bytes; /* < 0 == error */
- } RtRead;
-
- typedef struct {
- long Handle; /* file handle to read from */
- long Bytes; /* # of bytes to read */
- } OpWrite;
-
- typedef struct {
- long Bytes; /* < 0 == error */
- } RtWrite;
-
- typedef struct {
- long Handle;
- } OpClose;
-
- typedef struct {
- long Handle;
- long Offset;
- long How;
- } OpSeek;
-
- typedef struct {
- long OldOffset;
- long NewOffset; /* -1 = error */
- } RtSeek;
-
- typedef struct {
- long Handle;
- } OpParent;
-
- typedef RtOpen RtParent;
-
- typedef struct {
- long DirHandle;
- } OpDelete;
-
- typedef struct {
- long Error;
- } RtDelete;
-
- typedef OpDelete OpCreateDir;
- typedef RtParent RtCreateDir;
-
- typedef struct {
- long Handle;
- } OpDup;
-
- typedef RtOpen RtDup;
-
- typedef struct {
- long Handle; /* oops, actually a directory handle */
- long Index;
- } OpNextDir;
-
- typedef RtOpen RtNextDir;
-
- typedef struct {
- long DirHandle1;
- long DirHandle2;
- } OpRename;
-
- typedef struct {
- long Error;
- } RtRename;
-
- /*
- * Filehandle structure associated with an open file handle
- */
-
-
- #define MAGIC 0x1AFB439C
-
- HANDLE {
- NODE Node; /* link node */
- long Magic;
- LOCK *Lock; /* lock if any */
- long Handle; /* remote handle */
- short Type; /* file type */
- ulong Prot; /* protection bits */
- ulong Size; /* file size */
- STAMP Date; /* date stamp */
- char *Name; /* file name */
- };
-
- /*
- * (void *) in Aztec C means 'pointer to anything'. I use it
- * extensively.
- */
-
- /* REMOVED
-
- extern void returnpacket();
- extern void *GetLockForHandle();
- extern HANDLE *GetHandleForLock();
- extern void *AllocMem(), *RemHead(), *GetMsg();
- extern void *FindTask(), *Open(), *OpenLibrary();
-
- extern void *dosalloc(), *GetSucc(), *GetHead();
- extern LOCK *ramlock();
- extern char *bstos();
- extern char *skipdevice();
- extern HANDLE *getlockfile();
-
- extern char *getpathelement();
- extern char *typetostr();
-
- */
-
-