From c5a677da9e7b2b2aa43b0b6dfb3813c0212379c0 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Fri, 17 Sep 2021 20:12:25 +0200 Subject: bpo-45231: update_file.py preserves end of line (GH-28411) The update_file.py tool now preserves the end of line of the updated file. Fix the "make regen-frozen" command: it no longer changes the end of line of PCbuild/ files on Unix. Git changes the end of line depending on the platform. --- Tools/scripts/update_file.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Tools/scripts/update_file.py b/Tools/scripts/update_file.py index cfc4e2b..5e22486 100644 --- a/Tools/scripts/update_file.py +++ b/Tools/scripts/update_file.py @@ -28,7 +28,19 @@ def updating_file_with_tmpfile(filename, tmpfile=None): elif os.path.isdir(tmpfile): tmpfile = os.path.join(tmpfile, filename + '.tmp') - with open(tmpfile, 'w') as outfile: + with open(filename, 'rb') as infile: + line = infile.readline() + + if line.endswith(b'\r\n'): + newline = "\r\n" + elif line.endswith(b'\r'): + newline = "\r" + elif line.endswith(b'\n'): + newline = "\n" + else: + raise ValueError(f"unknown end of line: {filename}: {line!a}") + + with open(tmpfile, 'w', newline=newline) as outfile: with open(filename) as infile: yield infile, outfile update_file_with_tmpfile(filename, tmpfile) -- cgit v0.12