diff -r 000000000000 -r bde4ae8d615e os/persistentdata/persistentstorage/sqlite3api/TEST/TCL/tcldistribution/tools/man2html1.tcl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/os/persistentdata/persistentstorage/sqlite3api/TEST/TCL/tcldistribution/tools/man2html1.tcl	Fri Jun 15 03:10:57 2012 +0200
@@ -0,0 +1,269 @@
+# man2html1.tcl --
+#
+# This file defines procedures that are used during the first pass of the
+# man page to html conversion process. It is sourced by h.tcl.
+#
+# Copyright (c) 1996 by Sun Microsystems, Inc.
+#
+# SCCS: @(#) man2html1.tcl 1.2 96/03/21 10:48:29
+#
+
+# Global variables used by these scripts:
+#
+# state -	state variable that controls action of text proc.
+#				
+# curFile -	tail of current man page.
+#
+# file -	file pointer; for both xref.tcl and contents.html
+#
+# NAME_file -	array indexed by NAME and containing file names used
+#		for hyperlinks.
+#
+# KEY_file -	array indexed by KEYWORD and containing file names used
+#		for hyperlinks.
+#
+# lib -		contains package name. Used to label section in contents.html
+#
+# inDT -	in dictionary term. 
+
+
+
+# text --
+#
+# This procedure adds entries to the hypertext arrays NAME_file
+# and KEY_file.
+#
+# DT: might do this: if first word of $dt matches $name and [llength $name==1]
+# 	and [llength $dt > 1], then add to NAME_file. 
+#
+# Arguments:
+# string -		Text to index.
+
+
+proc text string {
+    global state curFile NAME_file KEY_file inDT
+
+    switch $state {
+	NAME {
+	    foreach i [split $string ","] {
+		lappend NAME_file([string trim $i]) $curFile
+	    }
+	}
+	KEY {
+	    foreach i [split $string ","] {
+		lappend KEY_file([string trim $i]) $curFile
+	    }
+	}
+	DT -
+	OFF -
+	DASH {}
+	default {
+	    puts stderr "text: unknown state: $state"
+	}
+    }
+}
+
+
+# macro --
+#
+# This procedure is invoked to process macro invocations that start
+# with "." (instead of ').
+#
+# Arguments:
+# name -	The name of the macro (without the ".").
+# args -	Any additional arguments to the macro.
+
+proc macro {name args} {
+    switch $name {
+	SH {
+	    global state
+
+	    switch $args {
+		NAME {
+		    if {$state == "INIT" } {
+			set state NAME
+		    }
+		}
+		DESCRIPTION {set state DT}
+		INTRODUCTION {set state DT}
+		KEYWORDS {set state KEY}
+		default {set state OFF}
+	    }
+		
+	}
+	TP {
+	    global inDT
+	    set inDT 1
+	}
+	TH {
+	    global lib state inDT
+	    set inDT 0
+	    set state INIT
+	    if {[llength $args] != 5} {
+		    set args [join $args " "]
+		    puts stderr "Bad .TH macro: .$name $args"
+	    }
+	    set lib [lindex $args 3]				;# Tcl or Tk
+	}
+    }
+}
+
+
+
+# dash --
+#
+# This procedure is invoked to handle dash characters ("\-" in
+# troff).  It only function in pass1 is to terminate the NAME state.
+#
+# Arguments:
+# None.
+
+proc dash {} {
+    global state
+    if {$state == "NAME"} {
+	set state DASH
+    }
+}
+
+
+
+# newline --
+#
+# This procedure is invoked to handle newlines in the troff input.
+# It's only purpose is to terminate a DT (dictionary term).
+#
+# Arguments:
+# None.
+
+proc newline {} {
+    global inDT
+    set inDT 0
+}
+
+
+
+
+# initGlobals, tab, font, char, macro2 --
+#
+# These procedures do nothing during the first pass. 
+#
+# Arguments:
+# None.
+
+proc initGlobals {} {}
+proc tab {} {}
+proc font type {}
+proc char name {}
+proc macro2 {name args} {}
+
+
+# doListing --
+#
+# Writes an ls like list to a file. Searches NAME_file for entries
+# that match the input pattern.
+#
+# Arguments:
+# file -		Output file pointer.
+# pattern -		glob style match pattern
+
+proc doListing {file pattern} {
+    global NAME_file
+
+    set max_len 0
+    foreach name [lsort [array names NAME_file]] {
+	set ref $NAME_file($name)
+	    if [string match $pattern $ref] {
+		lappend type $name
+		if {[string length $name] > $max_len} {
+		set max_len [string length $name]
+	    }
+	}
+    }
+    if [catch {llength $type} ] {
+	puts stderr "       doListing: no names matched pattern ($pattern)"
+	return
+    }
+    incr max_len
+    set ncols [expr 90/$max_len]
+    set nrows [expr int( ceil( [llength $type] / $ncols. ) ) ]
+
+#	? max_len ncols nrows
+
+    set index 0
+    foreach f $type {
+	lappend row([expr $index % $nrows]) $f
+	incr index
+    }
+
+    puts -nonewline $file "<PRE>"
+    for {set i 0} {$i<$nrows} {incr i} {
+	foreach name $row($i) {
+	    set str [format "%-*s" $max_len $name]
+	    regsub $name $str "<A HREF=\"$NAME_file($name).html\">$name</A>" str
+	    puts -nonewline $file $str
+	}
+	puts $file {}
+    }
+    puts $file "</PRE>"
+}
+
+
+# doContents --
+#
+# Generates a HTML contents file using the NAME_file array
+# as its input database.
+#
+# Arguments:
+# file -		name of the contents file.
+# packageName -	string used in the title and sub-heads of the HTML page. Normally
+#				name of the package without version numbers.
+
+proc doContents {file packageName} {
+    global footer
+    
+    set file [open $file w]
+    
+    puts $file "<HTML><HEAD><TITLE>$packageName Manual</TITLE></HEAD><BODY>"
+    puts $file "<H3>$packageName</H3>"
+    doListing $file "*.1"
+
+    puts $file "<HR><H3>$packageName Commands</H3>"
+    doListing $file "*.n"
+
+    puts $file "<HR><H3>$packageName Library</H3>"
+    doListing $file "*.3"
+
+    puts $file $footer
+    puts $file "</BODY></HTML>"
+    close $file
+}
+
+
+
+
+# do --
+#
+# This is the toplevel procedure that searches a man page
+# for hypertext links.  It builds a data base consisting of
+# two arrays: NAME_file and KEY file. It runs the man2tcl 
+# program to turn the man page into a script, then it evals 
+# that script.
+#
+# Arguments:
+# fileName -		Name of the file to scan.
+
+proc do fileName {
+    global curFile
+    set curFile [file tail $fileName]
+    set file stdout
+    puts "  Pass 1 -- $fileName"
+    flush stdout
+    if [catch {eval [exec man2tcl [glob $fileName]]} msg] {
+	global errorInfo
+	puts stderr $msg
+	puts "in"
+	puts $errorInfo
+	exit 1
+    }
+}
+