print >> sys.stderr, str(e) print >> sys.stderr, USAGE return 1 # TODO: move actual merge code into intelhex package as helper function # and write couple of tests for it. res = intelhex.IntelHex() def end_addr_inclusive(addr): if addr is not None: return addr + 1 return addr for f in args: try: fname, fstart, fend = intelhex._get_file_and_addr_range(f) except intelhex._BadFileNotation: print >> sys.stderr, 'Bad argument: "%s"' % f print >> sys.stderr, USAGE return 1 if fname == '-': fname = sys.stdin ih = intelhex.IntelHex(fname) if (fstart, fend) != (None, None): ih = ih[fstart:end_addr_inclusive(fend)] try: res.merge(ih, overlap) except intelhex.AddressOverlapError, e: print >> sys.stderr, 'Merging:', fname print >> sys.stderr, str(e) return 1
sys.stderr.write(str(e)+"\n") sys.stderr.write(USAGE+"\n") return 1 # TODO: move actual merge code into intelhex package as helper function # and write couple of tests for it. res = intelhex.IntelHex() def end_addr_inclusive(addr): if addr is not None: return addr + 1 return addr for f in args: try: fname, fstart, fend = intelhex._get_file_and_addr_range(f) except intelhex._BadFileNotation: sys.stderr.write('Bad argument: "%s"\n' % f) sys.stderr.write(USAGE+"\n") return 1 if fname == '-': fname = sys.stdin ih = intelhex.IntelHex(fname) if (fstart, fend) != (None, None): ih = ih[fstart:end_addr_inclusive(fend)] try: res.merge(ih, overlap) except intelhex.AddressOverlapError, e: sys.stderr.write('Merging: '+fname+"\n") sys.stderr.write(str(e)+"\n") return 1
def main(args=None): import getopt output = None start = None end = None write_start_addr = True overlap = 'error' if args is None: args = sys.argv[1:] try: opts, args = getopt.gnu_getopt(args, 'hvo:r:', [ 'help', 'version', 'output=', 'range=', 'no-start-addr', 'overlap=', ]) for o, a in opts: if o in ('-h', '--help'): print(USAGE) return 0 elif o in ('-v', '--version'): print(VERSION) return 0 elif o in ('-o', '--output'): output = a elif o in ("-r", "--range"): try: l = a.split(":") if l[0] != '': start = int(l[0], 16) if l[1] != '': end = int(l[1], 16) except (ValueError, IndexError): raise getopt.GetoptError('Bad range value(s)') elif o == '--no-start-addr': write_start_addr = False elif o == '--overlap': if a in ('error', 'ignore', 'replace'): overlap = a else: raise getopt.GetoptError('Bad overlap value') if len(args) == 0: raise getopt.GetoptError('You should specify file list') except getopt.GetoptError: e = sys.exc_info()[1] # current exception sys.stderr.write(str(e) + "\n") sys.stderr.write(USAGE + "\n") return 1 import intelhex # TODO: move actual merge code into intelhex package as helper function # and write couple of tests for it. res = intelhex.IntelHex() def end_addr_inclusive(addr): if addr is not None: return addr + 1 return addr for f in args: try: fname, fstart, fend = intelhex._get_file_and_addr_range(f) except intelhex._BadFileNotation: sys.stderr.write('Bad argument: "%s"\n' % f) sys.stderr.write(USAGE + "\n") return 1 if fname == '-': fname = sys.stdin ih = intelhex.IntelHex(fname) if (fstart, fend) != (None, None): ih = ih[fstart:end_addr_inclusive(fend)] try: res.merge(ih, overlap) except intelhex.AddressOverlapError: e = sys.exc_info()[1] # current exception sys.stderr.write('Merging: ' + fname + "\n") sys.stderr.write(str(e) + "\n") return 1 if (start, end) != (None, None): res = res[start:end_addr_inclusive(end)] if output is None: output = sys.stdout res.write_hex_file(output, write_start_addr) return 0
def main(args=None): import getopt output = None start = None end = None write_start_addr = True overlap = 'error' if args is None: args = sys.argv[1:] try: opts, args = getopt.gnu_getopt(args, 'hvo:r:', ['help', 'version', 'output=', 'range=', 'no-start-addr', 'overlap=', ]) for o,a in opts: if o in ('-h', '--help'): print(USAGE) return 0 elif o in ('-v', '--version'): print(VERSION) return 0 elif o in ('-o', '--output'): output = a elif o in ("-r", "--range"): try: l = a.split(":") if l[0] != '': start = int(l[0], 16) if l[1] != '': end = int(l[1], 16) except (ValueError, IndexError): raise getopt.GetoptError('Bad range value(s)') elif o == '--no-start-addr': write_start_addr = False elif o == '--overlap': if a in ('error', 'ignore', 'replace'): overlap = a else: raise getopt.GetoptError('Bad overlap value') if len(args) == 0: raise getopt.GetoptError('You should specify file list') except getopt.GetoptError: e = sys.exc_info()[1] # current exception sys.stderr.write(str(e)+"\n") sys.stderr.write(USAGE+"\n") return 1 import intelhex # TODO: move actual merge code into intelhex package as helper function # and write couple of tests for it. res = intelhex.IntelHex() def end_addr_inclusive(addr): if addr is not None: return addr + 1 return addr for f in args: try: fname, fstart, fend = intelhex._get_file_and_addr_range(f) except intelhex._BadFileNotation: sys.stderr.write('Bad argument: "%s"\n' % f) sys.stderr.write(USAGE+"\n") return 1 if fname == '-': fname = sys.stdin ih = intelhex.IntelHex(fname) if (fstart, fend) != (None, None): ih = ih[fstart:end_addr_inclusive(fend)] try: res.merge(ih, overlap) except intelhex.AddressOverlapError: e = sys.exc_info()[1] # current exception sys.stderr.write('Merging: '+fname+"\n") sys.stderr.write(str(e)+"\n") return 1 if (start, end) != (None, None): res = res[start:end_addr_inclusive(end)] if output is None: output = sys.stdout res.write_hex_file(output, write_start_addr) return 0