From fb1c533e94578f1fb21b6e53b999517ca29f987c Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Wed, 14 Nov 2012 13:22:25 +0100 Subject: [PATCH] user32: Add helper functions for loading and saving system parameter registry entries. --- dlls/user32/sysparams.c | 79 ++++++++++++++++++++++--------------------------- 1 file changed, 36 insertions(+), 43 deletions(-) diff --git a/dlls/user32/sysparams.c b/dlls/user32/sysparams.c index 50704697905..fa978151d43 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; } -- 2.11.4.GIT