--- a/imediff2 2017-11-14 09:28:57.007929569 -0500 +++ b/imediff2 2017-11-14 10:11:12.618496692 -0500 @@ -18,20 +18,20 @@ # License along with the program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -VERSION = '1.1.1' +VERSION = '1.1.2' PACKAGE = 'imediff2' -import curses.wrapper +import sys +if sys.version_info<(3,0,0): + import curses.wrapper import curses import tempfile import gettext import difflib import getopt -import string import types import time import pty -import sys import os import errno @@ -121,19 +122,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 @@ -237,7 +238,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 @@ -287,9 +287,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 @@ -442,7 +441,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) @@ -512,21 +513,21 @@ try: opts, args = getopt.getopt(sys.argv[1:], "hmuo:abcNV", ["help","mono","unresolved","output=", "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 ("-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: @@ -592,15 +592,15 @@ if launch_editor: 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 @@ -607,8 +608,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 @@ -619,11 +620,11 @@ else: try: if ofile is not None: - of = file(ofile, 'wb') + of = open(ofile, 'wb') - of.write( output ) + 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)