Artifact
9d6d0c99623088f41660d52a82b1b38a848a1539edaab4acd5971b14eb94f5a2 :
Executable file
tools/tcltk-man2html.tcl
— part of check-in
[435bab5883]
at
2026-02-14 15:23:10
on branch main
— Shorten sequences of multiple blank lines
(user:
dkf
size: 23909)
[more...]
0000: 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 74 #!/usr/bin/env t
0010: 63 6c 73 68 0a 0a 69 66 20 7b 5b 63 61 74 63 68 clsh..if {[catch
0020: 20 7b 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 {package requir
0030: 65 20 54 63 6c 20 38 2e 36 2d 7d 20 6d 73 67 5d e Tcl 8.6-} msg]
0040: 7d 20 7b 0a 20 20 20 20 70 75 74 73 20 73 74 64 } {. puts std
0050: 65 72 72 20 22 45 52 52 4f 52 3a 20 24 6d 73 67 err "ERROR: $msg
0060: 22 0a 20 20 20 20 70 75 74 73 20 73 74 64 65 72 ". puts stder
0070: 72 20 22 49 66 20 72 75 6e 6e 69 6e 67 20 74 68 r "If running th
0080: 69 73 20 73 63 72 69 70 74 20 66 72 6f 6d 20 27 is script from '
0090: 6d 61 6b 65 20 68 74 6d 6c 27 2c 20 73 65 74 20 make html', set
00a0: 74 68 65 5c 0a 09 4e 41 54 49 56 45 5f 54 43 4c the\..NATIVE_TCL
00b0: 53 48 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 5c 6e SH environment\n
00c0: 76 61 72 69 61 62 6c 65 20 74 6f 20 70 6f 69 6e variable to poin
00d0: 74 20 74 6f 20 61 6e 20 69 6e 73 74 61 6c 6c 65 t to an installe
00e0: 64 5c 0a 09 74 63 6c 73 68 39 2e 30 20 28 6f 72 d\..tclsh9.0 (or
00f0: 20 74 68 65 20 65 71 75 69 76 61 6c 65 6e 74 20 the equivalent
0100: 74 63 6c 73 68 39 30 2e 65 78 65 5c 6e 6f 6e 20 tclsh90.exe\non
0110: 57 69 6e 64 6f 77 73 29 2e 22 0a 20 20 20 20 65 Windows).". e
0120: 78 69 74 20 31 0a 7d 0a 0a 23 20 43 6f 6e 76 65 xit 1.}..# Conve
0130: 72 74 20 4f 75 73 74 65 72 68 6f 75 74 20 66 6f rt Ousterhout fo
0140: 72 6d 61 74 20 6d 61 6e 20 70 61 67 65 73 20 69 rmat man pages i
0150: 6e 74 6f 20 68 69 67 68 6c 79 20 63 72 6f 73 73 nto highly cross
0160: 6c 69 6e 6b 65 64 20 68 79 70 65 72 74 65 78 74 linked hypertext
0170: 2e 0a 23 0a 23 20 41 6c 6f 6e 67 20 74 68 65 20 ..#.# Along the
0180: 77 61 79 20 64 65 74 65 63 74 20 6d 61 6e 79 20 way detect many
0190: 75 6e 6d 61 74 63 68 65 64 20 66 6f 6e 74 20 63 unmatched font c
01a0: 68 61 6e 67 65 73 20 61 6e 64 20 6f 74 68 65 72 hanges and other
01b0: 20 6f 64 64 20 74 68 69 6e 67 73 2e 0a 23 0a 23 odd things..#.#
01c0: 20 4e 6f 74 65 20 77 65 6c 6c 2c 20 74 68 69 73 Note well, this
01d0: 20 70 72 6f 67 72 61 6d 20 69 73 20 61 20 68 61 program is a ha
01e0: 63 6b 20 72 61 74 68 65 72 20 74 68 61 6e 20 61 ck rather than a
01f0: 20 70 69 65 63 65 20 6f 66 20 73 6f 66 74 77 61 piece of softwa
0200: 72 65 0a 23 20 65 6e 67 69 6e 65 65 72 69 6e 67 re.# engineering
0210: 2e 20 20 49 6e 20 74 68 61 74 20 73 65 6e 73 65 . In that sense
0220: 20 69 74 27 73 20 70 72 6f 62 61 62 6c 79 20 61 it's probably a
0230: 20 67 6f 6f 64 20 65 78 61 6d 70 6c 65 20 6f 66 good example of
0240: 20 74 68 69 6e 67 73 0a 23 20 74 68 61 74 20 61 things.# that a
0250: 20 73 63 72 69 70 74 69 6e 67 20 6c 61 6e 67 75 scripting langu
0260: 61 67 65 2c 20 6c 69 6b 65 20 54 63 6c 2c 20 63 age, like Tcl, c
0270: 61 6e 20 64 6f 20 77 65 6c 6c 2e 20 20 49 74 20 an do well. It
0280: 69 73 20 6f 66 66 65 72 65 64 20 61 73 0a 23 20 is offered as.#
0290: 61 6e 20 65 78 61 6d 70 6c 65 20 6f 66 20 68 6f an example of ho
02a0: 77 20 73 6f 6d 65 6f 6e 65 20 6d 69 67 68 74 20 w someone might
02b0: 63 6f 6e 76 65 72 74 20 61 20 73 70 65 63 69 66 convert a specif
02c0: 69 63 20 73 65 74 20 6f 66 20 6d 61 6e 20 70 61 ic set of man pa
02d0: 67 65 73 0a 23 20 69 6e 74 6f 20 68 79 70 65 72 ges.# into hyper
02e0: 74 65 78 74 2c 20 6e 6f 74 20 61 73 20 61 20 67 text, not as a g
02f0: 65 6e 65 72 61 6c 20 73 6f 6c 75 74 69 6f 6e 20 eneral solution
0300: 74 6f 20 74 68 65 20 70 72 6f 62 6c 65 6d 2e 20 to the problem.
0310: 20 49 66 20 79 6f 75 0a 23 20 74 72 79 20 74 6f If you.# try to
0320: 20 75 73 65 20 74 68 69 73 2c 20 79 6f 75 27 6c use this, you'l
0330: 6c 20 62 65 20 76 65 72 79 20 6d 75 63 68 20 6f l be very much o
0340: 6e 20 79 6f 75 72 20 6f 77 6e 2e 0a 23 0a 23 20 n your own..#.#
0350: 43 6f 70 79 72 69 67 68 74 20 c2 a9 20 31 39 39 Copyright © 199
0360: 35 2d 31 39 39 37 20 52 6f 67 65 72 20 45 2e 20 5-1997 Roger E.
0370: 43 72 69 74 63 68 6c 6f 77 20 4a 72 0a 23 20 43 Critchlow Jr.# C
0380: 6f 70 79 72 69 67 68 74 20 c2 a9 20 32 30 30 34 opyright © 2004
0390: 2d 32 30 31 30 20 44 6f 6e 61 6c 20 4b 2e 20 46 -2010 Donal K. F
03a0: 65 6c 6c 6f 77 73 0a 0a 73 65 74 20 3a 3a 56 65 ellows..set ::Ve
03b0: 72 73 69 6f 6e 20 22 35 30 2f 39 2e 30 22 0a 73 rsion "50/9.0".s
03c0: 65 74 20 3a 3a 43 53 53 46 49 4c 45 20 22 64 6f et ::CSSFILE "do
03d0: 63 73 2e 63 73 73 22 0a 0a 23 23 0a 23 23 20 53 cs.css"..##.## S
03e0: 6f 75 72 63 65 20 74 68 65 20 75 74 69 6c 69 74 ource the utilit
03f0: 79 20 66 75 6e 63 74 69 6f 6e 73 20 74 68 61 74 y functions that
0400: 20 70 72 6f 76 69 64 65 20 6d 6f 73 74 20 6f 66 provide most of
0410: 20 74 68 65 0a 23 23 20 69 6d 70 6c 65 6d 65 6e the.## implemen
0420: 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 74 72 tation of the tr
0430: 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 66 72 6f ansformation fro
0440: 6d 20 6e 72 6f 66 66 20 74 6f 20 68 74 6d 6c 2e m nroff to html.
0450: 0a 23 23 0a 73 6f 75 72 63 65 20 2d 65 6e 63 6f .##.source -enco
0460: 64 69 6e 67 20 75 74 66 2d 38 20 5b 66 69 6c 65 ding utf-8 [file
0470: 20 6a 6f 69 6e 20 5b 66 69 6c 65 20 64 69 72 6e join [file dirn
0480: 61 6d 65 20 5b 69 6e 66 6f 20 73 63 72 69 70 74 ame [info script
0490: 5d 5d 20 74 63 6c 74 6b 2d 6d 61 6e 32 68 74 6d ]] tcltk-man2htm
04a0: 6c 2d 75 74 69 6c 73 2e 74 63 6c 5d 0a 0c 0a 70 l-utils.tcl]...p
04b0: 72 6f 63 20 67 65 74 76 65 72 73 69 6f 6e 20 7b roc getversion {
04c0: 74 63 6c 68 20 7b 6e 61 6d 65 20 7b 7d 7d 7d 20 tclh {name {}}}
04d0: 7b 0a 20 20 20 20 69 66 20 7b 5b 66 69 6c 65 20 {. if {[file
04e0: 65 78 69 73 74 73 20 24 74 63 6c 68 5d 7d 20 7b exists $tclh]} {
04f0: 0a 09 73 65 74 20 63 68 61 6e 20 5b 6f 70 65 6e ..set chan [open
0500: 20 24 74 63 6c 68 5d 0a 09 73 65 74 20 64 61 74 $tclh]..set dat
0510: 61 20 5b 72 65 61 64 20 24 63 68 61 6e 5d 0a 09 a [read $chan]..
0520: 63 6c 6f 73 65 20 24 63 68 61 6e 0a 09 69 66 20 close $chan..if
0530: 7b 24 6e 61 6d 65 20 65 71 20 22 22 7d 20 7b 0a {$name eq ""} {.
0540: 09 20 20 20 20 73 65 74 20 6e 61 6d 65 20 5b 73 . set name [s
0550: 74 72 69 6e 67 20 74 6f 75 70 70 65 72 20 5b 66 tring toupper [f
0560: 69 6c 65 20 72 6f 6f 74 20 5b 66 69 6c 65 20 74 ile root [file t
0570: 61 69 6c 20 24 74 63 6c 68 5d 5d 5d 0a 09 7d 0a ail $tclh]]]..}.
0580: 09 23 20 62 61 63 6b 73 6c 61 73 68 20 69 73 6e .# backslash isn
0590: 27 74 20 72 65 71 75 69 72 65 64 20 69 6e 20 66 't required in f
05a0: 72 6f 6e 74 20 6f 66 20 71 75 6f 74 65 2c 20 62 ront of quote, b
05b0: 75 74 20 69 74 20 6b 65 65 70 73 20 73 79 6e 74 ut it keeps synt
05c0: 61 78 0a 09 23 20 68 69 67 68 6c 69 67 68 74 69 ax..# highlighti
05d0: 6e 67 20 73 74 72 61 69 67 68 74 20 69 6e 20 73 ng straight in s
05e0: 6f 6d 65 20 65 64 69 74 6f 72 73 0a 09 69 66 20 ome editors..if
05f0: 7b 5b 72 65 67 65 78 70 20 2d 6c 69 6e 65 61 6e {[regexp -linean
0600: 63 68 6f 72 20 5c 0a 09 20 20 20 20 5b 73 74 72 chor \.. [str
0610: 69 6e 67 20 6d 61 70 20 5b 6c 69 73 74 20 40 6e ing map [list @n
0620: 61 6d 65 40 20 24 6e 61 6d 65 5d 20 5c 0a 09 09 ame@ $name] \...
0630: 7b 5e 23 5c 73 2a 64 65 66 69 6e 65 5c 73 2b 40 {^#\s*define\s+@
0640: 6e 61 6d 65 40 5f 56 45 52 53 49 4f 4e 5c 73 2b name@_VERSION\s+
0650: 5c 22 28 5b 5e 2e 5d 29 2b 5c 2e 28 5b 5e 2e 5c \"([^.])+\.([^.\
0660: 22 5d 2b 29 7d 5d 20 5c 0a 09 20 20 20 20 24 64 "]+)}] \.. $d
0670: 61 74 61 20 2d 3e 20 6d 61 6a 6f 72 20 6d 69 6e ata -> major min
0680: 6f 72 5d 7d 20 7b 0a 09 09 72 65 74 75 72 6e 20 or]} {...return
0690: 5b 6c 69 73 74 20 24 6d 61 6a 6f 72 20 24 6d 69 [list $major $mi
06a0: 6e 6f 72 5d 0a 09 7d 0a 20 20 20 20 7d 0a 7d 0a nor]..}. }.}.
06b0: 70 72 6f 63 20 66 69 6e 64 76 65 72 73 69 6f 6e proc findversion
06c0: 20 7b 74 6f 70 20 6e 61 6d 65 20 75 73 65 76 65 {top name useve
06d0: 72 73 69 6f 6e 7d 20 7b 0a 20 20 20 20 23 20 44 rsion} {. # D
06e0: 65 66 61 75 6c 74 20 73 65 61 72 63 68 20 76 65 efault search ve
06f0: 72 73 69 6f 6e 20 69 73 20 61 20 67 6c 6f 62 20 rsion is a glob
0700: 70 61 74 74 65 72 6e 2c 20 73 77 69 74 63 68 20 pattern, switch
0710: 69 74 20 66 6f 72 20 73 74 72 69 6e 67 20 6d 61 it for string ma
0720: 74 63 68 3a 0a 20 20 20 20 69 66 20 7b 24 75 73 tch:. if {$us
0730: 65 76 65 72 73 69 6f 6e 20 65 71 20 7b 7b 2c 5b eversion eq {{,[
0740: 38 2d 39 5d 2e 5b 30 2d 39 5d 7b 2c 5b 2e 61 62 8-9].[0-9]{,[.ab
0750: 5d 5b 30 2d 39 5d 7b 2c 5b 30 2d 39 5d 7d 7d 7d ][0-9]{,[0-9]}}}
0760: 7d 7d 20 7b 0a 09 73 65 74 20 75 73 65 76 65 72 }} {..set usever
0770: 73 69 6f 6e 20 7b 5b 38 2d 39 5d 2e 5b 30 2d 39 sion {[8-9].[0-9
0780: 5d 7d 0a 20 20 20 20 7d 0a 20 20 20 20 23 20 53 ]}. }. # S
0790: 65 61 72 63 68 3a 0a 20 20 20 20 73 65 74 20 75 earch:. set u
07a0: 70 70 65 72 20 5b 73 74 72 69 6e 67 20 74 6f 75 pper [string tou
07b0: 70 70 65 72 20 24 6e 61 6d 65 5d 0a 20 20 20 20 pper $name].
07c0: 66 6f 72 65 61 63 68 20 74 6f 70 31 20 5b 6c 69 foreach top1 [li
07d0: 73 74 20 24 74 6f 70 20 24 74 6f 70 2f 2e 2e 5d st $top $top/..]
07e0: 20 73 75 62 20 7b 7b 7d 20 67 65 6e 65 72 69 63 sub {{} generic
07f0: 7d 20 7b 0a 09 66 6f 72 65 61 63 68 20 64 69 72 } {..foreach dir
0800: 6e 61 6d 65 20 5b 0a 09 20 20 20 20 67 6c 6f 62 name [.. glob
0810: 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 2d 74 61 -nocomplain -ta
0820: 69 6c 73 20 2d 74 79 70 65 20 64 20 2d 64 69 72 ils -type d -dir
0830: 65 63 74 6f 72 79 20 24 74 6f 70 31 20 2a 5d 20 ectory $top1 *]
0840: 7b 0a 0a 09 20 20 20 20 73 65 74 20 74 63 6c 68 {... set tclh
0850: 20 5b 6a 6f 69 6e 20 5b 6c 69 73 74 20 24 74 6f [join [list $to
0860: 70 31 20 24 64 69 72 6e 61 6d 65 20 7b 2a 7d 24 p1 $dirname {*}$
0870: 73 75 62 20 24 7b 6e 61 6d 65 7d 2e 68 5d 20 2f sub ${name}.h] /
0880: 5d 0a 09 20 20 20 20 73 65 74 20 76 20 5b 67 65 ].. set v [ge
0890: 74 76 65 72 73 69 6f 6e 20 24 74 63 6c 68 20 24 tversion $tclh $
08a0: 75 70 70 65 72 5d 0a 09 20 20 20 20 69 66 20 7b upper].. if {
08b0: 5b 6c 6c 65 6e 67 74 68 20 24 76 5d 7d 20 7b 0a [llength $v]} {.
08c0: 09 09 6c 61 73 73 69 67 6e 20 24 76 20 6d 61 6a ..lassign $v maj
08d0: 6f 72 20 6d 69 6e 6f 72 0a 09 09 23 20 74 6f 20 or minor...# to
08e0: 64 6f 0a 09 09 23 20 20 20 20 20 75 73 65 20 67 do...# use g
08f0: 6c 6f 62 20 6d 61 74 63 68 69 6e 67 20 69 6e 73 lob matching ins
0900: 74 65 61 64 20 6f 66 20 73 74 72 69 6e 67 20 6d tead of string m
0910: 61 74 63 68 69 6e 67 20 6f 72 20 61 64 64 0a 09 atching or add..
0920: 09 23 20 20 20 20 20 62 72 61 63 65 20 68 61 6e .# brace han
0930: 64 6c 69 6e 67 20 74 6f 20 5b 73 74 72 69 6e 67 dling to [string
0940: 20 6d 61 74 63 63 68 5d 0a 09 09 69 66 20 7b 24 matcch]...if {$
0950: 75 73 65 76 65 72 73 69 6f 6e 20 65 71 20 22 22 useversion eq ""
0960: 20 7c 7c 20 5b 73 74 72 69 6e 67 20 6d 61 74 63 || [string matc
0970: 68 20 24 75 73 65 76 65 72 73 69 6f 6e 20 24 6d h $useversion $m
0980: 61 6a 6f 72 2e 24 6d 69 6e 6f 72 5d 7d 20 7b 0a ajor.$minor]} {.
0990: 09 09 20 20 20 20 73 65 74 20 74 6f 70 20 5b 66 .. set top [f
09a0: 69 6c 65 20 64 69 72 6e 61 6d 65 20 5b 66 69 6c ile dirname [fil
09b0: 65 20 64 69 72 6e 61 6d 65 20 24 74 63 6c 68 5d e dirname $tclh]
09c0: 5d 0a 09 09 20 20 20 20 73 65 74 20 70 72 65 66 ]... set pref
09d0: 69 78 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 ix [file dirname
09e0: 20 24 74 6f 70 5d 0a 09 09 20 20 20 20 72 65 74 $top]... ret
09f0: 75 72 6e 20 5b 6c 69 73 74 20 24 70 72 65 66 69 urn [list $prefi
0a00: 78 20 5b 66 69 6c 65 20 74 61 69 6c 20 24 74 6f x [file tail $to
0a10: 70 5d 20 24 6d 61 6a 6f 72 20 24 6d 69 6e 6f 72 p] $major $minor
0a20: 5d 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a ]...}.. }..}.
0a30: 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 70 61 }.}..proc pa
0a40: 72 73 65 5f 63 6f 6d 6d 61 6e 64 5f 6c 69 6e 65 rse_command_line
0a50: 20 7b 7d 20 7b 0a 20 20 20 20 67 6c 6f 62 61 6c {} {. global
0a60: 20 61 72 67 76 20 56 65 72 73 69 6f 6e 0a 0a 20 argv Version..
0a70: 20 20 20 23 20 54 68 65 73 65 20 76 61 72 69 61 # These varia
0a80: 62 6c 65 73 20 64 65 74 65 72 6d 69 6e 65 20 77 bles determine w
0a90: 68 65 72 65 20 74 68 65 20 6d 61 6e 20 70 61 67 here the man pag
0aa0: 65 73 20 63 6f 6d 65 20 66 72 6f 6d 20 61 6e 64 es come from and
0ab0: 20 77 68 65 72 65 0a 20 20 20 20 23 20 74 68 65 where. # the
0ac0: 20 63 6f 6e 76 65 72 74 65 64 20 70 61 67 65 73 converted pages
0ad0: 20 67 6f 20 74 6f 2e 0a 20 20 20 20 67 6c 6f 62 go to.. glob
0ae0: 61 6c 20 74 63 6c 74 6b 64 69 72 20 74 6b 64 69 al tcltkdir tkdi
0af0: 72 20 74 63 6c 64 69 72 20 77 65 62 64 69 72 20 r tcldir webdir
0b00: 62 75 69 6c 64 5f 74 63 6c 20 62 75 69 6c 64 5f build_tcl build_
0b10: 74 6b 20 76 65 72 62 6f 73 65 0a 0a 20 20 20 20 tk verbose..
0b20: 23 20 53 65 74 20 64 65 66 61 75 6c 74 73 20 62 # Set defaults b
0b30: 61 73 65 64 20 6f 6e 20 6f 72 69 67 69 6e 61 6c ased on original
0b40: 20 63 6f 64 65 2e 0a 20 20 20 20 73 65 74 20 74 code.. set t
0b50: 63 6c 74 6b 64 69 72 20 2e 2e 2f 2e 2e 0a 20 20 cltkdir ../...
0b60: 20 20 73 65 74 20 74 6b 64 69 72 20 7b 7d 0a 20 set tkdir {}.
0b70: 20 20 20 73 65 74 20 74 63 6c 64 69 72 20 7b 7d set tcldir {}
0b80: 0a 20 20 20 20 73 65 74 20 77 65 62 64 69 72 20 . set webdir
0b90: 2e 2e 2f 68 74 6d 6c 0a 20 20 20 20 73 65 74 20 ../html. set
0ba0: 62 75 69 6c 64 5f 74 63 6c 20 30 0a 20 20 20 20 build_tcl 0.
0bb0: 73 65 74 20 6f 70 74 5f 62 75 69 6c 64 5f 74 63 set opt_build_tc
0bc0: 6c 20 30 0a 20 20 20 20 73 65 74 20 62 75 69 6c l 0. set buil
0bd0: 64 5f 74 6b 20 30 0a 20 20 20 20 73 65 74 20 6f d_tk 0. set o
0be0: 70 74 5f 62 75 69 6c 64 5f 74 6b 20 30 0a 20 20 pt_build_tk 0.
0bf0: 20 20 73 65 74 20 76 65 72 62 6f 73 65 20 30 0a set verbose 0.
0c00: 20 20 20 20 23 20 44 65 66 61 75 6c 74 20 73 65 # Default se
0c10: 61 72 63 68 20 76 65 72 73 69 6f 6e 20 69 73 20 arch version is
0c20: 61 20 67 6c 6f 62 20 70 61 74 74 65 72 6e 0a 20 a glob pattern.
0c30: 20 20 20 73 65 74 20 75 73 65 76 65 72 73 69 6f set useversio
0c40: 6e 20 7b 7b 2c 5b 38 2d 39 5d 2e 5b 30 2d 39 5d n {{,[8-9].[0-9]
0c50: 7b 2c 5b 2e 61 62 5d 5b 30 2d 39 5d 7b 2c 5b 30 {,[.ab][0-9]{,[0
0c60: 2d 39 5d 7d 7d 7d 7d 0a 0a 20 20 20 20 23 20 48 -9]}}}}.. # H
0c70: 61 6e 64 6c 65 20 61 72 67 75 6d 65 6e 74 73 20 andle arguments
0c80: 61 20 6c 61 20 47 4e 55 3a 0a 20 20 20 20 23 20 a la GNU:. #
0c90: 20 20 2d 2d 76 65 72 73 69 6f 6e 0a 20 20 20 20 --version.
0ca0: 23 20 20 20 2d 2d 75 73 65 76 65 72 73 69 6f 6e # --useversion
0cb0: 3d 3c 76 65 72 73 69 6f 6e 3e 0a 20 20 20 20 23 =<version>. #
0cc0: 20 20 20 2d 2d 68 65 6c 70 0a 20 20 20 20 23 20 --help. #
0cd0: 20 20 2d 2d 73 72 63 64 69 72 3d 2f 70 61 74 68 --srcdir=/path
0ce0: 0a 20 20 20 20 23 20 20 20 2d 2d 68 74 6d 6c 64 . # --htmld
0cf0: 69 72 3d 2f 70 61 74 68 0a 0a 20 20 20 20 66 6f ir=/path.. fo
0d00: 72 65 61 63 68 20 6f 70 74 69 6f 6e 20 24 61 72 reach option $ar
0d10: 67 76 20 7b 0a 09 73 77 69 74 63 68 20 2d 67 6c gv {..switch -gl
0d20: 6f 62 20 2d 2d 20 24 6f 70 74 69 6f 6e 20 7b 0a ob -- $option {.
0d30: 09 20 20 20 20 2d 2d 76 65 72 73 69 6f 6e 20 7b . --version {
0d40: 0a 09 09 70 75 74 73 20 22 74 63 6c 74 6b 2d 6d ...puts "tcltk-m
0d50: 61 6e 2d 68 74 6d 6c 20 24 56 65 72 73 69 6f 6e an-html $Version
0d60: 22 0a 09 09 65 78 69 74 20 30 0a 09 20 20 20 20 "...exit 0..
0d70: 7d 0a 0a 09 20 20 20 20 2d 2d 68 65 6c 70 20 7b }... --help {
0d80: 0a 09 09 70 75 74 73 20 22 75 73 61 67 65 3a 20 ...puts "usage:
0d90: 74 63 6c 74 6b 2d 6d 61 6e 2d 68 74 6d 6c 20 5c tcltk-man-html \
0da0: 5b 4f 50 54 49 4f 4e 5c 5d 20 2e 2e 2e 5c 6e 22 [OPTION\] ...\n"
0db0: 0a 09 09 70 75 74 73 20 22 20 20 2d 2d 68 65 6c ...puts " --hel
0dc0: 70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 p p
0dd0: 72 69 6e 74 20 74 68 69 73 20 68 65 6c 70 2c 20 rint this help,
0de0: 74 68 65 6e 20 65 78 69 74 22 0a 09 09 70 75 74 then exit"...put
0df0: 73 20 22 20 20 2d 2d 76 65 72 73 69 6f 6e 20 20 s " --version
0e00: 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 76 print v
0e10: 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 2c 20 74 ersion number, t
0e20: 68 65 6e 20 65 78 69 74 22 0a 09 09 70 75 74 73 hen exit"...puts
0e30: 20 22 20 20 2d 2d 73 72 63 64 69 72 3d 44 49 52 " --srcdir=DIR
0e40: 20 20 20 20 20 20 20 20 66 69 6e 64 20 74 63 6c find tcl
0e50: 20 61 6e 64 20 74 6b 20 73 6f 75 72 63 65 20 62 and tk source b
0e60: 65 6c 6f 77 20 44 49 52 22 0a 09 09 70 75 74 73 elow DIR"...puts
0e70: 20 22 20 20 2d 2d 68 74 6d 6c 64 69 72 3d 44 49 " --htmldir=DI
0e80: 52 20 20 20 20 20 20 20 70 75 74 20 67 65 6e 65 R put gene
0e90: 72 61 74 65 64 20 48 54 4d 4c 20 69 6e 20 44 49 rated HTML in DI
0ea0: 52 22 0a 09 09 70 75 74 73 20 22 20 20 2d 2d 74 R"...puts " --t
0eb0: 63 6c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 cl
0ec0: 20 62 75 69 6c 64 20 74 63 6c 20 68 65 6c 70 22 build tcl help"
0ed0: 0a 09 09 70 75 74 73 20 22 20 20 2d 2d 74 6b 20 ...puts " --tk
0ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 b
0ef0: 75 69 6c 64 20 74 6b 20 68 65 6c 70 22 0a 09 09 uild tk help"...
0f00: 70 75 74 73 20 22 20 20 2d 2d 75 73 65 76 65 72 puts " --usever
0f10: 73 69 6f 6e 20 20 20 20 20 20 20 20 76 65 72 73 sion vers
0f20: 69 6f 6e 20 6f 66 20 74 63 6c 2f 74 6b 20 74 6f ion of tcl/tk to
0f30: 20 73 65 61 72 63 68 20 66 6f 72 22 0a 09 09 70 search for"...p
0f40: 75 74 73 20 22 20 20 2d 2d 76 65 72 62 6f 73 65 uts " --verbose
0f50: 20 20 20 20 20 20 20 20 20 20 20 77 68 65 74 68 wheth
0f60: 65 72 20 74 6f 20 70 72 69 6e 74 20 6c 6f 6e 67 er to print long
0f70: 65 72 20 6d 65 73 73 61 67 65 73 22 0a 09 09 65 er messages"...e
0f80: 78 69 74 20 30 0a 09 20 20 20 20 7d 0a 0a 09 20 xit 0.. }...
0f90: 20 20 20 2d 2d 73 72 63 64 69 72 3d 2a 20 7b 0a --srcdir=* {.
0fa0: 09 09 23 20 6c 65 6e 67 74 68 20 6f 66 20 22 2d ..# length of "-
0fb0: 2d 73 72 63 64 69 72 3d 22 20 69 73 20 39 2e 0a -srcdir=" is 9..
0fc0: 09 09 73 65 74 20 74 63 6c 74 6b 64 69 72 20 5b ..set tcltkdir [
0fd0: 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24 6f 70 string range $op
0fe0: 74 69 6f 6e 20 39 20 65 6e 64 5d 0a 09 20 20 20 tion 9 end]..
0ff0: 20 7d 0a 0a 09 20 20 20 20 2d 2d 68 74 6d 6c 64 }... --htmld
1000: 69 72 3d 2a 20 7b 0a 09 09 23 20 6c 65 6e 67 74 ir=* {...# lengt
1010: 68 20 6f 66 20 22 2d 2d 68 74 6d 6c 64 69 72 3d h of "--htmldir=
1020: 22 20 69 73 20 31 30 0a 09 09 73 65 74 20 77 65 " is 10...set we
1030: 62 64 69 72 20 5b 73 74 72 69 6e 67 20 72 61 6e bdir [string ran
1040: 67 65 20 24 6f 70 74 69 6f 6e 20 31 30 20 65 6e ge $option 10 en
1050: 64 5d 0a 09 20 20 20 20 7d 0a 0a 09 20 20 20 20 d].. }...
1060: 2d 2d 75 73 65 76 65 72 73 69 6f 6e 3d 2a 20 7b --useversion=* {
1070: 0a 09 09 23 20 6c 65 6e 67 74 68 20 6f 66 20 22 ...# length of "
1080: 2d 2d 75 73 65 76 65 72 73 69 6f 6e 3d 22 20 69 --useversion=" i
1090: 73 20 31 33 0a 09 09 73 65 74 20 75 73 65 76 65 s 13...set useve
10a0: 72 73 69 6f 6e 20 5b 73 74 72 69 6e 67 20 72 61 rsion [string ra
10b0: 6e 67 65 20 24 6f 70 74 69 6f 6e 20 31 33 20 65 nge $option 13 e
10c0: 6e 64 5d 0a 09 20 20 20 20 7d 0a 0a 09 20 20 20 nd].. }...
10d0: 20 2d 2d 74 63 6c 20 7b 0a 09 09 73 65 74 20 62 --tcl {...set b
10e0: 75 69 6c 64 5f 74 63 6c 20 31 0a 09 09 73 65 74 uild_tcl 1...set
10f0: 20 6f 70 74 5f 62 75 69 6c 64 5f 74 63 6c 20 31 opt_build_tcl 1
1100: 0a 09 20 20 20 20 7d 0a 0a 09 20 20 20 20 2d 2d .. }... --
1110: 74 6b 20 7b 0a 09 09 73 65 74 20 62 75 69 6c 64 tk {...set build
1120: 5f 74 6b 20 31 0a 09 09 73 65 74 20 6f 70 74 5f _tk 1...set opt_
1130: 62 75 69 6c 64 5f 74 6b 20 31 0a 09 20 20 20 20 build_tk 1..
1140: 7d 0a 0a 09 20 20 20 20 2d 2d 76 65 72 62 6f 73 }... --verbos
1150: 65 3d 2a 20 7b 0a 09 09 73 65 74 20 76 65 72 62 e=* {...set verb
1160: 6f 73 65 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 ose [string rang
1170: 65 20 24 6f 70 74 69 6f 6e 20 5c 0a 09 09 09 09 e $option \.....
1180: 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 [string length
1190: 2d 2d 76 65 72 62 6f 73 65 3d 5d 20 65 6e 64 5d --verbose=] end]
11a0: 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 64 65 66 .. }.. def
11b0: 61 75 6c 74 20 7b 0a 09 09 70 75 74 73 20 73 74 ault {...puts st
11c0: 64 65 72 72 20 22 74 63 6c 74 6b 2d 6d 61 6e 2d derr "tcltk-man-
11d0: 68 74 6d 6c 3a 20 75 6e 72 65 63 6f 67 6e 69 7a html: unrecogniz
11e0: 65 64 20 6f 70 74 69 6f 6e 20 2d 2d 20 60 24 6f ed option -- `$o
11f0: 70 74 69 6f 6e 27 22 0a 09 09 65 78 69 74 20 31 ption'"...exit 1
1200: 0a 09 20 20 20 20 7d 0a 09 7d 0a 20 20 20 20 7d .. }..}. }
1210: 0a 0a 20 20 20 20 69 66 20 7b 21 24 62 75 69 6c .. if {!$buil
1220: 64 5f 74 63 6c 20 26 26 20 21 24 62 75 69 6c 64 d_tcl && !$build
1230: 5f 74 6b 7d 20 7b 0a 09 73 65 74 20 62 75 69 6c _tk} {..set buil
1240: 64 5f 74 63 6c 20 31 3b 0a 09 73 65 74 20 62 75 d_tcl 1;..set bu
1250: 69 6c 64 5f 74 6b 20 31 0a 20 20 20 20 7d 0a 0a ild_tk 1. }..
1260: 20 20 20 20 73 65 74 20 6d 61 6a 6f 72 20 22 22 set major ""
1270: 0a 20 20 20 20 73 65 74 20 6d 69 6e 6f 72 20 22 . set minor "
1280: 22 0a 0a 20 20 20 20 69 66 20 7b 24 62 75 69 6c ".. if {$buil
1290: 64 5f 74 63 6c 7d 20 7b 0a 09 23 20 46 69 6e 64 d_tcl} {..# Find
12a0: 20 54 63 6c 20 28 66 69 72 73 74 6c 79 20 75 73 Tcl (firstly us
12b0: 69 6e 67 20 67 6c 6f 62 20 70 61 74 74 65 72 6e ing glob pattern
12c0: 20 2f 20 62 61 63 6b 77 61 72 64 73 20 63 6f 6d / backwards com
12d0: 70 61 74 69 62 6c 65 20 77 61 79 29 0a 09 73 65 patible way)..se
12e0: 74 20 74 63 6c 64 69 72 20 5b 6c 69 6e 64 65 78 t tcldir [lindex
12f0: 20 5b 6c 73 6f 72 74 20 5b 67 6c 6f 62 20 2d 6e [lsort [glob -n
1300: 6f 63 6f 6d 70 6c 61 69 6e 20 2d 74 61 69 6c 73 ocomplain -tails
1310: 20 2d 74 79 70 65 20 64 20 5c 0a 09 09 2d 64 69 -type d \...-di
1320: 72 65 63 74 6f 72 79 20 24 74 63 6c 74 6b 64 69 rectory $tcltkdi
1330: 72 20 74 63 6c 24 75 73 65 76 65 72 73 69 6f 6e r tcl$useversion
1340: 5d 5d 20 65 6e 64 5d 0a 09 69 66 20 7b 24 74 63 ]] end]..if {$tc
1350: 6c 64 69 72 20 6e 65 20 22 22 7d 20 7b 0a 09 20 ldir ne ""} {..
1360: 20 20 20 23 20 6f 62 74 61 69 6e 20 76 65 72 73 # obtain vers
1370: 69 6f 6e 20 66 72 6f 6d 20 67 65 6e 65 72 69 63 ion from generic
1380: 20 68 65 61 64 65 72 20 69 66 20 77 65 20 63 61 header if we ca
1390: 6e 3a 0a 09 20 20 20 20 6c 61 73 73 69 67 6e 20 n:.. lassign
13a0: 5b 67 65 74 76 65 72 73 69 6f 6e 20 5b 66 69 6c [getversion [fil
13b0: 65 20 6a 6f 69 6e 20 24 74 63 6c 74 6b 64 69 72 e join $tcltkdir
13c0: 20 24 74 63 6c 64 69 72 20 67 65 6e 65 72 69 63 $tcldir generic
13d0: 20 74 63 6c 2e 68 5d 5d 20 6d 61 6a 6f 72 20 6d tcl.h]] major m
13e0: 69 6e 6f 72 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 inor..} else {..
13f0: 20 20 20 20 6c 61 73 73 69 67 6e 20 5b 66 69 6e lassign [fin
1400: 64 76 65 72 73 69 6f 6e 20 24 74 63 6c 74 6b 64 dversion $tcltkd
1410: 69 72 20 74 63 6c 20 24 75 73 65 76 65 72 73 69 ir tcl $useversi
1420: 6f 6e 5d 20 74 63 6c 74 6b 64 69 72 20 74 63 6c on] tcltkdir tcl
1430: 64 69 72 20 6d 61 6a 6f 72 20 6d 69 6e 6f 72 0a dir major minor.
1440: 09 7d 0a 09 69 66 20 7b 24 74 63 6c 64 69 72 20 .}..if {$tcldir
1450: 65 71 20 22 22 20 26 26 20 24 6f 70 74 5f 62 75 eq "" && $opt_bu
1460: 69 6c 64 5f 74 63 6c 7d 20 7b 0a 09 20 20 20 20 ild_tcl} {..
1470: 70 75 74 73 20 73 74 64 65 72 72 20 22 74 63 6c puts stderr "tcl
1480: 74 6b 2d 6d 61 6e 2d 68 74 6d 6c 3a 20 63 6f 75 tk-man-html: cou
1490: 6c 64 6e 27 74 20 66 69 6e 64 20 54 63 6c 20 62 ldn't find Tcl b
14a0: 65 6c 6f 77 20 24 74 63 6c 74 6b 64 69 72 22 0a elow $tcltkdir".
14b0: 09 20 20 20 20 65 78 69 74 20 31 0a 09 7d 0a 09 . exit 1..}..
14c0: 70 75 74 73 20 22 75 73 69 6e 67 20 54 63 6c 20 puts "using Tcl
14d0: 73 6f 75 72 63 65 20 64 69 72 65 63 74 6f 72 79 source directory
14e0: 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 63 6c [file join $tcl
14f0: 74 6b 64 69 72 20 24 74 63 6c 64 69 72 5d 22 0a tkdir $tcldir]".
1500: 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 20 7b 24 }.. if {$
1510: 62 75 69 6c 64 5f 74 6b 7d 20 7b 0a 09 23 20 46 build_tk} {..# F
1520: 69 6e 64 20 54 6b 20 28 66 69 72 73 74 6c 79 20 ind Tk (firstly
1530: 75 73 69 6e 67 20 67 6c 6f 62 20 70 61 74 74 65 using glob patte
1540: 72 6e 20 2f 20 62 61 63 6b 77 61 72 64 73 20 63 rn / backwards c
1550: 6f 6d 70 61 74 69 62 6c 65 20 77 61 79 29 0a 09 ompatible way)..
1560: 73 65 74 20 74 6b 64 69 72 20 5b 6c 69 6e 64 65 set tkdir [linde
1570: 78 20 5b 6c 73 6f 72 74 20 5b 67 6c 6f 62 20 2d x [lsort [glob -
1580: 6e 6f 63 6f 6d 70 6c 61 69 6e 20 2d 74 61 69 6c nocomplain -tail
1590: 73 20 2d 74 79 70 65 20 64 20 5c 0a 09 09 2d 64 s -type d \...-d
15a0: 69 72 65 63 74 6f 72 79 20 24 74 63 6c 74 6b 64 irectory $tcltkd
15b0: 69 72 20 74 6b 24 75 73 65 76 65 72 73 69 6f 6e ir tk$useversion
15c0: 5d 5d 20 65 6e 64 5d 0a 09 69 66 20 7b 24 74 6b ]] end]..if {$tk
15d0: 64 69 72 20 6e 65 20 22 22 7d 20 7b 0a 09 20 20 dir ne ""} {..
15e0: 20 20 69 66 20 7b 24 6d 61 6a 6f 72 20 65 71 20 if {$major eq
15f0: 22 22 7d 20 7b 0a 09 09 23 20 6f 62 74 61 69 6e ""} {...# obtain
1600: 20 76 65 72 73 69 6f 6e 20 66 72 6f 6d 20 67 65 version from ge
1610: 6e 65 72 69 63 20 68 65 61 64 65 72 20 69 66 20 neric header if
1620: 77 65 20 63 61 6e 3a 0a 09 09 6c 61 73 73 69 67 we can:...lassig
1630: 6e 20 5b 67 65 74 76 65 72 73 69 6f 6e 20 5b 66 n [getversion [f
1640: 69 6c 65 20 6a 6f 69 6e 20 24 74 63 6c 74 6b 64 ile join $tcltkd
1650: 69 72 20 24 74 6b 64 69 72 20 67 65 6e 65 72 69 ir $tkdir generi
1660: 63 20 74 6b 2e 68 5d 5d 20 6d 61 6a 6f 72 20 6d c tk.h]] major m
1670: 69 6e 6f 72 0a 09 20 20 20 20 7d 0a 09 7d 20 65 inor.. }..} e
1680: 6c 73 65 20 7b 0a 09 20 20 20 20 6c 61 73 73 69 lse {.. lassi
1690: 67 6e 20 5b 66 69 6e 64 76 65 72 73 69 6f 6e 20 gn [findversion
16a0: 24 74 63 6c 74 6b 64 69 72 20 74 6b 20 24 75 73 $tcltkdir tk $us
16b0: 65 76 65 72 73 69 6f 6e 5d 20 74 63 6c 74 6b 64 eversion] tcltkd
16c0: 69 72 20 74 6b 64 69 72 20 6d 61 6a 6f 72 20 6d ir tkdir major m
16d0: 69 6e 6f 72 0a 09 7d 0a 09 69 66 20 7b 24 74 6b inor..}..if {$tk
16e0: 64 69 72 20 65 71 20 22 22 20 26 26 20 24 6f 70 dir eq "" && $op
16f0: 74 5f 62 75 69 6c 64 5f 74 6b 7d 20 7b 0a 09 20 t_build_tk} {..
1700: 20 20 20 70 75 74 73 20 73 74 64 65 72 72 20 22 puts stderr "
1710: 74 63 6c 74 6b 2d 6d 61 6e 2d 68 74 6d 6c 3a 20 tcltk-man-html:
1720: 63 6f 75 6c 64 6e 27 74 20 66 69 6e 64 20 54 6b couldn't find Tk
1730: 20 62 65 6c 6f 77 20 24 74 63 6c 74 6b 64 69 72 below $tcltkdir
1740: 22 0a 09 20 20 20 20 65 78 69 74 20 31 0a 09 7d ".. exit 1..}
1750: 0a 09 70 75 74 73 20 22 75 73 69 6e 67 20 54 6b ..puts "using Tk
1760: 20 73 6f 75 72 63 65 20 64 69 72 65 63 74 6f 72 source director
1770: 79 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 63 y [file join $tc
1780: 6c 74 6b 64 69 72 20 24 74 6b 64 69 72 5d 22 0a ltkdir $tkdir]".
1790: 20 20 20 20 7d 0a 0a 20 20 20 20 70 75 74 73 20 }.. puts
17a0: 22 76 65 72 62 6f 73 65 20 6d 65 73 73 61 67 65 "verbose message
17b0: 73 20 61 72 65 20 5b 65 78 70 72 20 7b 24 76 65 s are [expr {$ve
17c0: 72 62 6f 73 65 20 3f 20 7b 6f 6e 7d 20 3a 20 7b rbose ? {on} : {
17d0: 6f 66 66 7d 7d 5d 22 0a 0a 20 20 20 20 23 20 74 off}}]".. # t
17e0: 68 65 20 74 69 74 6c 65 20 66 6f 72 20 74 68 65 he title for the
17f0: 20 6d 61 6e 20 70 61 67 65 73 20 6f 76 65 72 61 man pages overa
1800: 6c 6c 0a 20 20 20 20 67 6c 6f 62 61 6c 20 6f 76 ll. global ov
1810: 65 72 61 6c 6c 5f 74 69 74 6c 65 0a 20 20 20 20 erall_title.
1820: 73 65 74 20 6f 76 65 72 61 6c 6c 5f 74 69 74 6c set overall_titl
1830: 65 20 22 22 0a 20 20 20 20 69 66 20 7b 24 62 75 e "". if {$bu
1840: 69 6c 64 5f 74 63 6c 7d 20 7b 0a 09 69 66 20 7b ild_tcl} {..if {
1850: 24 6d 61 6a 6f 72 20 6e 65 20 22 22 7d 20 7b 0a $major ne ""} {.
1860: 09 20 20 20 20 61 70 70 65 6e 64 20 6f 76 65 72 . append over
1870: 61 6c 6c 5f 74 69 74 6c 65 20 22 54 63 6c 20 24 all_title "Tcl $
1880: 6d 61 6a 6f 72 2e 24 6d 69 6e 6f 72 22 0a 09 7d major.$minor"..}
1890: 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 61 70 70 else {.. app
18a0: 65 6e 64 20 6f 76 65 72 61 6c 6c 5f 74 69 74 6c end overall_titl
18b0: 65 20 22 54 63 6c 20 5b 63 61 70 69 74 61 6c 69 e "Tcl [capitali
18c0: 7a 65 20 24 74 63 6c 64 69 72 5d 22 0a 09 7d 0a ze $tcldir]"..}.
18d0: 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 24 62 }. if {$b
18e0: 75 69 6c 64 5f 74 63 6c 20 26 26 20 24 62 75 69 uild_tcl && $bui
18f0: 6c 64 5f 74 6b 7d 20 7b 0a 09 61 70 70 65 6e 64 ld_tk} {..append
1900: 20 6f 76 65 72 61 6c 6c 5f 74 69 74 6c 65 20 22 overall_title "
1910: 2f 22 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 /". }. if
1920: 7b 24 62 75 69 6c 64 5f 74 6b 7d 20 7b 0a 09 61 {$build_tk} {..a
1930: 70 70 65 6e 64 20 6f 76 65 72 61 6c 6c 5f 74 69 ppend overall_ti
1940: 74 6c 65 20 22 5b 63 61 70 69 74 61 6c 69 7a 65 tle "[capitalize
1950: 20 24 74 6b 64 69 72 5d 22 0a 20 20 20 20 7d 0a $tkdir]". }.
1960: 20 20 20 20 61 70 70 65 6e 64 20 6f 76 65 72 61 append overa
1970: 6c 6c 5f 74 69 74 6c 65 20 22 20 44 6f 63 75 6d ll_title " Docum
1980: 65 6e 74 61 74 69 6f 6e 22 0a 7d 0a 0a 70 72 6f entation".}..pro
1990: 63 20 63 61 70 69 74 61 6c 69 7a 65 20 7b 73 74 c capitalize {st
19a0: 72 69 6e 67 7d 20 7b 0a 20 20 20 20 72 65 74 75 ring} {. retu
19b0: 72 6e 20 5b 73 74 72 69 6e 67 20 74 6f 75 70 70 rn [string toupp
19c0: 65 72 20 24 73 74 72 69 6e 67 20 30 5d 0a 7d 0a er $string 0].}.
19d0: 0c 0a 23 23 0a 23 23 20 52 65 74 75 72 6e 73 20 ..##.## Returns
19e0: 74 68 65 20 73 74 79 6c 65 20 73 68 65 65 74 2e the style sheet.
19f0: 0a 23 23 0a 70 72 6f 63 20 63 73 73 2d 73 74 79 .##.proc css-sty
1a00: 6c 65 20 61 72 67 73 20 7b 0a 20 20 20 20 75 70 le args {. up
1a10: 76 61 72 20 31 20 73 74 79 6c 65 20 73 74 79 6c var 1 style styl
1a20: 65 0a 20 20 20 20 73 65 74 20 62 6f 64 79 20 5b e. set body [
1a30: 75 70 6c 65 76 65 6c 20 31 20 5b 6c 69 73 74 20 uplevel 1 [list
1a40: 73 75 62 73 74 20 5b 6c 69 6e 64 65 78 20 24 61 subst [lindex $a
1a50: 72 67 73 20 65 6e 64 5d 5d 5d 0a 20 20 20 20 73 rgs end]]]. s
1a60: 65 74 20 74 6f 6b 65 6e 73 20 5b 6a 6f 69 6e 20 et tokens [join
1a70: 5b 6c 72 61 6e 67 65 20 24 61 72 67 73 20 30 20 [lrange $args 0
1a80: 65 6e 64 2d 31 5d 20 22 2c 20 22 5d 0a 20 20 20 end-1] ", "].
1a90: 20 61 70 70 65 6e 64 20 73 74 79 6c 65 20 24 74 append style $t
1aa0: 6f 6b 65 6e 73 20 22 20 5c 7b 22 20 24 62 6f 64 okens " \{" $bod
1ab0: 79 20 22 5c 7d 5c 6e 22 0a 7d 0a 70 72 6f 63 20 y "\}\n".}.proc
1ac0: 63 73 73 2d 73 74 79 6c 65 73 68 65 65 74 20 7b css-stylesheet {
1ad0: 7d 20 7b 0a 20 20 20 20 73 65 74 20 68 42 64 20 } {. set hBd
1ae0: 22 31 70 78 20 64 6f 74 74 65 64 20 23 31 31 35 "1px dotted #115
1af0: 37 37 42 22 0a 0a 20 20 20 20 63 73 73 2d 73 74 77B".. css-st
1b00: 79 6c 65 20 62 6f 64 79 20 64 69 76 20 70 20 74 yle body div p t
1b10: 68 20 74 64 20 6c 69 20 64 64 20 75 6c 20 6f 6c h td li dd ul ol
1b20: 20 64 6c 20 64 74 20 62 6c 6f 63 6b 71 75 6f 74 dl dt blockquot
1b30: 65 20 7b 0a 09 66 6f 6e 74 2d 66 61 6d 69 6c 79 e {..font-family
1b40: 3a 20 56 65 72 64 61 6e 61 2c 20 73 61 6e 73 2d : Verdana, sans-
1b50: 73 65 72 69 66 3b 0a 20 20 20 20 7d 0a 20 20 20 serif;. }.
1b60: 20 63 73 73 2d 73 74 79 6c 65 20 70 72 65 20 63 css-style pre c
1b70: 6f 64 65 20 7b 0a 09 66 6f 6e 74 2d 66 61 6d 69 ode {..font-fami
1b80: 6c 79 3a 20 27 43 6f 75 72 69 65 72 20 4e 65 77 ly: 'Courier New
1b90: 27 2c 20 43 6f 75 72 69 65 72 2c 20 6d 6f 6e 6f ', Courier, mono
1ba0: 73 70 61 63 65 3b 0a 20 20 20 20 7d 0a 20 20 20 space;. }.
1bb0: 20 63 73 73 2d 73 74 79 6c 65 20 70 72 65 20 7b css-style pre {
1bc0: 0a 09 62 61 63 6b 67 72 6f 75 6e 64 2d 63 6f 6c ..background-col
1bd0: 6f 72 3a 20 20 23 46 36 46 43 45 43 3b 0a 09 62 or: #F6FCEC;..b
1be0: 6f 72 64 65 72 2d 74 6f 70 3a 20 20 20 20 20 20 order-top:
1bf0: 20 20 31 70 78 20 73 6f 6c 69 64 20 23 36 41 36 1px solid #6A6
1c00: 41 36 41 3b 0a 09 62 6f 72 64 65 72 2d 62 6f 74 A6A;..border-bot
1c10: 74 6f 6d 3a 20 20 20 20 20 31 70 78 20 73 6f 6c tom: 1px sol
1c20: 69 64 20 23 36 41 36 41 36 41 3b 0a 09 70 61 64 id #6A6A6A;..pad
1c30: 64 69 6e 67 3a 20 20 20 20 20 20 20 20 20 20 20 ding:
1c40: 31 65 6d 3b 0a 09 6f 76 65 72 66 6c 6f 77 3a 20 1em;..overflow:
1c50: 20 20 20 20 20 20 20 20 20 61 75 74 6f 3b 0a 20 auto;.
1c60: 20 20 20 7d 0a 20 20 20 20 63 73 73 2d 73 74 79 }. css-sty
1c70: 6c 65 20 62 6f 64 79 20 7b 0a 09 62 61 63 6b 67 le body {..backg
1c80: 72 6f 75 6e 64 2d 63 6f 6c 6f 72 3a 20 20 23 46 round-color: #F
1c90: 46 46 46 46 46 3b 0a 09 66 6f 6e 74 2d 73 69 7a FFFFF;..font-siz
1ca0: 65 3a 20 20 20 20 20 20 20 20 20 31 32 70 78 3b e: 12px;
1cb0: 0a 09 6c 69 6e 65 2d 68 65 69 67 68 74 3a 20 20 ..line-height:
1cc0: 20 20 20 20 20 31 2e 32 35 3b 0a 09 6c 65 74 74 1.25;..lett
1cd0: 65 72 2d 73 70 61 63 69 6e 67 3a 20 20 20 20 2e er-spacing: .
1ce0: 32 70 78 3b 0a 09 70 61 64 64 69 6e 67 2d 6c 65 2px;..padding-le
1cf0: 66 74 3a 20 20 20 20 20 20 2e 35 65 6d 3b 0a 20 ft: .5em;.
1d00: 20 20 20 7d 0a 20 20 20 20 63 73 73 2d 73 74 79 }. css-sty
1d10: 6c 65 20 68 31 20 68 32 20 68 33 20 68 34 20 7b le h1 h2 h3 h4 {
1d20: 0a 09 66 6f 6e 74 2d 66 61 6d 69 6c 79 3a 20 20 ..font-family:
1d30: 20 20 20 20 20 47 65 6f 72 67 69 61 2c 20 73 65 Georgia, se
1d40: 72 69 66 3b 0a 09 70 61 64 64 69 6e 67 2d 6c 65 rif;..padding-le
1d50: 66 74 3a 20 20 20 20 20 20 31 65 6d 3b 0a 09 6d ft: 1em;..m
1d60: 61 72 67 69 6e 2d 74 6f 70 3a 20 20 20 20 20 20 argin-top:
1d70: 20 20 31 65 6d 3b 0a 20 20 20 20 7d 0a 20 20 20 1em;. }.
1d80: 20 63 73 73 2d 73 74 79 6c 65 20 68 31 20 7b 0a css-style h1 {.
1d90: 09 66 6f 6e 74 2d 73 69 7a 65 3a 20 20 20 20 20 .font-size:
1da0: 20 20 20 20 31 38 70 78 3b 0a 09 63 6f 6c 6f 72 18px;..color
1db0: 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 23 31 : #1
1dc0: 31 35 37 37 42 3b 0a 09 62 6f 72 64 65 72 2d 62 1577B;..border-b
1dd0: 6f 74 74 6f 6d 3a 20 20 20 20 20 24 68 42 64 3b ottom: $hBd;
1de0: 0a 09 6d 61 72 67 69 6e 2d 74 6f 70 3a 20 20 20 ..margin-top:
1df0: 20 20 20 20 20 30 70 78 3b 0a 20 20 20 20 7d 0a 0px;. }.
1e00: 20 20 20 20 63 73 73 2d 73 74 79 6c 65 20 68 32 css-style h2
1e10: 20 7b 0a 09 66 6f 6e 74 2d 73 69 7a 65 3a 20 20 {..font-size:
1e20: 20 20 20 20 20 20 20 31 34 70 78 3b 0a 09 63 6f 14px;..co
1e30: 6c 6f 72 3a 20 20 20 20 20 20 20 20 20 20 20 20 lor:
1e40: 20 23 31 31 35 37 37 42 3b 0a 09 62 61 63 6b 67 #11577B;..backg
1e50: 72 6f 75 6e 64 2d 63 6f 6c 6f 72 3a 20 20 23 43 round-color: #C
1e60: 35 44 43 45 38 3b 0a 09 70 61 64 64 69 6e 67 2d 5DCE8;..padding-
1e70: 6c 65 66 74 3a 20 20 20 20 20 20 31 65 6d 3b 0a left: 1em;.
1e80: 09 62 6f 72 64 65 72 3a 20 20 20 20 20 20 20 20 .border:
1e90: 20 20 20 20 31 70 78 20 73 6f 6c 69 64 20 23 36 1px solid #6
1ea0: 41 36 41 36 41 3b 0a 20 20 20 20 7d 0a 20 20 20 A6A6A;. }.
1eb0: 20 63 73 73 2d 73 74 79 6c 65 20 68 33 20 68 34 css-style h3 h4
1ec0: 20 7b 0a 09 63 6f 6c 6f 72 3a 20 20 20 20 20 20 {..color:
1ed0: 20 20 20 20 20 20 20 23 31 36 37 34 41 34 3b 0a #1674A4;.
1ee0: 09 62 61 63 6b 67 72 6f 75 6e 64 2d 63 6f 6c 6f .background-colo
1ef0: 72 3a 20 20 23 45 38 46 32 46 36 3b 0a 09 62 6f r: #E8F2F6;..bo
1f00: 72 64 65 72 2d 62 6f 74 74 6f 6d 3a 20 20 20 20 rder-bottom:
1f10: 20 24 68 42 64 3b 0a 09 62 6f 72 64 65 72 2d 74 $hBd;..border-t
1f20: 6f 70 3a 20 20 20 20 20 20 20 20 24 68 42 64 3b op: $hBd;
1f30: 0a 20 20 20 20 7d 0a 20 20 20 20 63 73 73 2d 73 . }. css-s
1f40: 74 79 6c 65 20 68 33 20 7b 0a 09 66 6f 6e 74 2d tyle h3 {..font-
1f50: 73 69 7a 65 3a 20 31 32 70 78 3b 0a 20 20 20 20 size: 12px;.
1f60: 7d 0a 20 20 20 20 63 73 73 2d 73 74 79 6c 65 20 }. css-style
1f70: 68 34 20 7b 0a 09 66 6f 6e 74 2d 73 69 7a 65 3a h4 {..font-size:
1f80: 20 31 31 70 78 3b 0a 20 20 20 20 7d 0a 20 20 20 11px;. }.
1f90: 20 63 73 73 2d 73 74 79 6c 65 20 22 2e 6b 65 79 css-style ".key
1fa0: 6c 69 73 74 20 64 74 22 20 22 2e 61 72 67 75 6d list dt" ".argum
1fb0: 65 6e 74 73 20 64 74 22 20 7b 0a 09 77 69 64 74 ents dt" {..widt
1fc0: 68 3a 20 32 35 65 6d 3b 0a 09 66 6c 6f 61 74 3a h: 25em;..float:
1fd0: 20 6c 65 66 74 3b 0a 09 70 61 64 64 69 6e 67 3a left;..padding:
1fe0: 20 32 70 78 3b 0a 09 62 6f 72 64 65 72 2d 74 6f 2px;..border-to
1ff0: 70 3a 20 31 70 78 20 73 6f 6c 69 64 20 23 39 39 p: 1px solid #99
2000: 39 39 39 39 3b 0a 20 20 20 20 7d 0a 20 20 20 20 9999;. }.
2010: 63 73 73 2d 73 74 79 6c 65 20 22 2e 6b 65 79 6c css-style ".keyl
2020: 69 73 74 20 64 74 22 20 7b 20 66 6f 6e 74 2d 77 ist dt" { font-w
2030: 65 69 67 68 74 3a 20 62 6f 6c 64 3b 20 7d 0a 20 eight: bold; }.
2040: 20 20 20 63 73 73 2d 73 74 79 6c 65 20 22 2e 6b css-style ".k
2050: 65 79 6c 69 73 74 20 64 64 22 20 22 2e 61 72 67 eylist dd" ".arg
2060: 75 6d 65 6e 74 73 20 64 64 22 20 7b 0a 09 6d 61 uments dd" {..ma
2070: 72 67 69 6e 2d 6c 65 66 74 3a 20 32 35 65 6d 3b rgin-left: 25em;
2080: 0a 09 70 61 64 64 69 6e 67 3a 20 32 70 78 3b 0a ..padding: 2px;.
2090: 09 62 6f 72 64 65 72 2d 74 6f 70 3a 20 31 70 78 .border-top: 1px
20a0: 20 73 6f 6c 69 64 20 23 39 39 39 39 39 39 3b 0a solid #999999;.
20b0: 20 20 20 20 7d 0a 20 20 20 20 63 73 73 2d 73 74 }. css-st
20c0: 79 6c 65 20 2e 63 6f 70 79 20 7b 0a 09 62 61 63 yle .copy {..bac
20d0: 6b 67 72 6f 75 6e 64 2d 63 6f 6c 6f 72 3a 20 20 kground-color:
20e0: 23 46 36 46 43 46 43 3b 0a 09 77 68 69 74 65 2d #F6FCFC;..white-
20f0: 73 70 61 63 65 3a 20 20 20 20 20 20 20 70 72 65 space: pre
2100: 3b 0a 09 66 6f 6e 74 2d 73 69 7a 65 3a 20 20 20 ;..font-size:
2110: 20 20 20 20 20 20 38 30 25 3b 0a 09 62 6f 72 64 80%;..bord
2120: 65 72 2d 74 6f 70 3a 20 20 20 20 20 20 20 20 31 er-top: 1
2130: 70 78 20 73 6f 6c 69 64 20 23 36 41 36 41 36 41 px solid #6A6A6A
2140: 3b 0a 09 6d 61 72 67 69 6e 2d 74 6f 70 3a 20 20 ;..margin-top:
2150: 20 20 20 20 20 20 32 65 6d 3b 0a 20 20 20 20 7d 2em;. }
2160: 0a 20 20 20 20 63 73 73 2d 73 74 79 6c 65 20 2e . css-style .
2170: 74 61 62 6c 65 63 65 6c 6c 20 7b 0a 09 66 6f 6e tablecell {..fon
2180: 74 2d 73 69 7a 65 3a 09 20 20 20 31 32 70 78 3b t-size:. 12px;
2190: 0a 09 70 61 64 64 69 6e 67 2d 6c 65 66 74 3a 09 ..padding-left:.
21a0: 20 20 20 2e 35 65 6d 3b 0a 09 70 61 64 64 69 6e .5em;..paddin
21b0: 67 2d 72 69 67 68 74 3a 09 20 20 20 2e 35 65 6d g-right:. .5em
21c0: 3b 0a 20 20 20 20 7d 0a 7d 0a 0c 0a 23 23 0a 23 ;. }.}...##.#
21d0: 23 20 66 6f 72 65 61 63 68 20 6f 66 20 74 68 65 # foreach of the
21e0: 20 6d 61 6e 20 64 69 72 65 63 74 6f 72 69 65 73 man directories
21f0: 20 73 70 65 63 69 66 69 65 64 20 62 79 20 61 72 specified by ar
2200: 67 73 0a 23 23 20 63 6f 6e 76 65 72 74 20 6d 61 gs.## convert ma
2210: 6e 70 61 67 65 73 20 69 6e 74 6f 20 68 79 70 65 npages into hype
2220: 72 74 65 78 74 20 69 6e 20 74 68 65 20 64 69 72 rtext in the dir
2230: 65 63 74 6f 72 79 0a 23 23 20 73 70 65 63 69 66 ectory.## specif
2240: 69 65 64 20 62 79 20 68 74 6d 6c 2e 0a 23 23 0a ied by html..##.
2250: 70 72 6f 63 20 6d 61 6b 65 2d 6d 61 6e 2d 70 61 proc make-man-pa
2260: 67 65 73 20 7b 68 74 6d 6c 20 61 72 67 73 7d 20 ges {html args}
2270: 7b 0a 20 20 20 20 67 6c 6f 62 61 6c 20 6d 61 6e {. global man
2280: 75 61 6c 20 6f 76 65 72 61 6c 6c 5f 74 69 74 6c ual overall_titl
2290: 65 20 74 63 6c 74 6b 64 65 73 63 20 76 65 72 62 e tcltkdesc verb
22a0: 6f 73 65 0a 20 20 20 20 67 6c 6f 62 61 6c 20 65 ose. global e
22b0: 78 63 6c 75 64 65 64 5f 70 61 67 65 73 20 66 6f xcluded_pages fo
22c0: 72 63 65 64 5f 69 6e 64 65 78 5f 70 61 67 65 73 rced_index_pages
22d0: 20 70 72 6f 63 65 73 73 5f 66 69 72 73 74 5f 70 process_first_p
22e0: 61 74 74 65 72 6e 73 0a 0a 20 20 20 20 6d 61 6b atterns.. mak
22f0: 65 64 69 72 68 69 65 72 20 24 68 74 6d 6c 0a 20 edirhier $html.
2300: 20 20 20 73 65 74 20 63 73 73 66 64 20 5b 6f 70 set cssfd [op
2310: 65 6e 20 24 68 74 6d 6c 2f 24 3a 3a 43 53 53 46 en $html/$::CSSF
2320: 49 4c 45 20 77 5d 0a 20 20 20 20 66 63 6f 6e 66 ILE w]. fconf
2330: 69 67 75 72 65 20 24 63 73 73 66 64 20 2d 74 72 igure $cssfd -tr
2340: 61 6e 73 6c 61 74 69 6f 6e 20 6c 66 20 2d 65 6e anslation lf -en
2350: 63 6f 64 69 6e 67 20 75 74 66 2d 38 0a 20 20 20 coding utf-8.
2360: 20 70 75 74 73 20 24 63 73 73 66 64 20 5b 63 73 puts $cssfd [cs
2370: 73 2d 73 74 79 6c 65 73 68 65 65 74 5d 0a 20 20 s-stylesheet].
2380: 20 20 63 6c 6f 73 65 20 24 63 73 73 66 64 0a 20 close $cssfd.
2390: 20 20 20 73 65 74 20 6d 61 6e 75 61 6c 28 73 68 set manual(sh
23a0: 6f 72 74 2d 74 6f 63 2d 6e 29 20 31 0a 20 20 20 ort-toc-n) 1.
23b0: 20 73 65 74 20 6d 61 6e 75 61 6c 28 73 68 6f 72 set manual(shor
23c0: 74 2d 74 6f 63 2d 66 70 29 20 5b 6f 70 65 6e 20 t-toc-fp) [open
23d0: 24 68 74 6d 6c 2f 5b 69 6e 64 65 78 66 69 6c 65 $html/[indexfile
23e0: 5d 20 77 5d 0a 20 20 20 20 66 63 6f 6e 66 69 67 ] w]. fconfig
23f0: 75 72 65 20 24 6d 61 6e 75 61 6c 28 73 68 6f 72 ure $manual(shor
2400: 74 2d 74 6f 63 2d 66 70 29 20 2d 74 72 61 6e 73 t-toc-fp) -trans
2410: 6c 61 74 69 6f 6e 20 6c 66 20 2d 65 6e 63 6f 64 lation lf -encod
2420: 69 6e 67 20 75 74 66 2d 38 0a 20 20 20 20 70 75 ing utf-8. pu
2430: 74 73 20 24 6d 61 6e 75 61 6c 28 73 68 6f 72 74 ts $manual(short
2440: 2d 74 6f 63 2d 66 70 29 20 5b 68 74 6d 6c 68 65 -toc-fp) [htmlhe
2450: 61 64 20 24 6f 76 65 72 61 6c 6c 5f 74 69 74 6c ad $overall_titl
2460: 65 20 24 6f 76 65 72 61 6c 6c 5f 74 69 74 6c 65 e $overall_title
2470: 5d 0a 20 20 20 20 70 75 74 73 20 24 6d 61 6e 75 ]. puts $manu
2480: 61 6c 28 73 68 6f 72 74 2d 74 6f 63 2d 66 70 29 al(short-toc-fp)
2490: 20 22 3c 64 6c 20 63 6c 61 73 73 3d 5c 22 6b 65 "<dl class=\"ke
24a0: 79 6c 69 73 74 5c 22 3e 22 0a 20 20 20 20 73 65 ylist\">". se
24b0: 74 20 6d 61 6e 75 61 6c 28 6d 65 72 67 65 2d 63 t manual(merge-c
24c0: 6f 70 79 72 69 67 68 74 73 29 20 7b 7d 0a 0a 20 opyrights) {}..
24d0: 20 20 20 66 6f 72 65 61 63 68 20 61 72 67 20 24 foreach arg $
24e0: 61 72 67 73 20 7b 0a 09 23 20 70 72 65 70 72 6f args {..# prepro
24f0: 63 65 73 73 20 74 6f 20 73 65 74 20 75 70 20 73 cess to set up s
2500: 75 62 68 65 61 64 65 72 20 66 6f 72 20 74 68 65 ubheader for the
2510: 20 72 65 73 74 20 6f 66 20 74 68 65 20 66 69 6c rest of the fil
2520: 65 73 0a 09 69 66 20 7b 21 5b 6c 6c 65 6e 67 74 es..if {![llengt
2530: 68 20 24 61 72 67 5d 7d 20 7b 0a 09 20 20 20 20 h $arg]} {..
2540: 63 6f 6e 74 69 6e 75 65 0a 09 7d 0a 09 6c 61 73 continue..}..las
2550: 73 69 67 6e 20 24 61 72 67 20 2d 3e 20 6e 61 6d sign $arg -> nam
2560: 65 20 66 69 6c 65 0a 09 69 66 20 7b 5b 72 65 67 e file..if {[reg
2570: 65 78 70 20 7b 28 2e 2a 29 28 3f 3a 20 50 61 63 exp {(.*)(?: Pac
2580: 6b 61 67 65 29 3f 20 43 6f 6d 6d 61 6e 64 73 28 kage)? Commands(
2590: 3f 3a 2c 20 76 65 72 73 69 6f 6e 20 2e 2a 29 3f ?:, version .*)?
25a0: 7d 20 24 6e 61 6d 65 20 2d 3e 20 70 6b 67 5d 7d } $name -> pkg]}
25b0: 20 7b 0a 09 20 20 20 20 73 65 74 20 6e 61 6d 65 {.. set name
25c0: 20 22 24 70 6b 67 20 43 6f 6d 6d 61 6e 64 73 22 "$pkg Commands"
25d0: 0a 09 7d 20 65 6c 73 65 69 66 20 7b 5b 72 65 67 ..} elseif {[reg
25e0: 65 78 70 20 7b 28 2e 2a 29 28 3f 3a 20 50 61 63 exp {(.*)(?: Pac
25f0: 6b 61 67 65 29 3f 20 43 20 41 50 49 28 3f 3a 2c kage)? C API(?:,
2600: 20 76 65 72 73 69 6f 6e 20 2e 2a 29 3f 7d 20 24 version .*)?} $
2610: 6e 61 6d 65 20 2d 3e 20 70 6b 67 5d 7d 20 7b 0a name -> pkg]} {.
2620: 09 20 20 20 20 73 65 74 20 6e 61 6d 65 20 22 24 . set name "$
2630: 70 6b 67 20 43 20 41 50 49 22 0a 09 7d 0a 09 6c pkg C API"..}..l
2640: 61 70 70 65 6e 64 20 6d 61 6e 75 61 6c 28 73 75 append manual(su
2650: 62 68 65 61 64 65 72 29 20 24 6e 61 6d 65 20 24 bheader) $name $
2660: 66 69 6c 65 0a 20 20 20 20 7d 0a 0a 20 20 20 20 file. }..
2670: 23 23 0a 20 20 20 20 23 23 20 70 61 72 73 65 20 ##. ## parse
2680: 74 68 65 20 6d 61 6e 70 61 67 65 73 20 69 6e 20 the manpages in
2690: 61 20 73 65 63 74 69 6f 6e 20 6f 66 20 74 68 65 a section of the
26a0: 20 64 6f 63 73 20 28 73 70 6c 69 74 20 62 79 0a docs (split by.
26b0: 20 20 20 20 23 23 20 70 61 63 6b 61 67 65 29 20 ## package)
26c0: 61 6e 64 20 63 6f 6e 73 74 72 75 63 74 20 66 6f and construct fo
26d0: 72 6d 61 74 74 65 64 20 6d 61 6e 70 61 67 65 73 rmatted manpages
26e0: 0a 20 20 20 20 23 23 0a 20 20 20 20 66 6f 72 65 . ##. fore
26f0: 61 63 68 20 61 72 67 20 24 61 72 67 73 20 7b 0a ach arg $args {.
2700: 09 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 61 .if {[llength $a
2710: 72 67 5d 7d 20 7b 0a 09 20 20 20 20 6d 61 6b 65 rg]} {.. make
2720: 2d 6d 61 6e 70 61 67 65 2d 73 65 63 74 69 6f 6e -manpage-section
2730: 20 24 68 74 6d 6c 20 24 61 72 67 0a 09 7d 0a 20 $html $arg..}.
2740: 20 20 20 7d 0a 0a 20 20 20 20 23 23 0a 20 20 20 }.. ##.
2750: 20 23 23 20 62 75 69 6c 64 20 74 68 65 20 6b 65 ## build the ke
2760: 79 77 6f 72 64 20 69 6e 64 65 78 2e 0a 20 20 20 yword index..
2770: 20 23 23 0a 20 20 20 20 69 66 20 7b 21 24 76 65 ##. if {!$ve
2780: 72 62 6f 73 65 7d 20 7b 0a 09 70 75 74 73 20 73 rbose} {..puts s
2790: 74 64 65 72 72 20 22 41 73 73 65 6d 62 6c 69 6e tderr "Assemblin
27a0: 67 20 69 6e 64 65 78 22 0a 20 20 20 20 7d 0a 20 g index". }.
27b0: 20 20 20 66 69 6c 65 20 64 65 6c 65 74 65 20 2d file delete -
27c0: 66 6f 72 63 65 20 2d 2d 20 24 68 74 6d 6c 2f 4b force -- $html/K
27d0: 65 79 77 6f 72 64 73 0a 20 20 20 20 6d 61 6b 65 eywords. make
27e0: 64 69 72 68 69 65 72 20 24 68 74 6d 6c 2f 4b 65 dirhier $html/Ke
27f0: 79 77 6f 72 64 73 0a 20 20 20 20 73 65 74 20 6b ywords. set k
2800: 65 79 66 70 20 5b 6f 70 65 6e 20 24 68 74 6d 6c eyfp [open $html
2810: 2f 4b 65 79 77 6f 72 64 73 2f 5b 69 6e 64 65 78 /Keywords/[index
2820: 66 69 6c 65 5d 20 77 5d 0a 20 20 20 20 66 63 6f file] w]. fco
2830: 6e 66 69 67 75 72 65 20 24 6b 65 79 66 70 20 2d nfigure $keyfp -
2840: 74 72 61 6e 73 6c 61 74 69 6f 6e 20 6c 66 20 2d translation lf -
2850: 65 6e 63 6f 64 69 6e 67 20 75 74 66 2d 38 0a 20 encoding utf-8.
2860: 20 20 20 70 75 74 73 20 24 6b 65 79 66 70 20 5b puts $keyfp [
2870: 68 74 6d 6c 68 65 61 64 20 22 24 74 63 6c 74 6b htmlhead "$tcltk
2880: 64 65 73 63 20 4b 65 79 77 6f 72 64 73 22 20 22 desc Keywords" "
2890: 24 74 63 6c 74 6b 64 65 73 63 20 4b 65 79 77 6f $tcltkdesc Keywo
28a0: 72 64 73 22 20 5c 0a 09 09 20 20 20 20 20 24 6f rds" \... $o
28b0: 76 65 72 61 6c 6c 5f 74 69 74 6c 65 20 22 2e 2e verall_title "..
28c0: 2f 5b 69 6e 64 65 78 66 69 6c 65 5d 22 5d 0a 20 /[indexfile]"].
28d0: 20 20 20 73 65 74 20 6c 65 74 74 65 72 73 20 7b set letters {
28e0: 41 20 42 20 43 20 44 20 45 20 46 20 47 20 48 20 A B C D E F G H
28f0: 49 20 4a 20 4b 20 4c 20 4d 20 4e 20 4f 20 50 20 I J K L M N O P
2900: 51 20 52 20 53 20 54 20 55 20 56 20 57 20 58 20 Q R S T U V W X
2910: 59 20 5a 7d 0a 20 20 20 20 23 20 43 72 65 61 74 Y Z}. # Creat
2920: 65 20 68 65 61 64 65 72 20 66 69 72 73 74 0a 20 e header first.
2930: 20 20 20 73 65 74 20 6b 65 79 68 65 61 64 65 72 set keyheader
2940: 20 7b 7d 0a 20 20 20 20 66 6f 72 65 61 63 68 20 {}. foreach
2950: 61 20 24 6c 65 74 74 65 72 73 20 7b 0a 09 73 65 a $letters {..se
2960: 74 20 6b 65 79 73 20 5b 61 72 72 61 79 20 6e 61 t keys [array na
2970: 6d 65 73 20 6d 61 6e 75 61 6c 20 22 6b 65 79 77 mes manual "keyw
2980: 6f 72 64 2d 5c 5b 5b 73 74 72 69 6e 67 20 74 6f ord-\[[string to
2990: 74 69 74 6c 65 20 24 61 24 61 5d 5c 5d 2a 22 5d title $a$a]\]*"]
29a0: 0a 09 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 ..if {[llength $
29b0: 6b 65 79 73 5d 7d 20 7b 0a 09 20 20 20 20 6c 61 keys]} {.. la
29c0: 70 70 65 6e 64 20 6b 65 79 68 65 61 64 65 72 20 ppend keyheader
29d0: 22 3c 61 20 68 72 65 66 3d 5c 22 24 61 2e 68 74 "<a href=\"$a.ht
29e0: 6d 6c 5c 22 3e 24 61 3c 2f 61 3e 22 0a 09 7d 20 ml\">$a</a>"..}
29f0: 65 6c 73 65 20 7b 0a 09 20 20 20 20 23 20 4e 6f else {.. # No
2a00: 20 6b 65 79 77 6f 72 64 73 20 66 6f 72 20 74 68 keywords for th
2a10: 69 73 20 6c 65 74 74 65 72 0a 09 20 20 20 20 6c is letter.. l
2a20: 61 70 70 65 6e 64 20 6b 65 79 68 65 61 64 65 72 append keyheader
2a30: 20 24 61 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 $a..}. }.
2a40: 20 73 65 74 20 6b 65 79 68 65 61 64 65 72 20 3c set keyheader <
2a50: 68 33 3e 5b 6a 6f 69 6e 20 24 6b 65 79 68 65 61 h3>[join $keyhea
2a60: 64 65 72 20 22 20 7c 5c 6e 22 5d 3c 2f 68 33 3e der " |\n"]</h3>
2a70: 0a 20 20 20 20 70 75 74 73 20 24 6b 65 79 66 70 . puts $keyfp
2a80: 20 24 6b 65 79 68 65 61 64 65 72 0a 20 20 20 20 $keyheader.
2a90: 66 6f 72 65 61 63 68 20 61 20 24 6c 65 74 74 65 foreach a $lette
2aa0: 72 73 20 7b 0a 09 73 65 74 20 6b 65 79 73 20 5b rs {..set keys [
2ab0: 61 72 72 61 79 20 6e 61 6d 65 73 20 6d 61 6e 75 array names manu
2ac0: 61 6c 20 22 6b 65 79 77 6f 72 64 2d 5c 5b 5b 73 al "keyword-\[[s
2ad0: 74 72 69 6e 67 20 74 6f 74 69 74 6c 65 20 24 61 tring totitle $a
2ae0: 24 61 5d 5c 5d 2a 22 5d 0a 09 69 66 20 7b 21 5b $a]\]*"]..if {![
2af0: 6c 6c 65 6e 67 74 68 20 24 6b 65 79 73 5d 7d 20 llength $keys]}
2b00: 7b 0a 09 20 20 20 20 63 6f 6e 74 69 6e 75 65 0a {.. continue.
2b10: 09 7d 0a 09 23 20 50 65 72 2d 6b 65 79 77 6f 72 .}..# Per-keywor
2b20: 64 20 70 61 67 65 0a 09 73 65 74 20 61 66 70 20 d page..set afp
2b30: 5b 6f 70 65 6e 20 24 68 74 6d 6c 2f 4b 65 79 77 [open $html/Keyw
2b40: 6f 72 64 73 2f 24 61 2e 68 74 6d 6c 20 77 5d 0a ords/$a.html w].
2b50: 09 66 63 6f 6e 66 69 67 75 72 65 20 24 61 66 70 .fconfigure $afp
2b60: 20 2d 74 72 61 6e 73 6c 61 74 69 6f 6e 20 6c 66 -translation lf
2b70: 20 2d 65 6e 63 6f 64 69 6e 67 20 75 74 66 2d 38 -encoding utf-8
2b80: 0a 09 70 75 74 73 20 24 61 66 70 20 5b 68 74 6d ..puts $afp [htm
2b90: 6c 68 65 61 64 20 22 24 74 63 6c 74 6b 64 65 73 lhead "$tcltkdes
2ba0: 63 20 4b 65 79 77 6f 72 64 73 20 2d 20 24 61 22 c Keywords - $a"
2bb0: 20 5c 0a 09 09 20 20 20 20 20 20 20 22 24 74 63 \... "$tc
2bc0: 6c 74 6b 64 65 73 63 20 4b 65 79 77 6f 72 64 73 ltkdesc Keywords
2bd0: 20 2d 20 24 61 22 20 5c 0a 09 09 20 20 20 20 20 - $a" \...
2be0: 20 20 24 6f 76 65 72 61 6c 6c 5f 74 69 74 6c 65 $overall_title
2bf0: 20 22 2e 2e 2f 5b 69 6e 64 65 78 66 69 6c 65 5d "../[indexfile]
2c00: 22 5d 0a 09 70 75 74 73 20 24 61 66 70 20 24 6b "]..puts $afp $k
2c10: 65 79 68 65 61 64 65 72 0a 09 70 75 74 73 20 24 eyheader..puts $
2c20: 61 66 70 20 22 3c 64 6c 20 63 6c 61 73 73 3d 5c afp "<dl class=\
2c30: 22 6b 65 79 6c 69 73 74 5c 22 3e 22 0a 09 66 6f "keylist\">"..fo
2c40: 72 65 61 63 68 20 6b 20 5b 6c 73 6f 72 74 20 2d reach k [lsort -
2c50: 64 69 63 74 69 6f 6e 61 72 79 20 24 6b 65 79 73 dictionary $keys
2c60: 5d 20 7b 0a 09 20 20 20 20 73 65 74 20 6b 20 5b ] {.. set k [
2c70: 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24 6b 20 string range $k
2c80: 38 20 65 6e 64 5d 0a 09 20 20 20 20 70 75 74 73 8 end].. puts
2c90: 20 24 61 66 70 20 22 3c 64 74 3e 3c 61 20 6e 61 $afp "<dt><a na
2ca0: 6d 65 3d 5c 22 5b 6e 6f 73 70 61 63 65 2d 74 65 me=\"[nospace-te
2cb0: 78 74 20 24 6b 5d 5c 22 20 69 64 3d 5c 22 5b 6e xt $k]\" id=\"[n
2cc0: 6f 73 70 61 63 65 2d 74 65 78 74 20 24 6b 5d 5c ospace-text $k]\
2cd0: 22 3e 24 6b 3c 2f 61 3e 3c 2f 64 74 3e 22 0a 09 ">$k</a></dt>"..
2ce0: 20 20 20 20 70 75 74 73 20 24 61 66 70 20 22 3c puts $afp "<
2cf0: 64 64 3e 22 0a 09 20 20 20 20 73 65 74 20 72 65 dd>".. set re
2d00: 66 73 20 7b 7d 0a 09 20 20 20 20 66 6f 72 65 61 fs {}.. forea
2d10: 63 68 20 6d 61 6e 20 24 6d 61 6e 75 61 6c 28 6b ch man $manual(k
2d20: 65 79 77 6f 72 64 2d 24 6b 29 20 7b 0a 09 09 73 eyword-$k) {...s
2d30: 65 74 20 6e 61 6d 65 20 5b 6c 69 6e 64 65 78 20 et name [lindex
2d40: 24 6d 61 6e 20 30 5d 0a 09 09 73 65 74 20 66 69 $man 0]...set fi
2d50: 6c 65 20 5b 6c 69 6e 64 65 78 20 24 6d 61 6e 20 le [lindex $man
2d60: 31 5d 0a 09 09 69 66 20 7b 5b 69 6e 66 6f 20 65 1]...if {[info e
2d70: 78 69 73 74 73 20 6d 61 6e 75 61 6c 28 74 6f 6f xists manual(too
2d80: 6c 74 69 70 2d 24 66 69 6c 65 29 5d 7d 20 7b 0a ltip-$file)]} {.
2d90: 09 09 20 20 20 20 73 65 74 20 74 6f 6f 6c 74 69 .. set toolti
2da0: 70 20 24 6d 61 6e 75 61 6c 28 74 6f 6f 6c 74 69 p $manual(toolti
2db0: 70 2d 24 66 69 6c 65 29 0a 09 09 20 20 20 20 69 p-$file)... i
2dc0: 66 20 7b 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 f {[string match
2dd0: 20 7b 2a 5b 3c 3e 22 22 5d 2a 7d 20 24 74 6f 6f {*[<>""]*} $too
2de0: 6c 74 69 70 5d 7d 20 7b 0a 09 09 09 6d 61 6e 65 ltip]} {....mane
2df0: 72 72 6f 72 20 22 62 61 64 20 74 6f 6f 6c 74 69 rror "bad toolti
2e00: 70 20 66 6f 72 20 24 66 69 6c 65 3a 20 5c 22 24 p for $file: \"$
2e10: 74 6f 6f 6c 74 69 70 5c 22 22 0a 09 09 20 20 20 tooltip\""...
2e20: 20 7d 0a 09 09 20 20 20 20 6c 61 70 70 65 6e 64 }... lappend
2e30: 20 72 65 66 73 20 22 3c 61 20 68 72 65 66 3d 5c refs "<a href=\
2e40: 22 2e 2e 2f 24 66 69 6c 65 5c 22 20 74 69 74 6c "../$file\" titl
2e50: 65 3d 5c 22 24 74 6f 6f 6c 74 69 70 5c 22 3e 24 e=\"$tooltip\">$
2e60: 6e 61 6d 65 3c 2f 61 3e 22 0a 09 09 7d 20 65 6c name</a>"...} el
2e70: 73 65 20 7b 0a 09 09 20 20 20 20 6c 61 70 70 65 se {... lappe
2e80: 6e 64 20 72 65 66 73 20 22 3c 61 20 68 72 65 66 nd refs "<a href
2e90: 3d 5c 22 2e 2e 2f 24 66 69 6c 65 5c 22 3e 24 6e =\"../$file\">$n
2ea0: 61 6d 65 3c 2f 61 3e 22 0a 09 09 7d 0a 09 20 20 ame</a>"...}..
2eb0: 20 20 7d 0a 09 20 20 20 20 70 75 74 73 20 24 61 }.. puts $a
2ec0: 66 70 20 22 5b 6a 6f 69 6e 20 24 72 65 66 73 20 fp "[join $refs
2ed0: 7b 2c 20 7d 5d 3c 2f 64 64 3e 22 0a 09 7d 0a 09 {, }]</dd>"..}..
2ee0: 70 75 74 73 20 24 61 66 70 20 22 3c 2f 64 6c 3e puts $afp "</dl>
2ef0: 22 0a 09 23 20 69 6e 73 65 72 74 20 6d 65 72 67 "..# insert merg
2f00: 65 64 20 63 6f 70 79 72 69 67 68 74 73 0a 09 70 ed copyrights..p
2f10: 75 74 73 20 24 61 66 70 20 5b 63 6f 70 79 6f 75 uts $afp [copyou
2f20: 74 20 24 6d 61 6e 75 61 6c 28 6d 65 72 67 65 2d t $manual(merge-
2f30: 63 6f 70 79 72 69 67 68 74 73 29 5d 0a 09 70 75 copyrights)]..pu
2f40: 74 73 20 24 61 66 70 20 22 3c 2f 62 6f 64 79 3e ts $afp "</body>
2f50: 3c 2f 68 74 6d 6c 3e 22 0a 09 63 6c 6f 73 65 20 </html>"..close
2f60: 24 61 66 70 0a 20 20 20 20 7d 0a 20 20 20 20 23 $afp. }. #
2f70: 20 69 6e 73 65 72 74 20 6d 65 72 67 65 64 20 63 insert merged c
2f80: 6f 70 79 72 69 67 68 74 73 0a 20 20 20 20 70 75 opyrights. pu
2f90: 74 73 20 24 6b 65 79 66 70 20 5b 63 6f 70 79 6f ts $keyfp [copyo
2fa0: 75 74 20 24 6d 61 6e 75 61 6c 28 6d 65 72 67 65 ut $manual(merge
2fb0: 2d 63 6f 70 79 72 69 67 68 74 73 29 5d 0a 20 20 -copyrights)].
2fc0: 20 20 70 75 74 73 20 24 6b 65 79 66 70 20 22 3c puts $keyfp "<
2fd0: 2f 62 6f 64 79 3e 3c 2f 68 74 6d 6c 3e 22 0a 20 /body></html>".
2fe0: 20 20 20 63 6c 6f 73 65 20 24 6b 65 79 66 70 0a close $keyfp.
2ff0: 0a 20 20 20 20 23 23 0a 20 20 20 20 23 23 20 66 . ##. ## f
3000: 69 6e 69 73 68 20 6f 66 66 20 73 68 6f 72 74 20 inish off short
3010: 74 61 62 6c 65 20 6f 66 20 63 6f 6e 74 65 6e 74 table of content
3020: 73 0a 20 20 20 20 23 23 0a 20 20 20 20 70 75 74 s. ##. put
3030: 73 20 24 6d 61 6e 75 61 6c 28 73 68 6f 72 74 2d s $manual(short-
3040: 74 6f 63 2d 66 70 29 20 22 3c 64 74 3e 3c 61 20 toc-fp) "<dt><a
3050: 68 72 65 66 3d 5c 22 4b 65 79 77 6f 72 64 73 2f href=\"Keywords/
3060: 5b 69 6e 64 65 78 66 69 6c 65 5d 5c 22 3e 4b 65 [indexfile]\">Ke
3070: 79 77 6f 72 64 73 3c 2f 61 3e 3c 64 64 3e 54 68 ywords</a><dd>Th
3080: 65 20 6b 65 79 77 6f 72 64 73 20 66 72 6f 6d 20 e keywords from
3090: 74 68 65 20 24 74 63 6c 74 6b 64 65 73 63 20 6d the $tcltkdesc m
30a0: 61 6e 20 70 61 67 65 73 2e 22 0a 20 20 20 20 70 an pages.". p
30b0: 75 74 73 20 24 6d 61 6e 75 61 6c 28 73 68 6f 72 uts $manual(shor
30c0: 74 2d 74 6f 63 2d 66 70 29 20 22 3c 2f 64 6c 3e t-toc-fp) "</dl>
30d0: 22 0a 20 20 20 20 23 20 69 6e 73 65 72 74 20 6d ". # insert m
30e0: 65 72 67 65 64 20 63 6f 70 79 72 69 67 68 74 73 erged copyrights
30f0: 0a 20 20 20 20 70 75 74 73 20 24 6d 61 6e 75 61 . puts $manua
3100: 6c 28 73 68 6f 72 74 2d 74 6f 63 2d 66 70 29 20 l(short-toc-fp)
3110: 5b 63 6f 70 79 6f 75 74 20 24 6d 61 6e 75 61 6c [copyout $manual
3120: 28 6d 65 72 67 65 2d 63 6f 70 79 72 69 67 68 74 (merge-copyright
3130: 73 29 5d 0a 20 20 20 20 70 75 74 73 20 24 6d 61 s)]. puts $ma
3140: 6e 75 61 6c 28 73 68 6f 72 74 2d 74 6f 63 2d 66 nual(short-toc-f
3150: 70 29 20 22 3c 2f 62 6f 64 79 3e 3c 2f 68 74 6d p) "</body></htm
3160: 6c 3e 22 0a 20 20 20 20 63 6c 6f 73 65 20 24 6d l>". close $m
3170: 61 6e 75 61 6c 28 73 68 6f 72 74 2d 74 6f 63 2d anual(short-toc-
3180: 66 70 29 0a 0a 20 20 20 20 23 23 0a 20 20 20 20 fp).. ##.
3190: 23 23 20 6f 75 74 70 75 74 20 6d 61 6e 20 70 61 ## output man pa
31a0: 67 65 73 0a 20 20 20 20 23 23 0a 20 20 20 20 75 ges. ##. u
31b0: 6e 73 65 74 20 6d 61 6e 75 61 6c 28 73 65 63 74 nset manual(sect
31c0: 69 6f 6e 29 0a 20 20 20 20 69 66 20 7b 21 24 76 ion). if {!$v
31d0: 65 72 62 6f 73 65 7d 20 7b 0a 09 70 75 74 73 20 erbose} {..puts
31e0: 73 74 64 65 72 72 20 22 52 65 73 63 61 6e 6e 69 stderr "Rescanni
31f0: 6e 67 20 5b 6c 6c 65 6e 67 74 68 20 24 6d 61 6e ng [llength $man
3200: 75 61 6c 28 61 6c 6c 2d 70 61 67 65 73 29 5d 20 ual(all-pages)]
3210: 70 61 67 65 73 20 74 6f 20 62 75 69 6c 64 20 63 pages to build c
3220: 72 6f 73 73 20 6c 69 6e 6b 73 20 61 6e 64 20 77 ross links and w
3230: 72 69 74 65 20 6f 75 74 22 0a 20 20 20 20 7d 0a rite out". }.
3240: 20 20 20 20 66 6f 72 65 61 63 68 20 70 61 74 68 foreach path
3250: 20 24 6d 61 6e 75 61 6c 28 61 6c 6c 2d 70 61 67 $manual(all-pag
3260: 65 73 29 20 77 69 6e 67 5f 6e 61 6d 65 20 24 6d es) wing_name $m
3270: 61 6e 75 61 6c 28 61 6c 6c 2d 70 61 67 65 2d 64 anual(all-page-d
3280: 6f 6d 61 69 6e 73 29 20 7b 0a 09 73 65 74 20 6d omains) {..set m
3290: 61 6e 75 61 6c 28 77 69 6e 67 2d 66 69 6c 65 29 anual(wing-file)
32a0: 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 [file dirname $
32b0: 70 61 74 68 5d 0a 09 73 65 74 20 6d 61 6e 75 61 path]..set manua
32c0: 6c 28 74 61 69 6c 29 20 5b 66 69 6c 65 20 74 61 l(tail) [file ta
32d0: 69 6c 20 24 70 61 74 68 5d 0a 09 73 65 74 20 6d il $path]..set m
32e0: 61 6e 75 61 6c 28 6e 61 6d 65 29 20 5b 66 69 6c anual(name) [fil
32f0: 65 20 72 6f 6f 74 20 24 6d 61 6e 75 61 6c 28 74 e root $manual(t
3300: 61 69 6c 29 5d 0a 09 74 72 79 20 7b 0a 09 20 20 ail)]..try {..
3310: 20 20 73 65 74 20 74 65 78 74 20 24 6d 61 6e 75 set text $manu
3320: 61 6c 28 6f 75 74 70 75 74 2d 24 6d 61 6e 75 61 al(output-$manua
3330: 6c 28 77 69 6e 67 2d 66 69 6c 65 29 2d 24 6d 61 l(wing-file)-$ma
3340: 6e 75 61 6c 28 6e 61 6d 65 29 29 0a 09 20 20 20 nual(name))..
3350: 20 73 65 74 20 6e 74 65 78 74 20 30 0a 09 20 20 set ntext 0..
3360: 20 20 66 6f 72 65 61 63 68 20 69 74 65 6d 20 24 foreach item $
3370: 74 65 78 74 20 7b 0a 09 09 69 6e 63 72 20 6e 74 text {...incr nt
3380: 65 78 74 20 5b 6c 6c 65 6e 67 74 68 20 5b 73 70 ext [llength [sp
3390: 6c 69 74 20 24 69 74 65 6d 20 5c 6e 5d 5d 0a 09 lit $item \n]]..
33a0: 09 69 6e 63 72 20 6e 74 65 78 74 0a 09 20 20 20 .incr ntext..
33b0: 20 7d 0a 09 20 20 20 20 73 65 74 20 74 6f 63 20 }.. set toc
33c0: 24 6d 61 6e 75 61 6c 28 74 6f 63 2d 24 6d 61 6e $manual(toc-$man
33d0: 75 61 6c 28 77 69 6e 67 2d 66 69 6c 65 29 2d 24 ual(wing-file)-$
33e0: 6d 61 6e 75 61 6c 28 6e 61 6d 65 29 29 0a 09 20 manual(name))..
33f0: 20 20 20 73 65 74 20 6e 74 6f 63 20 30 0a 09 20 set ntoc 0..
3400: 20 20 20 66 6f 72 65 61 63 68 20 69 74 65 6d 20 foreach item
3410: 24 74 6f 63 20 7b 0a 09 09 69 6e 63 72 20 6e 74 $toc {...incr nt
3420: 6f 63 20 5b 6c 6c 65 6e 67 74 68 20 5b 73 70 6c oc [llength [spl
3430: 69 74 20 24 69 74 65 6d 20 5c 6e 5d 5d 0a 09 09 it $item \n]]...
3440: 69 6e 63 72 20 6e 74 6f 63 0a 09 20 20 20 20 7d incr ntoc.. }
3450: 0a 09 20 20 20 20 69 66 20 7b 24 76 65 72 62 6f .. if {$verbo
3460: 73 65 7d 20 7b 0a 09 09 70 75 74 73 20 73 74 64 se} {...puts std
3470: 65 72 72 20 22 72 65 73 63 61 6e 6e 69 6e 67 20 err "rescanning
3480: 70 61 67 65 20 24 6d 61 6e 75 61 6c 28 6e 61 6d page $manual(nam
3490: 65 29 20 24 6e 74 6f 63 2f 24 6e 74 65 78 74 22 e) $ntoc/$ntext"
34a0: 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 .. } else {..
34b0: 09 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65 .puts -nonewline
34c0: 20 73 74 64 65 72 72 20 2e 0a 09 20 20 20 20 7d stderr ... }
34d0: 0a 09 20 20 20 20 73 65 74 20 6f 75 74 66 64 20 .. set outfd
34e0: 5b 6f 70 65 6e 20 24 68 74 6d 6c 2f 24 6d 61 6e [open $html/$man
34f0: 75 61 6c 28 77 69 6e 67 2d 66 69 6c 65 29 2f 24 ual(wing-file)/$
3500: 6d 61 6e 75 61 6c 28 6e 61 6d 65 29 2e 68 74 6d manual(name).htm
3510: 6c 20 77 5d 0a 09 20 20 20 20 66 63 6f 6e 66 69 l w].. fconfi
3520: 67 75 72 65 20 24 6f 75 74 66 64 20 2d 74 72 61 gure $outfd -tra
3530: 6e 73 6c 61 74 69 6f 6e 20 6c 66 20 2d 65 6e 63 nslation lf -enc
3540: 6f 64 69 6e 67 20 75 74 66 2d 38 0a 09 20 20 20 oding utf-8..
3550: 20 70 75 74 73 20 24 6f 75 74 66 64 20 5b 68 74 puts $outfd [ht
3560: 6d 6c 68 65 61 64 20 22 24 6d 61 6e 75 61 6c 28 mlhead "$manual(
3570: 24 6d 61 6e 75 61 6c 28 77 69 6e 67 2d 66 69 6c $manual(wing-fil
3580: 65 29 2d 24 6d 61 6e 75 61 6c 28 6e 61 6d 65 29 e)-$manual(name)
3590: 2d 74 69 74 6c 65 29 22 20 5c 0a 09 09 20 20 20 -title)" \...
35a0: 20 24 6d 61 6e 75 61 6c 28 6e 61 6d 65 29 20 24 $manual(name) $
35b0: 77 69 6e 67 5f 6e 61 6d 65 20 22 5b 69 6e 64 65 wing_name "[inde
35c0: 78 66 69 6c 65 5d 22 20 5c 0a 09 09 20 20 20 20 xfile]" \...
35d0: 24 6f 76 65 72 61 6c 6c 5f 74 69 74 6c 65 20 22 $overall_title "
35e0: 2e 2e 2f 5b 69 6e 64 65 78 66 69 6c 65 5d 22 5d ../[indexfile]"]
35f0: 0a 09 20 20 20 20 69 66 20 7b 28 24 6e 74 65 78 .. if {($ntex
3600: 74 20 3e 20 36 30 29 20 26 26 20 28 24 6e 74 6f t > 60) && ($nto
3610: 63 20 3e 20 33 32 29 7d 20 7b 0a 09 09 66 6f 72 c > 32)} {...for
3620: 65 61 63 68 20 69 74 65 6d 20 24 74 6f 63 20 7b each item $toc {
3630: 0a 09 09 20 20 20 20 70 75 74 73 20 24 6f 75 74 ... puts $out
3640: 66 64 20 24 69 74 65 6d 0a 09 09 7d 0a 09 20 20 fd $item...}..
3650: 20 20 7d 20 65 6c 73 65 69 66 20 7b 24 6d 61 6e } elseif {$man
3660: 75 61 6c 28 6e 61 6d 65 29 20 69 6e 20 24 66 6f ual(name) in $fo
3670: 72 63 65 64 5f 69 6e 64 65 78 5f 70 61 67 65 73 rced_index_pages
3680: 7d 20 7b 0a 09 09 69 66 20 7b 21 24 76 65 72 62 } {...if {!$verb
3690: 6f 73 65 7d 20 7b 70 75 74 73 20 73 74 64 65 72 ose} {puts stder
36a0: 72 20 22 22 7d 0a 09 09 6d 61 6e 65 72 72 6f 72 r ""}...manerror
36b0: 20 22 66 6f 72 63 69 6e 67 20 69 6e 64 65 78 20 "forcing index
36c0: 67 65 6e 65 72 61 74 69 6f 6e 22 0a 09 09 66 6f generation"...fo
36d0: 72 65 61 63 68 20 69 74 65 6d 20 24 74 6f 63 20 reach item $toc
36e0: 7b 0a 09 09 20 20 20 20 70 75 74 73 20 24 6f 75 {... puts $ou
36f0: 74 66 64 20 24 69 74 65 6d 0a 09 09 7d 0a 09 20 tfd $item...}..
3700: 20 20 20 7d 0a 09 20 20 20 20 66 6f 72 65 61 63 }.. foreac
3710: 68 20 69 74 65 6d 20 24 74 65 78 74 20 7b 0a 09 h item $text {..
3720: 09 70 75 74 73 20 24 6f 75 74 66 64 20 5b 69 6e .puts $outfd [in
3730: 73 65 72 74 2d 63 72 6f 73 73 2d 72 65 66 65 72 sert-cross-refer
3740: 65 6e 63 65 73 20 24 69 74 65 6d 5d 0a 09 20 20 ences $item]..
3750: 20 20 7d 0a 09 20 20 20 20 70 75 74 73 20 24 6f }.. puts $o
3760: 75 74 66 64 20 22 3c 2f 62 6f 64 79 3e 3c 2f 68 utfd "</body></h
3770: 74 6d 6c 3e 22 0a 09 7d 20 6f 6e 20 65 72 72 6f tml>"..} on erro
3780: 72 20 6d 73 67 20 7b 0a 09 20 20 20 20 69 66 20 r msg {.. if
3790: 7b 24 76 65 72 62 6f 73 65 7d 20 7b 0a 09 09 70 {$verbose} {...p
37a0: 75 74 73 20 73 74 64 65 72 72 20 24 6d 73 67 0a uts stderr $msg.
37b0: 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 . } else {...
37c0: 70 75 74 73 20 73 74 64 65 72 72 20 22 5c 6e 45 puts stderr "\nE
37d0: 72 72 6f 72 20 77 68 65 6e 20 70 72 6f 63 65 73 rror when proces
37e0: 73 69 6e 67 20 24 6d 61 6e 75 61 6c 28 6e 61 6d sing $manual(nam
37f0: 65 29 3a 20 24 6d 73 67 22 0a 09 20 20 20 20 7d e): $msg".. }
3800: 0a 09 7d 20 66 69 6e 61 6c 6c 79 20 7b 0a 09 20 ..} finally {..
3810: 20 20 20 63 61 74 63 68 20 7b 63 6c 6f 73 65 20 catch {close
3820: 24 6f 75 74 66 64 7d 0a 09 7d 0a 20 20 20 20 7d $outfd}..}. }
3830: 0a 20 20 20 20 69 66 20 7b 21 24 76 65 72 62 6f . if {!$verbo
3840: 73 65 7d 20 7b 0a 09 70 75 74 73 20 73 74 64 65 se} {..puts stde
3850: 72 72 20 22 5c 6e 44 6f 6e 65 22 0a 20 20 20 20 rr "\nDone".
3860: 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 7b 7d 0a }. return {}.
3870: 7d 0a 0c 0a 23 23 0a 23 23 20 48 65 6c 70 65 72 }...##.## Helper
3880: 20 66 6f 72 20 61 73 73 65 6d 62 6c 69 6e 67 20 for assembling
3890: 74 68 65 20 64 65 73 63 72 69 70 74 69 6f 6e 73 the descriptions
38a0: 20 6f 66 20 62 61 73 65 20 70 61 63 6b 61 67 65 of base package
38b0: 73 20 28 69 2e 65 2e 2c 20 54 63 6c 20 61 6e 64 s (i.e., Tcl and
38c0: 20 54 6b 29 2e 0a 23 23 0a 70 72 6f 63 20 70 6c Tk)..##.proc pl
38d0: 75 73 2d 62 61 73 65 20 7b 76 61 72 20 72 6f 6f us-base {var roo
38e0: 74 20 67 6c 6f 62 20 6e 61 6d 65 20 64 69 72 20 t glob name dir
38f0: 64 65 73 63 7d 20 7b 0a 20 20 20 20 67 6c 6f 62 desc} {. glob
3900: 61 6c 20 74 63 6c 74 6b 64 69 72 0a 20 20 20 20 al tcltkdir.
3910: 69 66 20 7b 24 76 61 72 7d 20 7b 0a 09 69 66 20 if {$var} {..if
3920: 7b 5b 66 69 6c 65 20 65 78 69 73 74 73 20 24 74 {[file exists $t
3930: 63 6c 74 6b 64 69 72 2f 24 72 6f 6f 74 2f 52 45 cltkdir/$root/RE
3940: 41 44 4d 45 2e 6d 64 5d 7d 20 7b 0a 09 20 20 20 ADME.md]} {..
3950: 20 73 65 74 20 66 20 5b 6f 70 65 6e 20 24 74 63 set f [open $tc
3960: 6c 74 6b 64 69 72 2f 24 72 6f 6f 74 2f 52 45 41 ltkdir/$root/REA
3970: 44 4d 45 2e 6d 64 5d 0a 09 20 20 20 20 66 63 6f DME.md].. fco
3980: 6e 66 69 67 75 72 65 20 24 66 20 2d 65 6e 63 6f nfigure $f -enco
3990: 64 69 6e 67 20 75 74 66 2d 38 0a 09 20 20 20 20 ding utf-8..
39a0: 73 65 74 20 64 20 5b 72 65 61 64 20 24 66 5d 0a set d [read $f].
39b0: 09 20 20 20 20 63 6c 6f 73 65 20 24 66 0a 09 20 . close $f..
39c0: 20 20 20 69 66 20 7b 5b 72 65 67 65 78 70 20 7b if {[regexp {
39d0: 54 68 69 73 20 69 73 20 74 68 65 20 5c 2a 5c 2a This is the \*\*
39e0: 5c 77 2b 20 28 5c 53 2b 29 5c 2a 5c 2a 20 73 6f \w+ (\S+)\*\* so
39f0: 75 72 63 65 20 64 69 73 74 72 69 62 75 74 69 6f urce distributio
3a00: 6e 7d 20 24 64 20 2d 3e 20 76 65 72 73 69 6f 6e n} $d -> version
3a10: 5d 7d 20 7b 0a 09 20 20 20 20 20 20 20 61 70 70 ]} {.. app
3a20: 65 6e 64 20 6e 61 6d 65 20 22 2c 20 76 65 72 73 end name ", vers
3a30: 69 6f 6e 20 24 76 65 72 73 69 6f 6e 22 0a 09 20 ion $version"..
3a40: 20 20 20 7d 0a 09 7d 0a 09 73 65 74 20 67 6c 6f }..}..set glo
3a50: 62 20 24 72 6f 6f 74 2f 24 67 6c 6f 62 0a 09 72 b $root/$glob..r
3a60: 65 74 75 72 6e 20 5b 6c 69 73 74 20 24 74 63 6c eturn [list $tcl
3a70: 74 6b 64 69 72 2f 24 67 6c 6f 62 20 24 6e 61 6d tkdir/$glob $nam
3a80: 65 20 24 64 69 72 20 24 64 65 73 63 5d 0a 20 20 e $dir $desc].
3a90: 20 20 7d 0a 7d 0a 0a 23 23 0a 23 23 20 48 65 6c }.}..##.## Hel
3aa0: 70 65 72 20 66 6f 72 20 61 73 73 65 6d 62 6c 69 per for assembli
3ab0: 6e 67 20 74 68 65 20 64 65 73 63 72 69 70 74 69 ng the descripti
3ac0: 6f 6e 73 20 6f 66 20 63 6f 6e 74 72 69 62 75 74 ons of contribut
3ad0: 65 64 20 70 61 63 6b 61 67 65 73 2e 0a 23 23 0a ed packages..##.
3ae0: 70 72 6f 63 20 70 6c 75 73 2d 70 6b 67 73 20 7b proc plus-pkgs {
3af0: 74 79 70 65 20 61 72 67 73 7d 20 7b 0a 20 20 20 type args} {.
3b00: 20 67 6c 6f 62 61 6c 20 62 75 69 6c 64 5f 74 63 global build_tc
3b10: 6c 20 74 63 6c 74 6b 64 69 72 20 74 63 6c 64 69 l tcltkdir tcldi
3b20: 72 0a 20 20 20 20 69 66 20 7b 24 74 79 70 65 20 r. if {$type
3b30: 6e 69 20 7b 6e 20 33 7d 7d 20 7b 0a 09 65 72 72 ni {n 3}} {..err
3b40: 6f 72 20 22 75 6e 6b 6e 6f 77 6e 20 74 79 70 65 or "unknown type
3b50: 20 5c 22 24 74 79 70 65 5c 22 3a 20 6d 75 73 74 \"$type\": must
3b60: 20 62 65 20 33 20 6f 72 20 6e 22 0a 20 20 20 20 be 3 or n".
3b70: 7d 0a 20 20 20 20 69 66 20 7b 21 24 62 75 69 6c }. if {!$buil
3b80: 64 5f 74 63 6c 7d 20 72 65 74 75 72 6e 0a 20 20 d_tcl} return.
3b90: 20 20 73 65 74 20 72 65 73 75 6c 74 20 7b 7d 0a set result {}.
3ba0: 20 20 20 20 73 65 74 20 70 6b 67 73 64 69 72 20 set pkgsdir
3bb0: 24 74 63 6c 74 6b 64 69 72 2f 24 74 63 6c 64 69 $tcltkdir/$tcldi
3bc0: 72 2f 70 6b 67 73 0a 20 20 20 20 66 6f 72 65 61 r/pkgs. forea
3bd0: 63 68 20 7b 64 69 72 20 6e 61 6d 65 20 76 65 72 ch {dir name ver
3be0: 73 69 6f 6e 7d 20 24 61 72 67 73 20 7b 0a 09 73 sion} $args {..s
3bf0: 65 74 20 67 6c 6f 62 70 61 74 20 24 70 6b 67 73 et globpat $pkgs
3c00: 64 69 72 2f 24 64 69 72 2f 64 6f 63 2f 2a 2e 24 dir/$dir/doc/*.$
3c10: 74 79 70 65 0a 09 69 66 20 7b 21 5b 6c 6c 65 6e type..if {![llen
3c20: 67 74 68 20 5b 67 6c 6f 62 20 2d 74 79 70 65 20 gth [glob -type
3c30: 66 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 24 67 f -nocomplain $g
3c40: 6c 6f 62 70 61 74 5d 5d 7d 20 7b 0a 09 20 20 20 lobpat]]} {..
3c50: 20 23 20 46 61 6c 6c 62 61 63 6b 20 66 6f 72 20 # Fallback for
3c60: 6d 61 6e 70 61 67 65 73 20 67 65 6e 65 72 61 74 manpages generat
3c70: 65 64 20 75 73 69 6e 67 20 64 6f 63 74 6f 6f 6c ed using doctool
3c80: 73 0a 09 20 20 20 20 73 65 74 20 67 6c 6f 62 70 s.. set globp
3c90: 61 74 20 24 70 6b 67 73 64 69 72 2f 24 64 69 72 at $pkgsdir/$dir
3ca0: 2f 64 6f 63 2f 6d 61 6e 2f 2a 2e 24 74 79 70 65 /doc/man/*.$type
3cb0: 0a 09 20 20 20 20 69 66 20 7b 21 5b 6c 6c 65 6e .. if {![llen
3cc0: 67 74 68 20 5b 67 6c 6f 62 20 2d 74 79 70 65 20 gth [glob -type
3cd0: 66 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 24 67 f -nocomplain $g
3ce0: 6c 6f 62 70 61 74 5d 5d 7d 20 7b 0a 09 09 63 6f lobpat]]} {...co
3cf0: 6e 74 69 6e 75 65 0a 09 20 20 20 20 7d 0a 09 7d ntinue.. }..}
3d00: 0a 09 73 65 74 20 64 69 72 20 5b 73 74 72 69 6e ..set dir [strin
3d10: 67 20 74 72 69 6d 72 69 67 68 74 20 24 64 69 72 g trimright $dir
3d20: 20 22 30 31 32 33 34 35 36 37 38 39 2d 2e 22 5d "0123456789-."]
3d30: 0a 09 73 77 69 74 63 68 20 24 74 79 70 65 20 7b ..switch $type {
3d40: 0a 09 20 20 20 20 6e 20 7b 0a 09 09 73 65 74 20 .. n {...set
3d50: 74 69 74 6c 65 20 22 24 6e 61 6d 65 20 50 61 63 title "$name Pac
3d60: 6b 61 67 65 20 43 6f 6d 6d 61 6e 64 73 22 0a 09 kage Commands"..
3d70: 09 69 66 20 7b 24 76 65 72 73 69 6f 6e 20 6e 65 .if {$version ne
3d80: 20 22 22 7d 20 7b 0a 09 09 20 20 20 20 61 70 70 ""} {... app
3d90: 65 6e 64 20 74 69 74 6c 65 20 22 2c 20 76 65 72 end title ", ver
3da0: 73 69 6f 6e 20 24 76 65 72 73 69 6f 6e 22 0a 09 sion $version"..
3db0: 09 7d 0a 09 09 73 65 74 20 64 69 72 20 5b 73 74 .}...set dir [st
3dc0: 72 69 6e 67 20 74 6f 74 69 74 6c 65 20 24 64 69 ring totitle $di
3dd0: 72 5d 43 6d 64 0a 09 09 73 65 74 20 64 65 73 63 r]Cmd...set desc
3de0: 20 5c 0a 09 09 20 20 20 20 22 54 68 65 20 61 64 \... "The ad
3df0: 64 69 74 69 6f 6e 61 6c 20 63 6f 6d 6d 61 6e 64 ditional command
3e00: 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 s provided by th
3e10: 65 20 24 6e 61 6d 65 20 70 61 63 6b 61 67 65 2e e $name package.
3e20: 22 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 33 20 ".. }.. 3
3e30: 7b 0a 09 09 73 65 74 20 74 69 74 6c 65 20 22 24 {...set title "$
3e40: 6e 61 6d 65 20 50 61 63 6b 61 67 65 20 43 20 41 name Package C A
3e50: 50 49 22 0a 09 09 69 66 20 7b 24 76 65 72 73 69 PI"...if {$versi
3e60: 6f 6e 20 6e 65 20 22 22 7d 20 7b 0a 09 09 20 20 on ne ""} {...
3e70: 20 20 61 70 70 65 6e 64 20 74 69 74 6c 65 20 22 append title "
3e80: 2c 20 76 65 72 73 69 6f 6e 20 24 76 65 72 73 69 , version $versi
3e90: 6f 6e 22 0a 09 09 7d 0a 09 09 73 65 74 20 64 69 on"...}...set di
3ea0: 72 20 5b 73 74 72 69 6e 67 20 74 6f 74 69 74 6c r [string totitl
3eb0: 65 20 24 64 69 72 5d 4c 69 62 0a 09 09 73 65 74 e $dir]Lib...set
3ec0: 20 64 65 73 63 20 5c 0a 09 09 20 20 20 20 22 54 desc \... "T
3ed0: 68 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 43 20 he additional C
3ee0: 66 75 6e 63 74 69 6f 6e 73 20 70 72 6f 76 69 64 functions provid
3ef0: 65 64 20 62 79 20 74 68 65 20 24 6e 61 6d 65 20 ed by the $name
3f00: 70 61 63 6b 61 67 65 2e 22 0a 09 20 20 20 20 7d package.".. }
3f10: 0a 09 7d 0a 09 6c 61 70 70 65 6e 64 20 72 65 73 ..}..lappend res
3f20: 75 6c 74 20 5b 6c 69 73 74 20 24 67 6c 6f 62 70 ult [list $globp
3f30: 61 74 20 24 74 69 74 6c 65 20 24 64 69 72 20 24 at $title $dir $
3f40: 64 65 73 63 5d 0a 20 20 20 20 7d 0a 20 20 20 20 desc]. }.
3f50: 72 65 74 75 72 6e 20 24 72 65 73 75 6c 74 0a 7d return $result.}
3f60: 0a 0c 0a 23 23 0a 23 23 20 53 65 74 20 75 70 20 ...##.## Set up
3f70: 73 6f 6d 65 20 73 70 65 63 69 61 6c 20 63 61 73 some special cas
3f80: 65 73 2e 20 49 74 20 77 6f 75 6c 64 20 62 65 20 es. It would be
3f90: 6e 69 63 65 20 69 66 20 77 65 20 64 69 64 6e 27 nice if we didn'
3fa0: 74 20 68 61 76 65 20 74 68 65 6d 2c 0a 23 23 20 t have them,.##
3fb0: 62 75 74 20 77 65 20 64 6f 2e 2e 2e 0a 23 23 0a but we do....##.
3fc0: 73 65 74 20 65 78 63 6c 75 64 65 64 5f 70 61 67 set excluded_pag
3fd0: 65 73 20 7b 7d 0a 73 65 74 20 66 6f 72 63 65 64 es {}.set forced
3fe0: 5f 69 6e 64 65 78 5f 70 61 67 65 73 20 7b 47 65 _index_pages {Ge
3ff0: 74 44 61 73 68 7d 0a 73 65 74 20 70 72 6f 63 65 tDash}.set proce
4000: 73 73 5f 66 69 72 73 74 5f 70 61 74 74 65 72 6e ss_first_pattern
4010: 73 20 7b 2a 2f 74 74 6b 5f 77 69 64 67 65 74 2e s {*/ttk_widget.
4020: 6e 20 2a 2f 6f 70 74 69 6f 6e 73 2e 6e 7d 0a 73 n */options.n}.s
4030: 65 74 20 65 6e 73 65 6d 62 6c 65 5f 63 6f 6d 6d et ensemble_comm
4040: 61 6e 64 73 20 7b 0a 20 20 20 20 61 66 74 65 72 ands {. after
4050: 20 61 72 72 61 79 20 62 69 6e 61 72 79 20 63 68 array binary ch
4060: 61 6e 20 63 6c 6f 63 6b 20 64 64 65 20 64 69 63 an clock dde dic
4070: 74 20 65 6e 63 6f 64 69 6e 67 20 66 69 6c 65 20 t encoding file
4080: 68 69 73 74 6f 72 79 20 69 6e 66 6f 20 69 6e 74 history info int
4090: 65 72 70 0a 20 20 20 20 6d 65 6d 6f 72 79 20 6e erp. memory n
40a0: 61 6d 65 73 70 61 63 65 20 70 61 63 6b 61 67 65 amespace package
40b0: 20 72 65 67 69 73 74 72 79 20 73 65 6c 66 20 73 registry self s
40c0: 74 72 69 6e 67 20 74 72 61 63 65 20 75 70 64 61 tring trace upda
40d0: 74 65 20 7a 6c 69 62 0a 20 20 20 20 63 6c 69 70 te zlib. clip
40e0: 62 6f 61 72 64 20 63 6f 6e 73 6f 6c 65 20 66 6f board console fo
40f0: 6e 74 20 67 72 61 62 20 67 72 69 64 20 69 6d 61 nt grab grid ima
4100: 67 65 20 6f 70 74 69 6f 6e 20 70 61 63 6b 20 70 ge option pack p
4110: 6c 61 63 65 20 73 65 6c 65 63 74 69 6f 6e 20 74 lace selection t
4120: 6b 0a 20 20 20 20 74 6b 77 61 69 74 20 74 74 6b k. tkwait ttk
4130: 3a 3a 73 74 79 6c 65 20 77 69 6e 66 6f 20 77 6d ::style winfo wm
4140: 20 69 74 63 6c 3a 3a 64 65 6c 65 74 65 20 69 74 itcl::delete it
4150: 63 6c 3a 3a 66 69 6e 64 20 69 74 63 6c 3a 3a 69 cl::find itcl::i
4160: 73 0a 7d 0a 61 72 72 61 79 20 73 65 74 20 72 65 s.}.array set re
4170: 6d 61 70 5f 6c 69 6e 6b 5f 74 61 72 67 65 74 20 map_link_target
4180: 7b 0a 20 20 20 20 73 74 64 69 6e 20 20 54 63 6c {. stdin Tcl
4190: 5f 47 65 74 53 74 64 43 68 61 6e 6e 65 6c 0a 20 _GetStdChannel.
41a0: 20 20 20 73 74 64 6f 75 74 20 54 63 6c 5f 47 65 stdout Tcl_Ge
41b0: 74 53 74 64 43 68 61 6e 6e 65 6c 0a 20 20 20 20 tStdChannel.
41c0: 73 74 64 65 72 72 20 54 63 6c 5f 47 65 74 53 74 stderr Tcl_GetSt
41d0: 64 43 68 61 6e 6e 65 6c 0a 20 20 20 20 73 74 79 dChannel. sty
41e0: 6c 65 20 20 74 74 6b 3a 3a 73 74 79 6c 65 0a 20 le ttk::style.
41f0: 20 20 20 7b 73 74 79 6c 65 20 6d 61 70 7d 20 74 {style map} t
4200: 74 6b 3a 3a 73 74 79 6c 65 0a 20 20 20 20 7b 74 tk::style. {t
4210: 6b 20 62 75 73 79 7d 20 20 20 62 75 73 79 0a 20 k busy} busy.
4220: 20 20 20 6c 69 62 72 61 72 79 20 20 20 20 20 61 library a
4230: 75 74 6f 5f 65 78 65 63 6f 6b 0a 20 20 20 20 73 uto_execok. s
4240: 61 66 65 2d 74 63 6c 20 20 20 20 73 61 66 65 0a afe-tcl safe.
4250: 20 20 20 20 74 63 6c 76 61 72 73 20 20 20 20 20 tclvars
4260: 65 6e 76 0a 20 20 20 20 74 63 6c 5f 62 72 65 61 env. tcl_brea
4270: 6b 20 20 20 63 61 74 63 68 0a 20 20 20 20 74 63 k catch. tc
4280: 6c 5f 63 6f 6e 74 69 6e 75 65 20 63 61 74 63 68 l_continue catch
4290: 0a 20 20 20 20 74 63 6c 5f 65 72 72 6f 72 20 20 . tcl_error
42a0: 20 63 61 74 63 68 0a 20 20 20 20 74 63 6c 5f 6f catch. tcl_o
42b0: 6b 20 20 20 20 20 20 63 61 74 63 68 0a 20 20 20 k catch.
42c0: 20 74 63 6c 5f 72 65 74 75 72 6e 20 20 63 61 74 tcl_return cat
42d0: 63 68 0a 20 20 20 20 69 6e 74 28 29 20 20 20 20 ch. int()
42e0: 20 20 20 6d 61 74 68 66 75 6e 63 0a 20 20 20 20 mathfunc.
42f0: 77 69 64 65 28 29 20 20 20 20 20 20 6d 61 74 68 wide() math
4300: 66 75 6e 63 0a 20 20 20 20 70 61 63 6b 61 67 65 func. package
4310: 6e 73 20 20 20 70 6b 67 3a 3a 63 72 65 61 74 65 ns pkg::create
4320: 0a 20 20 20 20 70 6b 67 4d 6b 49 6e 64 65 78 20 . pkgMkIndex
4330: 20 70 6b 67 5f 6d 6b 49 6e 64 65 78 0a 20 20 20 pkg_mkIndex.
4340: 20 70 6b 67 5f 6d 6b 49 6e 64 65 78 20 70 6b 67 pkg_mkIndex pkg
4350: 5f 6d 6b 49 6e 64 65 78 0a 20 20 20 20 54 63 6c _mkIndex. Tcl
4360: 5f 4f 62 6a 20 20 20 20 20 54 63 6c 5f 4e 65 77 _Obj Tcl_New
4370: 4f 62 6a 0a 20 20 20 20 54 63 6c 5f 4f 62 6a 54 Obj. Tcl_ObjT
4380: 79 70 65 20 54 63 6c 5f 52 65 67 69 73 74 65 72 ype Tcl_Register
4390: 4f 62 6a 54 79 70 65 0a 20 20 20 20 54 63 6c 5f ObjType. Tcl_
43a0: 4f 70 65 6e 46 69 6c 65 43 68 61 6e 6e 65 6c 50 OpenFileChannelP
43b0: 72 6f 63 20 54 63 6c 5f 46 53 4f 70 65 6e 46 69 roc Tcl_FSOpenFi
43c0: 6c 65 43 68 61 6e 6e 65 6c 0a 20 20 20 20 65 72 leChannel. er
43d0: 72 6f 72 69 6e 66 6f 09 65 6e 76 0a 20 20 20 20 rorinfo.env.
43e0: 65 72 72 6f 72 63 6f 64 65 09 65 6e 76 0a 20 20 errorcode.env.
43f0: 20 20 74 63 6c 5f 70 6b 67 70 61 74 68 20 65 6e tcl_pkgpath en
4400: 76 0a 20 20 20 20 54 63 6c 5f 43 6f 6d 6d 61 6e v. Tcl_Comman
4410: 64 20 54 63 6c 5f 43 72 65 61 74 65 4f 62 6a 43 d Tcl_CreateObjC
4420: 6f 6d 6d 61 6e 64 0a 20 20 20 20 54 63 6c 5f 43 ommand. Tcl_C
4430: 6d 64 50 72 6f 63 20 54 63 6c 5f 43 72 65 61 74 mdProc Tcl_Creat
4440: 65 4f 62 6a 43 6f 6d 6d 61 6e 64 0a 20 20 20 20 eObjCommand.
4450: 54 63 6c 5f 43 6d 64 44 65 6c 65 74 65 50 72 6f Tcl_CmdDeletePro
4460: 63 20 54 63 6c 5f 43 72 65 61 74 65 4f 62 6a 43 c Tcl_CreateObjC
4470: 6f 6d 6d 61 6e 64 0a 20 20 20 20 54 63 6c 5f 4f ommand. Tcl_O
4480: 62 6a 43 6d 64 50 72 6f 63 20 54 63 6c 5f 43 72 bjCmdProc Tcl_Cr
4490: 65 61 74 65 4f 62 6a 43 6f 6d 6d 61 6e 64 0a 20 eateObjCommand.
44a0: 20 20 20 54 63 6c 5f 43 68 61 6e 6e 65 6c 20 54 Tcl_Channel T
44b0: 63 6c 5f 4f 70 65 6e 46 69 6c 65 43 68 61 6e 6e cl_OpenFileChann
44c0: 65 6c 0a 20 20 20 20 54 63 6c 5f 57 69 64 65 49 el. Tcl_WideI
44d0: 6e 74 20 54 63 6c 5f 4e 65 77 49 6e 74 4f 62 6a nt Tcl_NewIntObj
44e0: 0a 20 20 20 20 54 63 6c 5f 43 68 61 6e 6e 65 6c . Tcl_Channel
44f0: 54 79 70 65 20 54 63 6c 5f 43 72 65 61 74 65 43 Type Tcl_CreateC
4500: 68 61 6e 6e 65 6c 0a 20 20 20 20 54 63 6c 5f 44 hannel. Tcl_D
4510: 53 74 72 69 6e 67 20 54 63 6c 5f 44 53 74 72 69 String Tcl_DStri
4520: 6e 67 49 6e 69 74 0a 20 20 20 20 54 63 6c 5f 4e ngInit. Tcl_N
4530: 61 6d 65 73 70 61 63 65 20 54 63 6c 5f 41 70 70 amespace Tcl_App
4540: 65 6e 64 45 78 70 6f 72 74 4c 69 73 74 0a 20 20 endExportList.
4550: 20 20 54 63 6c 5f 4f 62 6a 65 63 74 20 20 54 63 Tcl_Object Tc
4560: 6c 5f 4e 65 77 4f 62 6a 65 63 74 49 6e 73 74 61 l_NewObjectInsta
4570: 6e 63 65 0a 20 20 20 20 54 63 6c 5f 43 6c 61 73 nce. Tcl_Clas
4580: 73 20 20 20 54 63 6c 5f 47 65 74 4f 62 6a 65 63 s Tcl_GetObjec
4590: 74 41 73 43 6c 61 73 73 0a 20 20 20 20 54 63 6c tAsClass. Tcl
45a0: 5f 45 76 65 6e 74 20 20 20 54 63 6c 5f 51 75 65 _Event Tcl_Que
45b0: 75 65 45 76 65 6e 74 0a 20 20 20 20 54 63 6c 5f ueEvent. Tcl_
45c0: 54 69 6d 65 09 54 63 6c 5f 47 65 74 54 69 6d 65 Time.Tcl_GetTime
45d0: 0a 20 20 20 20 54 63 6c 5f 54 68 72 65 61 64 49 . Tcl_ThreadI
45e0: 64 20 54 63 6c 5f 43 72 65 61 74 65 54 68 72 65 d Tcl_CreateThre
45f0: 61 64 0a 20 20 20 20 54 6b 5f 57 69 6e 64 6f 77 ad. Tk_Window
4600: 09 54 6b 5f 57 69 6e 64 6f 77 49 64 0a 20 20 20 .Tk_WindowId.
4610: 20 54 6b 5f 33 44 42 6f 72 64 65 72 20 54 6b 5f Tk_3DBorder Tk_
4620: 47 65 74 33 44 42 6f 72 64 65 72 0a 20 20 20 20 Get3DBorder.
4630: 54 6b 5f 41 6e 63 68 6f 72 09 54 6b 5f 47 65 74 Tk_Anchor.Tk_Get
4640: 41 6e 63 68 6f 72 0a 20 20 20 20 54 6b 5f 43 75 Anchor. Tk_Cu
4650: 72 73 6f 72 09 54 6b 5f 47 65 74 43 75 72 73 6f rsor.Tk_GetCurso
4660: 72 0a 20 20 20 20 54 6b 5f 44 61 73 68 09 54 6b r. Tk_Dash.Tk
4670: 5f 47 65 74 44 61 73 68 0a 20 20 20 20 54 6b 5f _GetDash. Tk_
4680: 46 6f 6e 74 09 54 6b 5f 47 65 74 46 6f 6e 74 0a Font.Tk_GetFont.
4690: 20 20 20 20 54 6b 5f 49 6d 61 67 65 09 54 6b 5f Tk_Image.Tk_
46a0: 47 65 74 49 6d 61 67 65 0a 20 20 20 20 54 6b 5f GetImage. Tk_
46b0: 49 6d 61 67 65 4d 61 73 74 65 72 20 54 6b 5f 47 ImageMaster Tk_G
46c0: 65 74 49 6d 61 67 65 0a 20 20 20 20 54 6b 5f 49 etImage. Tk_I
46d0: 6d 61 67 65 4d 6f 64 65 6c 20 54 6b 5f 47 65 74 mageModel Tk_Get
46e0: 49 6d 61 67 65 0a 20 20 20 20 54 6b 5f 49 74 65 Image. Tk_Ite
46f0: 6d 54 79 70 65 20 54 6b 5f 43 72 65 61 74 65 49 mType Tk_CreateI
4700: 74 65 6d 54 79 70 65 0a 20 20 20 20 54 6b 5f 4a temType. Tk_J
4710: 75 73 74 69 66 79 09 54 6b 5f 47 65 74 4a 75 73 ustify.Tk_GetJus
4720: 74 69 66 79 0a 20 20 20 20 54 74 6b 5f 54 68 65 tify. Ttk_The
4730: 6d 65 09 54 74 6b 5f 47 65 74 54 68 65 6d 65 0a me.Ttk_GetTheme.
4740: 7d 0a 61 72 72 61 79 20 73 65 74 20 65 78 63 6c }.array set excl
4750: 75 64 65 5f 72 65 66 73 5f 6d 61 70 20 7b 0a 20 ude_refs_map {.
4760: 20 20 20 62 69 6e 64 2e 6e 09 09 7b 62 75 74 74 bind.n..{butt
4770: 6f 6e 20 64 65 73 74 72 6f 79 20 6f 70 74 69 6f on destroy optio
4780: 6e 7d 0a 20 20 20 20 63 6c 6f 63 6b 2e 6e 09 09 n}. clock.n..
4790: 7b 6e 65 78 74 7d 0a 20 20 20 20 68 69 73 74 6f {next}. histo
47a0: 72 79 2e 6e 09 09 7b 65 78 65 63 7d 0a 20 20 20 ry.n..{exec}.
47b0: 20 6e 65 78 74 2e 6e 09 09 7b 75 6e 6b 6e 6f 77 next.n..{unknow
47c0: 6e 20 64 65 73 74 72 6f 79 7d 0a 20 20 20 20 7a n destroy}. z
47d0: 6c 69 62 2e 6e 09 09 7b 62 69 6e 61 72 79 20 63 lib.n..{binary c
47e0: 6c 6f 73 65 20 66 69 6c 65 6e 61 6d 65 20 74 65 lose filename te
47f0: 78 74 7d 0a 20 20 20 20 63 61 6e 76 61 73 2e 6e xt}. canvas.n
4800: 09 09 7b 62 69 74 6d 61 70 20 74 65 78 74 7d 0a ..{bitmap text}.
4810: 20 20 20 20 63 68 61 6e 2e 6e 09 09 7b 72 65 61 chan.n..{rea
4820: 64 7d 0a 20 20 20 20 63 6f 6e 73 6f 6c 65 2e 6e d}. console.n
4830: 09 09 7b 65 76 61 6c 7d 0a 20 20 20 20 63 68 65 ..{eval}. che
4840: 63 6b 62 75 74 74 6f 6e 2e 6e 09 7b 69 6d 61 67 ckbutton.n.{imag
4850: 65 7d 0a 20 20 20 20 63 6c 69 70 62 6f 61 72 64 e}. clipboard
4860: 2e 6e 09 09 7b 73 74 72 69 6e 67 7d 0a 20 20 20 .n..{string}.
4870: 20 63 6f 6f 6b 69 65 6a 61 72 2e 6e 09 09 7b 64 cookiejar.n..{d
4880: 65 73 74 72 6f 79 20 63 6f 6e 66 69 67 75 72 65 estroy configure
4890: 20 69 6e 66 6f 20 65 72 72 6f 72 20 73 65 74 7d info error set}
48a0: 0a 20 20 20 20 65 6e 74 72 79 2e 6e 09 09 7b 73 . entry.n..{s
48b0: 74 72 69 6e 67 7d 0a 20 20 20 20 65 76 65 6e 74 tring}. event
48c0: 2e 6e 09 09 7b 72 65 74 75 72 6e 7d 0a 20 20 20 .n..{return}.
48d0: 20 66 6f 6e 74 2e 6e 09 09 7b 6d 65 6e 75 7d 0a font.n..{menu}.
48e0: 20 20 20 20 67 65 74 4f 70 65 6e 46 69 6c 65 2e getOpenFile.
48f0: 6e 09 7b 66 69 6c 65 20 6f 70 65 6e 20 74 65 78 n.{file open tex
4900: 74 7d 0a 20 20 20 20 67 72 61 62 2e 6e 09 09 7b t}. grab.n..{
4910: 67 6c 6f 62 61 6c 7d 0a 20 20 20 20 68 74 74 70 global}. http
4920: 09 09 7b 65 72 72 6f 72 7d 0a 20 20 20 20 69 6e ..{error}. in
4930: 74 65 72 70 2e 6e 09 09 7b 74 69 6d 65 7d 0a 20 terp.n..{time}.
4940: 20 20 20 6d 65 6e 75 2e 6e 09 09 7b 63 68 65 63 menu.n..{chec
4950: 6b 62 75 74 74 6f 6e 20 72 61 64 69 6f 62 75 74 kbutton radiobut
4960: 74 6f 6e 7d 0a 20 20 20 20 6d 65 73 73 61 67 65 ton}. message
4970: 42 6f 78 2e 6e 09 7b 65 72 72 6f 72 20 69 6e 66 Box.n.{error inf
4980: 6f 7d 0a 20 20 20 20 6f 70 74 69 6f 6e 73 2e 6e o}. options.n
4990: 09 09 7b 62 69 74 6d 61 70 20 69 6d 61 67 65 20 ..{bitmap image
49a0: 73 65 74 7d 0a 20 20 20 20 72 61 64 69 6f 62 75 set}. radiobu
49b0: 74 74 6f 6e 2e 6e 09 7b 69 6d 61 67 65 7d 0a 20 tton.n.{image}.
49c0: 20 20 20 73 61 66 65 2e 6e 09 09 7b 6a 6f 69 6e safe.n..{join
49d0: 20 73 70 6c 69 74 7d 0a 20 20 20 20 73 63 61 6c split}. scal
49e0: 65 2e 6e 09 09 7b 6c 61 62 65 6c 20 76 61 72 69 e.n..{label vari
49f0: 61 62 6c 65 7d 0a 20 20 20 20 73 63 72 6f 6c 6c able}. scroll
4a00: 62 61 72 2e 6e 09 09 7b 73 65 74 7d 0a 20 20 20 bar.n..{set}.
4a10: 20 73 65 6c 65 63 74 69 6f 6e 2e 6e 09 09 7b 73 selection.n..{s
4a20: 74 72 69 6e 67 7d 0a 20 20 20 20 74 63 6c 74 65 tring}. tclte
4a30: 73 74 2e 6e 09 09 7b 65 72 72 6f 72 7d 0a 20 20 st.n..{error}.
4a40: 20 20 74 65 78 74 2e 6e 09 09 7b 62 69 6e 64 20 text.n..{bind
4a50: 69 6d 61 67 65 20 6c 6f 77 65 72 20 72 61 69 73 image lower rais
4a60: 65 7d 0a 20 20 20 20 74 6b 76 61 72 73 2e 6e 09 e}. tkvars.n.
4a70: 09 7b 74 6b 7d 0a 20 20 20 20 74 6b 77 61 69 74 .{tk}. tkwait
4a80: 2e 6e 09 09 7b 76 61 72 69 61 62 6c 65 7d 0a 20 .n..{variable}.
4a90: 20 20 20 74 6d 2e 6e 09 09 7b 65 78 65 63 7d 0a tm.n..{exec}.
4aa0: 20 20 20 20 74 74 6b 5f 63 68 65 63 6b 62 75 74 ttk_checkbut
4ab0: 74 6f 6e 2e 6e 09 7b 76 61 72 69 61 62 6c 65 7d ton.n.{variable}
4ac0: 0a 20 20 20 20 74 74 6b 5f 63 6f 6d 62 6f 62 6f . ttk_combobo
4ad0: 78 2e 6e 09 7b 73 65 6c 65 63 74 69 6f 6e 7d 0a x.n.{selection}.
4ae0: 20 20 20 20 74 74 6b 5f 65 6e 74 72 79 2e 6e 09 ttk_entry.n.
4af0: 09 7b 66 6f 63 75 73 20 76 61 72 69 61 62 6c 65 .{focus variable
4b00: 7d 0a 20 20 20 20 74 74 6b 5f 69 6e 74 72 6f 2e }. ttk_intro.
4b10: 6e 09 09 7b 66 6f 63 75 73 20 74 65 78 74 7d 0a n..{focus text}.
4b20: 20 20 20 20 74 74 6b 5f 6c 61 62 65 6c 2e 6e 09 ttk_label.n.
4b30: 09 7b 66 6f 6e 74 20 74 65 78 74 7d 0a 20 20 20 .{font text}.
4b40: 20 74 74 6b 5f 6c 61 62 65 6c 66 72 61 6d 65 2e ttk_labelframe.
4b50: 6e 09 7b 74 65 78 74 7d 0a 20 20 20 20 74 74 6b n.{text}. ttk
4b60: 5f 6d 65 6e 75 62 75 74 74 6f 6e 2e 6e 09 7b 66 _menubutton.n.{f
4b70: 6c 75 73 68 7d 0a 20 20 20 20 74 74 6b 5f 6e 6f lush}. ttk_no
4b80: 74 65 62 6f 6f 6b 2e 6e 09 7b 69 6d 61 67 65 20 tebook.n.{image
4b90: 74 65 78 74 7d 0a 20 20 20 20 74 74 6b 5f 70 72 text}. ttk_pr
4ba0: 6f 67 72 65 73 73 62 61 72 2e 6e 09 7b 76 61 72 ogressbar.n.{var
4bb0: 69 61 62 6c 65 7d 0a 20 20 20 20 74 74 6b 5f 72 iable}. ttk_r
4bc0: 61 64 69 6f 62 75 74 74 6f 6e 2e 6e 09 7b 76 61 adiobutton.n.{va
4bd0: 72 69 61 62 6c 65 7d 0a 20 20 20 20 74 74 6b 5f riable}. ttk_
4be0: 73 63 61 6c 65 2e 6e 09 09 7b 76 61 72 69 61 62 scale.n..{variab
4bf0: 6c 65 7d 0a 20 20 20 20 74 74 6b 5f 73 63 72 6f le}. ttk_scro
4c00: 6c 6c 62 61 72 2e 6e 09 7b 73 65 74 7d 0a 20 20 llbar.n.{set}.
4c10: 20 20 74 74 6b 5f 73 70 69 6e 62 6f 78 2e 6e 09 ttk_spinbox.n.
4c20: 7b 66 6f 72 6d 61 74 7d 0a 20 20 20 20 74 74 6b {format}. ttk
4c30: 5f 74 72 65 65 76 69 65 77 2e 6e 09 7b 74 65 78 _treeview.n.{tex
4c40: 74 20 6f 70 65 6e 20 66 6f 63 75 73 20 73 65 6c t open focus sel
4c50: 65 63 74 69 6f 6e 7d 0a 20 20 20 20 74 74 6b 5f ection}. ttk_
4c60: 77 69 64 67 65 74 2e 6e 09 7b 69 6d 61 67 65 20 widget.n.{image
4c70: 74 65 78 74 20 76 61 72 69 61 62 6c 65 7d 0a 20 text variable}.
4c80: 20 20 20 54 63 6c 5a 6c 69 62 2e 33 09 09 7b 62 TclZlib.3..{b
4c90: 69 6e 61 72 79 20 66 6c 75 73 68 20 66 69 6c 65 inary flush file
4ca0: 6e 61 6d 65 20 74 65 78 74 7d 0a 7d 0a 61 72 72 name text}.}.arr
4cb0: 61 79 20 73 65 74 20 65 78 63 6c 75 64 65 5f 77 ay set exclude_w
4cc0: 68 65 6e 5f 66 6f 6c 6c 6f 77 65 64 5f 62 79 5f hen_followed_by_
4cd0: 6d 61 70 20 7b 0a 20 20 20 20 63 61 6e 76 61 73 map {. canvas
4ce0: 2e 6e 20 7b 0a 09 62 69 6e 64 20 77 69 64 67 65 .n {..bind widge
4cf0: 74 0a 09 66 6f 63 75 73 20 77 69 64 67 65 74 0a t..focus widget.
4d00: 09 69 6d 61 67 65 20 61 72 65 0a 09 6c 6f 77 65 .image are..lowe
4d10: 72 20 77 69 64 67 65 74 0a 09 72 61 69 73 65 20 r widget..raise
4d20: 77 69 64 67 65 74 0a 20 20 20 20 7d 0a 20 20 20 widget. }.
4d30: 20 73 65 6c 65 63 74 69 6f 6e 2e 6e 20 7b 0a 09 selection.n {..
4d40: 63 6c 69 70 62 6f 61 72 64 20 73 65 6c 65 63 74 clipboard select
4d50: 69 6f 6e 0a 09 63 6c 69 70 62 6f 61 72 64 20 3b ion..clipboard ;
4d60: 0a 20 20 20 20 7d 0a 20 20 20 20 74 74 6b 5f 69 . }. ttk_i
4d70: 6d 61 67 65 2e 6e 20 7b 0a 09 69 6d 61 67 65 20 mage.n {..image
4d80: 69 6d 61 67 65 53 70 65 63 0a 20 20 20 20 7d 0a imageSpec. }.
4d90: 20 20 20 20 66 6f 6e 74 63 68 6f 6f 73 65 72 2e fontchooser.
4da0: 6e 20 7b 0a 09 74 6b 20 66 6f 6e 74 63 68 6f 6f n {..tk fontchoo
4db0: 73 65 72 0a 20 20 20 20 7d 0a 7d 0a 0c 0a 74 72 ser. }.}...tr
4dc0: 79 20 7b 0a 20 20 20 20 23 20 50 61 72 73 65 20 y {. # Parse
4dd0: 77 68 61 74 20 74 68 65 20 75 73 65 72 20 74 6f what the user to
4de0: 6c 64 20 75 73 20 74 6f 20 64 6f 0a 20 20 20 20 ld us to do.
4df0: 70 61 72 73 65 5f 63 6f 6d 6d 61 6e 64 5f 6c 69 parse_command_li
4e00: 6e 65 0a 0a 20 20 20 20 23 20 53 6f 6d 65 20 73 ne.. # Some s
4e10: 74 72 69 6e 67 73 20 64 65 70 65 6e 64 20 6f 6e trings depend on
4e20: 20 77 68 61 74 20 6f 70 74 69 6f 6e 73 20 61 72 what options ar
4e30: 65 20 73 70 65 63 69 66 69 65 64 0a 20 20 20 20 e specified.
4e40: 73 65 74 20 74 63 6c 74 6b 64 65 73 63 20 22 22 set tcltkdesc ""
4e50: 3b 20 73 65 74 20 63 6d 64 65 73 63 20 22 22 3b ; set cmdesc "";
4e60: 20 73 65 74 20 61 70 70 64 69 72 20 22 22 0a 20 set appdir "".
4e70: 20 20 20 69 66 20 7b 24 62 75 69 6c 64 5f 74 63 if {$build_tc
4e80: 6c 7d 20 7b 0a 09 61 70 70 65 6e 64 20 74 63 6c l} {..append tcl
4e90: 74 6b 64 65 73 63 20 22 54 63 6c 22 0a 09 61 70 tkdesc "Tcl"..ap
4ea0: 70 65 6e 64 20 63 6d 64 65 73 63 20 22 54 63 6c pend cmdesc "Tcl
4eb0: 22 0a 09 61 70 70 65 6e 64 20 61 70 70 64 69 72 "..append appdir
4ec0: 20 22 24 74 63 6c 64 69 72 22 0a 20 20 20 20 7d "$tcldir". }
4ed0: 0a 20 20 20 20 69 66 20 7b 24 62 75 69 6c 64 5f . if {$build_
4ee0: 74 63 6c 20 26 26 20 24 62 75 69 6c 64 5f 74 6b tcl && $build_tk
4ef0: 7d 20 7b 0a 09 61 70 70 65 6e 64 20 74 63 6c 74 } {..append tclt
4f00: 6b 64 65 73 63 20 22 2f 22 0a 09 61 70 70 65 6e kdesc "/"..appen
4f10: 64 20 63 6d 64 65 73 63 20 22 20 61 6e 64 20 22 d cmdesc " and "
4f20: 0a 09 61 70 70 65 6e 64 20 61 70 70 64 69 72 20 ..append appdir
4f30: 22 2c 22 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 ",". }. if
4f40: 20 7b 24 62 75 69 6c 64 5f 74 6b 7d 20 7b 0a 09 {$build_tk} {..
4f50: 61 70 70 65 6e 64 20 74 63 6c 74 6b 64 65 73 63 append tcltkdesc
4f60: 20 22 54 6b 22 0a 09 61 70 70 65 6e 64 20 63 6d "Tk"..append cm
4f70: 64 65 73 63 20 22 54 6b 22 0a 09 61 70 70 65 6e desc "Tk"..appen
4f80: 64 20 61 70 70 64 69 72 20 22 24 74 6b 64 69 72 d appdir "$tkdir
4f90: 22 0a 20 20 20 20 7d 0a 0a 20 20 20 20 61 70 70 ". }.. app
4fa0: 6c 79 20 7b 7b 7d 20 7b 0a 20 20 20 20 67 6c 6f ly {{} {. glo
4fb0: 62 61 6c 20 70 61 63 6b 61 67 65 42 75 69 6c 64 bal packageBuild
4fc0: 4c 69 73 74 20 74 63 6c 74 6b 64 69 72 20 74 63 List tcltkdir tc
4fd0: 6c 64 69 72 20 62 75 69 6c 64 5f 74 63 6c 0a 0a ldir build_tcl..
4fe0: 20 20 20 20 23 20 57 68 65 6e 20 62 75 69 6c 64 # When build
4ff0: 69 6e 67 20 64 6f 63 73 20 66 6f 72 20 54 63 6c ing docs for Tcl
5000: 2c 20 74 72 79 20 74 6f 20 62 75 69 6c 64 20 64 , try to build d
5010: 6f 63 73 20 66 6f 72 20 62 75 6e 64 6c 65 64 20 ocs for bundled
5020: 70 61 63 6b 61 67 65 73 20 74 6f 6f 0a 20 20 20 packages too.
5030: 20 73 65 74 20 70 61 63 6b 61 67 65 42 75 69 6c set packageBuil
5040: 64 4c 69 73 74 20 7b 7d 0a 20 20 20 20 69 66 20 dList {}. if
5050: 7b 24 62 75 69 6c 64 5f 74 63 6c 7d 20 7b 0a 09 {$build_tcl} {..
5060: 73 65 74 20 70 6b 67 73 44 69 72 20 5b 66 69 6c set pkgsDir [fil
5070: 65 20 6a 6f 69 6e 20 24 74 63 6c 74 6b 64 69 72 e join $tcltkdir
5080: 20 24 74 63 6c 64 69 72 20 70 6b 67 73 5d 0a 09 $tcldir pkgs]..
5090: 73 65 74 20 73 75 62 64 69 72 73 20 5b 67 6c 6f set subdirs [glo
50a0: 62 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 2d 74 b -nocomplain -t
50b0: 79 70 65 73 20 64 20 2d 74 61 69 6c 73 20 2d 64 ypes d -tails -d
50c0: 69 72 65 63 74 6f 72 79 20 24 70 6b 67 73 44 69 irectory $pkgsDi
50d0: 72 20 2a 5d 0a 0a 09 66 6f 72 65 61 63 68 20 64 r *]...foreach d
50e0: 69 72 20 5b 6c 73 6f 72 74 20 24 73 75 62 64 69 ir [lsort $subdi
50f0: 72 73 5d 20 7b 0a 09 20 20 20 20 23 20 50 61 72 rs] {.. # Par
5100: 73 65 20 74 68 65 20 73 75 62 64 69 72 20 6e 61 se the subdir na
5110: 6d 65 20 69 6e 74 6f 20 28 6e 61 6d 65 2c 20 76 me into (name, v
5120: 65 72 73 69 6f 6e 29 20 61 73 20 66 61 6c 6c 62 ersion) as fallb
5130: 61 63 6b 2e 2e 2e 0a 09 20 20 20 20 73 65 74 20 ack..... set
5140: 64 65 73 63 72 69 70 74 69 6f 6e 20 5b 73 70 6c description [spl
5150: 69 74 20 24 64 69 72 20 2d 5d 0a 09 20 20 20 20 it $dir -]..
5160: 69 66 20 7b 32 20 21 3d 20 5b 6c 6c 65 6e 67 74 if {2 != [llengt
5170: 68 20 24 64 65 73 63 72 69 70 74 69 6f 6e 5d 7d h $description]}
5180: 20 7b 0a 09 09 72 65 67 65 78 70 20 7b 28 5b 5e {...regexp {([^
5190: 30 2d 39 5d 2a 29 28 2e 2a 29 7d 20 24 64 69 72 0-9]*)(.*)} $dir
51a0: 20 2d 3e 20 6e 20 76 0a 09 09 73 65 74 20 64 65 -> n v...set de
51b0: 73 63 72 69 70 74 69 6f 6e 20 5b 6c 69 73 74 20 scription [list
51c0: 24 6e 20 24 76 5d 0a 09 20 20 20 20 7d 0a 0a 09 $n $v].. }...
51d0: 20 20 20 20 23 20 2e 2e 2e 20 62 75 74 20 74 72 # ... but tr
51e0: 79 20 74 6f 20 65 78 74 72 61 63 74 20 28 6e 61 y to extract (na
51f0: 6d 65 2c 20 76 65 72 73 69 6f 6e 29 20 66 72 6f me, version) fro
5200: 6d 20 73 75 62 64 69 72 20 63 6f 6e 74 65 6e 74 m subdir content
5210: 73 0a 09 20 20 20 20 74 72 79 20 7b 0a 09 09 74 s.. try {...t
5220: 72 79 20 7b 0a 09 09 20 20 20 20 73 65 74 20 66 ry {... set f
5230: 20 5b 6f 70 65 6e 20 5b 66 69 6c 65 20 6a 6f 69 [open [file joi
5240: 6e 20 24 70 6b 67 73 44 69 72 20 24 64 69 72 20 n $pkgsDir $dir
5250: 63 6f 6e 66 69 67 75 72 65 2e 69 6e 5d 5d 0a 09 configure.in]]..
5260: 09 7d 20 74 72 61 70 20 7b 50 4f 53 49 58 20 45 .} trap {POSIX E
5270: 4e 4f 45 4e 54 7d 20 7b 7d 20 7b 0a 09 09 20 20 NOENT} {} {...
5280: 20 20 73 65 74 20 66 20 5b 6f 70 65 6e 20 5b 66 set f [open [f
5290: 69 6c 65 20 6a 6f 69 6e 20 24 70 6b 67 73 44 69 ile join $pkgsDi
52a0: 72 20 24 64 69 72 20 63 6f 6e 66 69 67 75 72 65 r $dir configure
52b0: 2e 61 63 5d 5d 0a 09 09 7d 0a 09 09 66 63 6f 6e .ac]]...}...fcon
52c0: 66 69 67 75 72 65 20 24 66 20 2d 65 6e 63 6f 64 figure $f -encod
52d0: 69 6e 67 20 75 74 66 2d 38 0a 09 09 66 6f 72 65 ing utf-8...fore
52e0: 61 63 68 20 6c 69 6e 65 20 5b 73 70 6c 69 74 20 ach line [split
52f0: 5b 72 65 61 64 20 24 66 5d 20 5c 6e 5d 20 7b 0a [read $f] \n] {.
5300: 09 09 20 20 20 20 69 66 20 7b 32 20 3d 3d 20 5b .. if {2 == [
5310: 73 63 61 6e 20 24 6c 69 6e 65 20 5c 0a 09 09 09 scan $line \....
5320: 20 20 20 20 7b 20 41 43 5f 49 4e 49 54 20 28 20 { AC_INIT (
5330: 5b 25 5b 5e 5d 5d 5d 20 2c 20 5b 25 5b 5e 5d 5d [%[^]]] , [%[^]]
5340: 5d 20 29 20 7d 20 6e 20 76 5d 7d 20 7b 0a 09 09 ] ) } n v]} {...
5350: 09 73 65 74 20 64 65 73 63 72 69 70 74 69 6f 6e .set description
5360: 20 5b 6c 69 73 74 20 24 6e 20 24 76 5d 0a 09 09 [list $n $v]...
5370: 09 62 72 65 61 6b 0a 09 09 20 20 20 20 7d 0a 09 .break... }..
5380: 09 7d 0a 09 20 20 20 20 7d 20 6f 6e 20 65 72 72 .}.. } on err
5390: 6f 72 20 7b 7d 20 7b 0a 09 09 70 75 74 73 20 22 or {} {...puts "
53a0: 70 61 63 6b 61 67 65 20 66 6f 6c 64 65 72 20 77 package folder w
53b0: 69 74 68 6f 75 74 20 70 61 63 6b 61 67 65 20 69 ithout package i
53c0: 67 6e 6f 72 65 64 3a 20 24 64 69 72 22 0a 09 09 gnored: $dir"...
53d0: 63 6f 6e 74 69 6e 75 65 0a 09 20 20 20 20 7d 20 continue.. }
53e0: 66 69 6e 61 6c 6c 79 20 7b 0a 09 09 63 61 74 63 finally {...catc
53f0: 68 20 7b 63 6c 6f 73 65 20 24 66 3b 20 75 6e 73 h {close $f; uns
5400: 65 74 20 66 7d 0a 09 20 20 20 20 7d 0a 0a 09 20 et f}.. }...
5410: 20 20 20 69 66 20 7b 5b 66 69 6c 65 20 65 78 69 if {[file exi
5420: 73 74 73 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 sts [file join $
5430: 70 6b 67 73 44 69 72 20 24 64 69 72 20 63 6f 6e pkgsDir $dir con
5440: 66 69 67 75 72 65 5d 5d 7d 20 7b 0a 09 09 23 20 figure]]} {...#
5450: 4c 6f 6f 6b 73 20 6c 69 6b 65 20 61 20 70 61 63 Looks like a pac
5460: 6b 61 67 65 2c 20 72 65 63 6f 72 64 20 6f 75 72 kage, record our
5470: 20 62 65 73 74 20 65 78 74 72 61 63 74 69 6f 6e best extraction
5480: 20 61 74 74 65 6d 70 74 0a 09 09 6c 61 70 70 65 attempt...lappe
5490: 6e 64 20 70 61 63 6b 61 67 65 42 75 69 6c 64 4c nd packageBuildL
54a0: 69 73 74 20 24 64 69 72 20 7b 2a 7d 24 64 65 73 ist $dir {*}$des
54b0: 63 72 69 70 74 69 6f 6e 0a 09 20 20 20 20 7d 0a cription.. }.
54c0: 09 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 .}. }.. #
54d0: 47 65 74 20 74 68 65 20 6c 69 73 74 20 6f 66 20 Get the list of
54e0: 70 61 63 6b 61 67 65 73 20 74 6f 20 74 72 79 2c packages to try,
54f0: 20 61 6e 64 20 77 68 61 74 20 74 68 65 69 72 20 and what their
5500: 68 75 6d 61 6e 2d 72 65 61 64 61 62 6c 65 20 6e human-readable n
5510: 61 6d 65 73 0a 20 20 20 20 23 20 61 72 65 2e 20 ames. # are.
5520: 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20 70 61 Note that the pa
5530: 63 6b 61 67 65 20 64 69 72 65 63 74 6f 72 79 20 ckage directory
5540: 6c 69 73 74 20 73 68 6f 75 6c 64 20 62 65 20 76 list should be v
5550: 65 72 73 69 6f 6e 2d 6c 65 73 73 2e 0a 20 20 20 ersion-less..
5560: 20 74 72 79 20 7b 0a 09 73 65 74 20 70 61 63 6b try {..set pack
5570: 61 67 65 44 69 72 4e 61 6d 65 4d 61 70 20 7b 7d ageDirNameMap {}
5580: 0a 09 69 66 20 7b 24 62 75 69 6c 64 5f 74 63 6c ..if {$build_tcl
5590: 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 66 20 5b } {.. set f [
55a0: 6f 70 65 6e 20 24 74 63 6c 74 6b 64 69 72 2f 24 open $tcltkdir/$
55b0: 74 63 6c 64 69 72 2f 70 6b 67 73 2f 70 61 63 6b tcldir/pkgs/pack
55c0: 61 67 65 2e 6c 69 73 74 2e 74 78 74 5d 0a 09 20 age.list.txt]..
55d0: 20 20 20 66 63 6f 6e 66 69 67 75 72 65 20 24 66 fconfigure $f
55e0: 20 2d 65 6e 63 6f 64 69 6e 67 20 75 74 66 2d 38 -encoding utf-8
55f0: 0a 09 20 20 20 20 74 72 79 20 7b 0a 09 09 66 6f .. try {...fo
5600: 72 65 61 63 68 20 6c 69 6e 65 20 5b 73 70 6c 69 reach line [spli
5610: 74 20 5b 72 65 61 64 20 24 66 5d 20 5c 6e 5d 20 t [read $f] \n]
5620: 7b 0a 09 09 20 20 20 20 69 66 20 7b 5b 73 74 72 {... if {[str
5630: 69 6e 67 20 74 72 69 6d 20 24 6c 69 6e 65 5d 20 ing trim $line]
5640: 65 71 20 22 22 7d 20 63 6f 6e 74 69 6e 75 65 0a eq ""} continue.
5650: 09 09 20 20 20 20 69 66 20 7b 5b 73 74 72 69 6e .. if {[strin
5660: 67 20 6d 61 74 63 68 20 23 2a 20 24 6c 69 6e 65 g match #* $line
5670: 5d 7d 20 63 6f 6e 74 69 6e 75 65 0a 09 09 20 20 ]} continue...
5680: 20 20 6c 61 73 73 69 67 6e 20 24 6c 69 6e 65 20 lassign $line
5690: 64 69 72 20 6e 61 6d 65 0a 09 09 20 20 20 20 64 dir name... d
56a0: 69 63 74 20 61 70 70 65 6e 64 20 70 61 63 6b 61 ict append packa
56b0: 67 65 44 69 72 4e 61 6d 65 4d 61 70 20 5b 73 74 geDirNameMap [st
56c0: 72 69 6e 67 20 74 6f 6c 6f 77 65 72 20 24 64 69 ring tolower $di
56d0: 72 5d 20 24 6e 61 6d 65 0a 09 09 20 20 20 20 64 r] $name... d
56e0: 69 63 74 20 61 70 70 65 6e 64 20 70 61 63 6b 61 ict append packa
56f0: 67 65 44 69 72 4e 61 6d 65 4d 61 70 20 5b 73 74 geDirNameMap [st
5700: 72 69 6e 67 20 74 6f 75 70 70 65 72 20 24 64 69 ring toupper $di
5710: 72 5d 20 24 6e 61 6d 65 0a 09 09 20 20 20 20 64 r] $name... d
5720: 69 63 74 20 61 70 70 65 6e 64 20 70 61 63 6b 61 ict append packa
5730: 67 65 44 69 72 4e 61 6d 65 4d 61 70 20 5b 73 74 geDirNameMap [st
5740: 72 69 6e 67 20 74 6f 74 69 74 6c 65 20 24 64 69 ring totitle $di
5750: 72 5d 20 24 6e 61 6d 65 0a 09 09 7d 0a 09 20 20 r] $name...}..
5760: 20 20 7d 20 66 69 6e 61 6c 6c 79 20 7b 0a 09 09 } finally {...
5770: 63 6c 6f 73 65 20 24 66 0a 09 20 20 20 20 7d 0a close $f.. }.
5780: 09 7d 0a 20 20 20 20 7d 20 74 72 61 70 20 7b 50 .}. } trap {P
5790: 4f 53 49 58 20 45 4e 4f 45 4e 54 7d 20 7b 7d 20 OSIX ENOENT} {}
57a0: 7b 0a 09 73 65 74 20 70 61 63 6b 61 67 65 44 69 {..set packageDi
57b0: 72 4e 61 6d 65 4d 61 70 20 7b 0a 09 20 20 20 20 rNameMap {..
57c0: 69 74 63 6c 20 7b 5b 69 6e 63 72 20 54 63 6c 5d itcl {[incr Tcl]
57d0: 7d 0a 09 20 20 20 20 74 64 62 63 20 7b 54 44 42 }.. tdbc {TDB
57e0: 43 7d 0a 09 20 20 20 20 74 68 72 65 61 64 20 54 C}.. thread T
57f0: 68 72 65 61 64 0a 09 7d 0a 20 20 20 20 7d 0a 0a hread..}. }..
5800: 20 20 20 20 23 20 43 6f 6e 76 65 72 74 20 74 6f # Convert to
5810: 20 68 75 6d 61 6e 20 72 65 61 64 61 62 6c 65 20 human readable
5820: 6e 61 6d 65 73 2c 20 69 66 20 61 70 70 6c 69 63 names, if applic
5830: 61 62 6c 65 0a 20 20 20 20 66 6f 72 20 7b 73 65 able. for {se
5840: 74 20 69 64 78 20 30 7d 20 7b 24 69 64 78 20 3c t idx 0} {$idx <
5850: 20 5b 6c 6c 65 6e 67 74 68 20 24 70 61 63 6b 61 [llength $packa
5860: 67 65 42 75 69 6c 64 4c 69 73 74 5d 7d 20 7b 69 geBuildList]} {i
5870: 6e 63 72 20 69 64 78 20 33 7d 20 7b 0a 09 6c 61 ncr idx 3} {..la
5880: 73 73 69 67 6e 20 5b 6c 72 61 6e 67 65 20 24 70 ssign [lrange $p
5890: 61 63 6b 61 67 65 42 75 69 6c 64 4c 69 73 74 20 ackageBuildList
58a0: 24 69 64 78 20 24 69 64 78 2b 32 5d 20 64 20 6e $idx $idx+2] d n
58b0: 20 76 0a 09 69 66 20 7b 5b 64 69 63 74 20 65 78 v..if {[dict ex
58c0: 69 73 74 73 20 24 70 61 63 6b 61 67 65 44 69 72 ists $packageDir
58d0: 4e 61 6d 65 4d 61 70 20 24 6e 5d 7d 20 7b 0a 09 NameMap $n]} {..
58e0: 20 20 20 20 6c 73 65 74 20 70 61 63 6b 61 67 65 lset package
58f0: 42 75 69 6c 64 4c 69 73 74 20 24 69 64 78 2b 31 BuildList $idx+1
5900: 20 5b 64 69 63 74 20 67 65 74 20 24 70 61 63 6b [dict get $pack
5910: 61 67 65 44 69 72 4e 61 6d 65 4d 61 70 20 24 6e ageDirNameMap $n
5920: 5d 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 7d ]..}. }. }
5930: 7d 0a 0a 20 20 20 20 23 0a 20 20 20 20 23 20 49 }.. #. # I
5940: 6e 76 6f 6b 65 20 74 68 65 20 73 63 72 61 70 65 nvoke the scrape
5950: 72 2f 63 6f 6e 76 65 72 74 65 72 20 65 6e 67 69 r/converter engi
5960: 6e 65 2e 0a 20 20 20 20 23 0a 20 20 20 20 6d 61 ne.. #. ma
5970: 6b 65 2d 6d 61 6e 2d 70 61 67 65 73 20 24 77 65 ke-man-pages $we
5980: 62 64 69 72 20 5c 0a 09 5b 6c 69 73 74 20 24 74 bdir \..[list $t
5990: 63 6c 74 6b 64 69 72 2f 7b 24 61 70 70 64 69 72 cltkdir/{$appdir
59a0: 7d 2f 64 6f 63 2f 2a 2e 31 20 22 24 74 63 6c 74 }/doc/*.1 "$tclt
59b0: 6b 64 65 73 63 20 41 70 70 6c 69 63 61 74 69 6f kdesc Applicatio
59c0: 6e 73 22 20 55 73 65 72 43 6d 64 20 5c 0a 09 20 ns" UserCmd \..
59d0: 20 20 20 20 22 54 68 65 20 69 6e 74 65 72 70 72 "The interpr
59e0: 65 74 65 72 73 20 77 68 69 63 68 20 69 6d 70 6c eters which impl
59f0: 65 6d 65 6e 74 20 24 63 6d 64 65 73 63 2e 22 5d ement $cmdesc."]
5a00: 20 5c 0a 09 5b 70 6c 75 73 2d 62 61 73 65 20 24 \..[plus-base $
5a10: 62 75 69 6c 64 5f 74 63 6c 20 24 74 63 6c 64 69 build_tcl $tcldi
5a20: 72 20 64 6f 63 2f 2a 2e 6e 20 7b 54 63 6c 20 43 r doc/*.n {Tcl C
5a30: 6f 6d 6d 61 6e 64 73 7d 20 54 63 6c 43 6d 64 20 ommands} TclCmd
5a40: 5c 0a 09 20 20 20 20 20 22 54 68 65 20 63 6f 6d \.. "The com
5a50: 6d 61 6e 64 73 20 77 68 69 63 68 20 74 68 65 20 mands which the
5a60: 3c 62 3e 74 63 6c 73 68 3c 2f 62 3e 20 69 6e 74 <b>tclsh</b> int
5a70: 65 72 70 72 65 74 65 72 20 69 6d 70 6c 65 6d 65 erpreter impleme
5a80: 6e 74 73 2e 22 5d 20 5c 0a 09 5b 70 6c 75 73 2d nts."] \..[plus-
5a90: 62 61 73 65 20 24 62 75 69 6c 64 5f 74 6b 20 24 base $build_tk $
5aa0: 74 6b 64 69 72 20 64 6f 63 2f 2a 2e 6e 20 7b 54 tkdir doc/*.n {T
5ab0: 6b 20 43 6f 6d 6d 61 6e 64 73 7d 20 54 6b 43 6d k Commands} TkCm
5ac0: 64 20 5c 0a 09 20 20 20 20 20 22 54 68 65 20 61 d \.. "The a
5ad0: 64 64 69 74 69 6f 6e 61 6c 20 63 6f 6d 6d 61 6e dditional comman
5ae0: 64 73 20 77 68 69 63 68 20 74 68 65 20 3c 62 3e ds which the <b>
5af0: 77 69 73 68 3c 2f 62 3e 20 69 6e 74 65 72 70 72 wish</b> interpr
5b00: 65 74 65 72 20 69 6d 70 6c 65 6d 65 6e 74 73 2e eter implements.
5b10: 22 5d 20 5c 0a 09 7b 2a 7d 5b 70 6c 75 73 2d 70 "] \..{*}[plus-p
5b20: 6b 67 73 20 6e 20 7b 2a 7d 24 70 61 63 6b 61 67 kgs n {*}$packag
5b30: 65 42 75 69 6c 64 4c 69 73 74 5d 20 5c 0a 09 5b eBuildList] \..[
5b40: 70 6c 75 73 2d 62 61 73 65 20 24 62 75 69 6c 64 plus-base $build
5b50: 5f 74 63 6c 20 24 74 63 6c 64 69 72 20 64 6f 63 _tcl $tcldir doc
5b60: 2f 2a 2e 33 20 7b 54 63 6c 20 43 20 41 50 49 7d /*.3 {Tcl C API}
5b70: 20 54 63 6c 4c 69 62 20 5c 0a 09 20 20 20 20 20 TclLib \..
5b80: 22 54 68 65 20 43 20 66 75 6e 63 74 69 6f 6e 73 "The C functions
5b90: 20 77 68 69 63 68 20 61 20 54 63 6c 20 65 78 74 which a Tcl ext
5ba0: 65 6e 64 65 64 20 43 20 70 72 6f 67 72 61 6d 20 ended C program
5bb0: 6d 61 79 20 75 73 65 2e 22 5d 20 5c 0a 09 5b 70 may use."] \..[p
5bc0: 6c 75 73 2d 62 61 73 65 20 24 62 75 69 6c 64 5f lus-base $build_
5bd0: 74 6b 20 24 74 6b 64 69 72 20 64 6f 63 2f 2a 2e tk $tkdir doc/*.
5be0: 33 20 7b 54 6b 20 43 20 41 50 49 7d 20 54 6b 4c 3 {Tk C API} TkL
5bf0: 69 62 20 5c 0a 09 20 20 20 20 20 22 54 68 65 20 ib \.. "The
5c00: 61 64 64 69 74 69 6f 6e 61 6c 20 43 20 66 75 6e additional C fun
5c10: 63 74 69 6f 6e 73 20 77 68 69 63 68 20 61 20 54 ctions which a T
5c20: 6b 20 65 78 74 65 6e 64 65 64 20 43 20 70 72 6f k extended C pro
5c30: 67 72 61 6d 20 6d 61 79 20 75 73 65 2e 22 5d 20 gram may use."]
5c40: 5c 0a 09 7b 2a 7d 5b 70 6c 75 73 2d 70 6b 67 73 \..{*}[plus-pkgs
5c50: 20 33 20 7b 2a 7d 24 70 61 63 6b 61 67 65 42 75 3 {*}$packageBu
5c60: 69 6c 64 4c 69 73 74 5d 0a 7d 20 6f 6e 20 65 72 ildList].} on er
5c70: 72 6f 72 20 7b 6d 73 67 20 6f 70 74 73 7d 20 7b ror {msg opts} {
5c80: 0a 20 20 20 20 23 20 4f 6e 20 66 61 69 6c 75 72 . # On failur
5c90: 65 20 6d 61 6b 65 20 73 75 72 65 20 77 65 20 73 e make sure we s
5ca0: 68 6f 77 20 77 68 61 74 20 77 65 6e 74 20 77 72 how what went wr
5cb0: 6f 6e 67 2e 20 57 65 27 72 65 20 6e 6f 74 20 73 ong. We're not s
5cc0: 75 70 70 6f 73 65 64 0a 20 20 20 20 23 20 74 6f upposed. # to
5cd0: 20 67 65 74 20 68 65 72 65 20 74 68 6f 75 67 68 get here though
5ce0: 3b 20 69 74 20 72 65 70 72 65 73 65 6e 74 73 20 ; it represents
5cf0: 61 20 62 75 67 20 69 6e 20 74 68 65 20 73 63 72 a bug in the scr
5d00: 69 70 74 2e 0a 20 20 20 20 70 75 74 73 20 24 6d ipt.. puts $m
5d10: 73 67 5c 6e 5b 64 69 63 74 20 67 65 74 20 24 6f sg\n[dict get $o
5d20: 70 74 73 20 2d 65 72 72 6f 72 69 6e 66 6f 5d 0a pts -errorinfo].
5d30: 20 20 20 20 65 78 69 74 20 31 0a 7d 0a 0c 0a 23 exit 1.}...#
5d40: 20 4c 6f 63 61 6c 2d 56 61 72 69 61 62 6c 65 73 Local-Variables
5d50: 3a 0a 23 20 6d 6f 64 65 3a 20 74 63 6c 0a 23 20 :.# mode: tcl.#
5d60: 45 6e 64 3a 0a End:.