1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
|
#!/proj/tcl/install/5.x-sparc/bin/tclsh7.5
if [catch {
# man2html.tcl --
#
# This file contains procedures that work in conjunction with the
# man2tcl program to generate a HTML files from Tcl manual entries.
#
# Copyright (c) 1996 by Sun Microsystems, Inc.
#
# SCCS: @(#) man2html.tcl 1.5 96/04/11 20:21:43
#
set homeDir /home/rjohnson/Projects/tools/generic
# sarray -
#
# Save an array to a file so that it can be sourced.
#
# Arguments:
# file - Name of the output file
# args - Name of the arrays to save
#
proc sarray {file args} {
set file [open $file w]
foreach a $args {
upvar $a array
if ![array exists array] {
puts "sarray: \"$a\" isn't an array"
break
}
foreach name [lsort [array names array]] {
regsub -all " " $name "\\ " name1
puts $file "set ${a}($name1) \{$array($name)\}"
}
}
close $file
}
# footer --
#
# Builds footer info for HTML pages
#
# Arguments:
# None
proc footer {packages} {
lappend f "<HR>"
set h {[}
foreach package $packages {
lappend h "<A HREF=\"../$package/contents.html\">$package</A>"
lappend h "|"
}
lappend f [join [lreplace $h end end {]} ] " "]
lappend f "<HR>"
lappend f "<PRE>Copyright © 1989-1994 The Regents of the University of California."
lappend f "Copyright © 1994-1996 Sun Microsystems, Inc."
lappend f "</PRE>"
return [join $f "\n"]
}
# doDir --
#
# Given a directory as argument, translate all the man pages in
# that directory.
#
# Arguments:
# dir - Name of the directory.
proc doDir dir {
foreach f [lsort [glob $dir/*.\[13n\]]] {
do $f ;# defined in man2html1.tcl & man2html2.tcl
}
}
if {$argc < 2} {
puts stderr "usage: $argv0 html_dir tcl_dir packages..."
puts stderr "usage: $argv0 -clean html_dir"
exit 1
}
if {[lindex $argv 0] == "-clean"} {
set html_dir [lindex $argv 1]
puts -nonewline "recursively remove: $html_dir? "
flush stdout
if {[gets stdin] == "y"} {
puts "removing: $html_dir"
exec rm -r $html_dir
}
exit 0
}
set html_dir [lindex $argv 0]
set tcl_dir [lindex $argv 1]
set packages [lrange $argv 2 end]
#### need to add glob capability to packages ####
# make sure there are doc directories for each package
foreach i $packages {
if ![file exists $tcl_dir/$i/doc] {
puts stderr "Error: doc directory for package $i is missing"
exit 1
}
if ![file isdirectory $tcl_dir/$i/doc] {
puts stderr "Error: $tcl_dir/$i/doc is not a directory"
exit 1
}
}
# we want to start with a clean sheet
if [file exists $html_dir] {
puts stderr "Error: HTML directory already exists"
exit 1
} else {
exec mkdir $html_dir
}
set footer [footer $packages]
# make the hyperlink arrays and contents.html for all packages
foreach package $packages {
global homeDir
exec mkdir $html_dir/$package
# build hyperlink database arrays: NAME_file and KEY_file
#
puts "\nScanning man pages in $tcl_dir/$package/doc..."
source $homeDir/man2html1.tcl
doDir $tcl_dir/$package/doc
# clean up the NAME_file and KEY_file database arrays
#
catch {unset KEY_file()}
foreach name [lsort [array names NAME_file]] {
set file_name $NAME_file($name)
if {[llength $file_name] > 1} {
set file_name [lsort $file_name]
puts stdout "Warning: '$name' multiply defined in: $file_name; using last"
set NAME_file($name) [lindex $file_name end]
}
}
# sarray $html_dir/$package/xref.tcl NAME_file KEY_file
# build the contents file from NAME_file
#
puts "\nGenerating contents.html for $package"
doContents $html_dir/$package/contents.html $lib ;# defined in man2html1.tcl
# now translate the man pages to HTML pages
#
source $homeDir/man2html2.tcl
puts "\nBuilding html pages from man pages in $tcl_dir/$package/doc..."
doDir $tcl_dir/$package/doc
unset NAME_file
}
} result] {
global errorInfo
puts stderr $result
puts stderr "in"
puts stderr $errorInfo
}
|