From 77d9ca64aa550e244e52bb3ce2f8a090056e8029 Mon Sep 17 00:00:00 2001 From: Sjoerd van der Berg Date: Sat, 19 Oct 2002 16:21:08 +0000 Subject: [PATCH] Added and changed a lot of functions to the file and drive classes. Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@354 --- include/dos_system.h | 63 +++++++++++++++++++++----------------------- 1 file changed, 30 insertions(+), 33 deletions(-) diff --git a/include/dos_system.h b/include/dos_system.h index 0b240d03..0223a9a6 100644 --- a/include/dos_system.h +++ b/include/dos_system.h @@ -19,11 +19,13 @@ #ifndef DOSSYSTEM_H_ #define DOSSYSTEM_H_ -#include +#include "dosbox.h" #define DOS_NAMELENGTH 12 -#define DOS_DIRDEPTH 16 -#define DOS_PATHLENGTH (DOS_DIRDEPTH+1)*(DOS_NAMELENGTH+2) +#define DOS_NAMELENGTH_ASCII (DOS_NAMELENGTH+1) +#define DOS_FCBNAME 15 +#define DOS_DIRDEPTH 8 +#define DOS_PATHLENGTH 80 #define DOS_TEMPSIZE 1024 enum { @@ -35,34 +37,29 @@ enum { DOS_ATTR_ARCHIVE= 0x20 }; -#if defined (_MSC_VER) -#pragma pack(1) -#endif -struct DTA_FindBlock { - Bit8u sdrive; /* The Drive the search is taking place */ - Bit16u sattr; /* The attributes that need to be found */ - Bit8u fill[18]; - Bit8u attr; +struct FileStat_Block { + Bit32u size; Bit16u time; Bit16u date; - Bit32u size; - char name[DOS_NAMELENGTH]; -} -#if defined (_MSC_VER) -; -#pragma pack() -#else -__attribute__ ((packed)); -#endif + Bit16u attr; +}; + +class DOS_DTA; class DOS_File { public: + virtual ~DOS_File(){}; virtual bool Read(Bit8u * data,Bit16u * size)=0; virtual bool Write(Bit8u * data,Bit16u * size)=0; virtual bool Seek(Bit32u * pos,Bit32u type)=0; virtual bool Close()=0; virtual Bit16u GetInformation(void)=0; - Bit8u type;Bit32u flags; + Bit8u type; + Bit32u flags; + Bit16u time; + Bit16u date; + Bit16u attr; + Bit32u size; /* Some Device Specific Stuff */ }; @@ -73,24 +70,24 @@ public: Bit8u fhandle; }; - - class DOS_Drive { public: DOS_Drive(); + virtual ~DOS_Drive(){}; virtual bool FileOpen(DOS_File * * file,char * name,Bit32u flags)=0; virtual bool FileCreate(DOS_File * * file,char * name,Bit16u attributes)=0; - virtual bool FileUnlink(char * name)=0; - virtual bool RemoveDir(char * dir)=0; - virtual bool MakeDir(char * dir)=0; - virtual bool TestDir(char * dir)=0; - virtual bool FindFirst(char * search,DTA_FindBlock * dta)=0; - virtual bool FindNext(DTA_FindBlock * dta)=0; + virtual bool FileUnlink(char * _name)=0; + virtual bool RemoveDir(char * _dir)=0; + virtual bool MakeDir(char * _dir)=0; + virtual bool TestDir(char * _dir)=0; + virtual bool FindFirst(char * _dir,DOS_DTA & dta)=0; + virtual bool FindNext(DOS_DTA & dta)=0; virtual bool GetFileAttr(char * name,Bit16u * attr)=0; virtual bool Rename(char * oldname,char * newname)=0; - virtual bool FreeSpace(Bit16u * bytes,Bit16u * sectors,Bit16u * clusters,Bit16u * free)=0; - virtual bool FileExists(const char* name) const=0; - virtual bool FileStat(const char* name, struct stat* const stat_block) const=0; + virtual bool AllocationInfo(Bit16u * _bytes_sector,Bit16u * _sectors_cluster,Bit16u * _total_clusters,Bit16u * _free_clusters)=0; + virtual bool FileExists(const char* name)=0; + virtual bool FileStat(const char* name, FileStat_Block * const stat_block)=0; + virtual Bit8u GetMediaByte(void)=0; char * GetInfo(void); char curdir[DOS_PATHLENGTH]; char info[256]; @@ -109,6 +106,6 @@ typedef bool (MultiplexHandler)(void); void DOS_AddMultiplexHandler(MultiplexHandler * handler); void DOS_AddDevice(DOS_Device * adddev); -void VFILE_Register(char * name,Bit8u * data,Bit32u size); +void VFILE_Register(const char * name,Bit8u * data,Bit32u size); #endif