From 6bb73040dd7447f9f45685f7f8dd5b53abc58485 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 22 Nov 2020 15:27:02 +0100 Subject: file2string: remove question mark from safe chars Trigraphs such as "??=" (which are enabled by default with -std=c11) can mess up strings, so avoid them entirely by escaping question marks. This also drops Python 2 compatibility from file2string, making the change to the waf rule necessary. The input file is now opened in binary mode which is also more correct versus the old text mode which just happened to work even on binary files. --- TOOLS/file2string.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) (limited to 'TOOLS/file2string.py') diff --git a/TOOLS/file2string.py b/TOOLS/file2string.py index bdeb18ce86..b641a1df2f 100755 --- a/TOOLS/file2string.py +++ b/TOOLS/file2string.py @@ -22,26 +22,21 @@ # License along with mpv. If not, see . # -from __future__ import unicode_literals import sys -# Indexing a byte string yields int on Python 3.x, and a str on Python 2.x -def pord(c): - return ord(c) if type(c) == str else c - def file2string(infilename, infile, outfile): outfile.write("// Generated from %s\n\n" % infilename) - conv = ['\\' + ("%03o" % c) for c in range(256)] + conv = ["\\%03o" % c for c in range(256)] safe_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" \ - "0123456789!#%&'()*+,-./:;<=>?[]^_{|}~ " + "0123456789!#%&'()*+,-./:;<=>[]^_{|}~ " for c in safe_chars: conv[ord(c)] = c for c, esc in ("\nn", "\tt", r"\\", '""'): conv[ord(c)] = '\\' + esc for line in infile: - outfile.write('"' + ''.join(conv[pord(c)] for c in line) + '"\n') + outfile.write('"' + ''.join(conv[c] for c in line) + '"\n') if __name__ == "__main__": with open(sys.argv[1], 'rb') as infile: -- cgit v1.2.3