Tcl Source Code

Hex Artifact Content
Login

Artifact 9d6d0c99623088f41660d52a82b1b38a848a1539edaab4acd5971b14eb94f5a2:


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:.