old_contents: #! /usr/bin/env python
  
  # findlinksto
  #
  # find symbolic links to a path matching a regular expression
  
  import os
  import sys
  import regex
  import getopt
  
  def main():
      try:
          opts, args = getopt.getopt(sys.argv[1:], '')
          if len(args) < 2:
              raise getopt.error, 'not enough arguments'
      except getopt.error, msg:
          sys.stdout = sys.stderr
          print msg
          print 'usage: findlinksto pattern directory ...'
          sys.exit(2)
      pat, dirs = args[0], args[1:]
      prog = regex.compile(pat)
      for dirname in dirs:
          os.path.walk(dirname, visit, prog)
  
  def visit(prog, dirname, names):
      if os.path.islink(dirname):
          names[:] = []
          return
      if os.path.ismount(dirname):
          print 'descend into', dirname
      for name in names:
          name = os.path.join(dirname, name)
          try:
              linkto = os.readlink(name)
              if prog.search(linkto) >= 0:
                  print name, '->', linkto
          except os.error:
              pass
  
  main()
  
new_contents: #! /usr/bin/env python
  
  # findlinksto
  #
  # find symbolic links to a path matching a regular expression
  
  import os
  import sys
  import re
  import getopt
  
  def main():
      try:
          opts, args = getopt.getopt(sys.argv[1:], '')
          if len(args) < 2:
              raise getopt.GetoptError('not enough arguments', None)
      except getopt.GetoptError, msg:
          sys.stdout = sys.stderr
          print msg
          print 'usage: findlinksto pattern directory ...'
          sys.exit(2)
      pat, dirs = args[0], args[1:]
      prog = re.compile(pat)
      for dirname in dirs:
          os.path.walk(dirname, visit, prog)
  
  def visit(prog, dirname, names):
      if os.path.islink(dirname):
          names[:] = []
          return
      if os.path.ismount(dirname):
          print 'descend into', dirname
      for name in names:
          name = os.path.join(dirname, name)
          try:
              linkto = os.readlink(name)
              if prog.search(linkto) is not None:
                  print name, '->', linkto
          except os.error:
              pass
  
  main()
  
subject: Use new name for GetoptError, and pass it two arguments Use re module instead of regex