Convert print statements to function calls in Tools/.
diff --git a/Tools/scripts/ftpmirror.py b/Tools/scripts/ftpmirror.py
index 7318b37..dd941a5 100755
--- a/Tools/scripts/ftpmirror.py
+++ b/Tools/scripts/ftpmirror.py
@@ -29,8 +29,8 @@
 # Print usage message and exit
 def usage(*args):
     sys.stdout = sys.stderr
-    for msg in args: print msg
-    print __doc__
+    for msg in args: print(msg)
+    print(__doc__)
     sys.exit(2)
 
 verbose = 1 # 0 for -q, 2 for -v
@@ -82,22 +82,22 @@
             if args[3:]: usage('too many arguments')
     #
     f = ftplib.FTP()
-    if verbose: print "Connecting to '%s%s'..." % (host,
-                                                   (port and ":%d"%port or ""))
+    if verbose: print("Connecting to '%s%s'..." % (host,
+                                                   (port and ":%d"%port or "")))
     f.connect(host,port)
     if not nologin:
         if verbose:
-            print 'Logging in as %r...' % (login or 'anonymous')
+            print('Logging in as %r...' % (login or 'anonymous'))
         f.login(login, passwd, account)
-    if verbose: print 'OK.'
+    if verbose: print('OK.')
     pwd = f.pwd()
-    if verbose > 1: print 'PWD =', repr(pwd)
+    if verbose > 1: print('PWD =', repr(pwd))
     if remotedir:
-        if verbose > 1: print 'cwd(%s)' % repr(remotedir)
+        if verbose > 1: print('cwd(%s)' % repr(remotedir))
         f.cwd(remotedir)
-        if verbose > 1: print 'OK.'
+        if verbose > 1: print('OK.')
         pwd = f.pwd()
-        if verbose > 1: print 'PWD =', repr(pwd)
+        if verbose > 1: print('PWD =', repr(pwd))
     #
     mirrorsubdir(f, localdir)
 
@@ -105,11 +105,11 @@
 def mirrorsubdir(f, localdir):
     pwd = f.pwd()
     if localdir and not os.path.isdir(localdir):
-        if verbose: print 'Creating local directory', repr(localdir)
+        if verbose: print('Creating local directory', repr(localdir))
         try:
             makedir(localdir)
         except os.error as msg:
-            print "Failed to establish local directory", repr(localdir)
+            print("Failed to establish local directory", repr(localdir))
             return
     infofilename = os.path.join(localdir, '.mirrorinfo')
     try:
@@ -119,15 +119,15 @@
     try:
         info = eval(text)
     except (SyntaxError, NameError):
-        print 'Bad mirror info in', repr(infofilename)
+        print('Bad mirror info in', repr(infofilename))
         info = {}
     subdirs = []
     listing = []
-    if verbose: print 'Listing remote directory %r...' % (pwd,)
+    if verbose: print('Listing remote directory %r...' % (pwd,))
     f.retrlines('LIST', listing.append)
     filesfound = []
     for line in listing:
-        if verbose > 1: print '-->', repr(line)
+        if verbose > 1: print('-->', repr(line))
         if mac:
             # Mac listing has just filenames;
             # trailing / means subdirectory
@@ -141,14 +141,14 @@
             # Parse, assuming a UNIX listing
             words = line.split(None, 8)
             if len(words) < 6:
-                if verbose > 1: print 'Skipping short line'
+                if verbose > 1: print('Skipping short line')
                 continue
             filename = words[-1].lstrip()
             i = filename.find(" -> ")
             if i >= 0:
                 # words[0] had better start with 'l'...
                 if verbose > 1:
-                    print 'Found symbolic link %r' % (filename,)
+                    print('Found symbolic link %r' % (filename,))
                 linkto = filename[i+4:]
                 filename = filename[:i]
             infostuff = words[-5:-1]
@@ -157,21 +157,21 @@
         for pat in skippats:
             if fnmatch(filename, pat):
                 if verbose > 1:
-                    print 'Skip pattern', repr(pat),
-                    print 'matches', repr(filename)
+                    print('Skip pattern', repr(pat), end=' ')
+                    print('matches', repr(filename))
                 skip = 1
                 break
         if skip:
             continue
         if mode[0] == 'd':
             if verbose > 1:
-                print 'Remembering subdirectory', repr(filename)
+                print('Remembering subdirectory', repr(filename))
             subdirs.append(filename)
             continue
         filesfound.append(filename)
         if info.has_key(filename) and info[filename] == infostuff:
             if verbose > 1:
-                print 'Already have this version of',repr(filename)
+                print('Already have this version of',repr(filename))
             continue
         fullname = os.path.join(localdir, filename)
         tempname = os.path.join(localdir, '@'+filename)
@@ -187,20 +187,20 @@
             pass
         if mode[0] == 'l':
             if verbose:
-                print "Creating symlink %r -> %r" % (filename, linkto)
+                print("Creating symlink %r -> %r" % (filename, linkto))
             try:
                 os.symlink(linkto, tempname)
             except IOError as msg:
-                print "Can't create %r: %s" % (tempname, msg)
+                print("Can't create %r: %s" % (tempname, msg))
                 continue
         else:
             try:
                 fp = open(tempname, 'wb')
             except IOError as msg:
-                print "Can't create %r: %s" % (tempname, msg)
+                print("Can't create %r: %s" % (tempname, msg))
                 continue
             if verbose:
-                print 'Retrieving %r from %r as %r...' % (filename, pwd, fullname)
+                print('Retrieving %r from %r as %r...' % (filename, pwd, fullname))
             if verbose:
                 fp1 = LoggingFile(fp, 1024, sys.stdout)
             else:
@@ -210,7 +210,7 @@
                 f.retrbinary('RETR ' + filename,
                              fp1.write, 8*1024)
             except ftplib.error_perm as msg:
-                print msg
+                print(msg)
             t1 = time.time()
             bytes = fp.tell()
             fp.close()
@@ -223,29 +223,29 @@
         try:
             os.rename(tempname, fullname)
         except os.error as msg:
-            print "Can't rename %r to %r: %s" % (tempname, fullname, msg)
+            print("Can't rename %r to %r: %s" % (tempname, fullname, msg))
             continue
         info[filename] = infostuff
         writedict(info, infofilename)
         if verbose and mode[0] != 'l':
             dt = t1 - t0
             kbytes = bytes / 1024.0
-            print int(round(kbytes)),
-            print 'Kbytes in',
-            print int(round(dt)),
-            print 'seconds',
+            print(int(round(kbytes)), end=' ')
+            print('Kbytes in', end=' ')
+            print(int(round(dt)), end=' ')
+            print('seconds', end=' ')
             if t1 > t0:
-                print '(~%d Kbytes/sec)' % \
-                          int(round(kbytes/dt),)
-            print
+                print('(~%d Kbytes/sec)' % \
+                          int(round(kbytes/dt),))
+            print()
     #
     # Remove files from info that are no longer remote
     deletions = 0
     for filename in info.keys():
         if filename not in filesfound:
             if verbose:
-                print "Removing obsolete info entry for",
-                print repr(filename), "in", repr(localdir or ".")
+                print("Removing obsolete info entry for", end=' ')
+                print(repr(filename), "in", repr(localdir or "."))
             del info[filename]
             deletions = deletions + 1
     if deletions:
@@ -264,8 +264,8 @@
         for pat in skippats:
             if fnmatch(name, pat):
                 if verbose > 1:
-                    print 'Skip pattern', repr(pat),
-                    print 'matches', repr(name)
+                    print('Skip pattern', repr(pat), end=' ')
+                    print('matches', repr(name))
                 skip = 1
                 break
         if skip:
@@ -273,10 +273,10 @@
         fullname = os.path.join(localdir, name)
         if not rmok:
             if verbose:
-                print 'Local file', repr(fullname),
-                print 'is no longer pertinent'
+                print('Local file', repr(fullname), end=' ')
+                print('is no longer pertinent')
             continue
-        if verbose: print 'Removing local file/dir', repr(fullname)
+        if verbose: print('Removing local file/dir', repr(fullname))
         remove(fullname)
     #
     # Recursively mirror subdirectories
@@ -284,28 +284,28 @@
         if interactive:
             doit = askabout('subdirectory', subdir, pwd)
             if not doit: continue
-        if verbose: print 'Processing subdirectory', repr(subdir)
+        if verbose: print('Processing subdirectory', repr(subdir))
         localsubdir = os.path.join(localdir, subdir)
         pwd = f.pwd()
         if verbose > 1:
-            print 'Remote directory now:', repr(pwd)
-            print 'Remote cwd', repr(subdir)
+            print('Remote directory now:', repr(pwd))
+            print('Remote cwd', repr(subdir))
         try:
             f.cwd(subdir)
         except ftplib.error_perm as msg:
-            print "Can't chdir to", repr(subdir), ":", repr(msg)
+            print("Can't chdir to", repr(subdir), ":", repr(msg))
         else:
-            if verbose: print 'Mirroring as', repr(localsubdir)
+            if verbose: print('Mirroring as', repr(localsubdir))
             mirrorsubdir(f, localsubdir)
-            if verbose > 1: print 'Remote cwd ..'
+            if verbose > 1: print('Remote cwd ..')
             f.cwd('..')
         newpwd = f.pwd()
         if newpwd != pwd:
-            print 'Ended up in wrong directory after cd + cd ..'
-            print 'Giving up now.'
+            print('Ended up in wrong directory after cd + cd ..')
+            print('Giving up now.')
             break
         else:
-            if verbose > 1: print 'OK.'
+            if verbose > 1: print('OK.')
 
 # Helper to remove a file or directory tree
 def remove(fullname):
@@ -323,13 +323,13 @@
         try:
             os.rmdir(fullname)
         except os.error as msg:
-            print "Can't remove local directory %r: %s" % (fullname, msg)
+            print("Can't remove local directory %r: %s" % (fullname, msg))
             return 0
     else:
         try:
             os.unlink(fullname)
         except os.error as msg:
-            print "Can't remove local file %r: %s" % (fullname, msg)
+            print("Can't remove local file %r: %s" % (fullname, msg))
             return 0
     return 1
 
@@ -366,7 +366,7 @@
             return 1
         if reply in ['', 'n', 'no', 'nop', 'nope']:
             return 0
-        print 'Please answer yes or no.'
+        print('Please answer yes or no.')
 
 # Create a directory if it doesn't exist.  Recursively create the
 # parent directory as well if needed.