#ifndef __MSDOS_H #define __MSDOS_H #include #include struct dosdirent { int inuse; DIR *ds; char unixpath[256]; char filename[256]; char filemask[12]; char attribute; char search_attribute; long filesize; long filetime; }; struct fcb { BYTE drive; char name[8]; char extension[3]; BYTE dummy1[4]; int filesize; WORD date_write; WORD time_write; struct dosdirent *directory; BYTE dummy2[9]; }; #define DOSVERSION 0x0330; #define MAX_DOS_DRIVES 26 #define pointer(a,b) (BYTE*)(((WORD) a << 16) | b) #define segment(a) ((DWORD)a >> 16) #define offset(a) ((DWORD)a & 0xffff) #define setword(a,b) *(BYTE*)(a) = b & 0xff; \ *((BYTE*)(a + 1)) = (b>>8) & 0xff; #define setdword(a,b) *(BYTE*)a = b & 0xff; \ *((BYTE*)a + 1) = (b>>8) & 0xff; \ *((BYTE*)a + 2) = (b>>16) & 0xff; \ *((BYTE*)a + 3) = (b>>24) & 0xff; #define getword(a) (WORD) *(BYTE*)a + \ (*((BYTE*)a + 1) << 8) #define getdword(a) (DWORD) (*(BYTE*)a + \ (*((BYTE*)a + 1) << 8) + \ (*((BYTE*)a + 2) << 16) + \ (*((BYTE*)a + 3) << 24)) /* dos file attributes */ #define FA_NORMAL 0x00 /* Normal file, no attributes */ #define FA_RDONLY 0x01 /* Read only attribute */ #define FA_HIDDEN 0x02 /* Hidden file */ #define FA_SYSTEM 0x04 /* System file */ #define FA_LABEL 0x08 /* Volume label */ #define FA_DIREC 0x10 /* Directory */ #define FA_ARCH 0x20 /* Archive */ /* extended error codes */ #define NoError 0x00 #define InvalidFunction 0x01 #define FileNotFound 0x02 #define PathNotFound 0x03 #define AccessDenied 0x05 #define InvalidHandle 0x06 #define MCBDestroyed 0x07 #define OutOfMemory 0x08 #define MCBInvalid 0x09 #define DataInvalid 0x0d #define InvalidDrive 0x0f #define CanNotRemoveCwd 0x10 #define NotSameDevice 0x11 #define NoMoreFiles 0x12 #define WriteProtected 0x13 #define UnknownUnit 0x14 #define DriveNotReady 0x15 #define UnknownCommand 0x16 #define CRCError 0x17 #define BadRqLength 0x18 #define SeekError 0x19 #define UnknownMedia 0x1a #define SectorNotFound 0x1b #define OutOfPaper 0x1c #define WriteFault 0x1d #define ReadFault 0x1e #define GeneralFailure 0x1f #define ShareViolation 0x20 #define LockViolation 0x21 #define DiskFull 0x27 #define NoNetwork 0x49 #define FileExists 0x50 #define CanNotMakeDir 0x52 /* Error classes */ #define EC_Temporary 0x02 #define EC_AccessDenied 0x03 #define EC_AppError 0x04 #define EC_SystemFailure 0x06 #define EC_NotFound 0x08 #define EC_MediaError 0x0b #define EC_Exists 0x0c #define EC_Unknown 0x0d /* Suggested actions */ #define SA_Retry 0x01 #define SA_Abort 0x04 #define SA_Ignore 0x06 #define SA_Ask4Retry 0x07 /* Error locus */ #define EL_Unknown 0x01 #define EL_Disk 0x02 #define EL_Network 0x03 #define EL_Memory 0x05 #endif /* __MSDOS_H */