diff -aurN a/imediff2 b/imediff2 --- a/imediff2 2018-10-20 13:36:19.000000000 -0400 +++ b/imediff2 2021-03-03 10:03:31.121774492 -0500 @@ -167,19 +167,19 @@ def read_lines( filename ): global assume_empty try: - fp = file( filename ) + fp = open( filename ) l = fp.readlines() fp.close() return l - except IOError, (error, message): - if error == errno.ENOENT and assume_empty: + except IOError as e: + if e.errno == errno.ENOENT and assume_empty: return "" else: - sys.stderr.write(_("Could not read '%s': %s\n") % (filename, message)) + sys.stderr.write(_("Could not read '%s': %s\n") % (filename, e.strerror)) sys.exit(3) def strip_end_lines( txt ): - return string.replace(string.replace(txt,"%c"%10,""),"%c"%13,"") + return txt.replace("%c"%10,"").replace("%c"%13,"") def main(stdscr, lines_a, lines_b, start_mode): global sel, active_chunks, x,y, lines, textpad, contw,conth @@ -283,7 +283,7 @@ active_chunks.append( [j, j+len(line_list), i] ) for l in line_list: - lines.append( [string.expandtabs(strip_end_lines(l)), + lines.append( [strip_end_lines(l).expandtabs(), decor, color_pair] ) j+=1 @@ -332,9 +332,9 @@ def sel_next( dir ): global sel, active_chunks if dir == 'up': - rng = range(sel-1, -1, -1) + rng = list(range(sel-1, -1, -1)) else: - rng = range(sel+1, len(active_chunks)) + rng = list(range(sel+1, len(active_chunks))) for j in rng: if active_chunks[j][1] > y and active_chunks[j][0] < y+winh: sel = j @@ -487,7 +487,7 @@ elif c == ord('h') or c == ord('?') or c == curses.KEY_HELP: helpw = 0 helph = 0 - for l in string.split(helptext(), "%c"%10): + for l in helptext().split("%c"%10): helpw = max(helpw, len(l)) helph += 1 helppad = curses.newpad(helph+2, helpw+2) @@ -502,7 +502,7 @@ elif c == ord('q') or c == curses.KEY_CANCEL: quitw = 0 quith = 0 - for l in string.split(quittext(), "%c"%10): + for l in quittext().split("%c"%10): quitw = max(quitw, len(l)) quith += 1 quitpad = curses.newpad(quith+2, quitw+2) @@ -571,33 +571,33 @@ try: opts, args = getopt.getopt(sys.argv[1:], "hmuo:abcNtV", ["help","mono","unresolved","output=", "template", "version", "new-file"]) -except getopt.GetoptError, e: - print _("Error: ") + str(e) - print usagetext() +except getopt.GetoptError as e: + print((_("Error: ") + str(e))) + print(usagetext()) sys.exit(2) for o, a in opts: if o in ("-h", "--help"): - print usagetext() + print((usagetext())) sys.exit() elif o in ("-t", "--template"): try: with open(config_file, 'w') as f: - print >>f, "# Configuration for imediff2: (Erase this file to reset)" - print >>f, "# " - print >>f, "# edit only first character of each line to 'a'...'z'" - print >>f, "#" + print(("# Configuration for imediff2: (Erase this file to reset)"), file=f) + print(("# "), file=f) + print(("# edit only first character of each line to 'a'...'z'"), file=f) + print(("#"), file=f) for k in kcvalues: - print >>f, "%s %s" % (k , k) + print(("%s %s" % (k , k)), file=f) except: - print "%s not writable, aborting" % config_file + print(("%s not writable, aborting" % config_file)) sys.exit() elif o in ("-V", "--version"): - print "%s %s" % (PACKAGE, VERSION) + print(("%s %s" % (PACKAGE, VERSION))) sys.exit() if len(args)<2: - print usagetext() + print((usagetext())) sys.exit(2) for o, a in opts: @@ -692,14 +695,14 @@ assert( not editor is None ) try: (of, of_name) = tempfile.mkstemp(prefix='imediff2') - os.write( of, output ) + os.write( of, output.encode() ) os.close(of) time.sleep(0.1) # make the change visible - many editor look a lot like imediff2 editor_ret = os.system('%s %s' % (editor, of_name)) time.sleep(0.1) if editor_ret == 0: new_b_lines = read_lines(of_name) - if string.join(new_b_lines, '') == output: + if ''.join(new_b_lines) == output: chunk_mode = 'old' elif new_b_lines != lines_a: lines_b = new_b_lines @@ -707,8 +710,8 @@ else: chunks = 'old' os.unlink(of_name) - except IOError, (error, message): - sys.stderr.write(_("Could not write to '%s': %s\n") % (of_name, message)); + except IOError as e: + sys.stderr.write(_("Could not write to '%s': %s\n") % (of_name, e.strerror)); if not launch_editor: break @@ -719,11 +722,11 @@ else: try: if ofile is not None: - of = file(ofile, 'wb') - of.write( output ) + of = open(ofile, 'wb') + of.write( output.encode() ) of.close() sys.exit(0) - except IOError, (error, message): - sys.stderr.write(_("Could not write to '%s': %s\n") % (ofile, message)); + except IOError as e: + sys.stderr.write(_("Could not write to '%s': %s\n") % (ofile, e.strerror)); sys.exit(3)