-- Apply or remove binary patches at runtime. local bp = require('binpatch') function run_command(cmd,name) local pfix = name..': ' local patch, err = bp.load_dif_file(name) if not patch then dfhack.printerr(pfix..err) return end if cmd == 'check' then local status, addr = patch:status() if status == 'conflict' then dfhack.printerr(string.format('%sconflict at address %x', pfix, addr)) else print(pfix..'patch is '..status) end elseif cmd == 'apply' then local ok, msg = patch:apply() if ok then print(pfix..msg) else dfhack.printerr(pfix..msg) end elseif cmd == 'remove' then local ok, msg = patch:remove() if ok then print(pfix..msg) else dfhack.printerr(pfix..msg) end else qerror('Invalid command: '..cmd) end end local cmd,name = ... if not cmd or not name then qerror('Usage: binpatch check/apply/remove ') end run_command(cmd, name)