home *** CD-ROM | disk | FTP | other *** search
- #ifndef __INC_POS_PDOS_FILES_H
- #define __INC_POS_PDOS_FILES_H
- /*******************************************************************
- Includes Release 24
- (C) Copyright 1995-1997 proDAD
- All Rights Reserved
-
- $AUT Holger Burkarth
- $DAT >>Files.h<< 09 Nov 1996 11:53:45 - (C) ProDAD
- *******************************************************************/
- #ifndef __INC_POS_PDOS_DOSTYPES_H
- #include <pDOS/DosTypes.h>
- #endif
- #ifndef __INC_POS_PDOS_DOSERRORS_H
- #include <pDOS/DosErrors.h>
- #endif
- #ifndef __INC_POS_PEXEC_LIST_H
- #include <pExec/List.h>
- #endif
-
-
- /*----------------------------------
- -----------------------------------*/
- struct pOS_FileHandle
- {
- struct pOS_Node fh_Node;
- struct pOS_DosDevice *fh_DosDev;
- UBYTE fh_Access; /* (enum pOS_FileHandleMode) */
- UBYTE fh_Flags; /* (enum pOS_FileHandleFlags) */
- UWORD fh_Count; /* Mehrfachnutzung */
-
- dossize_t fh_Size; /* Gesamtlänge der Datei in Bytes */
- dossize_t fh_Pos; /* Position in der Datei [0,... fh_Size-1], fh_Pos==fh_Size => EOF */
-
- struct pOS_FHManage *fh_Manage;
- UBYTE *fh_Buffer;
- UBYTE fh_BufType; /* (enum pOS_FileHandleBufType) */
- UBYTE fh_BufFlags; /* (enum pOS_FileHandleBufFlags) */
- size_t fh_BufMaxSize; /* Buffer-Size */
- size_t fh_BufSize; /* Used Size */
- size_t fh_BufPos; /* Position in Buffer (0,1,...fh_BufMaxSize-1) */
- dossize_t fh_BufFPt; /* FilePointer auf Buffer-Start */
-
- UBYTE fh_Reserved2[32]; /* *** must be null */
- };
-
-
- enum pOS_FileHandleFlags /** fh_Flags **/
- {
- FILEHDF_Interactive =0x01,
- FILEHDF_ANSI0 =0x02, /* File versteht ANSI-Codes */
- FILEHDF_Net =0x04, /* File is Net-File */
- };
-
-
- /** pOS_OpenFile() **/
- enum pOS_FileHandleMode /** fh_Access **/
- {
- FILEHDMOD_Unknown=0,
- FILEHDMOD_Read,
- FILEHDMOD_Write,
- FILEHDMOD_ReadWrite,
- FILEHDMOD_Append,
-
- FILEHDMOD_AcMsk = 0x0f, /* Mask for Access-Mode */
-
- FILEHDMOD_GBuffer = 0x0100, /* FH has greate read/write-buffers (64kB) else (4kB) */
- FILEHDMOD_DobBuf = 0x0200, /* double-buffering */
- FILEHDMOD_Unique = 0x0400, /* MultiAssigns werden NICHT berücksichtigt */
- FILEHDMOD_NoReq = 0x0800, /* Es wird kein Report-Requester geöffnet */
-
- };
-
-
- /** pOS_SeekFile(fh,pos,enum ) **/
- enum pOS_FileHandleSeek
- {
- FILEHDSEK_Begin =-1,
- FILEHDSEK_Current= 0,
- FILEHDSEK_End = 1,
- };
-
-
-
- enum pOS_FileHandleBufType /** fh_BufType **/
- {
- FILEHDBUFTYP_None=0,
- FILEHDBUFTYP_Std,
- FILEHDBUFTYP_LF,
-
- FILEHDBUFTYP_TMask=0x7f,
- };
-
-
- enum pOS_FileHandleBufFlags /** fh_BufFlags **/
- {
- FILEHDBUFF_FreeBuffer = 0x01,
- FILEHDBUFF_Update = 0x02, /* Buffer-Inhalt stimmt mit File nicht mehr überein */
- };
-
-
-
-
- /*----------------------------------
- -----------------------------------*/
- struct pOS_FHManage
- {
- struct pOS_ExNode fhm_Node;
-
- UBYTE fhm_Reserved1[16];
-
- VOID (*fhm_Init_func) (_R_LB struct pOS_DosBase*,_R_A0 struct pOS_FileHandle*,_R_D0 ULONG mode); /* Daten nullen */
- VOID (*fhm_Rem_func) (_R_LB struct pOS_DosBase*,_R_A0 struct pOS_FileHandle*); /* eigenen Puffer freigeben */
- VOID (*fhm_Read_func) (_R_LB struct pOS_DosBase*,_R_A0 struct pOS_DosIOReq*);
- VOID (*fhm_Write_func) (_R_LB struct pOS_DosBase*,_R_A0 struct pOS_DosIOReq*);
- VOID (*fhm_Seek_func) (_R_LB struct pOS_DosBase*,_R_A0 struct pOS_DosIOReq*);
- VOID (*fhm_Close_func) (_R_LB struct pOS_DosBase*,_R_A0 struct pOS_DosIOReq*);
- SLONG (*fhm_SetVBuf_func)(_R_LB struct pOS_DosBase*,_R_A0 struct pOS_FileHandle*,_R_A1 UBYTE*,_R_D0 ULONG,_R_D1 size_t);
- SLONG (*fhm_Flush_func) (_R_LB struct pOS_DosBase*,_R_A0 struct pOS_FileHandle*);
-
- UBYTE fhm_Reserved2[64];
- };
-
-
- #endif
-