clang-format-diff: Make it work with python3 too
Summary: It is not necessary, but would be nice if the script run on python3 as well (as opposed to only python2, which is going to be deprecated https://pythonclock.org/)
Contributed by MarcoFalke!
Reviewers: krasimir
Reviewed By: krasimir
Subscribers: lebedev.ri, sammccall, cfe-commits
Differential Revision: https://reviews.llvm.org/D48098
git-svn-id: svn://svn.chromium.org/llvm-project/cfe/trunk/tools/clang-format@338839 0b72dbe1-c17f-4bc7-b9db-2b4152be0356
diff --git a/clang-format-diff.py b/clang-format-diff.py
index ffa30e7..ce4c1d6 100755
--- a/clang-format-diff.py
+++ b/clang-format-diff.py
@@ -25,10 +25,12 @@
import argparse
import difflib
import re
-import string
import subprocess
-import StringIO
import sys
+try:
+ from StringIO import StringIO
+except ImportError:
+ from io import StringIO
def main():
@@ -84,14 +86,14 @@
line_count = int(match.group(3))
if line_count == 0:
continue
- end_line = start_line + line_count - 1;
+ end_line = start_line + line_count - 1
lines_by_file.setdefault(filename, []).extend(
['-lines', str(start_line) + ':' + str(end_line)])
# Reformat files containing changes in place.
- for filename, lines in lines_by_file.iteritems():
+ for filename, lines in lines_by_file.items():
if args.i and args.verbose:
- print 'Formatting', filename
+ print('Formatting {}'.format(filename))
command = [args.binary, filename]
if args.i:
command.append('-i')
@@ -100,20 +102,23 @@
command.extend(lines)
if args.style:
command.extend(['-style', args.style])
- p = subprocess.Popen(command, stdout=subprocess.PIPE,
- stderr=None, stdin=subprocess.PIPE)
+ p = subprocess.Popen(command,
+ stdout=subprocess.PIPE,
+ stderr=None,
+ stdin=subprocess.PIPE,
+ universal_newlines=True)
stdout, stderr = p.communicate()
if p.returncode != 0:
- sys.exit(p.returncode);
+ sys.exit(p.returncode)
if not args.i:
with open(filename) as f:
code = f.readlines()
- formatted_code = StringIO.StringIO(stdout).readlines()
+ formatted_code = StringIO(stdout).readlines()
diff = difflib.unified_diff(code, formatted_code,
filename, filename,
'(before formatting)', '(after formatting)')
- diff_string = string.join(diff, '')
+ diff_string = ''.join(diff)
if len(diff_string) > 0:
sys.stdout.write(diff_string)