ReactOS  0.4.15-dev-2956-g61e7ea5
CConfiguration Class Reference

#include <CConfiguration.h>

Public Member Functions

 CConfiguration ()
 
void ParseParameters (int argc, wchar_t *argv[])
 
void GetSystemInformation ()
 
void GetConfigurationFromFile ()
 
bool DoCrashRecovery () const
 
bool DoPrint () const
 
bool DoShutdown () const
 
bool DoSubmit () const
 
bool IsInteractive () const
 
bool IsReactOS () const
 
unsigned long GetRepeatCount () const
 
bool ListModulesOnly () const
 
const stringGetComment () const
 
const wstring & GetModule () const
 
const stringGetTest () const
 
const stringGetAuthenticationRequestString () const
 
const stringGetSystemInfoRequestString () const
 

Private Attributes

bool m_CrashRecovery
 
bool m_IsInteractive
 
bool m_IsReactOS
 
bool m_PrintToConsole
 
unsigned long m_RepeatCount
 
bool m_Shutdown
 
bool m_Submit
 
bool m_ListModules
 
string m_Comment
 
wstring m_Module
 
string m_Test
 
string m_AuthenticationRequestString
 
string m_SystemInfoRequestString
 

Detailed Description

Definition at line 8 of file CConfiguration.h.

Constructor & Destructor Documentation

◆ CConfiguration()

CConfiguration::CConfiguration ( )

Constructs an empty CConfiguration object

Definition at line 18 of file CConfiguration.cpp.

19  : m_CrashRecovery(false),
20  m_IsInteractive(false),
21  m_PrintToConsole(true),
22  m_RepeatCount(1),
23  m_Shutdown(false),
24  m_Submit(false),
25  m_ListModules(false)
26 {
27  WCHAR WindowsDirectory[MAX_PATH];
28  WCHAR Interactive[32];
29 
30  /* Check if we are running under ReactOS from the SystemRoot directory */
31  if(!GetWindowsDirectoryW(WindowsDirectory, MAX_PATH))
32  FATAL("GetWindowsDirectoryW failed\n");
33 
34  m_IsReactOS = !_wcsnicmp(&WindowsDirectory[3], L"reactos", 7);
35 
36  if(GetEnvironmentVariableW(L"WINETEST_INTERACTIVE", Interactive, _countof(Interactive)))
38 }
#define FATAL(Message)
Definition: precomp.h:57
_Check_return_ _CRTIMP int __cdecl _wtoi(_In_z_ const wchar_t *_Str)
_Check_return_ _CRTIMP int __cdecl _wcsnicmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
Definition: path.c:2351
unsigned long m_RepeatCount
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define _countof(array)
Definition: sndvol32.h:68
#define MAX_PATH
Definition: compat.h:34
static const WCHAR L[]
Definition: oid.c:1250
#define GetEnvironmentVariableW(x, y, z)
Definition: compat.h:614

Member Function Documentation

◆ DoCrashRecovery()

bool CConfiguration::DoCrashRecovery ( ) const
inline

Definition at line 32 of file CConfiguration.h.

32 { return m_CrashRecovery; }

◆ DoPrint()

bool CConfiguration::DoPrint ( ) const
inline

Definition at line 33 of file CConfiguration.h.

33 { return m_PrintToConsole; }

◆ DoShutdown()

bool CConfiguration::DoShutdown ( ) const
inline

Definition at line 34 of file CConfiguration.h.

34 { return m_Shutdown; }

◆ DoSubmit()

bool CConfiguration::DoSubmit ( ) const
inline

Definition at line 35 of file CConfiguration.h.

35 { return m_Submit; }

◆ GetAuthenticationRequestString()

const string& CConfiguration::GetAuthenticationRequestString ( ) const
inline

Definition at line 44 of file CConfiguration.h.

string m_AuthenticationRequestString

◆ GetComment()

const string& CConfiguration::GetComment ( ) const
inline

Definition at line 40 of file CConfiguration.h.

40 { return m_Comment; }

◆ GetConfigurationFromFile()

void CConfiguration::GetConfigurationFromFile ( )

Reads additional configuration options from the INI file.

ParseParameters should be called before this function to get the desired result.

Definition at line 205 of file CConfiguration.cpp.

206 {
207  DWORD Length;
208  string Value;
209  WCHAR ConfigFile[MAX_PATH];
210 
211  /* Most values are only needed if we're going to submit anything */
212  if(m_Submit)
213  {
214  /* Build the path to the configuration file from the application's path */
215  GetModuleFileNameW(NULL, ConfigFile, MAX_PATH);
216  Length = wcsrchr(ConfigFile, '\\') - ConfigFile + 1;
217  wcscpy(&ConfigFile[Length], CONFIGURATION_FILENAMEW);
218 
219  /* Check if it exists */
221  EXCEPTION("Missing \"" CONFIGURATION_FILENAMEA "\" configuration file!\n");
222 
223  /* Get the user name */
224  m_AuthenticationRequestString = "&sourceid=";
225  Value = GetINIValue(L"Login", L"SourceID", ConfigFile);
226 
227  if(Value.empty())
228  EXCEPTION("SourceID is missing in the configuration file\n");
229 
231 
232  /* Get the password */
233  m_AuthenticationRequestString += "&password=";
234  Value = GetINIValue(L"Login", L"Password", ConfigFile);
235 
236  if(Value.empty())
237  EXCEPTION("Password is missing in the configuration file\n");
238 
240 
241  /* If we don't have any Comment string yet, try to find one in the INI file */
242  if(m_Comment.empty())
243  m_Comment = GetINIValue(L"Submission", L"Comment", ConfigFile);
244  }
245 }
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
Definition: loader.c:600
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
Definition: fileinfo.c:652
#define EXCEPTION(Message)
Definition: precomp.h:56
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:406
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define MAX_PATH
Definition: compat.h:34
string EscapeString(const char *Input)
Definition: tools.cpp:24
unsigned long DWORD
Definition: ntddk_ex.h:95
#define INVALID_FILE_ATTRIBUTES
Definition: vfdcmd.c:23
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
static const WCHAR L[]
Definition: oid.c:1250
#define wcsrchr
Definition: compat.h:16
string GetINIValue(PCWCH AppName, PCWCH KeyName, PCWCH FileName)
Definition: tools.cpp:187
#define NULL
Definition: types.h:112
#define CONFIGURATION_FILENAMEW
#define CONFIGURATION_FILENAMEA
string m_AuthenticationRequestString

◆ GetModule()

const wstring& CConfiguration::GetModule ( ) const
inline

Definition at line 41 of file CConfiguration.h.

41 { return m_Module; }

◆ GetRepeatCount()

unsigned long CConfiguration::GetRepeatCount ( ) const
inline

Definition at line 38 of file CConfiguration.h.

38 { return m_RepeatCount; }
unsigned long m_RepeatCount

◆ GetSystemInfoRequestString()

const string& CConfiguration::GetSystemInfoRequestString ( ) const
inline

Definition at line 45 of file CConfiguration.h.

45 { return m_SystemInfoRequestString; }
string m_SystemInfoRequestString

◆ GetSystemInformation()

void CConfiguration::GetSystemInformation ( )

Gets information about the running system and sets the appropriate configuration settings.

Definition at line 141 of file CConfiguration.cpp.

142 {
143  char ProductType;
144  GETSYSINFO GetSysInfo;
146  OSVERSIONINFOEXW os;
148  SYSTEM_INFO si;
149 
150  /* Get the build from the define */
151  ss << "&revision=";
152  ss << KERNEL_VERSION_COMMIT_HASH;
153 
154  ss << "&platform=";
155 
156  if(m_IsReactOS)
157  {
158  ss << "reactos";
159  }
160  else
161  {
162  /* No, then use the info from GetVersionExW */
163  os.dwOSVersionInfoSize = sizeof(os);
164 
166  FATAL("GetVersionExW failed\n");
167 
168  if(os.dwMajorVersion < 5)
169  EXCEPTION("Application requires at least Windows 2000!\n");
170 
171  if(os.wProductType == VER_NT_WORKSTATION)
172  ProductType = 'w';
173  else
174  ProductType = 's';
175 
176  /* Print all necessary identification information into the Platform string */
177  ss << os.dwMajorVersion << '.'
178  << os.dwMinorVersion << '.'
179  << os.dwBuildNumber << '.'
180  << os.wServicePackMajor << '.'
181  << os.wServicePackMinor << '.'
182  << ProductType << '.';
183  }
184 
185  /* We also need to know about the processor architecture.
186  To retrieve this information accurately, check whether "GetNativeSystemInfo" is exported and use it then, otherwise fall back to "GetSystemInfo". */
187  hKernel32 = GetModuleHandleW(L"KERNEL32.DLL");
188  GetSysInfo = (GETSYSINFO)GetProcAddress(hKernel32, "GetNativeSystemInfo");
189 
190  if(!GetSysInfo)
191  GetSysInfo = (GETSYSINFO)GetProcAddress(hKernel32, "GetSystemInfo");
192 
193  GetSysInfo(&si);
195 
197 }
#define VER_NT_WORKSTATION
ULONG dwOSVersionInfoSize
Definition: rtltypes.h:269
#define FATAL(Message)
Definition: precomp.h:57
void(WINAPI * GETSYSINFO)(LPSYSTEM_INFO)
BOOL WINAPI GetVersionExW(IN LPOSVERSIONINFOW lpVersionInformation)
Definition: version.c:37
HANDLE hKernel32
Definition: locale.c:13
string m_SystemInfoRequestString
#define EXCEPTION(Message)
Definition: precomp.h:56
ULONG dwMajorVersion
Definition: rtltypes.h:247
ULONG dwBuildNumber
Definition: rtltypes.h:249
static const WCHAR L[]
Definition: oid.c:1250
WORD wProcessorArchitecture
Definition: winbase.h:1151
ULONG dwMinorVersion
Definition: rtltypes.h:248
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
Definition: loader.c:838
#define GetProcAddress(x, y)
Definition: compat.h:612
#define ss
Definition: i386-dis.c:434

◆ GetTest()

const string& CConfiguration::GetTest ( ) const
inline

Definition at line 42 of file CConfiguration.h.

42 { return m_Test; }

◆ IsInteractive()

bool CConfiguration::IsInteractive ( ) const
inline

Definition at line 36 of file CConfiguration.h.

36 { return m_IsInteractive; }

◆ IsReactOS()

bool CConfiguration::IsReactOS ( ) const
inline

Definition at line 37 of file CConfiguration.h.

37 { return m_IsReactOS; }

◆ ListModulesOnly()

bool CConfiguration::ListModulesOnly ( ) const
inline

Definition at line 39 of file CConfiguration.h.

39 { return m_ListModules; }

◆ ParseParameters()

void CConfiguration::ParseParameters ( int  argc,
wchar_t argv[] 
)

Parses the passed parameters and sets the appropriate configuration settings.

Parameters
argcThe number of parameters (argc parameter of the wmain function)
argvPointer to a wchar_t array containing the parameters (argv parameter of the wmain function)

Definition at line 50 of file CConfiguration.cpp.

51 {
52  /* Parse the command line arguments */
53  for(int i = 1; i < argc; i++)
54  {
55  if(argv[i][0] == '-' || argv[i][0] == '/')
56  {
57  unsigned long tmp_RepeatCount;
58 
59  switch(argv[i][1])
60  {
61  case 'c':
62  ++i;
63  if (i >= argc)
64  {
66  }
67 
69  break;
70 
71  case 'n':
72  m_PrintToConsole = false;
73  break;
74 
75  case 'r':
76  m_CrashRecovery = true;
77  break;
78 
79  case 's':
80  m_Shutdown = true;
81  break;
82 
83  case 'w':
84  m_Submit = true;
85  break;
86 
87  case 't':
88  ++i;
89  if (i >= argc)
90  {
92  }
93 
94  tmp_RepeatCount = wcstoul(argv[i], NULL, 10);
95 
96  if (tmp_RepeatCount == 0 || tmp_RepeatCount > 10000)
97  {
99  }
100 
101  m_RepeatCount = tmp_RepeatCount;
102  break;
103 
104  case 'l':
105  m_ListModules = true;
106  break;
107 
108  default:
110  }
111  }
112  else
113  {
114  /* Which parameter is this? */
115  if(m_Module.empty())
116  {
117  /* Copy the parameter */
118  m_Module = argv[i];
119  }
120  else if(m_Test.empty())
121  {
122  /* Copy the parameter converted to ASCII */
124  }
125  else
126  {
128  }
129  }
130  }
131 
132  /* The /r and /w options shouldn't be used in conjunction */
135 }
static int argc
Definition: ServiceArgs.c:12
_Check_return_ unsigned long __cdecl wcstoul(_In_z_ const wchar_t *_Str, _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr, _In_ int _Radix)
#define argv
Definition: mplay32.c:18
unsigned long m_RepeatCount
string UnicodeToAscii(PCWSTR UnicodeString)
Definition: tools.cpp:261
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define NULL
Definition: types.h:112

Member Data Documentation

◆ m_AuthenticationRequestString

string CConfiguration::m_AuthenticationRequestString
private

Definition at line 23 of file CConfiguration.h.

Referenced by GetAuthenticationRequestString(), and GetConfigurationFromFile().

◆ m_Comment

string CConfiguration::m_Comment
private

Definition at line 19 of file CConfiguration.h.

Referenced by GetComment(), GetConfigurationFromFile(), and ParseParameters().

◆ m_CrashRecovery

bool CConfiguration::m_CrashRecovery
private

Definition at line 11 of file CConfiguration.h.

Referenced by DoCrashRecovery(), and ParseParameters().

◆ m_IsInteractive

bool CConfiguration::m_IsInteractive
private

Definition at line 12 of file CConfiguration.h.

Referenced by CConfiguration(), and IsInteractive().

◆ m_IsReactOS

bool CConfiguration::m_IsReactOS
private

Definition at line 13 of file CConfiguration.h.

Referenced by CConfiguration(), GetSystemInformation(), and IsReactOS().

◆ m_ListModules

bool CConfiguration::m_ListModules
private

Definition at line 18 of file CConfiguration.h.

Referenced by ListModulesOnly(), and ParseParameters().

◆ m_Module

wstring CConfiguration::m_Module
private

Definition at line 20 of file CConfiguration.h.

Referenced by GetModule(), and ParseParameters().

◆ m_PrintToConsole

bool CConfiguration::m_PrintToConsole
private

Definition at line 14 of file CConfiguration.h.

Referenced by DoPrint(), and ParseParameters().

◆ m_RepeatCount

unsigned long CConfiguration::m_RepeatCount
private

Definition at line 15 of file CConfiguration.h.

Referenced by GetRepeatCount(), and ParseParameters().

◆ m_Shutdown

bool CConfiguration::m_Shutdown
private

Definition at line 16 of file CConfiguration.h.

Referenced by DoShutdown(), and ParseParameters().

◆ m_Submit

bool CConfiguration::m_Submit
private

Definition at line 17 of file CConfiguration.h.

Referenced by DoSubmit(), GetConfigurationFromFile(), and ParseParameters().

◆ m_SystemInfoRequestString

string CConfiguration::m_SystemInfoRequestString
private

Definition at line 24 of file CConfiguration.h.

Referenced by GetSystemInfoRequestString(), and GetSystemInformation().

◆ m_Test

string CConfiguration::m_Test
private

Definition at line 21 of file CConfiguration.h.

Referenced by GetTest(), and ParseParameters().


The documentation for this class was generated from the following files: