Blob Blame History Raw
diff -r -u cfe-7.0.1.src.orig/tools/scan-view/bin/scan-view cfe-7.0.1.src/tools/scan-view/bin/scan-view
--- cfe-7.0.1.src.orig/tools/scan-view/bin/scan-view	2019-01-25 06:33:02.331385931 +0000
+++ cfe-7.0.1.src/tools/scan-view/bin/scan-view	2019-01-25 06:34:16.207696772 +0000
@@ -7,9 +7,9 @@
 import imp
 import os
 import posixpath
-import thread
+import _thread
 import time
-import urllib
+import urllib.request, urllib.parse, urllib.error
 import webbrowser
 
 # How long to wait for server to start.
@@ -27,7 +27,7 @@
 
 def url_is_up(url):
     try:
-        o = urllib.urlopen(url)
+        o = urllib.request.urlopen(url)
     except IOError:
         return False
     o.close()
@@ -35,7 +35,7 @@
 
 
 def start_browser(port, options):
-    import urllib
+    import urllib.request, urllib.parse, urllib.error
     import webbrowser
 
     url = 'http://%s:%d' % (options.host, port)
@@ -52,10 +52,10 @@
             sys.stderr.flush()
         time.sleep(kSleepTimeout)
     else:
-        print >> sys.stderr, 'WARNING: Unable to detect that server started.'
+        print('WARNING: Unable to detect that server started.', file=sys.stderr)
 
     if options.debug:
-        print >> sys.stderr, '%s: Starting webbrowser...' % sys.argv[0]
+        print('%s: Starting webbrowser...' % sys.argv[0], file=sys.stderr)
     webbrowser.open(url)
 
 
@@ -69,9 +69,9 @@
 
     import ScanView
     try:
-        print 'Starting scan-view at: http://%s:%d' % (options.host,
-                                                       port)
-        print '  Use Ctrl-C to exit.'
+        print('Starting scan-view at: http://%s:%d' % (options.host,
+                                                       port))
+        print('  Use Ctrl-C to exit.')
         httpd = ScanView.create_server((options.host, port),
                                        options, root)
         httpd.serve_forever()
@@ -80,9 +80,9 @@
 
 
 def port_is_open(port):
-    import SocketServer
+    import socketserver
     try:
-        t = SocketServer.TCPServer((kDefaultHost, port), None)
+        t = socketserver.TCPServer((kDefaultHost, port), None)
     except:
         return False
     t.server_close()
@@ -135,7 +135,7 @@
     # Kick off thread to wait for server and start web browser, if
     # requested.
     if args.startBrowser:
-        t = thread.start_new_thread(start_browser, (port, args))
+        t = _thread.start_new_thread(start_browser, (port, args))
 
     run(port, args, args.root)
 
diff -r -u cfe-7.0.1.src.orig/tools/scan-view/share/Reporter.py cfe-7.0.1.src/tools/scan-view/share/Reporter.py
--- cfe-7.0.1.src.orig/tools/scan-view/share/Reporter.py	2019-01-25 06:33:02.331385931 +0000
+++ cfe-7.0.1.src/tools/scan-view/share/Reporter.py	2019-01-25 06:34:16.262697004 +0000
@@ -80,7 +80,7 @@
         return 'Email'
 
     def getParameters(self):
-        return map(lambda x:TextParameter(x),['To', 'From', 'SMTP Server', 'SMTP Port'])
+        return [TextParameter(x) for x in ['To', 'From', 'SMTP Server', 'SMTP Port']]
 
     # Lifted from python email module examples.
     def attachFile(self, outer, path):
@@ -148,7 +148,7 @@
         return 'Bugzilla'
     
     def getParameters(self):
-        return map(lambda x:TextParameter(x),['URL','Product'])
+        return [TextParameter(x) for x in ['URL','Product']]
 
     def fileReport(self, report, parameters):
         raise NotImplementedError
@@ -211,7 +211,7 @@
 
         script = os.path.join(os.path.dirname(__file__),'../share/scan-view/FileRadar.scpt')
         args = ['osascript', script, component, componentVersion, classification, personID, report.title,
-                report.description, diagnosis, config] + map(os.path.abspath, report.files)
+                report.description, diagnosis, config] + list(map(os.path.abspath, report.files))
 #        print >>sys.stderr, args
         try:
           p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
diff -r -u cfe-7.0.1.src.orig/tools/scan-view/share/ScanView.py cfe-7.0.1.src/tools/scan-view/share/ScanView.py
--- cfe-7.0.1.src.orig/tools/scan-view/share/ScanView.py	2019-01-25 06:33:02.331385931 +0000
+++ cfe-7.0.1.src/tools/scan-view/share/ScanView.py	2019-01-25 06:34:16.423697681 +0000
@@ -1,10 +1,10 @@
-import BaseHTTPServer
-import SimpleHTTPServer
+import http.server
+import http.server
 import os
 import sys
-import urllib, urlparse
+import urllib.request, urllib.parse, urllib.error, urllib.parse
 import posixpath
-import StringIO
+import io
 import re
 import shutil
 import threading
@@ -13,7 +13,8 @@
 import itertools
 
 import Reporter
-import ConfigParser
+import configparser
+import importlib
 
 ###
 # Various patterns matched or replaced by server.
@@ -96,25 +97,25 @@
         result = None
         try:
             if self.server.options.debug:
-                print >>sys.stderr, "%s: SERVER: submitting bug."%(sys.argv[0],)
+                print("%s: SERVER: submitting bug."%(sys.argv[0],), file=sys.stderr)
             self.status = self.reporter.fileReport(self.report, self.parameters)
             self.success = True
             time.sleep(3)
             if self.server.options.debug:
-                print >>sys.stderr, "%s: SERVER: submission complete."%(sys.argv[0],)
-        except Reporter.ReportFailure,e:
+                print("%s: SERVER: submission complete."%(sys.argv[0],), file=sys.stderr)
+        except Reporter.ReportFailure as e:
             self.status = e.value
-        except Exception,e:
-            s = StringIO.StringIO()
+        except Exception as e:
+            s = io.StringIO()
             import traceback
-            print >>s,'<b>Unhandled Exception</b><br><pre>'
+            print('<b>Unhandled Exception</b><br><pre>', file=s)
             traceback.print_exc(e,file=s)
-            print >>s,'</pre>'
+            print('</pre>', file=s)
             self.status = s.getvalue()
 
-class ScanViewServer(BaseHTTPServer.HTTPServer):
+class ScanViewServer(http.server.HTTPServer):
     def __init__(self, address, handler, root, reporters, options):
-        BaseHTTPServer.HTTPServer.__init__(self, address, handler)
+        http.server.HTTPServer.__init__(self, address, handler)
         self.root = root
         self.reporters = reporters
         self.options = options        
@@ -123,7 +124,7 @@
         self.load_config()
 
     def load_config(self):
-        self.config = ConfigParser.RawConfigParser()
+        self.config = configparser.RawConfigParser()
 
         # Add defaults
         self.config.add_section('ScanView')
@@ -155,44 +156,44 @@
     def halt(self):
         self.halted = True
         if self.options.debug:
-            print >>sys.stderr, "%s: SERVER: halting." % (sys.argv[0],)
+            print("%s: SERVER: halting." % (sys.argv[0],), file=sys.stderr)
 
     def serve_forever(self):
         while not self.halted:
             if self.options.debug > 1:
-                print >>sys.stderr, "%s: SERVER: waiting..." % (sys.argv[0],)
+                print("%s: SERVER: waiting..." % (sys.argv[0],), file=sys.stderr)
             try:
                 self.handle_request()
-            except OSError,e:
-                print 'OSError',e.errno
+            except OSError as e:
+                print('OSError',e.errno)
 
     def finish_request(self, request, client_address):
         if self.options.autoReload:
             import ScanView
-            self.RequestHandlerClass = reload(ScanView).ScanViewRequestHandler
-        BaseHTTPServer.HTTPServer.finish_request(self, request, client_address)
+            self.RequestHandlerClass = importlib.reload(ScanView).ScanViewRequestHandler
+        http.server.HTTPServer.finish_request(self, request, client_address)
 
     def handle_error(self, request, client_address):
         # Ignore socket errors
         info = sys.exc_info()
         if info and isinstance(info[1], socket.error):
             if self.options.debug > 1:
-                print >>sys.stderr, "%s: SERVER: ignored socket error." % (sys.argv[0],)
+                print("%s: SERVER: ignored socket error." % (sys.argv[0],), file=sys.stderr)
             return
-        BaseHTTPServer.HTTPServer.handle_error(self, request, client_address)
+        http.server.HTTPServer.handle_error(self, request, client_address)
 
 # Borrowed from Quixote, with simplifications.
 def parse_query(qs, fields=None):
     if fields is None:
         fields = {}
-    for chunk in filter(None, qs.split('&')):
+    for chunk in [_f for _f in qs.split('&') if _f]:
         if '=' not in chunk:
             name = chunk
             value = ''
         else:
             name, value = chunk.split('=', 1)
-        name = urllib.unquote(name.replace('+', ' '))
-        value = urllib.unquote(value.replace('+', ' '))
+        name = urllib.parse.unquote(name.replace('+', ' '))
+        value = urllib.parse.unquote(value.replace('+', ' '))
         item = fields.get(name)
         if item is None:
             fields[name] = [value]
@@ -200,20 +201,20 @@
             item.append(value)
     return fields
 
-class ScanViewRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
+class ScanViewRequestHandler(http.server.SimpleHTTPRequestHandler):
     server_version = "ScanViewServer/" + __version__
     dynamic_mtime = time.time()
 
     def do_HEAD(self):
         try:
-            SimpleHTTPServer.SimpleHTTPRequestHandler.do_HEAD(self)
-        except Exception,e:
+            http.server.SimpleHTTPRequestHandler.do_HEAD(self)
+        except Exception as e:
             self.handle_exception(e)
             
     def do_GET(self):
         try:
-            SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
-        except Exception,e:
+            http.server.SimpleHTTPRequestHandler.do_GET(self)
+        except Exception as e:
             self.handle_exception(e)
             
     def do_POST(self):
@@ -230,7 +231,7 @@
             if f:
                 self.copyfile(f, self.wfile)
                 f.close()
-        except Exception,e:
+        except Exception as e:
             self.handle_exception(e)            
 
     def log_message(self, format, *args):
@@ -263,8 +264,8 @@
 
     def handle_exception(self, exc):
         import traceback
-        s = StringIO.StringIO()
-        print >>s, "INTERNAL ERROR\n"
+        s = io.StringIO()
+        print("INTERNAL ERROR\n", file=s)
         traceback.print_exc(exc, s)
         f = self.send_string(s.getvalue(), 'text/plain')
         if f:
@@ -410,8 +411,8 @@
 
         import startfile
         if self.server.options.debug:
-            print >>sys.stderr, '%s: SERVER: opening "%s"'%(sys.argv[0],
-                                                            file)
+            print('%s: SERVER: opening "%s"'%(sys.argv[0],
+                                                            file), file=sys.stderr)
 
         status = startfile.open(file)
         if status:
@@ -428,7 +429,7 @@
             data = self.load_crashes()
             # Don't allow empty reports.
             if not data:
-                raise ValueError, 'No crashes detected!'
+                raise ValueError('No crashes detected!')
             c = Context()
             c.title = 'clang static analyzer failures'
 
@@ -472,7 +473,7 @@
             # Check that this is a valid report.            
             path = posixpath.join(self.server.root, 'report-%s.html' % report)
             if not posixpath.exists(path):
-                raise ValueError, 'Invalid report ID'
+                raise ValueError('Invalid report ID')
             keys = self.load_report(report)
             c = Context()
             c.title = keys.get('DESC','clang error (unrecognized')
@@ -501,7 +502,7 @@
         # report is None is used for crashes
         try:
             c = self.get_report_context(report)
-        except ValueError, e:
+        except ValueError as e:
             return self.send_error(400, e.message)
 
         title = c.title
@@ -544,7 +545,7 @@
 """%(r.getName(),display,r.getName(),options))
         reporterSelections = '\n'.join(reporterSelections)
         reporterOptionsDivs = '\n'.join(reporterOptions)
-        reportersArray = '[%s]'%(','.join([`r.getName()` for r in self.server.reporters]))
+        reportersArray = '[%s]'%(','.join([repr(r.getName()) for r in self.server.reporters]))
 
         if c.files:
             fieldSize = min(5, len(c.files))
@@ -647,9 +648,9 @@
             fields = {}
         self.fields = fields
 
-        o = urlparse.urlparse(self.path)
+        o = urllib.parse.urlparse(self.path)
         self.fields = parse_query(o.query, fields)
-        path = posixpath.normpath(urllib.unquote(o.path))
+        path = posixpath.normpath(urllib.parse.unquote(o.path))
 
         # Split the components and strip the root prefix.
         components = path.split('/')[1:]
@@ -690,8 +691,8 @@
         path = posixpath.join(self.server.root, relpath)
 
         if self.server.options.debug > 1:
-            print >>sys.stderr, '%s: SERVER: sending path "%s"'%(sys.argv[0],
-                                                                 path)
+            print('%s: SERVER: sending path "%s"'%(sys.argv[0],
+                                                                 path), file=sys.stderr)
         return self.send_path(path)
 
     def send_404(self):
@@ -735,7 +736,7 @@
                 mtime = self.dynamic_mtime
             self.send_header("Last-Modified", self.date_time_string(mtime))
             self.end_headers()
-        return StringIO.StringIO(s)
+        return io.StringIO(s)
 
     def send_patched_file(self, path, ctype):
         # Allow a very limited set of variables. This is pretty gross.
diff -r -u cfe-7.0.1.src.orig/tools/scan-view/share/startfile.py cfe-7.0.1.src/tools/scan-view/share/startfile.py
--- cfe-7.0.1.src.orig/tools/scan-view/share/startfile.py	2019-01-25 06:33:02.331385931 +0000
+++ cfe-7.0.1.src/tools/scan-view/share/startfile.py	2019-01-25 06:34:16.457697824 +0000
@@ -70,7 +70,7 @@
         return not returncode
 
     def open(self, filename):
-        if isinstance(filename, basestring):
+        if isinstance(filename, str):
             cmdline = self.args + [filename]
         else:
             # assume it is a sequence
@@ -110,7 +110,7 @@
 # Platform support for Unix
 else:
 
-    import commands
+    import subprocess
 
     # @WARNING: use the private API of the webbrowser module
     from webbrowser import _iscommand
@@ -125,7 +125,7 @@
         def detect_kde_version(self):
             kde_version = None
             try:
-                info = commands.getoutput('kde-config --version')
+                info = subprocess.getoutput('kde-config --version')
 
                 for line in info.splitlines():
                     if line.startswith('KDE'):
@@ -158,7 +158,7 @@
             desktop_environment = 'gnome'
         else:
             try:
-                info = commands.getoutput('xprop -root _DT_SAVE_MODE')
+                info = subprocess.getoutput('xprop -root _DT_SAVE_MODE')
                 if ' = "xfce4"' in info:
                     desktop_environment = 'xfce'
             except (OSError, RuntimeError):
@@ -189,7 +189,7 @@
             return _controllers[controller_name].open
 
         except KeyError:
-            if _controllers.has_key('xdg-open'):
+            if 'xdg-open' in _controllers:
                 return _controllers['xdg-open'].open
             else:
                 return webbrowser.open