Alexandre Julliard : user32: Add helper functions for loading and saving system parameter registry entries .
Alexandre Julliard
julliard at winehq.org
Wed Nov 14 13:17:16 CST 2012
Module: wine
Branch: master
Commit: fb1c533e94578f1fb21b6e53b999517ca29f987c
URL: http://source.winehq.org/git/wine.git/?a=commit;h=fb1c533e94578f1fb21b6e53b999517ca29f987c
Author: Alexandre Julliard <julliard at winehq.org>
Date: Wed Nov 14 13:22:25 2012 +0100
user32: Add helper functions for loading and saving system parameter registry entries.
---
dlls/user32/sysparams.c | 79 +++++++++++++++++++++-------------------------
1 files changed, 36 insertions(+), 43 deletions(-)
diff --git a/dlls/user32/sysparams.c b/dlls/user32/sysparams.c
index 5070469..fa97815 100644
--- a/dlls/user32/sysparams.c
+++ b/dlls/user32/sysparams.c
@@ -606,7 +606,7 @@ static void SYSPARAMS_NotifyChange( UINT uiAction, UINT fWinIni )
/***********************************************************************
* Loads system parameter from user profile.
*/
-static BOOL SYSPARAMS_LoadRaw( LPCWSTR lpRegKey, LPCWSTR lpValName, void *lpBuf, DWORD count )
+static BOOL SYSPARAMS_Load( LPCWSTR lpRegKey, LPCWSTR lpValName, void *lpBuf, DWORD count )
{
BOOL ret = FALSE;
DWORD type;
@@ -629,11 +629,6 @@ static BOOL SYSPARAMS_LoadRaw( LPCWSTR lpRegKey, LPCWSTR lpValName, void *lpBuf,
return ret;
}
-static BOOL SYSPARAMS_Load( LPCWSTR lpRegKey, LPCWSTR lpValName, LPWSTR lpBuf, DWORD count )
-{
- return SYSPARAMS_LoadRaw( lpRegKey, lpValName, (LPBYTE)lpBuf, count );
-}
-
/***********************************************************************
* Saves system parameter to user profile.
*/
@@ -701,6 +696,28 @@ static BOOL SYSPARAMS_SaveLogFont( LPCWSTR lpRegKey, LPCWSTR lpValName,
sizeof(LOGFONTW), REG_BINARY, fWinIni );
}
+/* load a value to a registry entry */
+static BOOL load_entry( struct sysparam_entry *entry, void *data, DWORD size )
+{
+ BOOL ret = SYSPARAMS_Load( entry->regkey, entry->regval, data, size );
+ entry->loaded = TRUE;
+ return ret;
+}
+
+/* save a value to a registry entry */
+static BOOL save_entry( const struct sysparam_entry *entry, const void *data, DWORD size,
+ DWORD type, UINT flags )
+{
+ if (!SYSPARAMS_SaveRaw( entry->regkey, entry->regval, data, size, type, flags )) return FALSE;
+ if (entry->mirror) SYSPARAMS_SaveRaw( entry->mirror, entry->regval, data, size, type, flags );
+ return TRUE;
+}
+
+/* save a string value to a registry entry */
+static BOOL save_entry_string( const struct sysparam_entry *entry, const WCHAR *str, UINT flags )
+{
+ return save_entry( entry, str, (strlenW(str) + 1) * sizeof(WCHAR), REG_SZ, flags );
+}
static inline HDC get_display_dc(void)
{
@@ -1042,9 +1059,7 @@ static BOOL get_uint_entry( union sysparam_all_entry *entry, UINT int_param, voi
{
WCHAR buf[32];
- if (SYSPARAMS_Load( entry->hdr.regkey, entry->hdr.regval, buf, sizeof(buf) ))
- entry->uint.val = atoiW( buf );
- entry->hdr.loaded = TRUE;
+ if (load_entry( &entry->hdr, buf, sizeof(buf) )) entry->uint.val = atoiW( buf );
}
*(UINT *)ptr_param = entry->uint.val;
return TRUE;
@@ -1056,8 +1071,7 @@ static BOOL set_uint_entry( union sysparam_all_entry *entry, UINT int_param, voi
WCHAR buf[32];
wsprintfW( buf, CSu, int_param );
- if (!SYSPARAMS_Save( entry->hdr.regkey, entry->hdr.regval, buf, flags )) return FALSE;
- if (entry->hdr.mirror) SYSPARAMS_Save( entry->hdr.mirror, entry->hdr.regval, buf, flags );
+ if (!save_entry_string( &entry->hdr, buf, flags )) return FALSE;
entry->uint.val = int_param;
entry->hdr.loaded = TRUE;
return TRUE;
@@ -1069,8 +1083,7 @@ static BOOL set_int_entry( union sysparam_all_entry *entry, UINT int_param, void
WCHAR buf[32];
wsprintfW( buf, CSd, int_param );
- if (!SYSPARAMS_Save( entry->hdr.regkey, entry->hdr.regval, buf, flags )) return FALSE;
- if (entry->hdr.mirror) SYSPARAMS_Save( entry->hdr.mirror, entry->hdr.regval, buf, flags );
+ if (!save_entry_string( &entry->hdr, buf, flags )) return FALSE;
entry->uint.val = int_param;
entry->hdr.loaded = TRUE;
return TRUE;
@@ -1085,9 +1098,8 @@ static BOOL get_twips_entry( union sysparam_all_entry *entry, UINT int_param, vo
{
WCHAR buf[32];
- if (SYSPARAMS_Load( entry->hdr.regkey, entry->hdr.regval, buf, sizeof(buf) ))
+ if (load_entry( &entry->hdr, buf, sizeof(buf) ))
entry->uint.val = SYSPARAMS_Twips2Pixels( atoiW(buf) );
- entry->hdr.loaded = TRUE;
}
*(UINT *)ptr_param = entry->uint.val;
return TRUE;
@@ -1102,9 +1114,7 @@ static BOOL get_bool_entry( union sysparam_all_entry *entry, UINT int_param, voi
{
WCHAR buf[32];
- if (SYSPARAMS_Load( entry->hdr.regkey, entry->hdr.regval, buf, sizeof(buf) ))
- entry->bool.val = atoiW( buf ) != 0;
- entry->hdr.loaded = TRUE;
+ if (load_entry( &entry->hdr, buf, sizeof(buf) )) entry->bool.val = atoiW( buf ) != 0;
}
*(UINT *)ptr_param = entry->bool.val;
return TRUE;
@@ -1116,8 +1126,7 @@ static BOOL set_bool_entry( union sysparam_all_entry *entry, UINT int_param, voi
WCHAR buf[32];
wsprintfW( buf, CSu, int_param != 0 );
- if (!SYSPARAMS_Save( entry->hdr.regkey, entry->hdr.regval, buf, flags )) return FALSE;
- if (entry->hdr.mirror) SYSPARAMS_Save( entry->hdr.mirror, entry->hdr.regval, buf, flags );
+ if (!save_entry_string( &entry->hdr, buf, flags )) return FALSE;
entry->bool.val = int_param != 0;
entry->hdr.loaded = TRUE;
return TRUE;
@@ -1132,9 +1141,7 @@ static BOOL get_yesno_entry( union sysparam_all_entry *entry, UINT int_param, vo
{
WCHAR buf[32];
- if (SYSPARAMS_Load( entry->hdr.regkey, entry->hdr.regval, buf, sizeof(buf) ))
- entry->bool.val = !lstrcmpiW( Yes, buf );
- entry->hdr.loaded = TRUE;
+ if (load_entry( &entry->hdr, buf, sizeof(buf) )) entry->bool.val = !lstrcmpiW( Yes, buf );
}
*(UINT *)ptr_param = entry->bool.val;
return TRUE;
@@ -1145,8 +1152,7 @@ static BOOL set_yesno_entry( union sysparam_all_entry *entry, UINT int_param, vo
{
const WCHAR *str = int_param ? Yes : No;
- if (!SYSPARAMS_Save( entry->hdr.regkey, entry->hdr.regval, str, flags )) return FALSE;
- if (entry->hdr.mirror) SYSPARAMS_Save( entry->hdr.mirror, entry->hdr.regval, str, flags );
+ if (!save_entry_string( &entry->hdr, str, flags )) return FALSE;
entry->bool.val = int_param != 0;
entry->hdr.loaded = TRUE;
return TRUE;
@@ -1161,9 +1167,7 @@ static BOOL get_dword_entry( union sysparam_all_entry *entry, UINT int_param, vo
{
DWORD val;
- if (SYSPARAMS_LoadRaw( entry->hdr.regkey, entry->hdr.regval, &val, sizeof(val) ))
- entry->dword.val = val;
- entry->hdr.loaded = TRUE;
+ if (load_entry( &entry->hdr, &val, sizeof(val) )) entry->dword.val = val;
}
*(DWORD *)ptr_param = entry->bool.val;
return TRUE;
@@ -1174,10 +1178,7 @@ static BOOL set_dword_entry( union sysparam_all_entry *entry, UINT int_param, vo
{
DWORD val = PtrToUlong( ptr_param );
- if (!SYSPARAMS_SaveRaw( entry->hdr.regkey, entry->hdr.regval, &val, sizeof(val), REG_DWORD, flags ))
- return FALSE;
- if (entry->hdr.mirror)
- SYSPARAMS_SaveRaw( entry->hdr.mirror, entry->hdr.regval, &val, sizeof(val), REG_DWORD, flags );
+ if (!save_entry( &entry->hdr, &val, sizeof(val), REG_DWORD, flags )) return FALSE;
entry->dword.val = val;
entry->hdr.loaded = TRUE;
return TRUE;
@@ -1211,10 +1212,7 @@ static BOOL set_font_entry( union sysparam_all_entry *entry, UINT int_param, voi
ptr = memchrW( font.lfFaceName, 0, LF_FACESIZE );
if (ptr) memset( ptr, 0, (font.lfFaceName + LF_FACESIZE - ptr) * sizeof(WCHAR) );
- if (!SYSPARAMS_SaveRaw( entry->hdr.regkey, entry->hdr.regval, &font, sizeof(font), REG_BINARY, flags ))
- return FALSE;
- if (entry->hdr.mirror)
- SYSPARAMS_SaveRaw( entry->hdr.mirror, entry->hdr.regval, &font, sizeof(font), REG_BINARY, flags );
+ if (!save_entry( &entry->hdr, &font, sizeof(font), REG_BINARY, flags )) return FALSE;
entry->font.val = font;
entry->hdr.loaded = TRUE;
return TRUE;
@@ -1229,9 +1227,8 @@ static BOOL get_binary_entry( union sysparam_all_entry *entry, UINT int_param, v
{
void *buffer = HeapAlloc( GetProcessHeap(), 0, entry->bin.size );
- if (SYSPARAMS_LoadRaw( entry->hdr.regkey, entry->hdr.regval, buffer, entry->bin.size ))
+ if (load_entry( &entry->hdr, buffer, entry->bin.size ))
memcpy( entry->bin.ptr, buffer, entry->bin.size );
- entry->hdr.loaded = TRUE;
HeapFree( GetProcessHeap(), 0, buffer );
}
memcpy( ptr_param, entry->bin.ptr, min( int_param, entry->bin.size ) );
@@ -1246,13 +1243,9 @@ static BOOL set_binary_entry( union sysparam_all_entry *entry, UINT int_param, v
memcpy( buffer, entry->bin.ptr, entry->bin.size );
memcpy( buffer, ptr_param, min( int_param, entry->bin.size ));
- ret = SYSPARAMS_SaveRaw( entry->hdr.regkey, entry->hdr.regval, buffer,
- entry->bin.size, REG_BINARY, flags );
+ ret = save_entry( &entry->hdr, buffer, entry->bin.size, REG_BINARY, flags );
if (ret)
{
- if (entry->hdr.mirror)
- SYSPARAMS_SaveRaw( entry->hdr.mirror, entry->hdr.regval, buffer,
- entry->bin.size, REG_BINARY, flags );
memcpy( entry->bin.ptr, buffer, entry->bin.size );
entry->hdr.loaded = TRUE;
}
More information about the wine-cvs
mailing list