python: Open the template as text, with an explicit encoding

In commit bd27203f4d we changed this to
open in binary mode, to then explicitly decode the lines with the right
encoding.

Unfortunately, that broke the build on Windows, where the template file
can have '\r\n' as line terminators: opening in binary mode would keep
those terminators and break the regexp.

We need to go back to text mode, where the "universal newlines" mode
takes care of this.

However, to fix the initial issue, let's specify the encoding explicitly
when opening the file, and make sure it is open in text mode, so we only
get unicode strings.

Reviewed-by: Jose Fonseca <jfonseca@vmware>
This commit is contained in:
Mathieu Bridon 2018-08-17 09:16:00 -06:00 committed by Brian Paul
parent f9415d760a
commit 459ec5265c

View file

@ -9,6 +9,7 @@
from __future__ import print_function
import io
import sys
import gettext
import re
@ -187,11 +188,9 @@ print("/***********************************************************************\
# Process the options template and generate options.h with all
# translations.
template = open (template_header_path, "rb")
template = io.open (template_header_path, mode="rt", encoding='utf-8')
descMatches = []
for line in template:
line = line.decode('utf-8')
if len(descMatches) > 0:
matchENUM = reENUM .match (line)
matchDESC_END = reDESC_END.match (line)