[pypy-commit] pypy default: port winreg changes from 0684dbb33360

mattip pypy.commits at gmail.com
Thu Mar 1 19:24:01 EST 2018


Author: Matti Picus <matti.picus at gmail.com>
Branch: 
Changeset: r93935:645bfc512f05
Date: 2018-03-01 16:17 -0800
http://bitbucket.org/pypy/pypy/changeset/645bfc512f05/

Log:	port winreg changes from 0684dbb33360

diff --git a/pypy/module/_winreg/interp_winreg.py b/pypy/module/_winreg/interp_winreg.py
--- a/pypy/module/_winreg/interp_winreg.py
+++ b/pypy/module/_winreg/interp_winreg.py
@@ -169,7 +169,7 @@
 
 The docs imply key must be in the HKEY_USER or HKEY_LOCAL_MACHINE tree"""
     hkey = hkey_w(w_hkey, space)
-    ret = rwinreg.RegLoadKey(hkey, subkey, filename)
+    ret = rwinreg.RegLoadKeyA(hkey, subkey, filename)
     if ret != 0:
         raiseWindowsError(space, ret, 'RegLoadKey')
 
@@ -188,7 +188,7 @@
 The caller of this method must possess the SeBackupPrivilege security privilege.
 This function passes NULL for security_attributes to the API."""
     hkey = hkey_w(w_hkey, space)
-    ret = rwinreg.RegSaveKey(hkey, filename, None)
+    ret = rwinreg.RegSaveKeyA(hkey, filename, None)
     if ret != 0:
         raiseWindowsError(space, ret, 'RegSaveKey')
 
@@ -219,7 +219,7 @@
     else:
         subkey = space.text_w(w_subkey)
     with rffi.scoped_str2charp(value) as dataptr:
-        ret = rwinreg.RegSetValue(hkey, subkey, rwinreg.REG_SZ, dataptr, len(value))
+        ret = rwinreg.RegSetValueA(hkey, subkey, rwinreg.REG_SZ, dataptr, len(value))
         if ret != 0:
             raiseWindowsError(space, ret, 'RegSetValue')
 
@@ -240,7 +240,7 @@
     else:
         subkey = space.text_w(w_subkey)
     with lltype.scoped_alloc(rwin32.PLONG.TO, 1) as bufsize_p:
-        ret = rwinreg.RegQueryValue(hkey, subkey, None, bufsize_p)
+        ret = rwinreg.RegQueryValueA(hkey, subkey, None, bufsize_p)
         bufSize = intmask(bufsize_p[0])
         if ret == rwinreg.ERROR_MORE_DATA:
             bufSize = 256
@@ -249,7 +249,7 @@
 
         while True:
             with lltype.scoped_alloc(rffi.CCHARP.TO, bufSize) as buf:
-                ret = rwinreg.RegQueryValue(hkey, subkey, buf, bufsize_p)
+                ret = rwinreg.RegQueryValueA(hkey, subkey, buf, bufsize_p)
                 if ret == rwinreg.ERROR_MORE_DATA:
                     # Resize and retry
                     bufSize *= 2
@@ -423,7 +423,7 @@
     hkey = hkey_w(w_hkey, space)
     buf, buflen = convert_to_regdata(space, w_value, typ)
     try:
-        ret = rwinreg.RegSetValueEx(hkey, value_name, 0, typ, buf, buflen)
+        ret = rwinreg.RegSetValueExA(hkey, value_name, 0, typ, buf, buflen)
     finally:
         lltype.free(buf, flavor='raw')
     if ret != 0:
@@ -441,7 +441,7 @@
         subkey = space.text_w(w_subkey)
     null_dword = lltype.nullptr(rwin32.LPDWORD.TO)
     with lltype.scoped_alloc(rwin32.LPDWORD.TO, 1) as retDataSize:
-        ret = rwinreg.RegQueryValueEx(hkey, subkey, null_dword, null_dword,
+        ret = rwinreg.RegQueryValueExA(hkey, subkey, null_dword, null_dword,
                                       None, retDataSize)
         bufSize = intmask(retDataSize[0])
         if ret == rwinreg.ERROR_MORE_DATA:
@@ -453,7 +453,7 @@
             with lltype.scoped_alloc(rffi.CCHARP.TO, bufSize) as databuf:
                 with lltype.scoped_alloc(rwin32.LPDWORD.TO, 1) as retType:
 
-                    ret = rwinreg.RegQueryValueEx(hkey, subkey, null_dword,
+                    ret = rwinreg.RegQueryValueExA(hkey, subkey, null_dword,
                                                   retType, databuf, retDataSize)
                     if ret == rwinreg.ERROR_MORE_DATA:
                         # Resize and retry
@@ -484,7 +484,7 @@
 If the function fails, an exception is raised."""
     hkey = hkey_w(w_hkey, space)
     with lltype.scoped_alloc(rwinreg.PHKEY.TO, 1) as rethkey:
-        ret = rwinreg.RegCreateKey(hkey, subkey, rethkey)
+        ret = rwinreg.RegCreateKeyA(hkey, subkey, rethkey)
         if ret != 0:
             raiseWindowsError(space, ret, 'CreateKey')
         return W_HKEY(space, rethkey[0])
@@ -504,7 +504,7 @@
 If the function fails, an exception is raised."""
     hkey = hkey_w(w_hkey, space)
     with lltype.scoped_alloc(rwinreg.PHKEY.TO, 1) as rethkey:
-        ret = rwinreg.RegCreateKeyEx(hkey, subkey, res, None, 0,
+        ret = rwinreg.RegCreateKeyExA(hkey, subkey, res, None, 0,
                                      sam, None, rethkey,
                                      lltype.nullptr(rwin32.LPDWORD.TO))
         if ret != 0:
@@ -524,7 +524,7 @@
 If the method succeeds, the entire key, including all of its values,
 is removed.  If the method fails, an EnvironmentError exception is raised."""
     hkey = hkey_w(w_hkey, space)
-    ret = rwinreg.RegDeleteKey(hkey, subkey)
+    ret = rwinreg.RegDeleteKeyA(hkey, subkey)
     if ret != 0:
         raiseWindowsError(space, ret, 'RegDeleteKey')
 
@@ -535,7 +535,7 @@
 key is an already open key, or any one of the predefined HKEY_* constants.
 value is a string that identifies the value to remove."""
     hkey = hkey_w(w_hkey, space)
-    ret = rwinreg.RegDeleteValue(hkey, subkey)
+    ret = rwinreg.RegDeleteValueA(hkey, subkey)
     if ret != 0:
         raiseWindowsError(space, ret, 'RegDeleteValue')
 
@@ -553,7 +553,7 @@
 If the function fails, an EnvironmentError exception is raised."""
     hkey = hkey_w(w_hkey, space)
     with lltype.scoped_alloc(rwinreg.PHKEY.TO, 1) as rethkey:
-        ret = rwinreg.RegOpenKeyEx(hkey, subkey, res, sam, rethkey)
+        ret = rwinreg.RegOpenKeyExA(hkey, subkey, res, sam, rethkey)
         if ret != 0:
             raiseWindowsError(space, ret, 'RegOpenKeyEx')
         return W_HKEY(space, rethkey[0])
@@ -578,7 +578,7 @@
 
     with lltype.scoped_alloc(rwin32.LPDWORD.TO, 1) as retValueSize:
         with lltype.scoped_alloc(rwin32.LPDWORD.TO, 1) as retDataSize:
-            ret = rwinreg.RegQueryInfoKey(
+            ret = rwinreg.RegQueryInfoKeyA(
                 hkey, None, null_dword, null_dword,
                 null_dword, null_dword, null_dword,
                 null_dword, retValueSize, retDataSize,
@@ -598,7 +598,7 @@
                                              bufDataSize) as databuf:
                         with lltype.scoped_alloc(rwin32.LPDWORD.TO,
                                                  1) as retType:
-                            ret = rwinreg.RegEnumValue(
+                            ret = rwinreg.RegEnumValueA(
                                 hkey, index, valuebuf, retValueSize,
                                 null_dword, retType, databuf, retDataSize)
                             if ret == rwinreg.ERROR_MORE_DATA:
@@ -643,7 +643,7 @@
     with lltype.scoped_alloc(rffi.CCHARP.TO, 257) as buf:
         with lltype.scoped_alloc(rwin32.LPDWORD.TO, 1) as retValueSize:
             retValueSize[0] = r_uint(257) # includes NULL terminator
-            ret = rwinreg.RegEnumKeyEx(hkey, index, buf, retValueSize,
+            ret = rwinreg.RegEnumKeyExA(hkey, index, buf, retValueSize,
                                        null_dword, None, null_dword,
                                        lltype.nullptr(rwin32.PFILETIME.TO))
             if ret != 0:
@@ -665,7 +665,7 @@
         with lltype.scoped_alloc(rwin32.LPDWORD.TO, 1) as nValues:
             with lltype.scoped_alloc(rwin32.PFILETIME.TO, 1) as ft:
                 null_dword = lltype.nullptr(rwin32.LPDWORD.TO)
-                ret = rwinreg.RegQueryInfoKey(
+                ret = rwinreg.RegQueryInfoKeyA(
                     hkey, None, null_dword, null_dword,
                     nSubKeys, null_dword, null_dword,
                     nValues, null_dword, null_dword,
@@ -692,7 +692,7 @@
     machine = space.text_or_none_w(w_machine)
     hkey = hkey_w(w_hkey, space)
     with lltype.scoped_alloc(rwinreg.PHKEY.TO, 1) as rethkey:
-        ret = rwinreg.RegConnectRegistry(machine, hkey, rethkey)
+        ret = rwinreg.RegConnectRegistryA(machine, hkey, rethkey)
         if ret != 0:
             raiseWindowsError(space, ret, 'RegConnectRegistry')
         return W_HKEY(space, rethkey[0])
diff --git a/rpython/rlib/rwinreg.py b/rpython/rlib/rwinreg.py
--- a/rpython/rlib/rwinreg.py
+++ b/rpython/rlib/rwinreg.py
@@ -47,77 +47,107 @@
 HKEY = rwin32.HANDLE
 PHKEY = rffi.CArrayPtr(HKEY)
 REGSAM = rwin32.DWORD
-suffix = 'A'
+suffix = 'W'
+def get_traits(suffix):
+    RegSetValue = external(
+        'RegSetValue' + suffix,
+        [HKEY, rffi.CCHARP, rwin32.DWORD, rffi.CCHARP, rwin32.DWORD],
+        rffi.LONG)
 
-RegSetValue = external(
-    'RegSetValue' + suffix,
-    [HKEY, rffi.CCHARP, rwin32.DWORD, rffi.CCHARP, rwin32.DWORD],
-    rffi.LONG)
+    RegSetValueEx = external(
+        'RegSetValueEx' + suffix,
+        [HKEY, rffi.CCHARP, rwin32.DWORD,
+         rwin32.DWORD, rffi.CCHARP, rwin32.DWORD],
+        rffi.LONG)
 
-RegSetValueEx = external(
-    'RegSetValueEx' + suffix,
-    [HKEY, rffi.CCHARP, rwin32.DWORD,
-     rwin32.DWORD, rffi.CCHARP, rwin32.DWORD],
-    rffi.LONG)
+    RegQueryValue = external(
+        'RegQueryValue' + suffix,
+        [HKEY, rffi.CCHARP, rffi.CCHARP, rwin32.PLONG],
+        rffi.LONG)
 
-RegQueryValue = external(
-    'RegQueryValue' + suffix,
-    [HKEY, rffi.CCHARP, rffi.CCHARP, rwin32.PLONG],
-    rffi.LONG)
+    RegQueryValueEx = external(
+        'RegQueryValueEx' + suffix,
+        [HKEY, rffi.CCHARP, rwin32.LPDWORD, rwin32.LPDWORD,
+         rffi.CCHARP, rwin32.LPDWORD],
+        rffi.LONG)
 
-RegQueryValueEx = external(
-    'RegQueryValueEx' + suffix,
-    [HKEY, rffi.CCHARP, rwin32.LPDWORD, rwin32.LPDWORD,
-     rffi.CCHARP, rwin32.LPDWORD],
-    rffi.LONG)
+    RegCreateKey = external(
+        'RegCreateKey' + suffix,
+        [HKEY, rffi.CCHARP, PHKEY],
+        rffi.LONG)
 
-RegCreateKey = external(
-    'RegCreateKey' + suffix,
-    [HKEY, rffi.CCHARP, PHKEY],
-    rffi.LONG)
+    RegCreateKeyEx = external(
+        'RegCreateKeyEx' + suffix,
+        [HKEY, rffi.CCHARP, rwin32.DWORD, rffi.CCHARP, rwin32.DWORD,
+         REGSAM, rffi.VOIDP, PHKEY, rwin32.LPDWORD],
+        rffi.LONG)
 
-RegCreateKeyEx = external(
-    'RegCreateKeyEx' + suffix,
-    [HKEY, rffi.CCHARP, rwin32.DWORD, rffi.CCHARP, rwin32.DWORD,
-     REGSAM, rffi.VOIDP, PHKEY, rwin32.LPDWORD],
-    rffi.LONG)
+    RegDeleteValue = external(
+        'RegDeleteValue' + suffix,
+        [HKEY, rffi.CCHARP],
+        rffi.LONG)
 
-RegDeleteValue = external(
-    'RegDeleteValue' + suffix,
-    [HKEY, rffi.CCHARP],
-    rffi.LONG)
+    RegDeleteKey = external(
+        'RegDeleteKey' + suffix,
+        [HKEY, rffi.CCHARP],
+        rffi.LONG)
 
-RegDeleteKey = external(
-    'RegDeleteKey' + suffix,
-    [HKEY, rffi.CCHARP],
-    rffi.LONG)
+    RegOpenKeyEx = external(
+        'RegOpenKeyEx' + suffix,
+        [HKEY, rffi.CCHARP, rwin32.DWORD, REGSAM, PHKEY],
+        rffi.LONG)
 
-RegOpenKeyEx = external(
-    'RegOpenKeyEx' + suffix,
-    [HKEY, rffi.CCHARP, rwin32.DWORD, REGSAM, PHKEY],
-    rffi.LONG)
+    RegEnumValue = external(
+        'RegEnumValue' + suffix,
+        [HKEY, rwin32.DWORD, rffi.CCHARP,
+         rwin32.LPDWORD, rwin32.LPDWORD, rwin32.LPDWORD,
+         rffi.CCHARP, rwin32.LPDWORD],
+        rffi.LONG)
 
-RegEnumValue = external(
-    'RegEnumValue' + suffix,
-    [HKEY, rwin32.DWORD, rffi.CCHARP,
-     rwin32.LPDWORD, rwin32.LPDWORD, rwin32.LPDWORD,
-     rffi.CCHARP, rwin32.LPDWORD],
-    rffi.LONG)
+    RegEnumKeyEx = external(
+        'RegEnumKeyEx' + suffix,
+        [HKEY, rwin32.DWORD, rffi.CCHARP,
+         rwin32.LPDWORD, rwin32.LPDWORD,
+         rffi.CCHARP, rwin32.LPDWORD, rwin32.PFILETIME],
+        rffi.LONG)
 
-RegEnumKeyEx = external(
-    'RegEnumKeyEx' + suffix,
-    [HKEY, rwin32.DWORD, rffi.CCHARP,
-     rwin32.LPDWORD, rwin32.LPDWORD,
-     rffi.CCHARP, rwin32.LPDWORD, rwin32.PFILETIME],
-    rffi.LONG)
+    RegQueryInfoKey = external(
+        'RegQueryInfoKey' + suffix,
+        [HKEY, rffi.CCHARP, rwin32.LPDWORD, rwin32.LPDWORD,
+         rwin32.LPDWORD, rwin32.LPDWORD, rwin32.LPDWORD,
+         rwin32.LPDWORD, rwin32.LPDWORD, rwin32.LPDWORD,
+         rwin32.LPDWORD, rwin32.PFILETIME],
+        rffi.LONG)
 
-RegQueryInfoKey = external(
-    'RegQueryInfoKey' + suffix,
-    [HKEY, rffi.CCHARP, rwin32.LPDWORD, rwin32.LPDWORD,
-     rwin32.LPDWORD, rwin32.LPDWORD, rwin32.LPDWORD,
-     rwin32.LPDWORD, rwin32.LPDWORD, rwin32.LPDWORD,
-     rwin32.LPDWORD, rwin32.PFILETIME],
-    rffi.LONG)
+    RegLoadKey = external(
+        'RegLoadKey' + suffix,
+        [HKEY, rffi.CCHARP, rffi.CCHARP],
+        rffi.LONG)
+
+    RegSaveKey = external(
+        'RegSaveKey' + suffix,
+        [HKEY, rffi.CCHARP, rffi.VOIDP],
+        rffi.LONG)
+
+    RegConnectRegistry = external(
+        'RegConnectRegistry' + suffix,
+        [rffi.CCHARP, HKEY, PHKEY],
+        rffi.LONG)
+
+    return (RegSetValue, RegSetValueEx, RegQueryValue, RegQueryValueEx,
+            RegCreateKey, RegCreateKeyEx, RegDeleteValue, RegDeleteKey,
+            RegOpenKeyEx, RegEnumValue, RegEnumKeyEx, RegQueryInfoKey,
+            RegLoadKey, RegSaveKey, RegConnectRegistry)
+
+RegSetValueW, RegSetValueExW, RegQueryValueW, RegQueryValueExW, \
+    RegCreateKeyW, RegCreateKeyExW, RegDeleteValueW, RegDeleteKeyW, \
+    RegOpenKeyExW, RegEnumValueW, RegEnumKeyExW, RegQueryInfoKeyW, \
+    RegLoadKeyW, RegSaveKeyW, RegConnectRegistryW = get_traits('W')
+
+RegSetValueA, RegSetValueExA, RegQueryValueA, RegQueryValueExA, \
+    RegCreateKeyA, RegCreateKeyExA, RegDeleteValueA, RegDeleteKeyA, \
+    RegOpenKeyExA, RegEnumValueA, RegEnumKeyExA, RegQueryInfoKeyA, \
+    RegLoadKeyA, RegSaveKeyA, RegConnectRegistryA = get_traits('A')
 
 RegCloseKey = external(
     'RegCloseKey',
@@ -129,21 +159,6 @@
     [HKEY],
     rffi.LONG)
 
-RegLoadKey = external(
-    'RegLoadKey' + suffix,
-    [HKEY, rffi.CCHARP, rffi.CCHARP],
-    rffi.LONG)
-
-RegSaveKey = external(
-    'RegSaveKey' + suffix,
-    [HKEY, rffi.CCHARP, rffi.VOIDP],
-    rffi.LONG)
-
-RegConnectRegistry = external(
-    'RegConnectRegistry' + suffix,
-    [rffi.CCHARP, HKEY, PHKEY],
-    rffi.LONG)
-
 _ExpandEnvironmentStringsW = external(
     'ExpandEnvironmentStringsW',
     [rffi.CWCHARP, rffi.CWCHARP, rwin32.DWORD],


More information about the pypy-commit mailing list