Fix Python 3 build

- Take care of the differences in handling unicode characters in
  `escape_string` (formerly in `editor/SCsub`, now in `compat.py)`.
- Conditionally include `_winreg` or `winreg` in the Mono editor
  module.
This commit is contained in:
Matthias Hoelzl 2017-10-04 23:21:32 +02:00
parent 2e6f2ed032
commit 727a381fc9
3 changed files with 35 additions and 12 deletions

View file

@ -14,6 +14,17 @@ if sys.version_info < (3,):
return x
def iteritems(d):
return d.iteritems()
def escape_string(s):
if isinstance(s, unicode):
s = s.encode('ascii')
result = ''
for c in s:
if not (32 <= ord(c) < 127) or c in ('\\', '"'):
result += '\\%03o' % ord(c)
else:
result += c
return result
else:
def isbasestring(s):
return isinstance(s, (str, bytes))
@ -29,3 +40,21 @@ else:
return codecs.utf_8_encode(x)[0]
def iteritems(d):
return iter(d.items())
def charcode_to_c_escapes(c):
rev_result = []
while c >= 256:
c, low = (c // 256, c % 256)
rev_result.append('\\%03o' % low)
rev_result.append('\\%03o' % c)
return ''.join(reversed(rev_result))
def escape_string(s):
result = ''
if isinstance(s, str):
s = s.encode('utf-8')
for c in s:
if not(32 <= c < 127) or c in (ord('\\'), ord('"')):
result += charcode_to_c_escapes(c)
else:
result += chr(c)
return result

View file

@ -4,18 +4,8 @@ Import('env')
env.editor_sources = []
import os
from compat import encode_utf8, byte_to_str, open_utf8
from compat import encode_utf8, byte_to_str, open_utf8, escape_string
def escape_string(s, encoding='ascii'):
if isinstance(s, unicode):
s = s.encode(encoding)
result = ''
for c in s:
if not (32 <= ord(c) < 127) or c in ('\\', '"'):
result += '\\%03o' % ord(c)
else:
result += c
return result
def make_certs_header(target, source, env):

View file

@ -1,7 +1,11 @@
import os
if os.name == 'nt':
import _winreg as winreg
import sys
if sys.version_info < (3,):
import _winreg as winreg
else:
import winreg
def _reg_open_key(key, subkey):