[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 1/2] qapi: open files in binary mode and use expl
From: |
Matthias Maier |
Subject: |
[Qemu-devel] [PATCH v3 1/2] qapi: open files in binary mode and use explicit decoding/encoding in common.py |
Date: |
Fri, 15 Jun 2018 17:02:04 -0500 |
This is a different approach to fix the locale dependent encode/decode
problem in common.py utilizing the binary read/write mode [1,2], and (if
a python 3 interpreter is used) with explicit decode/encode arguments
[3].
This approach is preferred over the fix in commit d4e5ec877ca because it
is (a) locale independent, and (b) does not depend on the en_US.UTF_8
locale to be available.
[1] https://docs.python.org/3.6/library/stdtypes.html#bytes.decode
[2] https://docs.python.org/3.6/library/stdtypes.html#str.encode
[3] https://docs.python.org/3/howto/unicode.html
Signed-off-by: Arfrever Frehtes Taifersar Arahesis <address@hidden>
Signed-off-by: Matthias Maier <address@hidden>
---
scripts/qapi/common.py | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/scripts/qapi/common.py b/scripts/qapi/common.py
index 2462fc0291..a368e11a38 100644
--- a/scripts/qapi/common.py
+++ b/scripts/qapi/common.py
@@ -16,6 +16,7 @@ import errno
import os
import re
import string
+import sys
from collections import OrderedDict
builtin_types = {
@@ -259,6 +260,8 @@ class QAPISchemaParser(object):
previously_included.append(os.path.abspath(fp.name))
self.incl_info = incl_info
self.src = fp.read()
+ if sys.version_info[0] >= 3:
+ self.src = self.src.decode()
if self.src == '' or self.src[-1] != '\n':
self.src += '\n'
self.cursor = 0
@@ -340,7 +343,7 @@ class QAPISchemaParser(object):
return None
try:
- fobj = open(incl_fname, 'r')
+ fobj = open(incl_fname, 'rb')
except IOError as e:
raise QAPISemError(info, '%s: %s' % (e.strerror, incl_fname))
return QAPISchemaParser(fobj, previously_included, info)
@@ -1492,7 +1495,7 @@ class QAPISchemaEvent(QAPISchemaEntity):
class QAPISchema(object):
def __init__(self, fname):
self._fname = fname
- parser = QAPISchemaParser(open(fname, 'r'))
+ parser = QAPISchemaParser(open(fname, 'rb'))
exprs = check_exprs(parser.exprs)
self.docs = parser.docs
self._entity_list = []
@@ -2006,9 +2009,11 @@ class QAPIGen(object):
if e.errno != errno.EEXIST:
raise
fd = os.open(pathname, os.O_RDWR | os.O_CREAT, 0o666)
- f = os.fdopen(fd, 'r+')
+ f = os.fdopen(fd, 'r+b')
text = (self._top(fname) + self._preamble + self._body
+ self._bottom(fname))
+ if sys.version_info[0] >= 3:
+ text = text.encode()
oldtext = f.read(len(text) + 1)
if text != oldtext:
f.seek(0)
--
2.16.4
- [Qemu-devel] [PATCH v3 0/2] Fix compilation with python-3 if en_US.UTF-8 is unavailable, Matthias Maier, 2018/06/15
- [Qemu-devel] [PATCH v3 1/2] qapi: open files in binary mode and use explicit decoding/encoding in common.py,
Matthias Maier <=
- Re: [Qemu-devel] [PATCH v3 1/2] qapi: open files in binary mode and use explicit decoding/encoding in common.py, Markus Armbruster, 2018/06/18
- Re: [Qemu-devel] [PATCH v3 1/2] qapi: open files in binary mode and use explicit decoding/encoding in common.py, Matthias Maier, 2018/06/18
- Re: [Qemu-devel] [PATCH v3 1/2] qapi: open files in binary mode and use explicit decoding/encoding in common.py, Eduardo Habkost, 2018/06/18
- Re: [Qemu-devel] [PATCH v3 1/2] qapi: open files in binary mode and use explicit decoding/encoding in common.py, Markus Armbruster, 2018/06/18
- Re: [Qemu-devel] [PATCH v3 1/2] qapi: open files in binary mode and use explicit decoding/encoding in common.py, Eduardo Habkost, 2018/06/18
- Re: [Qemu-devel] [PATCH v3 1/2] qapi: open files in binary mode and use explicit decoding/encoding in common.py, Eduardo Habkost, 2018/06/18
[Qemu-devel] [PATCH v3 2/2] Revert commit d4e5ec877ca, Matthias Maier, 2018/06/15