home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Misc / DC-POS24.LZX / pOS / IncPOS.lzx / pDOS / Files.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-03-18  |  3.7 KB  |  126 lines

  1. #ifndef __INC_POS_PDOS_FILES_H
  2. #define __INC_POS_PDOS_FILES_H
  3. /*******************************************************************
  4.  Includes Release 24
  5.  (C) Copyright 1995-1997 proDAD
  6.      All Rights Reserved
  7.  
  8.  $AUT Holger Burkarth
  9.  $DAT >>Files.h<<   09 Nov 1996    11:53:45 - (C) ProDAD
  10. *******************************************************************/
  11. #ifndef __INC_POS_PDOS_DOSTYPES_H
  12. #include <pDOS/DosTypes.h>
  13. #endif
  14. #ifndef __INC_POS_PDOS_DOSERRORS_H
  15. #include <pDOS/DosErrors.h>
  16. #endif
  17. #ifndef __INC_POS_PEXEC_LIST_H
  18. #include <pExec/List.h>
  19. #endif
  20.  
  21.  
  22. /*----------------------------------
  23. -----------------------------------*/
  24. struct pOS_FileHandle
  25. {
  26.   struct pOS_Node       fh_Node;
  27.   struct pOS_DosDevice *fh_DosDev;
  28.   UBYTE                 fh_Access;     /* (enum pOS_FileHandleMode) */
  29.   UBYTE                 fh_Flags;      /* (enum pOS_FileHandleFlags) */
  30.   UWORD                 fh_Count;      /* Mehrfachnutzung */
  31.  
  32.   dossize_t             fh_Size;       /* Gesamtlänge der Datei in Bytes */
  33.   dossize_t             fh_Pos;        /* Position in der Datei [0,... fh_Size-1], fh_Pos==fh_Size => EOF */
  34.  
  35.   struct pOS_FHManage  *fh_Manage;
  36.   UBYTE                *fh_Buffer;
  37.   UBYTE                 fh_BufType;    /* (enum pOS_FileHandleBufType)  */
  38.   UBYTE                 fh_BufFlags;   /* (enum pOS_FileHandleBufFlags) */
  39.   size_t                fh_BufMaxSize; /* Buffer-Size */
  40.   size_t                fh_BufSize;    /* Used Size */
  41.   size_t                fh_BufPos;     /* Position in Buffer (0,1,...fh_BufMaxSize-1) */
  42.   dossize_t             fh_BufFPt;     /* FilePointer auf Buffer-Start */
  43.  
  44.   UBYTE fh_Reserved2[32]; /* *** must be null */
  45. };
  46.  
  47.  
  48. enum pOS_FileHandleFlags  /** fh_Flags **/
  49. {
  50.   FILEHDF_Interactive  =0x01,
  51.   FILEHDF_ANSI0        =0x02, /* File versteht ANSI-Codes */
  52.   FILEHDF_Net          =0x04, /* File is Net-File */
  53. };
  54.  
  55.  
  56. /** pOS_OpenFile() **/
  57. enum pOS_FileHandleMode /** fh_Access **/
  58. {
  59.   FILEHDMOD_Unknown=0,
  60.   FILEHDMOD_Read,
  61.   FILEHDMOD_Write,
  62.   FILEHDMOD_ReadWrite,
  63.   FILEHDMOD_Append,
  64.  
  65.   FILEHDMOD_AcMsk = 0x0f,  /* Mask for Access-Mode */
  66.  
  67.   FILEHDMOD_GBuffer = 0x0100, /* FH has greate read/write-buffers (64kB) else (4kB) */
  68.   FILEHDMOD_DobBuf  = 0x0200, /* double-buffering */
  69.   FILEHDMOD_Unique  = 0x0400, /* MultiAssigns werden NICHT berücksichtigt */
  70.   FILEHDMOD_NoReq   = 0x0800, /* Es wird kein Report-Requester geöffnet */
  71.  
  72. };
  73.  
  74.  
  75. /** pOS_SeekFile(fh,pos,enum ) **/
  76. enum pOS_FileHandleSeek
  77. {
  78.   FILEHDSEK_Begin  =-1,
  79.   FILEHDSEK_Current= 0,
  80.   FILEHDSEK_End    = 1,
  81. };
  82.  
  83.  
  84.  
  85. enum pOS_FileHandleBufType /** fh_BufType **/
  86. {
  87.   FILEHDBUFTYP_None=0,
  88.   FILEHDBUFTYP_Std,
  89.   FILEHDBUFTYP_LF,
  90.  
  91.   FILEHDBUFTYP_TMask=0x7f,
  92. };
  93.  
  94.  
  95. enum pOS_FileHandleBufFlags /** fh_BufFlags **/
  96. {
  97.   FILEHDBUFF_FreeBuffer = 0x01,
  98.   FILEHDBUFF_Update     = 0x02, /* Buffer-Inhalt stimmt mit File nicht mehr überein */
  99. };
  100.  
  101.  
  102.  
  103.  
  104. /*----------------------------------
  105. -----------------------------------*/
  106. struct pOS_FHManage
  107. {
  108.   struct pOS_ExNode fhm_Node;
  109.  
  110.   UBYTE fhm_Reserved1[16];
  111.  
  112.   VOID  (*fhm_Init_func)   (_R_LB struct pOS_DosBase*,_R_A0 struct pOS_FileHandle*,_R_D0 ULONG mode); /* Daten nullen */
  113.   VOID  (*fhm_Rem_func)    (_R_LB struct pOS_DosBase*,_R_A0 struct pOS_FileHandle*); /* eigenen Puffer freigeben */
  114.   VOID  (*fhm_Read_func)   (_R_LB struct pOS_DosBase*,_R_A0 struct pOS_DosIOReq*);
  115.   VOID  (*fhm_Write_func)  (_R_LB struct pOS_DosBase*,_R_A0 struct pOS_DosIOReq*);
  116.   VOID  (*fhm_Seek_func)   (_R_LB struct pOS_DosBase*,_R_A0 struct pOS_DosIOReq*);
  117.   VOID  (*fhm_Close_func)  (_R_LB struct pOS_DosBase*,_R_A0 struct pOS_DosIOReq*);
  118.   SLONG (*fhm_SetVBuf_func)(_R_LB struct pOS_DosBase*,_R_A0 struct pOS_FileHandle*,_R_A1 UBYTE*,_R_D0 ULONG,_R_D1 size_t);
  119.   SLONG (*fhm_Flush_func)  (_R_LB struct pOS_DosBase*,_R_A0 struct pOS_FileHandle*);
  120.  
  121.   UBYTE fhm_Reserved2[64];
  122. };
  123.  
  124.  
  125. #endif
  126.