diff options
author | Sander Sweers <infirit@gmail.com> | 2018-02-25 12:18:04 +0100 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek.chauhan@gmail.com> | 2018-06-09 18:17:48 +0000 |
commit | 47785bf89b56bd111080d8a26d9f8bca9bb4d25c (patch) | |
tree | 8ff3ad0ff58c34aa3cbb113305c9feb9bddc49a3 /mesonbuild/mesonlib.py | |
parent | 18e25b67737fa27ba38ee293718dc9ca40c81a43 (diff) | |
download | meson-47785bf89b56bd111080d8a26d9f8bca9bb4d25c.zip meson-47785bf89b56bd111080d8a26d9f8bca9bb4d25c.tar.gz meson-47785bf89b56bd111080d8a26d9f8bca9bb4d25c.tar.bz2 |
Add file encoding to configure_file
Input files can be in any file encoding, not just utf-8 or isolatin1. Meson
should not make assumptions here and allow for the user to specify the
encoding to use.
Diffstat (limited to 'mesonbuild/mesonlib.py')
-rw-r--r-- | mesonbuild/mesonlib.py | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/mesonbuild/mesonlib.py b/mesonbuild/mesonlib.py index 9f1da3e..e4951f9 100644 --- a/mesonbuild/mesonlib.py +++ b/mesonbuild/mesonlib.py @@ -623,9 +623,9 @@ def do_mesondefine(line, confdata): raise MesonException('#mesondefine argument "%s" is of unknown type.' % varname) -def do_conf_file(src, dst, confdata, format): +def do_conf_file(src, dst, confdata, format, encoding='utf-8'): try: - with open(src, encoding='utf-8') as f: + with open(src, encoding=encoding) as f: data = f.readlines() except Exception as e: raise MesonException('Could not read input file %s: %s' % (src, str(e))) @@ -652,8 +652,11 @@ def do_conf_file(src, dst, confdata, format): missing_variables.update(missing) result.append(line) dst_tmp = dst + '~' - with open(dst_tmp, 'w', encoding='utf-8') as f: - f.writelines(result) + try: + with open(dst_tmp, 'w', encoding=encoding) as f: + f.writelines(result) + except Exception as e: + raise MesonException('Could not write output file %s: %s' % (dst, str(e))) shutil.copymode(src, dst_tmp) replace_if_different(dst, dst_tmp) return missing_variables |