Merge catseye's incbin-range enhancement.

Needed a little work to merge cleanly, but no real surprises.

This isn't a complete solution yet, but it will work for the
basic case. It should allow expressions and gracefully handle
non-hardcoded cases (while still efficiently handling hardcoded
ones).
This commit is contained in:
Michael Martin 2012-06-03 20:00:40 -07:00
commit 86e58efce8

View File

@ -52,11 +52,20 @@ def pragmaRequire(ppt, line, result):
def pragmaIncbin(ppt, line, result): def pragmaIncbin(ppt, line, result):
"Includes a binary file" "Includes a binary file"
filename = line.expect("STRING").value filename = line.expect("STRING").value
offset = 0
size = -1
if str(line.lookahead(0)) == ",":
line.pop()
offset = line.expect("NUM").value
if str(line.lookahead(0)) == ",":
line.pop()
size = line.expect("NUM").value
line.expect("EOL") line.expect("EOL")
if type(filename) == str: if type(filename) == str:
try: try:
f = file(os.path.join(FE.context_directory, filename), "rb") f = file(os.path.join(FE.context_directory, filename), "rb")
bytes = f.read() f.seek(offset)
bytes = f.read(size)
f.close() f.close()
except IOError: except IOError:
Err.log("Could not read " + filename) Err.log("Could not read " + filename)