ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

dfp.h
Go to the documentation of this file.
00001 /*
00002  * COPYRIGHT:   See COPYING in the top level directory
00003  * PROJECT:     ReactOS cabinet manager
00004  * FILE:        tools/cabman/dfp.h
00005  * PURPOSE:     Directive file parser header
00006  */
00007 
00008 #pragma once
00009 
00010 #include "cabinet.h"
00011 
00012 typedef struct _CABINET_NAME {
00013     struct _CABINET_NAME *Next;
00014     ULONG DiskNumber;
00015     char Name[128];
00016 } CABINET_NAME, *PCABINET_NAME;
00017 
00018 typedef struct _DISK_NUMBER {
00019     struct _DISK_NUMBER *Next;
00020     ULONG DiskNumber;
00021     ULONG Number;
00022 } DISK_NUMBER, *PDISK_NUMBER;
00023 
00024 typedef enum {
00025     TokenUnknown,
00026     TokenInteger,
00027     TokenIdentifier,
00028     TokenString,
00029     TokenSpace,
00030     TokenSemi,
00031     TokenEqual,
00032     TokenPeriod,
00033     TokenBackslash,
00034     TokenEnd,
00035 } DFP_TOKEN;
00036 
00037 
00038 typedef enum {
00039     stCabinetName,
00040     stCabinetNameTemplate,
00041     stDiskLabel,
00042     stDiskLabelTemplate,
00043     stMaxDiskSize,
00044     stInfFileName
00045 } SETTYPE;
00046 
00047 
00048 typedef enum {
00049     ntDisk,
00050     ntCabinet,
00051     ntFolder,
00052 } NEWTYPE;
00053 
00054 
00055 /* Classes */
00056 
00057 class CDFParser : public CCabinet {
00058 public:
00059     CDFParser();
00060     virtual ~CDFParser();
00061     ULONG Load(char* FileName);
00062     ULONG Parse();
00063     void SetFileRelativePath(char* Path);
00064     bool InfFileOnly;
00065     bool DontGenerateInf;
00066     char FileRelativePath[300];
00067 private:
00068     /* Event handlers */
00069     virtual bool OnDiskLabel(ULONG Number, char* Label);
00070     virtual bool OnCabinetName(ULONG Number, char* Name);
00071 
00072     void WriteInfLine(char* InfLine);
00073     bool SetDiskName(PCABINET_NAME *List, ULONG Number, char* String);
00074     bool GetDiskName(PCABINET_NAME *List, ULONG Number, char* String);
00075     bool SetDiskNumber(PDISK_NUMBER *List, ULONG Number, ULONG Value);
00076     bool GetDiskNumber(PDISK_NUMBER *List, ULONG Number, PULONG Value);
00077     bool DoDiskLabel(ULONG Number, char* Label);
00078     void DoDiskLabelTemplate(char* Template);
00079     bool DoCabinetName(ULONG Number, char* Name);
00080     void DoCabinetNameTemplate(char* Template);
00081     void DoInfFileName(char* InfFileName);
00082     ULONG DoMaxDiskSize(bool NumberValid, ULONG Number);
00083     ULONG SetupNewDisk();
00084     ULONG PerformSetCommand();
00085     ULONG PerformNewCommand();
00086     ULONG PerformInfBeginCommand();
00087     ULONG PerformInfEndCommand();
00088     ULONG PerformCommand();
00089     ULONG PerformFileCopy();
00090     void SkipSpaces();
00091     bool IsNextToken(DFP_TOKEN Token, bool NoSpaces);
00092     bool ReadLine();
00093     void NextToken();
00094     /* Parsing */
00095     bool FileLoaded;
00096     FILEHANDLE FileHandle;
00097     char* FileBuffer;
00098     ULONG FileBufferSize;
00099     ULONG CurrentOffset;
00100     char Line[PATH_MAX + 6]; /* "PATH" xEOL */
00101     ULONG LineLength;
00102     ULONG CurrentLine;
00103     ULONG CurrentChar;
00104     /* Token */
00105     DFP_TOKEN CurrentToken;
00106     ULONG CurrentInteger;
00107     char CurrentString[256];
00108 
00109     /* State */
00110     bool CabinetCreated;
00111     bool DiskCreated;
00112     bool FolderCreated;
00113     /* Standard directive variable */
00114     bool Cabinet;
00115     ULONG CabinetFileCountThreshold;
00116     PCABINET_NAME CabinetName;
00117     bool CabinetNameTemplateSet;
00118     char CabinetNameTemplate[128];
00119     bool InfFileNameSet;
00120     char InfFileName[256];
00121     bool Compress;
00122     ULONG CompressionType;
00123     PCABINET_NAME DiskLabel;
00124     bool DiskLabelTemplateSet;
00125     char DiskLabelTemplate[128];
00126     ULONG FolderFileCountThreshold;
00127     ULONG FolderSizeThreshold;
00128     ULONG MaxCabinetSize;
00129     ULONG MaxDiskFileCount;
00130     PDISK_NUMBER MaxDiskSize;
00131     bool MaxDiskSizeAllSet;
00132     ULONG MaxDiskSizeAll;
00133     ULONG ReservePerCabinetSize;
00134     ULONG ReservePerDataBlockSize;
00135     ULONG ReservePerFolderSize;
00136     char SourceDir[256];
00137     FILEHANDLE InfFileHandle;
00138     bool InfModeEnabled;
00139 };
00140 
00141 /* EOF */

Generated on Sun May 27 2012 04:37:44 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.