From bd57f345ed9dbed1d81683e48199626de2ea9044 Mon Sep 17 00:00:00 2001 From: 3gg <3gg@shellblade.net> Date: Fri, 27 Jun 2025 10:18:39 -0700 Subject: Restructure project --- bin/txt2c.py | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100755 bin/txt2c.py (limited to 'bin') diff --git a/bin/txt2c.py b/bin/txt2c.py new file mode 100755 index 0000000..1d8ff70 --- /dev/null +++ b/bin/txt2c.py @@ -0,0 +1,62 @@ +#!/usr/bin/python3 + +import fileinput +import os +import sys + + +def escape_quotes(string): + return string.replace("\"", '\\"') + + +def escape_newlines(string): + return string.replace("\n", "\\n") + + +def quote(string): + return "\"" + string + "\"" + + +def main(): + if len(sys.argv) < 3: + print("Usage: {} [text files...] [C files...]".format(sys.argv[0])) + return 1 + + files = sys.argv[1:] + assert(len(files) % 2 == 0) + N = int(len(files) / 2) + text_files = files[:N] + c_files = files[N:] + + for i in range(len(text_files)): + text_file = text_files[i] + c_file = c_files[i] + h_file = c_file.replace(".c", ".h") + variable_name = os.path.basename(text_file).replace(".", "_") + + os.makedirs(os.path.join(".", os.path.dirname(c_file)), exist_ok=True) + + # Create the C file. + with open(c_file, 'w') as out_file: + out_file.write("const char {}[] =\n".format(variable_name)) + pad = " " + with open(text_file, 'r') as in_file: + for line in in_file.readlines(): + line = escape_quotes(line) + line = escape_newlines(line) + line = quote(line) + line = pad + line + "\n" + out_file.write(line) + out_file.write(pad + "\"\";") + + # Create the header file. + with open(h_file, 'w') as out_file: + out_file.write("#pragma once\n") + out_file.write("\n") + out_file.write("extern const char {}[];".format(variable_name)) + + return 0 + + +if __name__ == '__main__': + sys.exit(main()) -- cgit v1.2.3