From: Krasimir Georgiev Date: Fri, 3 Aug 2018 10:04:58 +0000 (+0000) Subject: clang-format-diff: Make it work with python3 too X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=58205f6b2bf6fcbd20c0e439593f41861a0d84f9;p=clang 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: https://llvm.org/svn/llvm-project/cfe/trunk@338839 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/clang-format/clang-format-diff.py b/tools/clang-format/clang-format-diff.py index ffa30e70dd..ce4c1d6e0a 100755 --- a/tools/clang-format/clang-format-diff.py +++ b/tools/clang-format/clang-format-diff.py @@ -25,10 +25,12 @@ Example usage for git/svn users: 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 @@ def main(): 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 @@ def main(): 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)