krb5 commit: Convert remaining Python scripts to Python 3

Greg Hudson <[email protected]>
Newsgroups gmane.comp.encryption.kerberos.cvs
Message-ID <[email protected]>
https://github.com/krb5/krb5/commit/1000fb3eb135908bc5b750de912dc9b245ddbff9
commit 1000fb3eb135908bc5b750de912dc9b245ddbff9
Author: Greg Hudson <[email protected]>
Date:   Mon Jul 29 13:21:46 2019 -0400

    Convert remaining Python scripts to Python 3
    
    Commit e23d24beacb73581bbf4351250f3955e6fd44361 missed some Python
    scripts, in part because of the "PYTHON = python" line in
    src/Makefile.in from commit 7be2ef2b6c8c491781251a5023db48d7690f5fa8.
    Remove that line and convert the remaining scripts.  Also fix the
    check-pytests-no warning to mention Python 3 instead of Python 2.5.

 src/Makefile.in                  |    5 ++---
 src/util/cstyle-file.py          |    4 ++--
 src/util/cstyle.py               |   14 +++++++-------
 src/util/krb5-check-copyright.py |    2 +-
 src/util/krb5-mark-cstyle.py     |    4 ++--
 src/util/testrealm.py            |   20 ++++++++++----------
 6 files changed, 24 insertions(+), 25 deletions(-)

diff --git a/src/Makefile.in b/src/Makefile.in
index 91a5f4b..31135ff 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -495,7 +495,7 @@ check-unix: check-lmdb-$(HAVE_LMDB)
 	cat $(SKIPTESTS)
 
 check-pytests-no: check-postrecurse
-	@echo 'Skipped python test scripts: python 2.5 or later required' >> \
+	@echo 'Skipped python test scripts: python 3 required' >> \
 		$(SKIPTESTS)
 
 check-cmocka-no: check-postrecurse
@@ -567,7 +567,6 @@ coverity prevent cov: Makefiles
 FIND = find
 XARGS = xargs
 EMACS = emacs
-PYTHON = python
 
 INDENTDIRS = \
 	appl \
@@ -671,7 +670,7 @@ mark-cstyle-bsd:
 check-copyright:
 	(cd $(top_srcdir) && \
 	$(FIND) . \( -name '*.[ch]' -o -name '*.hin' \) -print0 | \
-	$(XARGS) -0 python util/krb5-check-copyright.py)
+	$(XARGS) -0 $(PYTHON) util/krb5-check-copyright.py)
 
 tags: FORCE
 	(cd $(top_srcdir) && \
diff --git a/src/util/cstyle-file.py b/src/util/cstyle-file.py
index 7e90b66..837fa05 100644
--- a/src/util/cstyle-file.py
+++ b/src/util/cstyle-file.py
@@ -57,7 +57,7 @@ from subprocess import call
 from tempfile import NamedTemporaryFile
 
 def warn(ln, msg):
-    print '%5d  %s' % (ln, msg)
+    print('%5d  %s' % (ln, msg))
 
 
 # If lines[0] indicates the krb5 C style, try to use emacs to reindent
@@ -70,7 +70,7 @@ def emacs_reindent(lines):
     util_dir = os.path.dirname(sys.argv[0])
     cstyle_el = os.path.join(util_dir, 'krb5-c-style.el')
     reindent_el = os.path.join(util_dir, 'krb5-batch-reindent.el')
-    with NamedTemporaryFile(suffix='.c') as f:
+    with NamedTemporaryFile(suffix='.c', mode='w+') as f:
         f.write(''.join(lines))
         f.flush()
         args = ['emacs', '-q', '-batch', '-l', cstyle_el, '-l', reindent_el,
diff --git a/src/util/cstyle.py b/src/util/cstyle.py
index 7c45335..c485d3f 100644
--- a/src/util/cstyle.py
+++ b/src/util/cstyle.py
@@ -44,7 +44,7 @@ def usage():
 # Run a command and return a list of its output lines.
 def run(args):
     # subprocess.check_output would be ideal here, but requires Python 2.7.
-    p = Popen(args, stdout=PIPE, stderr=PIPE)
+    p = Popen(args, stdout=PIPE, stderr=PIPE, universal_newlines=True)
     out, err = p.communicate()
     if p.returncode != 0:
         sys.stderr.write('Failed command: ' + ' '.join(args) + '\n')
@@ -85,8 +85,8 @@ def check_file(filename, rev, new_lines):
         p1 = Popen(['cat', filename], stdout=PIPE)
     else:
         p1 = Popen(['git', 'show', rev + ':' + filename], stdout=PIPE)
-    p2 = Popen(['python', 'src/util/cstyle-file.py'], stdin=p1.stdout,
-               stdout=PIPE)
+    p2 = Popen([sys.executable, 'src/util/cstyle-file.py'], stdin=p1.stdout,
+               stdout=PIPE, universal_newlines=True)
     p1.stdout.close()
     out, err = p2.communicate()
     if p2.returncode != 0:
@@ -97,9 +97,9 @@ def check_file(filename, rev, new_lines):
         m = line_re.match(line)
         if int(m.group(1)) in new_lines:
             if first:
-                print '  ' + dispname + ':'
+                print('  ' + dispname + ':')
                 first = False
-            print '    ' + line
+            print('    ' + line)
 
 
 # Determine the lines of each file modified by diff (a sequence of
@@ -153,8 +153,8 @@ def check_series(revlist):
 # Parse arguments.
 try:
     opts, args = getopt.getopt(sys.argv[1:], 'w')
-except getopt.GetoptError, err:
-    print str(err)
+except getopt.GetoptError as err:
+    print(str(err))
     usage()
 if len(args) > 1:
     usage()
diff --git a/src/util/krb5-check-copyright.py b/src/util/krb5-check-copyright.py
index 54e3597..5439a8a 100644
--- a/src/util/krb5-check-copyright.py
+++ b/src/util/krb5-check-copyright.py
@@ -29,7 +29,7 @@ import sys
 import re
 
 def warn(fname, ln, msg):
-    print '%s: %d: %s' % (fname, ln + 1, msg)
+    print('%s: %d: %s' % (fname, ln + 1, msg))
 
 def indicates_license(line):
     return 'Copyright' in line or 'COPYRIGHT' in line or 'License' in line
diff --git a/src/util/krb5-mark-cstyle.py b/src/util/krb5-mark-cstyle.py
index f4b4a83..a916904 100644
--- a/src/util/krb5-mark-cstyle.py
+++ b/src/util/krb5-mark-cstyle.py
@@ -15,7 +15,7 @@ def dofile(fname, style):
     newname = fname + ".new"
     infile = open(fname)
     outfile = open(newname, "w")
-    first = infile.next()
+    first = next(infile)
     if (first != style):
         changed = True
         outfile.write(style)
@@ -43,5 +43,5 @@ parser.add_option("--cstyle", action="store", dest="style",
 (options, args) = parser.parse_args()
 
 for fname in args:
-    print fname
+    print(fname)
     dofile(fname, styles[options.style])
diff --git a/src/util/testrealm.py b/src/util/testrealm.py
index ce32432..710acc4 100644
--- a/src/util/testrealm.py
+++ b/src/util/testrealm.py
@@ -68,16 +68,16 @@ pwfile = open(pwfilename, 'w')
 pwfile.write('user: %s\nadmin: %s\n' % (password('user'), password('admin')))
 pwfile.close()
 
-print
-print 'Realm files are in %s' % realm.testdir
-print 'KRB5_CONFIG is %s' % env['KRB5_CONFIG']
-print 'KRB5_KDC_PROFILE is %s' % env['KRB5_KDC_PROFILE']
-print 'KRB5CCNAME is %s' % env['KRB5CCNAME']
-print 'KRB5_KTNAME is %s' % env['KRB5_KTNAME']
-print 'KRB5RCACHEDIR is %s' % env['KRB5RCACHEDIR']
-print 'Password for user is %s (see also %s)' % (password('user'), pwfilename)
-print 'Password for admin is %s' % password('admin')
-print
+print()
+print('Realm files are in %s' % realm.testdir)
+print('KRB5_CONFIG is %s' % env['KRB5_CONFIG'])
+print('KRB5_KDC_PROFILE is %s' % env['KRB5_KDC_PROFILE'])
+print('KRB5CCNAME is %s' % env['KRB5CCNAME'])
+print('KRB5_KTNAME is %s' % env['KRB5_KTNAME'])
+print('KRB5RCACHEDIR is %s' % env['KRB5RCACHEDIR'])
+print('Password for user is %s (see also %s)' % (password('user'), pwfilename))
+print('Password for admin is %s' % password('admin'))
+print()
 
 subprocess.call([os.getenv('SHELL')], env=env)
 success('Create test krb5 realm.')
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.