#!/usr/bin/env python """ # b43 firmware assembly code beautifier # # Copyright (C) 2008 Michael Buesch # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License version 3 # as published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . """ import getopt import sys from libb43 import * def usage(): print "b43 firmware assembly code beautifier" print "" print "Copyright (C) 2008 Michael Buesch " print "Licensed under the GNU/GPL version 3" print "" print "Usage: b43-beautifier [OPTIONS]" print "" print "-h|--help Print this help text" print "-a|--asmfile [FILE] Assembly code source file" print "-b|--binfile [FILE] Binary code source file" print "-d|--defs [DIR] Directory containing the defs files" print "" print "The options -d AND (-a XOR -b) are essential." print "The --defs directory is the \"common\" subdirectory in the" print "b43-ucode assembly source tree." def parseArgs(): global opt_asmfile global opt_binfile global opt_defsfiles opt_asmfile = None opt_binfile = None opt_defsfiles = None try: (opts, args) = getopt.getopt(sys.argv[1:], "ha:b:d:", [ "help", "asmfile=", "binfile=", "defs=" ]) except getopt.GetoptError: usage() sys.exit(1) for (o, v) in opts: if o in ("-h", "--help"): usage() sys.exit(0) if o in ("-a", "--asmfile"): if opt_binfile: print "Must not set both of --asmfile and --binfile" sys.exit(1) opt_asmfile = v if o in ("-b", "--binfile"): if opt_asmfile: print "Must not set both of --asmfile and --binfile" sys.exit(1) opt_binfile = v if o in ("-d", "--defs"): opt_defsfiles = v if not opt_asmfile and not opt_binfile: print "Must set either --asmfile or --binfile" sys.exit(1) if not opt_defsfiles: print "Must set --defs" sys.exit(1) def main(): parseArgs() # Get the assembly if opt_asmfile: try: asm = file(opt_asmfile).read() except IOError, e: print "Could not read asmfile %s: %s" % (e.filename, e.strerror) sys.exit(1) else: try: bin = file(opt_binfile).read() except IOError, e: print "Could not read binfile %s: %s" % (e.filename, e.strerror) sys.exit(1) asm = Disassembler(bin, "").getAsm() b = B43Beautifier(asm, opt_defsfiles) sys.stdout.write(b.getAsm()) try: main() except B43Exception: sys.exit(1)