process():  New function that contains the "orchestration" of the
	    actual work.

main():  Just handle the command line and filename determination,
	 calling process() to do the work.

These changes make this more import-friendly.
diff --git a/Doc/tools/toc2bkm.py b/Doc/tools/toc2bkm.py
index ca7064b..c2edea3 100755
--- a/Doc/tools/toc2bkm.py
+++ b/Doc/tools/toc2bkm.py
@@ -120,6 +120,11 @@
 	write_toc_entry(entry, fp, layer + 1)
 
 
+def process(ifn, ofn, bigpart=None):
+    toc = parse_toc(open(ifn), bigpart)
+    write_toc(toc, open(ofn, "w"))
+
+
 def main():
     bigpart = None
     opts, args = getopt.getopt(sys.argv[1:], "c:")
@@ -131,8 +136,7 @@
     for filename in args:
 	base, ext = os.path.splitext(filename)
 	ext = ext or ".toc"
-	toc = parse_toc(open(base + ext), bigpart)
-	write_toc(toc, open(base + ".bkm", "w"))
+        process(base + ext, base + ".bkm", bigpart)
 
 
 if __name__ == "__main__":