home *** CD-ROM | disk | FTP | other *** search
/ The CDPD Public Domain Collection for CDTV 4 / CDPD_IV.bin / networking / dnet / dnet2.3.2 / amiga / doshand / dos.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-06-29  |  3.6 KB  |  184 lines

  1.  
  2. /*
  3.  *  DOS.H
  4.  */
  5.  
  6. #include <exec/types.h>
  7. #include <local/xmisc.h>
  8. #include <libraries/dos.h>
  9. #include <libraries/dosextens.h>
  10. #include <libraries/filehandler.h>
  11.  
  12. #include <stdio.h>
  13.  
  14. #include "/dnet/dnet.h"
  15. #include "/server/servers.h"
  16. #include "/dnet/channel.h"
  17. #include "/lib/dnetlib.h"
  18.  
  19. #include <stdlib.h>
  20. #include <string.h>
  21.  
  22. /*
  23.  *  ACTIONS which do not exist in dosextens.h but which indeed exist on
  24.  *  the Amiga.
  25.  */
  26.  
  27. #define ACTION_OPENRW        1004
  28. #define ACTION_OPENOLD        1005
  29. #define ACTION_OPENNEW        1006
  30. #define ACTION_CLOSE        1007
  31. #define ACTION_SEEK        1008
  32. #define ACTION_RAWMODE        994
  33. #define ACTION_MORECACHE    18
  34. #define ACTION_FLUSH        27
  35.  
  36. #define DOS_FALSE   0
  37. #define DOS_TRUE    -1
  38.  
  39. typedef struct DosPacket    PACKET;
  40. typedef struct DeviceNode    DEVNODE;
  41. typedef struct DeviceList    DEVLIST;
  42. typedef struct DosInfo        DOSINFO;
  43. typedef struct RootNode     ROOTNODE;
  44. typedef struct FileHandle    FH;
  45. typedef struct DateStamp    STAMP;
  46. typedef struct InfoData     INFODATA;
  47. typedef struct DosLibrary    DOSLIB;
  48. typedef struct FileLock     LOCK;
  49. typedef struct FileInfoBlock    FIB;
  50. typedef struct Library        LIB;
  51.  
  52. #define FILE_DIR    1
  53. #define FILE_FILE   -1
  54.  
  55. #define LOCKLINK    struct _LOCKLINK
  56. #define HANDLE        struct _HANDLE
  57.  
  58. /*
  59.  *  We use this structure to link locks together in a list for internal
  60.  *  usage.  I could have use the link field in the lock structure as a
  61.  *  real linked list, but didn't want to have to sequentially search the
  62.  *  list to remove a node.
  63.  *
  64.  *  NOTE:   You CANNOT simply extend the FileLock (LOCK) structure.  Some
  65.  *  programs assume it is sizeof(LOCK) big and break.  I found this out the
  66.  *  hard way.
  67.  */
  68.  
  69. LOCKLINK {
  70.     NODE    Node;
  71.     LOCK    *Lock;
  72. };
  73.  
  74. /*
  75.  *  OPERATION STRUCTURES
  76.  */
  77.  
  78. typedef struct {
  79.     long    DirHandle;        /*  relative to directory (0=root)  */
  80.     uword   Modes;        /*  open modes                */
  81.     uword   Pad;
  82. } OpOpen;
  83.  
  84. typedef struct {
  85.     long    Handle;
  86.     ulong   Prot;
  87.     long    Type;
  88.     long    Size;
  89.     STAMP   Date;        /*  date stamp    */
  90. } RtOpen;
  91.  
  92.  
  93. typedef struct {
  94.     long    Handle;        /*  file handle to read from        */
  95.     long    Bytes;        /*  # of bytes to read            */
  96. } OpRead;
  97.  
  98. typedef struct {
  99.     long    Bytes;        /*  < 0 == error            */
  100. } RtRead;
  101.  
  102. typedef struct {
  103.     long    Handle;        /*  file handle to read from        */
  104.     long    Bytes;        /*  # of bytes to read            */
  105. } OpWrite;
  106.  
  107. typedef struct {
  108.     long    Bytes;        /*  < 0 == error            */
  109. } RtWrite;
  110.  
  111. typedef struct {
  112.     long    Handle;
  113. } OpClose;
  114.  
  115. typedef struct {
  116.     long    Handle;
  117.     long    Offset;
  118.     long    How;
  119. } OpSeek;
  120.  
  121. typedef struct {
  122.     long    OldOffset;
  123.     long    NewOffset;        /*    -1 = error  */
  124. } RtSeek;
  125.  
  126. typedef struct {
  127.     long    Handle;
  128. } OpParent;
  129.  
  130. typedef RtOpen    RtParent;
  131.  
  132. typedef struct {
  133.     long    DirHandle;
  134. } OpDelete;
  135.  
  136. typedef struct {
  137.     long    Error;
  138. } RtDelete;
  139.  
  140. typedef OpDelete OpCreateDir;
  141. typedef RtParent RtCreateDir;
  142.  
  143. typedef struct {
  144.     long    Handle;
  145. } OpDup;
  146.  
  147. typedef RtOpen    RtDup;
  148.  
  149. typedef struct {
  150.     long    Handle;        /*    oops, actually a directory handle   */
  151.     long    Index;
  152. } OpNextDir;
  153.  
  154. typedef RtOpen    RtNextDir;
  155.  
  156. typedef struct {
  157.     long    DirHandle1;
  158.     long    DirHandle2;
  159. } OpRename;
  160.  
  161. typedef struct {
  162.     long    Error;
  163. } RtRename;
  164.  
  165. /*
  166.  *  Filehandle structure associated with an open file handle
  167.  */
  168.  
  169.  
  170. #define MAGIC    0x1AFB439C
  171.  
  172. HANDLE {
  173.     NODE    Node;    /*  link node        */
  174.     long    Magic;
  175.     LOCK    *Lock;    /*  lock if any     */
  176.     long    Handle;    /*  remote handle    */
  177.     short   Type;    /*  file type        */
  178.     ulong   Prot;    /*  protection bits    */
  179.     ulong   Size;    /*  file size        */
  180.     STAMP   Date;    /*  date stamp        */
  181.     char    *Name;    /*  file name        */
  182. };
  183.  
  184.