4 #include "osregistry.h"
6 // NEVER ADD ANY OTHER INCLUDES HERE - YOU'LL LIKELY BREAK THE LAUNCHER!!!!!!!!!!!!!
8 // ------------------------------------------------------------------------------------------------------------
9 // REGISTRY DEFINES/VARS
12 static char szCompanyName[128];
13 static char szAppName[128];
14 static char szAppVersion[128];
16 char *Osreg_company_name = "Volition";
17 char *Osreg_class_name = "Freespace2Class";
19 char *Osreg_app_name = "FreeSpace2Demo";
20 char *Osreg_title = "Freespace 2 Demo";
21 #elif defined(OEM_BUILD)
22 char *Osreg_app_name = "FreeSpace2OEM";
23 char *Osreg_title = "Freespace 2 OEM";
25 char *Osreg_app_name = "FreeSpace2";
26 char *Osreg_title = "Freespace 2";
29 int Os_reg_inited = 0;
32 // ------------------------------------------------------------------------------------------------------------
36 // os registry functions -------------------------------------------------------------
38 // initialize the registry. setup default keys to use
39 void os_init_registry_stuff(char *company, char *app, char *version)
42 strcpy( szCompanyName, company );
44 strcpy( szCompanyName, Osreg_company_name);
48 strcpy( szAppName, app );
50 strcpy( szAppName, Osreg_app_name);
54 strcpy( szAppVersion, version);
56 strcpy( szAppVersion, "1.0");
62 // Removes a value from to the INI file. Passing
63 // name=NULL will delete the section.
64 void os_config_remove( char *section, char *name )
76 sprintf( keyname, "Software\\%s\\%s\\%s", szCompanyName, szAppName, section );
78 sprintf( keyname, "Software\\%s\\%s", szCompanyName, szAppName );
86 lResult = RegDeleteKey( HKEY_LOCAL_MACHINE, keyname );
87 if ( lResult != ERROR_SUCCESS ) {
91 lResult = RegCreateKeyEx( HKEY_LOCAL_MACHINE, // Where to add it
92 keyname, // name of key
93 NULL, // DWORD reserved
95 REG_OPTION_NON_VOLATILE, // Save to disk
96 KEY_ALL_ACCESS, // Allows all changes
97 NULL, // Default security attributes
98 &hKey, // Location to store key
99 &dwDisposition ); // Location to store status of key
101 if ( lResult != ERROR_SUCCESS ) {
105 lResult = RegDeleteValue( hKey, name );
106 if ( lResult != ERROR_SUCCESS ) {
116 // Writes a string to the INI file. If value is NULL,
117 // removes the string. Writing a NULL value to a NULL name will delete
119 void os_config_write_string( char *section, char *name, char *value )
131 sprintf( keyname, "Software\\%s\\%s\\%s", szCompanyName, szAppName, section );
133 sprintf( keyname, "Software\\%s\\%s", szCompanyName, szAppName );
136 lResult = RegCreateKeyEx( HKEY_LOCAL_MACHINE, // Where to add it
137 keyname, // name of key
138 NULL, // DWORD reserved
140 REG_OPTION_NON_VOLATILE, // Save to disk
141 KEY_ALL_ACCESS, // Allows all changes
142 NULL, // Default security attributes
143 &hKey, // Location to store key
144 &dwDisposition ); // Location to store status of key
146 if ( lResult != ERROR_SUCCESS ) {
154 lResult = RegSetValueEx( hKey, // Handle to key
155 name, // The values name
156 NULL, // DWORD reserved
157 REG_SZ, // null terminated string
158 (CONST BYTE *)value, // value to set
159 strlen(value) + 1 ); // How many bytes to set
161 if ( lResult != ERROR_SUCCESS ) {
171 // same as previous function except we don't use the application name to build up the keyname
172 void os_config_write_string2( char *section, char *name, char *value )
184 sprintf( keyname, "Software\\%s\\%s", szCompanyName, section );
186 sprintf( keyname, "Software\\%s", szCompanyName );
189 lResult = RegCreateKeyEx( HKEY_LOCAL_MACHINE, // Where to add it
190 keyname, // name of key
191 NULL, // DWORD reserved
193 REG_OPTION_NON_VOLATILE, // Save to disk
194 KEY_ALL_ACCESS, // Allows all changes
195 NULL, // Default security attributes
196 &hKey, // Location to store key
197 &dwDisposition ); // Location to store status of key
199 if ( lResult != ERROR_SUCCESS ) {
207 lResult = RegSetValueEx( hKey, // Handle to key
208 name, // The values name
209 NULL, // DWORD reserved
210 REG_SZ, // null terminated string
211 (CONST BYTE *)value, // value to set
212 strlen(value) + 1 ); // How many bytes to set
214 if ( lResult != ERROR_SUCCESS ) {
224 // Writes an unsigned int to the INI file.
225 void os_config_write_uint( char *section, char *name, uint value )
237 sprintf( keyname, "Software\\%s\\%s\\%s", szCompanyName, szAppName, section );
239 sprintf( keyname, "Software\\%s\\%s", szCompanyName, szAppName );
242 lResult = RegCreateKeyEx( HKEY_LOCAL_MACHINE, // Where to add it
243 keyname, // name of key
244 NULL, // DWORD reserved
246 REG_OPTION_NON_VOLATILE, // Save to disk
247 KEY_ALL_ACCESS, // Allows all changes
248 NULL, // Default security attributes
249 &hKey, // Location to store key
250 &dwDisposition ); // Location to store status of key
252 if ( lResult != ERROR_SUCCESS ) {
260 lResult = RegSetValueEx( hKey, // Handle to key
261 name, // The values name
262 NULL, // DWORD reserved
263 REG_DWORD, // null terminated string
264 (CONST BYTE *)&value, // value to set
265 4 ); // How many bytes to set
267 if ( lResult != ERROR_SUCCESS ) {
278 // Reads a string from the INI file. If default is passed,
279 // and the string isn't found, returns ptr to default otherwise
280 // returns NULL; Copy the return value somewhere before
281 // calling os_read_string again, because it might reuse the
283 static char tmp_string_data[1024];
284 char * os_config_read_string( char *section, char *name, char *default_value )
296 sprintf( keyname, "Software\\%s\\%s\\%s", szCompanyName, szAppName, section );
298 sprintf( keyname, "Software\\%s\\%s", szCompanyName, szAppName );
301 lResult = RegOpenKeyEx( HKEY_LOCAL_MACHINE, // Where it is
302 keyname, // name of key
303 NULL, // DWORD reserved
304 KEY_QUERY_VALUE, // Allows all changes
305 &hKey ); // Location to store key
307 if ( lResult != ERROR_SUCCESS ) {
316 lResult = RegQueryValueEx( hKey, // Handle to key
317 name, // The values name
318 NULL, // DWORD reserved
319 &dwType, // What kind it is
320 (ubyte *)&tmp_string_data, // value to set
321 &dwLen ); // How many bytes to set
323 if ( lResult != ERROR_SUCCESS ) {
327 default_value = tmp_string_data;
333 return default_value;
336 // same as previous function except we don't use the application name to build up the keyname
337 char * os_config_read_string2( char *section, char *name, char *default_value )
349 sprintf( keyname, "Software\\%s\\%s", szCompanyName, section );
351 sprintf( keyname, "Software\\%s", szCompanyName );
354 lResult = RegOpenKeyEx( HKEY_LOCAL_MACHINE, // Where it is
355 keyname, // name of key
356 NULL, // DWORD reserved
357 KEY_QUERY_VALUE, // Allows all changes
358 &hKey ); // Location to store key
360 if ( lResult != ERROR_SUCCESS ) {
369 lResult = RegQueryValueEx( hKey, // Handle to key
370 name, // The values name
371 NULL, // DWORD reserved
372 &dwType, // What kind it is
373 (ubyte *)&tmp_string_data, // value to set
374 &dwLen ); // How many bytes to set
376 if ( lResult != ERROR_SUCCESS ) {
380 default_value = tmp_string_data;
386 return default_value;
389 // Reads a string from the INI file. Default_value must
390 // be passed, and if 'name' isn't found, then returns default_value
391 uint os_config_read_uint( char *section, char *name, uint default_value )
404 sprintf( keyname, "Software\\%s\\%s\\%s", szCompanyName, szAppName, section );
406 sprintf( keyname, "Software\\%s\\%s", szCompanyName, szAppName );
409 lResult = RegOpenKeyEx( HKEY_LOCAL_MACHINE, // Where it is
410 keyname, // name of key
411 NULL, // DWORD reserved
412 KEY_QUERY_VALUE, // Allows all changes
413 &hKey ); // Location to store key
415 if ( lResult != ERROR_SUCCESS ) {
424 lResult = RegQueryValueEx( hKey, // Handle to key
425 name, // The values name
426 NULL, // DWORD reserved
427 &dwType, // What kind it is
428 (ubyte *)&tmp_val, // value to set
429 &dwLen ); // How many bytes to set
431 if ( lResult != ERROR_SUCCESS ) {
435 default_value = tmp_val;
441 return default_value;
444 // uses Ex versions of Windows registry functions
445 static char tmp_string_data_ex[1024];
446 char * os_config_read_string_ex( char *keyname, char *name, char *default_value )
452 lResult = RegOpenKeyEx( HKEY_LOCAL_MACHINE, // Where it is
453 keyname, // name of key
454 NULL, // DWORD reserved
455 KEY_QUERY_VALUE, // Allows all changes
456 &hKey ); // Location to store key
458 if ( lResult != ERROR_SUCCESS ) {
459 //mprintf(( "Error opening registry key '%s'\n", keyname ));
464 //mprintf(( "No variable name passed\n" ));
469 lResult = RegQueryValueEx( hKey, // Handle to key
470 name, // The values name
471 NULL, // DWORD reserved
472 &dwType, // What kind it is
473 (ubyte *)&tmp_string_data_ex, // value to set
474 &dwLen ); // How many bytes to set
476 if ( lResult != ERROR_SUCCESS ) {
477 //mprintf(( "Error reading registry key '%s'\n", name ));
481 default_value = tmp_string_data_ex;
487 return default_value;