mirror of
https://github.com/reactos/reactos.git
synced 2025-08-07 05:52:57 +00:00
* Create a branch for USB experiments.
svn path=/branches/usb-experiments/; revision=72629
This commit is contained in:
parent
28d8ba0d3e
commit
0ee830d7a4
23049 changed files with 0 additions and 1313991 deletions
147
sdk/tools/cabman/dfp.h
Normal file
147
sdk/tools/cabman/dfp.h
Normal file
|
@ -0,0 +1,147 @@
|
|||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS cabinet manager
|
||||
* FILE: tools/cabman/dfp.h
|
||||
* PURPOSE: Directive file parser header
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "cabinet.h"
|
||||
|
||||
typedef struct _CABINET_NAME
|
||||
{
|
||||
struct _CABINET_NAME *Next;
|
||||
ULONG DiskNumber;
|
||||
char Name[128];
|
||||
} CABINET_NAME, *PCABINET_NAME;
|
||||
|
||||
typedef struct _DISK_NUMBER
|
||||
{
|
||||
struct _DISK_NUMBER *Next;
|
||||
ULONG DiskNumber;
|
||||
ULONG Number;
|
||||
} DISK_NUMBER, *PDISK_NUMBER;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TokenUnknown,
|
||||
TokenInteger,
|
||||
TokenIdentifier,
|
||||
TokenString,
|
||||
TokenSpace,
|
||||
TokenSemi,
|
||||
TokenEqual,
|
||||
TokenPeriod,
|
||||
TokenBackslash,
|
||||
TokenEnd,
|
||||
} DFP_TOKEN;
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
stCabinetName,
|
||||
stCabinetNameTemplate,
|
||||
stDiskLabel,
|
||||
stDiskLabelTemplate,
|
||||
stMaxDiskSize,
|
||||
stInfFileName
|
||||
} SETTYPE;
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ntDisk,
|
||||
ntCabinet,
|
||||
ntFolder,
|
||||
} NEWTYPE;
|
||||
|
||||
|
||||
/* Classes */
|
||||
|
||||
class CDFParser : public CCabinet
|
||||
{
|
||||
public:
|
||||
CDFParser();
|
||||
virtual ~CDFParser();
|
||||
ULONG Load(char* FileName);
|
||||
ULONG Parse();
|
||||
void SetFileRelativePath(char* Path);
|
||||
bool InfFileOnly;
|
||||
bool DontGenerateInf;
|
||||
char FileRelativePath[300];
|
||||
private:
|
||||
/* Event handlers */
|
||||
virtual bool OnDiskLabel(ULONG Number, char* Label);
|
||||
virtual bool OnCabinetName(ULONG Number, char* Name);
|
||||
|
||||
void WriteInfLine(char* InfLine);
|
||||
bool SetDiskName(PCABINET_NAME *List, ULONG Number, char* String);
|
||||
bool GetDiskName(PCABINET_NAME *List, ULONG Number, char* String);
|
||||
bool SetDiskNumber(PDISK_NUMBER *List, ULONG Number, ULONG Value);
|
||||
bool GetDiskNumber(PDISK_NUMBER *List, ULONG Number, PULONG Value);
|
||||
bool DoDiskLabel(ULONG Number, char* Label);
|
||||
void DoDiskLabelTemplate(char* Template);
|
||||
bool DoCabinetName(ULONG Number, char* Name);
|
||||
void DoCabinetNameTemplate(char* Template);
|
||||
void DoInfFileName(char* InfFileName);
|
||||
ULONG DoMaxDiskSize(bool NumberValid, ULONG Number);
|
||||
ULONG SetupNewDisk();
|
||||
ULONG PerformSetCommand();
|
||||
ULONG PerformNewCommand();
|
||||
ULONG PerformInfBeginCommand();
|
||||
ULONG PerformInfEndCommand();
|
||||
ULONG PerformCommand();
|
||||
ULONG PerformFileCopy();
|
||||
void SkipSpaces();
|
||||
bool IsNextToken(DFP_TOKEN Token, bool NoSpaces);
|
||||
bool ReadLine();
|
||||
void NextToken();
|
||||
/* Parsing */
|
||||
bool FileLoaded;
|
||||
FILEHANDLE FileHandle;
|
||||
char* FileBuffer;
|
||||
ULONG FileBufferSize;
|
||||
ULONG CurrentOffset;
|
||||
char Line[PATH_MAX + 6]; /* "PATH" xEOL */
|
||||
ULONG LineLength;
|
||||
ULONG CurrentLine;
|
||||
ULONG CurrentChar;
|
||||
/* Token */
|
||||
DFP_TOKEN CurrentToken;
|
||||
ULONG CurrentInteger;
|
||||
char CurrentString[256];
|
||||
|
||||
/* State */
|
||||
bool CabinetCreated;
|
||||
bool DiskCreated;
|
||||
bool FolderCreated;
|
||||
/* Standard directive variable */
|
||||
bool Cabinet;
|
||||
ULONG CabinetFileCountThreshold;
|
||||
PCABINET_NAME CabinetName;
|
||||
bool CabinetNameTemplateSet;
|
||||
char CabinetNameTemplate[128];
|
||||
bool InfFileNameSet;
|
||||
char InfFileName[256];
|
||||
bool Compress;
|
||||
ULONG CompressionType;
|
||||
PCABINET_NAME DiskLabel;
|
||||
bool DiskLabelTemplateSet;
|
||||
char DiskLabelTemplate[128];
|
||||
ULONG FolderFileCountThreshold;
|
||||
ULONG FolderSizeThreshold;
|
||||
ULONG MaxCabinetSize;
|
||||
ULONG MaxDiskFileCount;
|
||||
PDISK_NUMBER MaxDiskSize;
|
||||
bool MaxDiskSizeAllSet;
|
||||
ULONG MaxDiskSizeAll;
|
||||
ULONG ReservePerCabinetSize;
|
||||
ULONG ReservePerDataBlockSize;
|
||||
ULONG ReservePerFolderSize;
|
||||
char SourceDir[256];
|
||||
FILEHANDLE InfFileHandle;
|
||||
bool InfModeEnabled;
|
||||
};
|
||||
|
||||
/* EOF */
|
Loading…
Add table
Add a link
Reference in a new issue