Add better error message on encoding problems
Python3 doesn't provide easy-to-use built-in libraries to deal with common encoding issues (e.g., Windows-1252 encoded characters in a UTF-8 stream), so when we see an encoding error, provide better information on how to deal with it and a pointer to the more detailed information in the documentation. Signed-off-by: David A. Wheeler <dwheeler@dwheeler.com>
This commit is contained in:
parent
f1fdd59da5
commit
fe78940e6f
14
flawfinder
14
flawfinder
|
@ -1505,7 +1505,19 @@ def process_c_file(f, patch_infos):
|
||||||
print("Examining", f)
|
print("Examining", f)
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
|
|
||||||
text = "".join(my_input.readlines())
|
# Python3 is often configured to use only UTF-8, and presumes
|
||||||
|
# that inputs cannot have encoding errors.
|
||||||
|
# The real world isn't like that, so provide a prettier warning
|
||||||
|
# in such cases - with some hints on how to solve it.
|
||||||
|
try:
|
||||||
|
text = "".join(my_input.readlines())
|
||||||
|
except UnicodeDecodeError as err:
|
||||||
|
print('Error: encoding error in', h(f))
|
||||||
|
print(err)
|
||||||
|
print('Run as PYTHONUTF8=0 LC_ALL=C.ISO-8859-1 python3 flawfinder,')
|
||||||
|
print('convert source code to UTF-8, or run flawfinder using python2.')
|
||||||
|
print('See documentation for more information.')
|
||||||
|
sys.exit(15)
|
||||||
|
|
||||||
i = 0
|
i = 0
|
||||||
while i < len(text):
|
while i < len(text):
|
||||||
|
|
Loading…
Reference in New Issue