[PATCH v5 2/7] kernel32: Implement registry mapping in WritePrivateProfileStringW().

Zebediah Figura z.figura12 at gmail.com
Sun Jul 12 20:32:08 CDT 2020


Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 dlls/kernel32/profile.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/dlls/kernel32/profile.c b/dlls/kernel32/profile.c
index 3e06543a660..27057e62f7a 100644
--- a/dlls/kernel32/profile.c
+++ b/dlls/kernel32/profile.c
@@ -1473,6 +1473,9 @@ BOOL WINAPI WritePrivateProfileStringW( LPCWSTR section, LPCWSTR entry,
 					LPCWSTR string, LPCWSTR filename )
 {
     BOOL ret = FALSE;
+    HKEY key;
+
+    TRACE("(%s, %s, %s, %s)\n", debugstr_w(section), debugstr_w(entry), debugstr_w(string), debugstr_w(filename));
 
     if (!section && !entry && !string) /* documented "file flush" case */
     {
@@ -1486,6 +1489,20 @@ BOOL WINAPI WritePrivateProfileStringW( LPCWSTR section, LPCWSTR entry,
     }
     if (!entry) return PROFILE_DeleteSection( filename, section );
 
+    if (get_mapped_section_key( filename, section, entry, TRUE, &key ))
+    {
+        LSTATUS res;
+
+        if (string)
+            res = RegSetValueExW( key, entry, 0, REG_SZ, (const BYTE *)string,
+                                  (strlenW( string ) + 1) * sizeof(WCHAR) );
+        else
+            res = RegDeleteValueW( key, entry );
+        RegCloseKey( key );
+        if (res) SetLastError( res );
+        return !res;
+    }
+
     EnterCriticalSection( &PROFILE_CritSect );
 
     if (PROFILE_Open( filename, TRUE ))
-- 
2.27.0




More information about the wine-devel mailing list