diff --git a/tools/clang_util.py b/tools/clang_util.py index 3b8e8b422..b0e81396c 100644 --- a/tools/clang_util.py +++ b/tools/clang_util.py @@ -3,16 +3,26 @@ # can be found in the LICENSE file from exec_util import exec_cmd +import os import sys +# Script directory. +script_dir = os.path.dirname(__file__) +root_dir = os.path.join(script_dir, os.pardir) + if sys.platform == 'win32': # Force use of the clang-format version bundled with depot_tools. clang_format_exe = 'clang-format.bat' else: clang_format_exe = 'clang-format' -def clang_format(file_contents): - result = exec_cmd(clang_format_exe, ".", file_contents) +def clang_format(file_name, file_contents): + # -assume-filename is necessary to find the .clang-format file and determine + # the language when specifying contents via stdin. + result = exec_cmd("%s -assume-filename=%s" % (clang_format_exe, file_name), \ + root_dir, file_contents) + if result['err'] != '': + print "clang-format error: %s" % result['err'] if result['out'] != '': output = result['out'] if sys.platform == 'win32': diff --git a/tools/fix_style.py b/tools/fix_style.py index e65dbeb6d..1456cafc7 100644 --- a/tools/fix_style.py +++ b/tools/fix_style.py @@ -34,7 +34,7 @@ def update_file(filename): msg(filename, "empty") return; - newcontents = clang_format(oldcontents) + newcontents = clang_format(filename, oldcontents) if newcontents is None: raise Exception("Failed to process %s" % filename) diff --git a/tools/translator.py b/tools/translator.py index 0b07f160f..277fc3f7e 100644 --- a/tools/translator.py +++ b/tools/translator.py @@ -124,7 +124,7 @@ def update_file(file, newcontents): # Apply clang-format for C/C++ files. if os.path.splitext(file)[1][1:] in ('cc', 'cpp', 'h'): - result = clang_format(newcontents) + result = clang_format(file, newcontents) if result != None: newcontents = result else: