Use the new support module instead of including all the getopt
processing and style information directly.
diff --git a/Doc/tools/mkmodindex b/Doc/tools/mkmodindex
index 1c22c43..257e30a 100755
--- a/Doc/tools/mkmodindex
+++ b/Doc/tools/mkmodindex
@@ -26,24 +26,26 @@
                     Documentation Index'.
 """
 import buildindex
-import getopt
 import os
 import re
 import string
+import support
 import sys
 
 
-def usage():
-    program = os.path.basename(sys.argv[0])
-    print __doc__ % {"program": program}
+class IndexOptions(support.Options):
+    def __init__(self):
+        support.Options.__init__(self)
+        self.add_args("l", ["letters"])
+        self.letters = 0
 
+    def handle_option(self, opt, val):
+        if opt in ("-l", "--letters"):
+            self.letters = 1
 
-def error(msg, rc=2):
-    sys.stdout = sys.stderr
-    print msg
-    print
-    usage()
-    sys.exit(rc)
+    def usage(self):
+        program = os.path.basename(sys.argv[0])
+        print __doc__ % {"program": program}
 
 
 _rx = re.compile(
@@ -52,56 +54,10 @@
     "\(<span class='platform'>.*</span>\)</em>)?)</a>")
 
 def main():
-    outputfile = "-"
-    columns = 1
-    letters = 0
-    uplink = "./"
-    uptitle = "Python Documentation Index"
-    variables = {"address": "",
-                 "iconserver": "icons",
-                 "imgtype": "gif",
-                 "title": "Global Module Index",
-                 "uplinkalt": "up",
-                 "uplinkicon": "up",
-                 }
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], "a:c:hlo:",
-                                   [# script controls:
-                                    "columns=", "help", "letters", "output=",
-                                    # content components:
-                                    "address=", "iconserver=",
-                                    "title=", "uplink=", "uptitle="])
-    except getopt.error, msg:
-        error(msg)
-    for opt, val in opts:
-        if opt in ("-a", "--address"):
-            val = string.strip(val)
-            variables["address"] = val and "<address>\n%s\n</address>\n" % val
-        elif opt in ("-h", "--help"):
-            usage()
-            sys.exit()
-        elif opt in ("-o", "--output"):
-            outputfile = val
-        elif opt in ("-c", "--columns"):
-            columns = string.atoi(val)
-        elif opt in ("-l", "--letters"):
-            letters = 1
-        elif opt == "--title":
-            variables["title"] = string.strip(val)
-        elif opt == "--uplink":
-            uplink = string.strip(val)
-        elif opt == "--uptitle":
-            uptitle = string.strip(val)
-        elif opt == "--iconserver":
-            variables["iconserver"] = string.strip(val) or "."
-    if uplink and uptitle:
-        variables["uplinkalt"] = "up"
-        variables["uplinkicon"] = "up"
-    else:
-        variables["uplinkalt"] = ""
-        variables["uplinkicon"] = "blank"
-    variables["uplink"] = uplink
-    variables["uptitle"] = uptitle
+    options = IndexOptions()
+    options.variables["title"] = "Global Module Index"
+    options.parse(sys.argv[1:])
+    args = options.args
     if not args:
         args = ["-"]
     #
@@ -138,19 +94,19 @@
     #
     num_nodes = len(nodes)
     # Here's the HTML generation:
-    parts = [HEAD % variables,
-             buildindex.process_nodes(nodes, columns, letters),
-             TAIL % variables,
+    parts = [options.get_header(),
+             buildindex.process_nodes(nodes, options.columns, options.letters),
+             options.get_footer(),
              ]
     if has_plat_flag:
         parts.insert(1, PLAT_DISCUSS)
     html = string.join(parts, '')
     program = os.path.basename(sys.argv[0])
-    if outputfile == "-":
-        sys.stdout.write(html)
-        sys.stderr.write("%s: %d index nodes\n" % (program, num_nodes))
+    fp = options.get_output_file()
+    print >>fp, html.rstrip()
+    if options.outputfile == "-":
+        print >>sys.stderr, "%s: %d index nodes" % (program, num_nodes)
     else:
-        open(outputfile, "w").write(html)
         print
         print "%s: %d index nodes" % (program, num_nodes)
 
@@ -161,52 +117,6 @@
 
 """
 
-NAVIGATION = '''\
-<div class="navigation">
-<table width="100%%" cellpadding="0" cellspacing="2">
-<tr>
-<td><img width="32" height="32" align="bottom" border="0" alt=""
- src="%(iconserver)s/blank.%(imgtype)s"></td>
-<td><a href="%(uplink)s"
- title="%(uptitle)s"><img width="32" height="32" align="bottom" border="0"
- alt="%(uplinkalt)s"
- src="%(iconserver)s/%(uplinkicon)s.%(imgtype)s"></a></td>
-<td><img width="32" height="32" align="bottom" border="0" alt=""
- src="%(iconserver)s/blank.%(imgtype)s"></td>
-<td align="center" width="100%%">%(title)s</td>
-<td><img width="32" height="32" align="bottom" border="0" alt=""
- src="%(iconserver)s/blank.%(imgtype)s"></td>
-<td><img width="32" height="32" align="bottom" border="0" alt=""
- src="%(iconserver)s/blank.%(imgtype)s"></td>
-<td><img width="32" height="32" align="bottom" border="0" alt=""
- src="%(iconserver)s/blank.%(imgtype)s"></td>
-</tr></table>
-<b class="navlabel">Up:</b> <span class="sectref"><a href="%(uplink)s"
- title="%(uptitle)s">%(uptitle)s</A></span>
-<br></div>
-'''
-
-HEAD = '''\
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-  <title>Global Module Index</title>
-  <meta name="description" content="%(title)s">
-  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-  <link rel="STYLESHEET" href="lib/lib.css">
-</head>
-<body>
-''' + NAVIGATION + '''\
-<hr>
-
-<h2>%(title)s</h2>
-
-'''
-
-TAIL = "<hr>\n" + NAVIGATION + '''\
-%(address)s</body>
-</html>
-'''
 
 if __name__ == "__main__":
     main()