old_contents: """
  XTerm creation and cleanup.
  Utility functions to run an xterm (connected via screen(1)) on each host.
  
  Requires xterm(1) and GNU screen(1).
  """
  
  import re
  from subprocess import Popen
  from mininet.util import quietRun
  
  def makeXterm( node, title = '' ):
      """Run screen on a node, and hook up an xterm.
         node: Node object
         title: base title
         returns: process created"""
      title += ': ' + node.name
      if not node.inNamespace:
          title += ' (root)'
      cmd = [ 'xterm', '-title', title, '-e' ]
      if not node.execed:
          node.cmd( 'screen -dmS ' + node.name )
          cmd += [ 'screen', '-D', '-RR', '-S', node.name ]
      else:
          cmd += [ 'sh', '-c', 'exec tail -f /tmp/' + node.name + '*.log' ]
      return Popen( cmd )
  
  def cleanUpScreens():
      "Remove moldy old screen sessions."
      r = r'(\d+.[hsc]\d+)'
      output = quietRun( 'screen -ls' ).split( '\n' )
      for line in output:
          m = re.search( r, line )
          if m:
              quietRun( 'screen -S ' + m.group( 1 ) + ' -X kill' )
  
  def makeXterms( nodes, title = '' ):
      """Create XTerms.
         nodes: list of Node objects
         title: base title for each
         returns: list of created xterm processes"""
      return [ makeXterm( node, title ) for node in nodes ]
  
new_contents: """
  XTerm creation and cleanup.
  Utility functions to run an xterm (connected via screen(1)) on each host.
  
  Requires xterm(1) and GNU screen(1).
  """
  
  import re
  from subprocess import Popen
  from mininet.util import quietRun
  
  def makeXterm( node, title = '' ):
      """Run screen on a node, and hook up an xterm.
         node: Node object
         title: base title
         returns: process created"""
      title += ': ' + node.name
      if not node.inNamespace:
          title += ' (root)'
      cmd = [ 'xterm', '-title', title, '-e' ]
      if not node.execed:
          node.cmd( 'screen -dmS ' + node.name )
          cmd += [ 'screen', '-D', '-RR', '-S', node.name ]
      else:
          cmd += [ 'sh', '-c', 'exec tail -f /tmp/' + node.name + '*.log' ]
      return Popen( cmd )
  
  def cleanUpScreens():
      "Remove moldy old screen sessions."
      r = r'(\d+.[hsc]\d+)'
      output = quietRun( 'screen -ls' ).split( '\n' )
      for line in output:
          m = re.search( r, line )
          if m:
              quietRun( 'screen -S ' + m.group( 1 ) + ' -X quit' )
  
  def makeXterms( nodes, title = '' ):
      """Create XTerms.
         nodes: list of Node objects
         title: base title for each
         returns: list of created xterm processes"""
      return [ makeXterm( node, title ) for node in nodes ]
  
subject: Use quit rather than kill when cleaning up screens