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
14 struct _CABINET_NAME
*Next
;
17 } CABINET_NAME
, *PCABINET_NAME
;
19 typedef struct _DISK_NUMBER
21 struct _DISK_NUMBER
*Next
;
24 } DISK_NUMBER
, *PDISK_NUMBER
;
44 stCabinetNameTemplate
,
62 class CDFParser
: public CCabinet
67 ULONG
Load(char* FileName
);
69 void SetFileRelativePath(char* Path
);
72 char FileRelativePath
[300];
75 virtual bool OnDiskLabel(ULONG Number
, char* Label
);
76 virtual bool OnCabinetName(ULONG Number
, char* Name
);
78 void WriteInfLine(char* InfLine
);
79 bool SetDiskName(PCABINET_NAME
*List
, ULONG Number
, char* String
);
80 bool GetDiskName(PCABINET_NAME
*List
, ULONG Number
, char* String
);
81 bool SetDiskNumber(PDISK_NUMBER
*List
, ULONG Number
, ULONG Value
);
82 bool GetDiskNumber(PDISK_NUMBER
*List
, ULONG Number
, PULONG Value
);
83 bool DoDiskLabel(ULONG Number
, char* Label
);
84 void DoDiskLabelTemplate(char* Template
);
85 bool DoCabinetName(ULONG Number
, char* Name
);
86 void DoCabinetNameTemplate(char* Template
);
87 void DoInfFileName(char* InfFileName
);
88 ULONG
DoMaxDiskSize(bool NumberValid
, ULONG Number
);
90 ULONG
PerformSetCommand();
91 ULONG
PerformNewCommand();
92 ULONG
PerformInfBeginCommand();
93 ULONG
PerformInfEndCommand();
94 ULONG
PerformCommand();
95 ULONG
PerformFileCopy();
97 bool IsNextToken(DFP_TOKEN Token
, bool NoSpaces
);
102 FILEHANDLE FileHandle
;
104 ULONG FileBufferSize
;
106 char Line
[PATH_MAX
+ 6]; /* "PATH" xEOL */
111 DFP_TOKEN CurrentToken
;
112 ULONG CurrentInteger
;
113 char CurrentString
[256];
119 /* Standard directive variable */
121 ULONG CabinetFileCountThreshold
;
122 PCABINET_NAME CabinetName
;
123 bool CabinetNameTemplateSet
;
124 char CabinetNameTemplate
[128];
126 char InfFileName
[256];
128 ULONG CompressionType
;
129 PCABINET_NAME DiskLabel
;
130 bool DiskLabelTemplateSet
;
131 char DiskLabelTemplate
[128];
132 ULONG FolderFileCountThreshold
;
133 ULONG FolderSizeThreshold
;
134 ULONG MaxCabinetSize
;
135 ULONG MaxDiskFileCount
;
136 PDISK_NUMBER MaxDiskSize
;
137 bool MaxDiskSizeAllSet
;
138 ULONG MaxDiskSizeAll
;
139 ULONG ReservePerCabinetSize
;
140 ULONG ReservePerDataBlockSize
;
141 ULONG ReservePerFolderSize
;
143 FILEHANDLE InfFileHandle
;