Author: Matti Picus <matti.pi...@gmail.com> Branch: py3-winreg Changeset: r93609:683cb7587096 Date: 2018-01-02 09:55 +0200 http://bitbucket.org/pypy/pypy/changeset/683cb7587096/
Log: fix translation 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 @@ -110,8 +110,8 @@ elif isinstance(w_hkey, W_HKEY): return w_hkey.hkey elif space.isinstance_w(w_hkey, space.w_int): - return rffi.cast(rwinreg.HKEY, space.int_w(w_hkey)) - elif space.isinstance_w(w_hkey, space.w_long): + if space.is_true(space.lt(w_hkey, space.newint(0))): + return rffi.cast(rwinreg.HKEY, space.int_w(w_hkey)) return rffi.cast(rwinreg.HKEY, space.uint_w(w_hkey)) else: raise oefmt(space.w_TypeError, "The object is not a PyHKEY object") @@ -170,9 +170,13 @@ The docs imply key must be in the HKEY_USER or HKEY_LOCAL_MACHINE tree""" # XXX should filename use space.fsencode_w? hkey = hkey_w(w_hkey, space) - ret = rwinreg.RegLoadKey(hkey, subkey, filename) - if ret != 0: - raiseWindowsError(space, ret, 'RegLoadKey') + with rffi.scoped_unicode2wcharp(subkey) as wide_subkey: + c_subkey = rffi.cast(rffi.CCHARP, wide_subkey) + with rffi.scoped_unicode2wcharp(filename) as wide_filename: + c_filename = rffi.cast(rffi.CCHARP, wide_filename) + ret = rwinreg.RegLoadKey(hkey, c_subkey, c_filename) + if ret != 0: + raiseWindowsError(space, ret, 'RegLoadKey') @unwrap_spec(filename="unicode") def SaveKey(space, w_hkey, filename): @@ -189,9 +193,11 @@ 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) - if ret != 0: - raiseWindowsError(space, ret, 'RegSaveKey') + with rffi.scoped_unicode2wcharp(filename) as wide_filename: + c_filename = rffi.cast(rffi.CCHARP, wide_filename) + ret = rwinreg.RegSaveKey(hkey, c_filename, None) + if ret != 0: + raiseWindowsError(space, ret, 'RegSaveKey') @unwrap_spec(typ=int, value="unicode") def SetValue(space, w_hkey, w_subkey, typ, value): @@ -267,6 +273,9 @@ return space.newunicode(rffi.wcharp2unicoden(wide_buf, length)) def convert_to_regdata(space, w_value, typ): + ''' + returns CCHARP, int + ''' buf = None if typ == rwinreg.REG_DWORD: @@ -320,7 +329,7 @@ with rffi.scoped_unicode2wcharp(string) as wchr: c_str = rffi.cast(rffi.CCHARP, wchr) for i in range(len(string)): - buf[buflen + i] = wchr[i] + buf[buflen + i] = c_str[i] buflen += len(string) + 1 buf[buflen - 1] = '\0' buflen += 1 @@ -358,14 +367,14 @@ elif typ == rwinreg.REG_SZ or typ == rwinreg.REG_EXPAND_SZ: if not buflen: - s = "" + s = u"" else: # may or may not have a trailing NULL in the buffer. buf = rffi.cast(rffi.CWCHARP, buf) if buf[buflen - 1] == '\x00': buflen -= 1 s = rffi.wcharp2unicoden(buf, buflen) - w_s = space.newbytes(s) + w_s = space.newunicode(s) return w_s elif typ == rwinreg.REG_MULTI_SZ: @@ -380,7 +389,7 @@ i += 1 if len(s) == 0: break - s = ''.join(s) + s = u''.join(s) l.append(space.newunicode(s)) i += 1 return space.newlist(l) @@ -545,9 +554,11 @@ 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) - if ret != 0: - raiseWindowsError(space, ret, 'RegDeleteValue') + with rffi.scoped_unicode2wcharp(subkey) as wide_subkey: + c_subkey = rffi.cast(rffi.CCHARP, wide_subkey) + ret = rwinreg.RegDeleteValue(hkey, c_subkey) + if ret != 0: + raiseWindowsError(space, ret, 'RegDeleteValue') @unwrap_spec(sub_key="unicode", reserved=int, access=rffi.r_uint) def OpenKey(space, w_key, sub_key, reserved=0, access=rwinreg.KEY_READ): @@ -603,15 +614,16 @@ bufDataSize = intmask(retDataSize[0]) bufValueSize = intmask(retValueSize[0]) - with lltype.scoped_alloc(rffi.CCHARP.TO, + with lltype.scoped_alloc(rffi.CWCHARP.TO, intmask(retValueSize[0])) as valuebuf: while True: with lltype.scoped_alloc(rffi.CCHARP.TO, bufDataSize) as databuf: with lltype.scoped_alloc(rwin32.LPDWORD.TO, 1) as retType: + c_valuebuf = rffi.cast(rffi.CCHARP, valuebuf) ret = rwinreg.RegEnumValue( - hkey, index, valuebuf, retValueSize, + hkey, index, c_valuebuf, retValueSize, null_dword, retType, databuf, retDataSize) if ret == rwinreg.ERROR_MORE_DATA: # Resize and retry @@ -660,7 +672,7 @@ lltype.nullptr(rwin32.PFILETIME.TO)) if ret != 0: raiseWindowsError(space, ret, 'RegEnumKeyEx') - return space.newunicode(rffi.wcharp2unicode(rffi.cast(CWCHARP, buf))) + return space.newunicode(rffi.wcharp2unicode(rffi.cast(rffi.CWCHARP, buf))) def QueryInfoKey(space, w_hkey): """tuple = QueryInfoKey(key) - Returns information about a key. _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit