2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS cabinet manager
4 * FILE: tools/cabman/dfp.h
5 * PURPOSE: Directive file parser header
12 typedef struct _CABINET_NAME {
13 struct _CABINET_NAME *Next;
14 unsigned long DiskNumber;
16 } CABINET_NAME, *PCABINET_NAME;
18 typedef struct _DISK_NUMBER {
19 struct _DISK_NUMBER *Next;
20 unsigned long DiskNumber;
22 } DISK_NUMBER, *PDISK_NUMBER;
40 stCabinetNameTemplate,
57 class CDFParser : public CCabinet {
61 unsigned long Load(char* FileName);
62 unsigned long Parse();
67 virtual bool OnDiskLabel(unsigned long Number, char* Label);
68 virtual bool OnCabinetName(unsigned long Number, char* Name);
70 void WriteInfLine(char* InfLine);
71 bool SetDiskName(PCABINET_NAME *List, unsigned long Number, char* String);
72 bool GetDiskName(PCABINET_NAME *List, unsigned long Number, char* String);
73 bool SetDiskNumber(PDISK_NUMBER *List, unsigned long Number, unsigned long Value);
74 bool GetDiskNumber(PDISK_NUMBER *List, unsigned long Number, unsigned long* Value);
75 bool DoDiskLabel(unsigned long Number, char* Label);
76 void DoDiskLabelTemplate(char* Template);
77 bool DoCabinetName(unsigned long Number, char* Name);
78 void DoCabinetNameTemplate(char* Template);
79 void DoInfFileName(char* InfFileName);
80 unsigned long DoMaxDiskSize(bool NumberValid, unsigned long Number);
81 unsigned long SetupNewDisk();
82 unsigned long PerformSetCommand();
83 unsigned long PerformNewCommand();
84 unsigned long PerformInfBeginCommand();
85 unsigned long PerformInfEndCommand();
86 unsigned long PerformCommand();
87 unsigned long PerformFileCopy();
89 bool IsNextToken(TOKEN Token, bool NoSpaces);
94 FILEHANDLE FileHandle;
96 unsigned long FileBufferSize;
97 unsigned long CurrentOffset;
99 unsigned long LineLength;
100 unsigned long CurrentLine;
101 unsigned long CurrentChar;
104 unsigned long CurrentInteger;
105 char CurrentString[256];
111 /* Standard directive variable */
113 unsigned long CabinetFileCountThreshold;
114 PCABINET_NAME CabinetName;
115 bool CabinetNameTemplateSet;
116 char CabinetNameTemplate[128];
118 char InfFileName[256];
120 unsigned long CompressionType;
121 PCABINET_NAME DiskLabel;
122 bool DiskLabelTemplateSet;
123 char DiskLabelTemplate[128];
124 unsigned long FolderFileCountThreshold;
125 unsigned long FolderSizeThreshold;
126 unsigned long MaxCabinetSize;
127 unsigned long MaxDiskFileCount;
128 PDISK_NUMBER MaxDiskSize;
129 bool MaxDiskSizeAllSet;
130 unsigned long MaxDiskSizeAll;
131 unsigned long ReservePerCabinetSize;
132 unsigned long ReservePerDataBlockSize;
133 unsigned long ReservePerFolderSize;
135 FILEHANDLE InfFileHandle;