forked from blender/blender
53 lines
1.1 KiB
Python
Executable File
53 lines
1.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# SPDX-FileCopyrightText: 2009 Blender Authors
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
import sys
|
|
|
|
argv = sys.argv[:]
|
|
|
|
strip_byte = False
|
|
if "--strip-byte" in argv:
|
|
argv.remove("--strip-byte")
|
|
strip_byte = True
|
|
|
|
if len(argv) < 2:
|
|
sys.stdout.write("Usage: ctodata <c_file> [--strip-byte]\n")
|
|
sys.exit(1)
|
|
|
|
filename = argv[1]
|
|
|
|
try:
|
|
fpin = open(filename, "r")
|
|
except:
|
|
sys.stdout.write("Unable to open input {:s}\n".format(argv[1]))
|
|
sys.exit(1)
|
|
|
|
data_as_str = fpin.read().rsplit("{")[-1].split("}")[0]
|
|
data_as_str = data_as_str.replace(",", " ")
|
|
data_as_list = [int(v) for v in data_as_str.split()]
|
|
del data_as_str
|
|
|
|
if strip_byte:
|
|
# String data gets trailing byte.
|
|
last = data_as_list.pop()
|
|
assert last == 0
|
|
|
|
data = bytes(data_as_list)
|
|
del data_as_list
|
|
|
|
dname = filename + ".ctodata"
|
|
|
|
sys.stdout.write("Making DATA file <{:s}>\n".format(dname))
|
|
|
|
try:
|
|
fpout = open(dname, "wb")
|
|
except:
|
|
sys.stdout.write("Unable to open output {:s}\n".format(dname))
|
|
sys.exit(1)
|
|
|
|
size = fpout.write(data)
|
|
|
|
sys.stdout.write("{:d}\n".format(size))
|