# ticket

tkt_uuid: 507929ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: Error in TitleFrame using Tk 8.3.0
comment:
  BWidget requires Tk 8.1.1 according to its
  pkgIndex.tcl file.

  However, when using BWidget 1.3.1 with Tk 8.3.0,
  the following script results in an Error:

  % TitleFrame .title
  unknown option "-state"
      while executing
  "$foo configure $realopt"
      (procedure "Widget::declare" line 80)
      invoked from within
  "Widget::declare TitleFrame {
          {-relief      TkResource groove 0 frame}
          {-borderwidth TkResource 2      0 frame}
          {-font        T..."
      (in namespace eval "::TitleFrame" script line 2)
  [cut]

  This seems a mere versioning problem, as it is
  gone when using Tk 8.3.4. But if so, BWidget should
  request the higher version.


tkt_uuid: 531231ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 2
foundin: None
resolution: Invalid
title: Error not caught: sendmessage, bad args
comment:
  George@Orwellian.Org writes:

  I constructed smtp::sendmessage arguments without
  including an originator/From, which is an error.

  I was running smtp::sendmessage via 'catch' and got:

  ****errmsg='can't read "aprops(error)": no such element
  in array'.

  Which means the smtp code blew up rather than
  report the error.

  Here is where the error occurred in proc sendmessage:

  puts  $::fd_Trace "Originator='$originator'."
          set addrs [mime::parseaddress $originator]
  puts $::fd_Trace "addrs='$addrs'."
          if {[llength $addrs] > 1} {
              error "too many mailboxes in $who:
  $originator"
          }
          array set aprops [lindex $addrs 0]
  puts $::fd_Trace "Here#1, array names aprops = [array
  names aprops]"
          if {$aprops(error) != ""} {
              error "error in $who: $aprops(error)"
          }

  Here is my runtime diagnostic: 

  Originator=''.
  addrs=''.
  Here#1, array names aprops =
  ****Error: Build_SMTP2='smtp::sendmessage $part -debug
  0 -servers {mx02.earthlink.net}   -header {Subject
  {Email from Somebody}}   -header {To {"The Somebody
  Meister" <Somebody@earthlink.net>}}'.

  ----

  I'd also like to note a "gotcha".

  I first was sending email to two recipients,
  one at Road Runner NYC, one at Earthlink.

  It blew up because I was pointing to RR's SMTP server,
  and it wouldn't "relay" for the Earthlink address.

  I looked at the doc for smtp::sendmessage, saw that
  the -servers option would take a list of SMTP servers,
  and ran it again with both the RR and Earthlink SMTP
  servers specified.

  Same error.

  So, the description of the -servers option is useless
  in telling the programmer what it's for.

  I had to look at the source code to see what it
  actually did.

  It would be convenient to be able to either pair
  recipients with their server, or --- best --- be able
  to give an option saying to use DNS to get MX records
  for the recipient.

  One should not have to hard-code SMTP server names
  into their scripts. That's a ticking time-bomb.


tkt_uuid: 873666ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: scrollw.tcl does not support -relief
comment:
  BWidget's ScrolledWindow does not support options
  -relief and -bd at creation time

  May be the statement 
  set sw    [frame $path \
              -relief flat -borderwidth 0 -background $bg \
      -highlightthickness 0 -takefocus 0]
  is to change to
  set sw    [eval frame $path \
      -background $bg \
      -highlightthickness 0 -takefocus 0  \   
  [Widget::subcget $path :cmd]]


tkt_uuid: 1874961fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: package traverse doesn't load
comment:
  OS: WindowsXP

  I installed version 1.13.3 of the fileutil package into a Tcl 8.4 lib directory that otherwise had tcllib 1.6 installed.

  When I did "package require traverse" I got the following error message:

   wrong # args: should be "::snit::Comp.statement.option optionDef ?defvalue?" 

  Snit backward compatibility problem?  Should package traverse require a minimum version of snit?


tkt_uuid: 3603260fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: profiler
priority: 5 Medium
severity: Minor
foundin: None
resolution: Not Applicable Here
title: Descendants info not reset on profiler::reset
comment:
  Look at the result of this script:
  -----------
  package require profiler
  profiler::init
  proc profile_a {} {
  for {set f 0} {$f<100} {incr f} {
      profile_b
      }
  }

  proc profile_b {} {
  for {set f 0} {$f<100000} {incr f} {}
  }

  profile_a
  profiler::reset
  profile_a
  puts [profiler::print]
  -----------
  for profile_a, it prints:
            Total runtime:  729842
    Total descendant time:  1441896
  i.e.  Total descendant time>Total runtime
  The problem is that ::profiler::descendants isn't modified in ::profiler::reset.


tkt_uuid: 2169167fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: json
priority: 5 Medium
foundin: None
resolution: Fixed
title: test failures
comment:
  Running Tcl 8.4.19 with the
  package "dict 8.5.1", I see
  these test failures:

  ---- json-1.1 start

  ==== json-1.1 test JSON widget FAILED
  ==== Contents of test case:
  set res [json::json2dict $JSON(widget)]
  ---- Result was:
  widget {window {width 500 height 500 name main_window title {Sample Widget}} text {vOffset 100 name null style bold data {Click Here} onMouseUp {sun1.opacity = (sun1.opacity / 100) * 90;} alignment center hOffset 250 size 36} debug on}
  ---- Result should have been (exact matching):
  widget {debug on window {title {Sample Widget} name main_window width 500 height 500} text {data {Click Here} size 36 style bold name null hOffset 250 vOffset 100 alignment center onMouseUp {sun1.opacity = (sun1.opacity / 100) * 90;}}}
  ==== json-1.1 FAILED

  ---- json-1.2 start

  ==== json-1.2 test JSON glossary FAILED
  ==== Contents of test case:
  set res [json::json2dict $JSON(glossary)]
  ---- Result was:
  glossary {mixlist {{a "" str} -0.09 null {} {member true}} title {example glossary} GlossDiv {GlossList {{GlossSeeAlso {GML XML markup} GlossTerm {Standard \" Language} Acronym SGML\\ ID SGML Abbrev {ISO 8879:1986} GlossDef {A meta-markup language, used ...}}} title S}}
  ---- Result should have been (exact matching):
  glossary {title {example glossary} mixlist {{a "" str} -0.09 null {} {member true}} GlossDiv {title S GlossList {{ID SGML GlossTerm {Standard \" Language} Acronym SGML\\ Abbrev {ISO 8879:1986} GlossDef {A meta-markup language, used ...} GlossSeeAlso {GML XML markup}}}}}
  ==== json-1.2 FAILED

  ==== json-1.4 test JSON menu FAILED
  ==== Contents of test case:
  set res [json::json2dict $JSON(menu)]
  ---- Result was:
  menu {popup {menuitem {{value Open onclick OpenDoc()} {value Close onclick CloseDoc()}}} value File: id file unival 怡:}
  ---- Result should have been (exact matching):
  menu {id file value File: unival 怡: popup {menuitem {{value Open onclick OpenDoc()} {value Close onclick CloseDoc()}}}}
  ==== json-1.4 FAILED
  ==== json-1.8 test JSON menu2 FAILED
  ==== Contents of test case:
  set res [json::json2dict $JSON(menu2)]
  ---- Result was:
  menu {header Viewer items {{id Open} {label {Open New} id OpenNew} null {label {Zoom In} id ZoomIn} {label {Zoom Out} id ZoomOut} null {id Help} {label {About Viewer...} id About}}}
  ---- Result should have been (exact matching):
  menu {header Viewer items {{id Open} {id OpenNew label {Open New}} null {id ZoomIn label {Zoom In}} {id ZoomOut label {Zoom Out}} null {id Help} {id About label {About Viewer...}}}}
  ==== json-1.8 FAILED

  ==== json-1.9 test JSON array FAILED
  ==== Contents of test case:
  set res [json::json2dict $JSON(array)]
  ---- Result was:
  {Country US Latitude 37.7668 precision zip State CA City {SAN FRANCISCO} Address {} Zip 94107 Longitude -122.3959} {Country US Latitude 37.371991 precision zip State CA City SUNNYVALE Address {} Zip 94085 Longitude -122.026020}
  ---- Result should have been (exact matching):
  {precision zip Latitude 37.7668 Longitude -122.3959 Address {} City {SAN FRANCISCO} State CA Zip 94107 Country US} {precision zip Latitude 37.371991 Longitude -122.026020 Address {} City SUNNYVALE State CA Zip 94085 Country US}
  ==== json-1.9 FAILED


tkt_uuid: 1034924fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: tree
priority: 5 Medium
foundin: None
resolution: Fixed
title: children with filter requires struct::list
comment:
  It is necessary for a user of [tree children] with
  filter to have [package require]d struct::list, or
  it'll crash.

  Solution is either to put a package require into the
  children source, or to document the dependency.


tkt_uuid: 648679ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: cmdline
priority: 5 Medium
foundin: None
resolution: Fixed
title: bad namespace usage
comment:
  Many procs in the cmdline package call other procs 
  in same package in a strange way, something like:

  proc cmdline::getoptions {...} {
      ...
      while {[set err [cmdline::getopt ...]]} {...
      ...
  }

  Within the body of [cmdline::getoptions] the current
  namespace is ::cmdline, so either [getopt] should
  be called relying on that context or fully qualified
  [::cmdline::getopt] should be called.  I strongly prefer
  the former myself.

  As is, things will go haywire if someone defines
  a ::cmdline::cmdline namespace and defines a
  [getopt] command in it.


tkt_uuid: 637695ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtpd
priority: 1 Zero
foundin: None
resolution: Invalid
title: Invalid response after receiving DATA
comment:
  After receiving a DATA command, smtpd.tcl first replies
  "250 OK"  then "354 Enter mail ..." . RFC 2821 states
  that "DATA" should be answered by "354 ..." and "250
  ..." AFTER Data submission has finished.


tkt_uuid: 2890743fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Fixed
title: comm crashes on large amount of data from server
comment:
  Since Tcl 8.0, using lindex and lreplace forces comm to have received a well-formed list from the comm server. If there is a large amount of data from the server, it is possible that the list does not become well-formed before running up against memory constraints resulting in a crash.


tkt_uuid: 1885621fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 2
foundin: None
resolution: Works For Me
title: ListBox "see" fails in ScrolledWindow
comment:
  "ListBox see" command only works correct after "update".

  Example code:
    pack [set sw [ScrolledWindow .sw]] 
    set lb [ListBox $sw.lb]
    $sw setwidget $lb
    for {set i 0} {$i<30} {incr i} {
      $lb insert end "Item_$i" -text "This is item $i"
    }
    $lb selection set Item_27
    ### update ; ### "see" doesn't work without "update"
    $lb see Item_27

  Tested on 1.8 and some older versions.


tkt_uuid: 765667ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 4
foundin: None
resolution: Fixed
title: Backward tabbing over ComboBox needs 2 tabs.
comment:
  package require BWidget

  entry .w1
  ComboBox .w2
  entry .w3

  pack .w1 .w2 .w3
  focus .w1

  While 'tabbing forward' over the entries (with the Tab
  key), only one tab is needed, to leave the ComboBox
  (.w2) and to have the focus on .w3. While 'tabbing
  backward' (with Shift-Tab), there are two Shilft-Tab
  events necessary, to go from .w2 to w1. 

  Expected behaviour: For backward tabbing, only one
  Shilft-Tab is needed, to go to the next (previous) widget.


tkt_uuid: 631314ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: mime
priority: 9 Immediate
severity: Minor
foundin: None
resolution: Not Applicable Here
title: infinite loop on bad data
comment:
  The while {$moreP} loop in mime::parsepart will loop
  forever when fed bad data such as the file attached,
  which is a spam email.  I'm sure it's formatted badly,
  but that should cause an error, not an infinite loop.


tkt_uuid: 3354014fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: Documentation describes "mime::initialize .. -part" option
comment:
  Documentation describes "mime::initialize .. -part" option, but no such option exists.  It should be "-parts", apparently.


tkt_uuid: 620612ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: crc
priority: 5 Medium
foundin: None
resolution: None
title: Testsuite failures
comment:
  I ran the tcllib testsuite, using a tclsh 8.3.4 on a
  linux/ix86 system. The build directory was outside of
  the tcllib source directory, actually a direct sibling.
  Enclosed the log generated when testing crc.


tkt_uuid: 828160ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: None
title: "Holy cow"default headers break compatibility
comment:
  In generated by mime:: 
  messages there are two default headers, that are used
  nonconsistently and force hard-to-catch bugs
  1) Content-ID. There should be NO Content-ID inserted
  in main, the most outer message. The only parts that
  should get Content-ID are
  internal parts. Better remove default insertion of
  Content-ID or just
  note that in documentation, that if you generate a
  message, you should remove Content-ID from the main
  covering part.
  2) In all parts there is MIME-Version: header. This is
  not necessary,
  but it's not possible to remove that header by
  mime::setheader!
  It's better to make MIME-Version header removable by
  mime::setheader.
  3) it's not possible to create 
   Content-Disposition: attachment; filename="qqq"
   by usual means, Content-Disposition doesn't allow
  parameters, what is wrong.
  Denis Medvedev
  t_mdl@yahoo.com


tkt_uuid: 709375ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: crc
priority: 7 High
foundin: None
resolution: Fixed
title: current tcllib test suite failures report
comment:
  SPARC Solaris 2.6, Tcl/Tk 8.4.2:

  Using the tcllib CVS head downloaded from activestate
  ftp site snapshots on march 25, 2003, I see these errors:


  base64 2.2.1 (Trf based)
  modules/base64/uuencode.test
  Trf present

  ==== uuencode-1.6 encode dash-string FAILED
  ==== Contents of test case:

      catch {::uuencode::encode -BC} result
      set result

  ---- Result was:
  ::uuencode: wrong # args, all options require an argument
  ---- Result should have been (exact matching):
  +4)#
  ==== uuencode-1.6 FAILED

  ==== uuencode-1.7 decode dash-string FAILED
  ==== Contents of test case:

      catch {::uuencode::decode "-4)#"} result
      set result

  ---- Result was:
  ::uuencode: wrong # args, all options require an argument
  ---- Result should have been (exact matching):
  5BC
  ==== uuencode-1.7 FAILED


  Module: crc
  modules/crc/cksum.test
  modules/crc/crc16.test
  modules/crc/crc32.test

  ==== crc32-2.2 crc32 and unsigned integer FAILED
  ==== Contents of test case:

          ::crc::crc32 $msg
      
  ---- Result was:
  1136572392
  ---- Result should have been (exact matching):
  3904355907
  ==== crc32-2.2 FAILED

  ==== crc32-2.3 crc32 and unsigned integer FAILED
  ==== Contents of test case:

          ::crc::crc32 $msg
      
  ---- Result was:
  3259049013
  ---- Result should have been (exact matching):
  891568578
  ==== crc32-2.3 FAILED

  ==== crc32-2.4 crc32 and unsigned integer FAILED
  ==== Contents of test case:

          ::crc::crc32 $msg
      
  ---- Result was:
  2141000992
  ---- Result should have been (exact matching):
  538287487
  ==== crc32-2.4 FAILED


  ==== crc32-2.5 crc32 and unsigned integer FAILED
  ==== Contents of test case:

          ::crc::crc32 $msg
      
  ---- Result was:
  3176146764
  ---- Result should have been (exact matching):
  1277644989
  ==== crc32-2.5 FAILED

  ==== crc32-2.6 crc32 and unsigned integer FAILED
  ==== Contents of test case:

          ::crc::crc32 $msg
      
  ---- Result was:
  3538338335
  ---- Result should have been (exact matching):
  532866770
  ==== crc32-2.6 FAILED

  ==== crc32-2.7 crc32 and unsigned integer FAILED
  ==== Contents of test case:

          ::crc::crc32 $msg
      
  ---- Result was:
  1917495676
  ---- Result should have been (exact matching):
  2091469426
  ==== crc32-2.7 FAILED

  ==== crc32-2.8 crc32 and unsigned integer FAILED
  ==== Contents of test case:

          ::crc::crc32 $msg
      
  ---- Result was:
  3857639600
  ---- Result should have been (exact matching):
  2968055525
  ==== crc32-2.8 FAILED

  ==== crc32-3.2 crc32 as hexadecimal string FAILED
  ==== Contents of test case:

          ::crc::crc32 -format 0x%X $msg
      
  ---- Result was:
  0x43BEB7E8
  ---- Result should have been (exact matching):
  0xE8B7BE43
  ==== crc32-3.2 FAILED

  ==== crc32-3.3 crc32 as hexadecimal string FAILED
  ==== Contents of test case:

          ::crc::crc32 -format 0x%X $msg
      
  ---- Result was:
  0xC2412435
  ---- Result should have been (exact matching):
  0x352441C2
  ==== crc32-3.3 FAILED

  ==== crc32-3.4 crc32 as hexadecimal string FAILED
  ==== Contents of test case:

          ::crc::crc32 -format 0x%X $msg
      
  ---- Result was:
  0x7F9D1520
  ---- Result should have been (exact matching):
  0x20159D7F
  ==== crc32-3.4 FAILED

  and so on for quite some time...

  Module: struct
  modules/struct/graph.test
  modules/struct/matrix.test
  modules/struct/queue.test
  modules/struct/record.test

  ==== record-0.1 test error with circular records FAILED
  ==== Contents of test case:

      record define circular {
          one
          {record circular cir}
      } cir(1)

  ---- Result was:
  Can not have circular records. Structure was not created.
  ---- Result should have been (exact matching):

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ==== record-0.1 FAILED

  ==== record-0.1 test error with circular records FAILED
  ==== Contents of test case:

          namespace eval myns {
      record define circular {
                  one
              {record ::myns::circular cir}
          } cir(1)
          }

  ---- Result was:
  Can not have circular records. Structure was not created.
  ---- Result should have been (exact matching):

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ==== record-0.1 FAILED


  Module: fileutil
  modules/fileutil/fileutil.test
  fileutil 1.4

  Module: ftp
  Error:  No test files remain after applying your match
  and skip patterns!

  Module: ftpd
  Error:  No test files remain after applying your match
  and skip patterns!

  Module: javascript
  Error:  No test files remain after applying your match
  and skip patterns!

  Module: html
  modules/html/html.test

  Module: irc
  Error:  No test files remain after applying your match
  and skip patterns!


  Module: log
  modules/log/log.test
  log 1.0.1
  modules/log/logger.test
  [Tue Mar 25 06:16:40 EST 2003] [global] [error] 'Danger
  Will Robinson!'
  [Tue Mar 25 06:16:40 EST 2003] [global] [warn] 'Danger
  Will Robinson!'
  modules/log/loggerperformance.test
  Date is now Tue Mar 25 06:16:41 EST 2003
  Date is now Tue Mar 25 06:16:41 EST 2003
  Date is now Tue Mar 25 06:16:41 EST 2003
  and hundreds of more Date outputs


tkt_uuid: 1030051fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: Incorrect use of http::status
comment:
  The [Debug|Retrieve Script] menu option uses 'if
  {[http::status $token] == "ok"} { ... }' to test
  whether or not the download was successful.

  This is incorrect: [http::status] only reflects whether
  the HTTP transaction completed, it's still necessary to
  check if [http::ncode] is 200 to see if the resource
  was actually retrieved.  404, 502, and various other
  error conditions are possible and $status will still be
  "ok".


tkt_uuid: 898067ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ftp::NList error when directory empty
comment:
  When executing ftp::NList on an empty directory
  follwing error message appears
  "error     error | E: Error getting directory listing!"

  The manual says:
  This command has the same behavior as the ::ftp::List 
  command, ...

  Ths ftp::List command does not show an error on emty
  dirs ...

  This a non-blocking message ...

  Regards,

  Christophe De Clercq


tkt_uuid: 674468ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Out of Date
title: LabelEntry -textvariable fails
comment:
  The -textvariable option of the LabelEntry widget
  causes both the label text and the entry contents to
  reflect the value of the specified variable. This is
  not desirable. 

  set wages "29.00"
  LabelEntry .lb -label "Wage \$" -textvariable wages

  causes something like this to appear when .lb is packed:

                  +-----------------+
       29.00  |  29.00           |
                  +-----------------+

  Instead of

                  +----------------+
     Wage $ | 29.00           |
                  +----------------+

  This is from ActiveTcl 8.4.1.0 Release, BWidget 1.5


tkt_uuid: 438415ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Invalid
title: bwidget leaves widget droppings...
comment:
  BWidget leaves "widget droppings" scattered about. 
  Witness the following session:

  % package require BWidget
  1.3.0
  % Entry .x
  .x
  % winfo children .
  .#BWidget#entry .#BWidget#button .#BWidget#label .#BWid
  getClass#DynamicHelp .x .#BWidgetClass#DragSite .#BWidg
  etClass#DropSite


  My, my. That's very untidy of bwidgets. At the very 
  least, these should all be children of a single 
  special frame to be a bit more manageable.

  FWIW, This problem cropped up during an interactive 
  session that went something like this (assuming the 
  above code has already been run):

  % eval destroy [winfo children .]
  % Entry .x
  .x
  % .x configure -relief groove
  invalid command name ".#BWidget#entry"


  Ouch! So, not only does it leave widget droppings 
  around, if you delete those widget droppings Bad 
  Things will happen. Assuming for the moment that 
  leaving these widgets around can't be avoided (which 
  is Bad, IMHO), the code should at least be prepared to 
  recreate them if they get deleted.


tkt_uuid: 2820727fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Linux standalone executable not working on x86_64
comment:
  Using archlinux x86_64, just downloaded tkchat 1.465 standalone executable for linux. When i try to run it in a terminal i get:

  $  /home/saedelaere/Downloads/tkchat-linux-ix86
  couldn't load file "/tmp/tclfsB20G": libXft.so.2: wrong ELF class: ELFCLASS64
      while executing
  "load /home/saedelaere/Downloads/tkchat-linux-ix86/lib/tk8.5/../libtk8.5.so Tk"
      ("package ifneeded Tk 8.5.7" script)
      invoked from within
  "package require Tk  8.4"
      (file "/home/saedelaere/Downloads/tkchat-linux-ix86/bin/tkchat.tcl" line 36)
      invoked from within
  "source [file join $starkit::topdir bin tkchat.tcl]"
      (file "/home/saedelaere/Downloads/tkchat-linux-ix86/main.tcl" line 28)

  Some infos about my system
  $  uname -a
  Linux 2.6.30-ARCH #1 SMP PREEMPT Sat Jul 4 02:24:43 CEST 2009 x86_64
  tcl/tk 8.5.7

  Using a tclkit (8.5.1) and tkchat.kit works.

  Regards


tkt_uuid: 1588808fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: Combobox autocomplete won't turn on/off
comment:
  ## Bug info
  I'm making a tool that has a combobox.  I tried adding
  an option to allow the user to turn autocomplete
  on/off, but it doesn't seem to be configurable after
  it's been created.  (Using Tcl/Tk 8.4.13 with BWidget 1.8)

  The tool does this via the '$path configure
  -autocomplete $value' command, where $path is obviously
  to the combobox and $value is 0 or 1. Doing a cget
  shows the value is changing, but the functionality of
  autocomplete never changes.

  ## Patch info
  I decided to take a peek into the code and found it was
  easy to add.  While testing, I found autopost suffered
  from the same problem so I added it as well.  I'm
  attaching the patch to enable/disable both with the
  configure command.

  The patch was made from combobox.tcl in BWidget 1.8.0.
   Unless there is reason not to, I would appreciate it
  if you would incorporate this patch to make
  autocomplete/autopost configurable.

  HTH,
  Chris


tkt_uuid: 588880ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Duplicate
title: flicker in ScrolledWindow and frame
comment:
  Addition of update idletask to proc
  ScrolledWindow::_set_hscroll 
  and 
  proc ScrolledWindow::_set_vscroll 
  cause flickering during window resize 
  and
  Tcl bg errors:

  bgerror failed to handle background error.
      Original error: too many nested calls to Tcl_Eval
  (infinite loop?)
      Error in bgerror: too many nested calls to
  Tcl_EvalObj (infinite loop?)


  When I commented the lines out, they work fine
  in my application.

  I was placing rows of buttons and labels inside
  the scrollable frame or window and the
  update idletask was excessive.


tkt_uuid: 514476ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: textutil
priority: 5 Medium
foundin: None
title: Add Pool_Base string functions
comment:
  Add the string processing facilities of
  Pool_Base, see

  http://www.purl.org/net/akupries/soft/pool/f_base_strin
  g.tcl.html


tkt_uuid: 1558564fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Fixed
title: Cannot query ldap schema
comment:
  This simple script

  set cmd [ldap::connect ldap 389]
  ldap::search $cmd cn=subschema objectclass=* + -scope 
  base

  is not able to query the schema of our ldap server. 
  The same command (from the client utilities) works 
  correcty.

  ldapsearch -x -b cn=subschema -h ldap -s base +

  The error stack is

  MessageSent (54 bytes):
  0000  30 34 02 01 01 63 2f 04 0c 63 6e 3d 73 75 62 
  73   |04...c/..cn=subs|
  0016  63 68 65 6d 61 0a 01 00 0a 01 00 02 01 00 02 
  01   |chema...........|
  0032  00 01 01 00 87 0b 6f 62 6a 65 63 74 63 6c 61 
  73   |....<87>.objectclas|
  0048  73 30 03 04 01 
  2b                                 |s0...+|

  searchRequest (49 bytes):
  0000  63 2f 04 0c 63 6e 3d 73 75 62 73 63 68 65 6d 
  61   |c/..cn=subschema|
  0016  0a 01 00 0a 01 00 02 01 00 02 01 00 01 01 00 
  87   |...............<87>|
  0032  0b 6f 62 6a 65 63 74 63 6c 61 73 73 30 03 04 
  01   |.objectclass0...|
  0048  
  2b                                                |+|

  Error reading response for handle ::ldap::ldapsock3 : 
  error
      while executing
  "::ldap::MessageReceiver ::ldap::ldapsock3"
  can't wait for variable "::ldap::ldapsock3
  (message,1)": would wait forever
      while executing
  "vwait [namespace which -variable $handle](message,
  $messageId)"
      (procedure "WaitForResponse" line 17)
      invoked from within
  "WaitForResponse $handle $conn(searchInProgress)"
      (procedure "searchNext" line 15)
      invoked from within
  "searchNext $handle"


tkt_uuid: 1750656fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
resolution: Invalid
title: math test suite interacts badly with the tcllib test suite p
comment:
  When I run the tcllib cvs head on top of the tcl cvs head, I see the following:



  [    ]  [8.5a7] log         ~~       T   354 P   354 S     0 F     0
  [  * ]  [8.5a7] math        Error in statistics.tcl: unknown namespace in import[  * ]  [8.5a7] math        <fourier.test>                                      [  * ]  [8.5a7] math        ---- dft-1.0                                        [  * ]  [8.5a7] math        PASS dft-1.0                                        [ *  ]  [8.5a7] math        ---- dft-1.1                                        [ *  ]  [8.5a7] math        PASS dft-1.1                                        [ *  ]  [8.5a7] math        ---- dft-1.2                                        [ *  ]  [8.5a7] math        PASS dft-1.2                                        [ *  ]  [8.5a7] math        ---- dft-1.3                                        [*   ]  [8.5a7] math        PASS dft-1.3                                        [*   ]  [8.5a7] math        ---- dft-2.1                                        [*   ]  [8.5a7] math        PASS dft-2.1                                        [*   ]  [8.5a7] math        ---- dft-2.2                                        [*   ]  [8.5a7] math        PASS dft-2.2                                        

  and so on for pages and pages.

  That first error regarding the namespace appears to cause the graphical wrapper to stop working.


tkt_uuid: 449276ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 6
foundin: None
resolution: Fixed
title: SelectColor widget can't be created
comment:
  On behalf of: Bruce Hartweg <brhartweg@bigfoot.com>.

  I've found a problem with the BWidget package that is 
  include in the ActiveTcl "BI" distro.  The SelectColor 
  widget doesn't work. There is no proc define for 
  SelectColor. I'm not sure if this is  just an 
  ActiveState problem of a bad or corrupted file or a 
  problem ion the controlled file of BWidget, so I 
  posted this message as well as mailed it to Jeff.


tkt_uuid: 1193581fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: profiler
priority: 5 Medium
foundin: None
resolution: Works For Me
title: Time consumed in C/C++ calbacks is not collected
comment:
  I tried to use the profiler included in the tcllib. It
  seems to be a very useful thing. Still, I would like to
  present my current situation and the related questions.

  We have a C/C++ server with tcl interpreters embedded.
  We developed a specific application with a part of the
  business rules implemented in tcl.
  Right now we want to improve the overall performance of
  the application (to have acceptable execution times for
  specific tasks - this means time consumed in C/C++ plus
  time consumed in tcl).

  As I noticed from using the profiler in the tcl
  standard library, it seems that only time spent in pure
  tcl code in collected. To get a good feeling on the
  overall performance we need to measure both time
  components: the one spent in C and the one spent in
  pure tcl.

  Let's consider a simple app skeleton as an example.

  Let Tcl1 be a higher level tcl proc.
  Let Tcl11 be a lower level tcl proc that is called by Tcl1.
  Let C1 be a C/C++ callback implemented in C and exposed
  to external tcl code. Tcl11 has minimal pure tcl inside
  and invokes C1.

  Running the profiler, I noticed that the time reported
  for Tcl11 is 0. The fact the time is 0 makes me think
  of two concurrent possible reasons: (1) the pure tcl
  code in Tcl11 runs too fast and is approximated as 0
  and (2) the C1 is not profiled. This is not too useful
  and I will show you a simple scenario for this.

  Let's consider that Tcl11 invokes C1 (possible a costly
  calculating operation) hundreds times instead of only
  once and then caching the result.
  By not collecting the time consumed in C1, I miss an
  opportunity to improve the Tcl11 proc. I hope you got
  my point.

  In conclusion, please tell me if there is some option
  to configure the existing tcl profiler to do what I
  need. Or, maybe, you can direct me somehow to reach my
  goal. Anyway, it seems a general need for others to enjoy.

  Thank you very much for your time and consideration.


tkt_uuid: 1610330fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: dns
priority: 5 Medium
foundin: None
resolution: Accepted
title: DNS: Asynchronous connect to server
comment:
  Currently DNS tcllib module uses synchronous connection to DNS server when TCP is using.

  Sometimes server admins close TCP port 53 and even drop all TCP packets addressed to this port. When Tcl/Tk application connects to such a server it becomes irresponsible until TCP connect timeout reaches.

  Attached patch makes ::dns::resolve using asynchronous socket connect.


tkt_uuid: 939532ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: exif
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: exif read fails when subIFD has unknown tag
comment:
  The if/elseif/else for tag recognition in 
  proc ::exif::exifSubIFD ends with 'error "unknown 
  tag ..."'.

  I highly doubt the author intended this, as this renders 
  the exif unusable whenever a camera manufacturer adds 
  a new exif tag. 

  My suggestion: change 'error' to 'debug'. 


tkt_uuid: 2850031fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Tk hangs when creating MessageDlg with very long message
comment:
  On my ActiveTcl 8.4.19 Windows Machine the following code freezes wish:

  package require BWidget
  set Msg [string repeat "########################\n" 1000]
  MessageDlg::create .tst -type user -buttons {OK Cancel} -message $Msg

  It's not best practice to let very long messages appear in that widget - but I think it should not freeze anyway.


tkt_uuid: 3312880fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: Fixed
title: FTP command "RNFR" checks filesystem paths
comment:
  RNFR checks the native filesystem for the pathname specified.

  The offending logic is:
          if {[file exists $path]} {...}

  This will fail unless you are using the native filesystem driver and a docroot of "/"

  To check for existence, perhaps rename could be called with "newname" of "" (empty string) ?


tkt_uuid: 1805192fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: linearalgebra
priority: 5 Medium
foundin: None
resolution: None
title: ::math::linearalgebra::eigenvectorsSVD does not work
comment:
  ::math::linearalgebra::eigenvectorsSVD does not work coz of a $matrix variable not defined.. maybe it should be the $A matrix instead 

  from danielfisico@gmail.com


tkt_uuid: 772535ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: snit
priority: 3 Low
foundin: None
title: snit: implementation of mymethod command
comment:
  To deal with renaming of objects snit provides the 
  command [mymethod] to create code which can be 
  given to callback handlers.

  The generated code essentially refers to the variable 
  $Snit_instance in the unchanging private namespace of 
  the object, which contains the current name of the 
  intance = instance command.

  Example:
       mymethod foo
  generates
       "$Snit_instance foo"

  This is variable reference is a bit problematic. The code 
  executing the callback __must not__ any list command 
  when adding additional arguments to the callback. Which 
  is usual. The moment a list command is used, for 
  example [linsert], or [lappend] to build up the full cllback 
  command the variable reference will be quoted in braces, 
  and the final command will look like:

       "{$Snit_instance} foo arg1 arg2 ..."

  [eval]'ing this fails.

  Example stacktrace

  invalid command 
  name "$::ttable::ttable::Snit_inst1::Snit_instance"
      while executing
  "{$::ttable::ttable::Snit_inst1::Snit_instance} 
  NColChanged 0 3"
      ("uplevel" body line 1)
      invoked from within
  "uplevel #0 [linsert $options(-ncolcommand) end 
  $oldncols $ncols]"
      (procedure "Snit_configure-data" line 42)
      invoked from within

  You see how the command is constructed, and the 
  additional quoting generated by this.

  The big problem is that the usage of list commands to 
  construct an eval'able callback is the usual way of doing 
  this.


tkt_uuid: 2790985fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tar
priority: 5 Medium
foundin: None
resolution: Fixed
title: fail to extract tar created by mks tools
comment:
  The 3rd call to readHearder blows up attempting to tar::untar this file made by windows tar.exe from MKS. Single file tar test case attached.
  FWIW, bsdtar windows exe running on same machine with same file) can extract the file fine. There is apparently confusion over the seek for preceding read as it seems not to return a proper header block. But bsdtar isn't affected. Thanks for any help.. Roy

  ERROR LOOKS LIKE THIS
  (app) 268 % ::tar::untar  ../dia/srch-30apr-01may-2009/test-mks.tar
  expected integer but got "0"


tkt_uuid: 2906306fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: md5
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: md5::md5 -file option error on close
comment:
  calling md5:
     set result "WUB[::md5::md5 -hex -file [dict get $req -file]]"

  bgerror: {can not find channel named "file51"} {-code 1 -level 0 -errorcode {TCL LOOKUP CHANNEL file51} -errorinfo can\ not\ find\ channel\ named\ \"file51\"\n\ \ \ \ while\ executing\n\"close\ \$opts(-channel)\"\n\ \ \ \ (procedure\ \"::md5::md5\"\ line\ 44)\n\ \ \ \ invoked\ from\ within\n\"::md5::md5\ -hex\ -file\ \[dict\ get\ \$req\ -file\]\"\n\ \ \ \ (procedure\ \"etag\"\ line\ 4)...

  pardon my backslashes.


tkt_uuid: 1005377fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: struct :: stack
priority: 9 Immediate
severity: Minor
foundin: None
resolution: Not Applicable Here
title: struct::stack name collisions
comment:
  The command ::struct::stack generates a new stack object with an 
  automatically generated name. If the automatically generated 
  name is the name of an existing command, ::struct::stack throws 
  an error instead of automatically generating a unique name.

  The only way to protect against this is to specify the name 
  explicitly, which works; however, it's an undocumented feature.


tkt_uuid: 2828086fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: Add <<TreeSelect>> event for keyboard navigation
comment:
  The attached patch updates tree.tcl to support the <<TreeSelect>> virtual event for KeyPress-Up and KeyPress-Down. Many users use the keyboard to navigate tree widgets and this brings the BWidget tree in line with current UI best practices. 


tkt_uuid: 1606391fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: parse gets confused inside script tags
comment:
  The following example shows how the parser in htmlparse gets confused by the JavaScript expression i<w..., incorrectly recognizing it as a tag.

  <HTML>
  <HEAD>
  <TITLE>Demonstrate Bug</TITLE>
  <SCRIPT LANGUAGE="JavaScript">
          function resetTheForm()
          {
              var i;
              
              // Make sure the forms object exists
              if(window.document.forms)
              {
                  // Reset each form
                  for(i=0; i<window.document.forms.length; i++)
                      window.document.forms[i].reset();
              }
          }
  </SCRIPT>
  </HEAD>
  <BODY>
  <P>Nothing interesting here; move along.</P>
  </BODY>
  </HTML>

  (Running it through the debugCallback will show the incorrect parsing.


tkt_uuid: 1672340fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Fixed
title: test expose-1.1 fails witch tcl 8.5a5
comment:
  The expose tests reports "expose" instead of ::snit::Comp.statement.expose.

  Tested on Linux and FreeBSD.
  See attached patch.


tkt_uuid: 1191854fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: profiler
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: profiler - No sense to clutter output when total calls = 0
comment:
  This is a kind of enhancement.
  I changed my local version by moving the piece 
  if { !$callCount($name) } {
      append result "\n"
      continue
  }
  in ::profiler::print towards the beginning of foreach loop. 
  Of course I removed the line append result "\n"


tkt_uuid: 1198465fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Documentation
priority: 5 Medium
foundin: None
resolution: None
title: Documentation glitch in ActiveStates's 8.4.9.1 release
comment:
  Hello out there,
  not entirely sure whether this is the right place but I
  couldn't find a better one.
  In the HTML docs the 'start page' for TkLib
  (.../tklib/toc.html) in the new release (8.4.9.1) by
  ActiveState is empty at least when viewed with Firefox
  (asking for this page's source code showed a blank page
  as well).
  Best regards
  Helmut Giese

  PS: There is another - albeit different - small issue
  with TkTable's start page, which I will report at there.


tkt_uuid: 3313923fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: http :: autoproxy
priority: 7 High
foundin: None
resolution: Fixed
title: configure -authProc does not grab the correct argument
comment:
  package require autoproxy
  autoproxy::init
  autoproxy::configure  ; # show what was found
  autoproxy::configure -authProc defAuthProc
  autoproxy::configure  ; # see the BUG?
  autoproxy::cget -authProc  ; # see the BUG more clearly!

  The last command returns "-authProc" whereas it should return "defAuthProc"

  Fix:
  Line 106 of autoproxy.tcl should read:
              -authProc { set options(authProc) [Pop args 1] }
  instead of:
              -authProc { set options(authProc) [Pop args] }


tkt_uuid: 1774302fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Fixed
title: error in CommRunHook error handling
comment:
  In proc ::comm::CommRunHook there is a block of code that looks like this:

      if {<something> {
  set code [catch {interp eval $interp $cmd} res]
      } else {
  set code [catch {uplevel 1 $cmd} res]
      }

      switch -exact -- $code {
  0 {}
  1 {
      return -errorinfo $::errorInfo -errorcode $::errorCode -code error $result
  }
  3 {return}
  4 {}
  default {return -code $code $res}
      }


  Notice that the first few lines set the variable "res" as the result of the catch, but the "1" case in the switch tries to use the variable $result.


tkt_uuid: 1071339fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: None
title: tkchat requires unknown package jlib
comment:
  Latest tkchat *requires* a package jlib that is not
  supplied in either a standard tcl/tk distribution (up
  to and including activetcl) or tcllib.  This is against
  the policy of the tcllib project I believe; the tkchat
  authors should either code a replacement in pure tcl so
  they can reduce their package requirements to a
  reasonable level, or they should stop hosting tkchat
  within tcllib, so allowing them to require whatever
  third-party packages they want.


tkt_uuid: 450914ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 7 High
foundin: None
resolution: Not Applicable Here
title: example access Tk internals
comment:
  The hpupdate.tcl script calls the Tk private
  command [tkButtonInvoke].  That command is
  moving in Tk 8.4.

  Here's a patch to workaround the problem.


tkt_uuid: 3613725fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: A Category Is Missing
priority: 5 Medium
severity: Minor
foundin: None
resolution: Not Applicable Here
title: ::rest::get & "format" config option...
comment:
  (This is about the rest package)

  Hi all,

  I am reading the manual for the rest package in tcllib, and I get the impression that in ::rest::simple, the config directory should contain \"format\". In the rest of the manual, I got the impression that \"format\" and \"result\" are somehow synonyms.

  Looking in the code, I see that only \"result\" is checked in config, and I am not sure what happens in parse_opts (:format is specified).

  May be the documentation needs to mention only \"result\"? (And fix the option handling?)

  George


tkt_uuid: 1581453fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: unset ftp(state.data) error
comment:
  I added this comment to bug 1234831, but wasn't sure 
  if that comment was monitored.  

  If there is an error in any file transfer in passive 
  mode, this error will come up:

  can't unset ftp(state.data)

  I have been able to trace this problem down to 
  the ::ftp::CopyNext routine and the StateHandler 
  routine. 

  The CopyNext routine will always unset ftp
  (state.data) 
  once the transfer is complete or there is an error.  
  Then 
  the StateHandler routine in the put_sent switch arm, 
  will 
  try to unset it again if the return code is not 1 or 
  2, 
  and it's passive mode.  

  All that's needed to fix this is either a catch, or a 
  cleaner way would be something like:

  if [info exists ftp(state.data)] {unset ftp
  (state.data)} 
  in the StateHandler routine.


tkt_uuid: 458446ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget: faster ListBox inserts
comment:
  Motivation:

  The BWidget ListBox insert command isn't a speed demon.
  This is not
  too noticable for small lists, but it gets rather slow
  for big ones
  E.g. inserting 500 entries with just -text and -image
  attributes set 
       takes approx. 1 second on a Pentium III 550MHz.

  Problem analysis:

  The bulk of the time in ListBox::insert gets eaten by a
  call to
  Widget::init. In Widget::init, most of the time is used
  by
  initializing and parsing from standard options
  database. The example
  from above uses ~1250msec for building up the std.
  options and
  ~250msec to apply specific options for the item.

  Proposed patch:

  Two functions to speed up inserts of many items that
  are all almost
  equal. 

  First, Widget::copyinit. This works almost like the
  normal init, but
  saves time by copying standard option initialization
  from a given
  template. It then applies specific item options (just
  like init).

  Second, ListBox::multipleinsert. This also works like
  its pendant
  ListBox::insert, but knows about the aforementioned
  Widget::copyinit
  function. I shortly thought of changing the original
  'insert', but the
  effects of a change there would not be backward
  compatible.

  Sideeffects:
  None to existing code. A widget function more to
  document for the user
  (ListBox::multipleinsert).

  Results:
  The speedup of using multipleinsert is a factor of 2
  when used almost
  exactly like a multiple call to insert.
  That is:

      set l
      foreach n {name1 name2 name3 ... namen} {
          lappend l $n "-text $n -image something.gif"
      }
      $list multipleinsert end $l

  is 2 times faster than its pendant

      foreach n {name1 name2 name3 ... namen} {
          $list insert end $n -text $n -image
  something.gif
      }

  Assuming that, e.g. all images used are the same (as in
  the example
  above, the speedup is factor 3 by using:
      set l
      foreach n {name1 name2 name3 ... namen} {
          if {[llength $l] == 0} {
              lappend l $n "-text $n -image
  something.gif"
  } else {
              lappend l $n "-text $n"
          }
      $list multipleinsert end $l


  Code:

  In listbox.tcl:

  # Bastien Chevreux (bach@mwgdna.com)
  # The multipleinsert command performs inserts several
  items at once into
  #  the list. It is faster than calling insert multiple
  times as it uses the
  #  Widget::copyinit command for initializing all items
  after the 1st. The 
  #  speedup factor is between 2 and 3 for typical usage,
  but could be higher
  #  for inserts with many options.
  #
  # Syntax: path and index are as in the insert command
  #         args is a list of even numbered elements
  where the 1st of each pair
  #          corresponds to the item of 'insert' and the
  second to args of 'insert'.
  #
  ------------------------------------------------------------------------------
  #  Command ListBox::multipleinsert
  #
  ------------------------------------------------------------------------------
  proc ListBox::multipleinsert { path index args } {
      variable $path
      upvar 0  $path data

      # If we got only one list as arg, take the first
  element as args
      # This enables callers to use 
      #   $list multipleinsert index $thelist
      # instead of
      #   eval $list multipleinsert index $thelist

      if {[llength $args] == 1} {
  set args [lindex $args 0]
      }

      set count 0
      foreach {item iargs} $args {
  if { [lsearch $data(items) $item] != -1 } {
      return -code error "item \"$item\" already exists"
  }

  if {$count==0} {
      Widget::init ListBox::Item $path.$item $iargs
      set firstpath $path.$item
  } else {
      Widget::copyinit ListBox::Item $firstpath
  $path.$item $iargs
  }

  if { ![string compare $index "end"] } {
      eval lappend data(items) $item
  } else {
      set data(items) [linsert $data(items) $index
  $item]
  }
  set data(upd,create,$item) $item

  incr count
      }

      _redraw_idle $path 2
      return $item
  }

         

  In widget.tcl:

  # Bastien Chevreux (bach@mwgdna.com)
  #
  # copyinit performs basically the same job as init, but
  it uses a
  #  existing template to initialize its values. So,
  first a perferct copy
  #  from the template is made just to be altered by any
  existing options
  #  afterwards.
  # But this still saves time as the first initialization
  parsing block is
  #  skipped.
  # As additional bonus, items that differ in just a few
  options can be
  #  initialized faster by leaving out the options that
  are equal.

  # This function is currently used only by
  ListBox::multipleinsert, but other
  #  calls should follow :)

  #
  ------------------------------------------------------------------------------
  #  Command Widget::copyinit
  #
  ------------------------------------------------------------------------------
  proc Widget::copyinit { class templatepath path options
  } {
      upvar 0 ${class}::opt classopt
      upvar 0 ${class}::$path:opt  pathopt
      upvar 0 ${class}::$path:mod  pathmod
      upvar 0 ${class}::$path:init pathinit

      upvar 0 ${class}::$templatepath:opt  
  templatepathopt
      upvar 0 ${class}::$templatepath:mod  
  templatepathmod
      upvar 0 ${class}::$templatepath:init 
  templatepathinit

      if { [info exists pathopt] } {
  unset pathopt
      }
      if { [info exists pathmod] } {
  unset pathmod
      }

      # We use the template widget for option db copying,
  but it has to exist!
      array set pathmod  [array get templatepathmod]
      array set pathopt  [array get templatepathopt]
      array set pathinit [array get templatepathinit]

      set Widget::_class($path) $class
      foreach {option value} $options {
          if { ![info exists classopt($option)] } {
              unset pathopt
              unset pathmod
              return -code error "unknown option
  \"$option\""
          }
          set optdesc $classopt($option)
          set type    [lindex $optdesc 0]
          if { ![string compare $type "Synonym"] } {
              set option  [lindex $optdesc 1]
              set optdesc $classopt($option)
              set type    [lindex $optdesc 0]
          }
          set pathopt($option)
  [$Widget::_optiontype($type) $option $value [lindex
  $optdesc 3]]
  set pathinit($option) $pathopt($option)
      }
  }


tkt_uuid: 1329207fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil :: magic
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: mimetype, filetype result empty for text files
comment:
  modules/fumagic/filetypes.test
  - tcltest 2.2.8
  - fileutil::magic::filetype 1.0
    - fileutil::magic::rt     1.0

  ==== fumagic.filetype-1.2 test file directory FAILED
  ==== Contents of test case:

      set f [file join $dir fileTypeTest]
      set res [catch {fileutil::magic::filetype $f} msg]
      regsub {file[0-9]+} $msg {fileXXX} msg
      list $res $msg

  ---- Result was:
  0 {}
  ---- Result should have been (exact matching):
  1 {error reading "fileXXX": illegal operation on a
  directory}
  ==== fumagic.filetype-1.2 FAILED

  modules/fumagic/mimetypes.test
  - tcltest 2.2.8
  - fileutil::magic::mimetype 1.0
    - fileutil::magic::rt     1.0

  ==== fumagic.mimetype-1.2 test file directory FAILED
  ==== Contents of test case:

      set f [file join $dir fileTypeTest]
      set res [catch {fileutil::magic::mimetype $f} msg]
      regsub {file[0-9]+} $msg {fileXXX} msg
      list $res $msg

  ---- Result was:
  0 {}
  ---- Result should have been (exact matching):
  1 {error reading "fileXXX": illegal operation on a
  directory}



  In fact, trying to apply to a text file, such as
  /var/log/messages or /COPYRIGHT returns nothing --
  [rt::resultv] seems to be an empty list.

  Using the procedure on some other things -- like
  picture files -- seems to work, however.


tkt_uuid: 3085417fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Build System & Testing
priority: 5 Medium
foundin: None
resolution: Fixed
title: nnsd not installed
comment:
  The nano name service daemon is not installed. This appears to have happened between tcllib versions1.11 and 1.12 . Thhe support/installation/modules.tcl  does not list nnsd as an application. Adding the line :

  Application nnsd 

  fixes this bug. Corrected file attached.


tkt_uuid: 732512ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Accepted
title: encoded word encoding may be lower or upper case
comment:
  RFC2047 specifies that the encoding for an encoded-word in a 
  Message Header may be specified by an upper or lower case letter, 
  currently ::mime::word_decode only accepts upper case. I have 
  attached a (very simple) patch to remedy this and added a couple of 
  simple tests to check for it.

  Thanks

  Matthew


tkt_uuid: 1751871fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Fixed
title: ldap::search : too many nested evaluations (infinite loop?)
comment:
  Hello 

  I have a trouble trying to search a element.
  this element is names eduid. When I'm trying to search on it , I obtain the following display:
  tcl> ldap::search $handle "ou=people,dc=XXX,dc=com" "eduid=ed148869" "uid"
  too many nested evaluations (infinite loop?)

  this uid exists as a search on the name return that:
  tcl> ldap::search $handle "ou=people,dc=XXX,dc=com" "uid=AERTY" "eduid"
  {eduid=ed043414,ou=people,dc=XXX,dc=com {eduid ed043414}}

  can you help me?

  regards
  Jerome


tkt_uuid: 3575707fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
resolution: Accepted
title: add opt arg to csv::join to force insertion of delimiter
comment:
  the proc ::csv::join currently surrounds values by the delimiter characters only when a value contains the delimiter. The patch attached adds an optional argument to ::csv::join, ::csv::joinlist, and ::csv:joinmatrix to make ::csv::join always surround fields by the delimiter character.


tkt_uuid: 1191607fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: Multi-line ftp messages are lost
comment:
  In ::ftp::StateHandler multilines messages are not
  handled correctly, only the first messageline is kept.

  The loop :
  while { [string equal $multi_line "-"] } {
  --> Throws away the 'buffer' variable

  eg. When I do a manual ftp via UNIX ftp I get:
  ftp> put timesheet.xml
  200 PORT Command successful
  150 ASCII Data Connection
  550- Error Response
  ORA-31038: Invalid boolean value: "False"
  550 End Error Response
  ftp>


  --> In ::ftp::DisplayMsg the msg inputparameter
  only contains " Error Response " and not the 2 next lines
  with more info (I want to log this errors).


  I think the multiline text should be concatenated in
  msgtext.

  Regards,
  Christophe De Clercq


tkt_uuid: 1720901fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
title: test suite enhancement - add tests for all modules
comment:
  Right now, there are at least 12 modules which apparently have no tests: bench, ftp, ftpd, grammar_peg, http, irc, javascript, jpeg, nmea, nntp, page, pluginmgr . It seems like it would be worthwhile to have experts of these modules provide a few tests to begin the development of testing for these modules.


tkt_uuid: 3000293fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: ListBox bindText <Button-1> stops selection
comment:
  Given a Listbox with the patch of bug 2995969 (which uses ButtonRelease events instead Button for selection) and the following script:
  pack [ListBox .l -selectmode single]
  .l insert end list:#auto -text 111
  .l insert end list:#auto -text 222
  .l insert end list:#auto -text 333
  .t.l configure -width 10
  proc p {args} {puts "p $args"}
  ListBox::bindTag .t.l <Button-1> p
  ---
  After the bindTag command, selection will not work any more.


tkt_uuid: 3163579fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Add a -compress config option for ::http::config
comment:
  Right now the http packages requests compressed results if the website offers it and the zlib package has been loaded (or Tcl 8.6 is being used).

  We are tracking a problem where some compressed data is getting corrupted.  We want to use the http package to fetch both compressed and uncompressed versions of the page.  Currently with the http package it's all or nothing.  

  I can work around the problem by specifying a -channel or -handler option, based on reading the source, but an explicit way to control the behavior would be preferable.


tkt_uuid: 1260174fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
resolution: None
title: ip: various procs for ip package
comment:
  below is the current man page for the extension to the
  ip package.

  A review and changes to accomodate integration into the
  tcllib ip package is requested.



  ipExtension.tcl(l)                                    
       ipExtension.tcl(l)



  NAMEE
         ::ipExtension:: - an extension to tcllib ip library

  SSYYNNOOPPSSIISS
         package require ipExtension



  AAUUTTHHOORRSS
         Aamer Akhter / aakhter@cisco.com


  SSUUPPPPOORRTT
         aakhter@cisco.com


  DDEESSCCRRIIPPTTIIOONN
         A detailed description of the functionality
  provided by the library.


  RREEQQUUIIRREEMMEENNTTSS
         package require logger
         package require ip



  NNOOTTEESS
         1.



  PPRROOCCEEDDUURREESS
         ::ip::prefixToNative




                convert from dotted from to native (hex) form




                       prefixToNative <prefix>



                Options:



                       <prefix>
                           string in the <ipaddr>/<mask>
  format



                Return values:



                       <prefix> in native format {<hexip>
  <hexmask>}



                Examples:



                       % ip::prefixToNative 1.1.1.0/24
                       0x01010100 0xffffff00




         ::ip::nativeToPrefix




                convert from native (hex) form to dotted form




                       nativeToPrefix <native>



                Options:



                       <native>
                           tcllist in format {<hexip>
  <hexmask>}



                Return values:



                       <prefix> form of <native>, where
  prefix is string in the <ipaddr>/<mask> format



                Examples:



                       % ip::nativeToPrefix {0x01010100
  0xffffff00}
                       1.1.1.0/24




         ::ip::intToString




                convert from an integer/hex to dotted form




                       intToString <integer/hex>



                Options:



                       <integer>
                           ip address in integer form



                Return values:



                       ip address in dotted form



                Examples:



                       ip::intToString 4294967295
                       255.255.255.255




         ::ip::ToInteger




                convert dotted form ip to integer




                       ToInteger <ipaddr>



                Options:



                       <ipaddr>
                           decimal dotted from ip address



                Return values:



                       integer form of <ipaddr>



                Examples:



                       % ::ip::ToInteger 1.1.1.0
                       16843008




         ::ip::ToHex




                convert dotted form ip to hex




                       ToHex <ipaddr>



                Options:



                       <ipaddr>
                           decimal dotted from ip address



                Return values:



                       hex form of <ipaddr>



                Examples:



                       % ::ip::ToHex 1.1.1.0
                       0x01010100




         ::ip::MaskToInt




                convert mask to integer




                       MaskToInt <mask>



                Options:



                       <mask>
                           mask in either dotted form or
  mask length form (255.255.255.0 or 24)



                Return values:



                       integer form of mask



                Examples:



                       ::ip::MaskToInt 24
                       4294967040




         ::ip::broadcastAddress




                return broadcast address given prefix




                       broadcastAddress <prefix>



                Options:



                       <prefix>
                           route in the form of
  <ipaddr>/<mask> or native form {<hexip> <hexmask>}



                Return values:



                       ipaddress of broadcast



                Examples:



                       ::ip::broadcastAddress 1.1.1.0/24
                       1.1.1.255

                       ::ip::broadcastAddress {0x01010100
  0xffffff00}
                       0x010101ff




         ::ip::MaskToLength




                converts dotted or integer form of mask
  to length




                       MaskToLength
  <dottedMask>|<integerMask>|<hexMask>



                Options:



                       <dottedMask>
                       <integerMask>
                       <hexMask>
                           mask to convert to prefix
  length format (eg /24)



                Return values:



                       prefix length



                Examples:



                       ::ip::MaskToLength 0xffffff00
                       24

                       % ::ip::MaskToLength 255.255.255.0
                       24




         ::ip::LengthToMask




                converts mask length to dotted mask form




                       LengthToMask <maskLength>



                Options:



                       <maskLength>
                           mask length



                Return values:



                       mask in dotted form



                Examples:



                       ::ip::LengthToMask 24
                       255.255.255.0




         ::ip::nextNet




                returns next an ipaddress in same
  position in next network




                       nextNet <ipaddr> <mask> [<count>]



                Options:



                       <ipaddress>
                           in hex/integer/dotted format
                       <mask>
                           mask in
  hex/integer/dotted/maskLen format
                       <count>
                           number of nets to skip over
  (default is 1)



                Return values:



                       ipaddress in same position in next
  network in hex




         ::ip::isOverlap




                checks to see if prefixes overlap




                       isOverlap <prefix> <prefix1>
  <prefix2>...



                Options:



                       <prefix>
                           in form <ipaddr>/<mask> prefix
  to compare <prefixN> against
                       <prefixN>
                           in form <ipaddr>/<mask>
  prefixes to compare against



                Return values:



                       1 if there is an overlap



                Examples:



                       % ::ip::isOverlap 1.1.1.0/24
  2.1.0.1/32
                       0

                       ::ip::isOverlap 1.1.1.0/24
  2.1.0.1/32 1.1.1.1/32
                       1




         ::ip::isOverlapNative




                checks to see if prefixes overlap
  (optimized native form)




                       isOverlap <hexipaddr> <hexmask>
  {{<hexipaddr1> <hexmask1>} {<hexipaddr2> <hexmask2>...}



                Options:



                       -all
                           return all overlaps rather
  than the first one
                       -inline
                           rather than returning index
  values, return the actual overlap prefixes
                       <hexipaddr>
                           ipaddress in hex/integer form
                       <hexMask>
                           mask in hex/integer form



                isOverlapNative is avaliabel both as a C
  extension and in a native tcl form
                if the extension is loaded (tried
  automatically), isOverlapNative will be
                linked to isOverlapNativeC. If an
  extension is not loaded, then isOverlapNative
                will be linked to the native tcl proc:
  ipOverlapNativeTcl.

                Return values:



                       non-zero if there is an overlap,
  value is element # in list with overlap



                Examples:



                       % ::ip::isOverlapNative 0x01010100
  0xffffff00 {{0x02010001 0xffffffff}}
                       0

                       %::ip::isOverlapNative 0x01010100
  0xffffff00 {{0x02010001 0xffffffff} {0x01010101
  0xffffffff}}
                       2




         ::ip::IpToLayer2Multicast




                converts ipv4 address to a layer 2
  multicast address




                       IpToLayer2Multicast <ipaddr>



                Options:



                       <ipaddr>
                           ipaddress in dotted form



                Return values:



                       mac address in xx.xx.xx.xx.xx.xx form



                Examples:



                       % ::ip::IpToLayer2Multicast 224.0.0.2
                       01.00.5e.00.00.02




         ::ip::IpHostFromPrefix




                gives back a host address from a prefix




                       ::ip::IpHostFromPrefix <ipprefix>
  [-exclude <list of prefixes>]



                Options:



                       <ipprefix>
                           prefix is <ipaddr>/<masklen>
                       -exclude <list of ipprefixes>
                           list if ipprefixes that host
  should not be in



                Return values:



                       ip address



                Examples:



                       %::ip::IpHostFromPrefix  1.1.1.5/24
                       1.1.1.1

                       %::ip::IpHostFromPrefix  1.1.1.1/32
                       1.1.1.1




         ::ip::reduceToAggregates




                finds nets that overlap and filters out
  the more specifc nets




                       ::ip::reduceToAggregates <list of
  ipprefixes>



                Options:



                       <ipprefix>
                           prefix is <ipaddr>/<masklen>
  or native format



                Return values:



                       non-overlapping ip prefixes



                Examples:




                         % ::ip::reduceToAggregates
  {1.1.1.0/24 1.1.0.0/8  2.1.1.0/24 1.1.1.1/32 }
                         1.0.0.0/8 2.1.1.0/24




         ::ip::longestPrefixMatch




                given host IP finds longest prefix match
  from set of prefixes




                       ::ip::longestPrefixMatch <ipaddr>
  <list of ipprefixes>



                Options:



                       <ipprefix>
                           prefix is <ipaddr>/<masklen>
  or native format
                       <ipaddr>
                           ip address in <ipprefix>
  format, dotted form, or integer form



                Return values:



                       <ipprefix> that is the most
  specific match to <ipaddr>



                Examples:



                       % ::ip::longestPrefixMatch 1.1.1.1
  {1.1.1.0/24 1.0.0.0/8  2.1.1.0/24 1.1.1.0/28 }
                       1.1.1.0/28




         ::ip::cmpDotIP




                helper function for dotted ip address for
  use in lsort




                       ::ip::cmpDotIP <ipaddr1> <ipaddr2>



                Options:



                       <ipaddr1> <ipaddr2>
                           prefix is in dotted ip address
  format



                Return values:



                       -1 if ipaddr1 is less that ipaddr2
                        1 if ipaddr1 is more that ipaddr2
                        0 if ipaddr1 and ipaddr2 are equal



                Examples:



                       % lsort -command ip::cmpDotIP
  {1.0.0.0 2.2.0.0 128.0.0.0 3.3.3.3}
                       1.0.0.0 2.2.0.0 3.3.3.3 128.0.0.0








  ATS                                  Cisco            
       ipExtension.tcl(l)


tkt_uuid: 620753ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: New options for labelframe
comment:
  Hi,

  The BWidget LabelFrame widget uses a BWidget Label
  widget to display a label or a frame. Currently only a
  -text option is available to set the text of the label
  frame. This patch will also provide the -textvariable,
  -image and -bitmap options to set the label text or
  image.

  Jos.


tkt_uuid: 764702ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: unknown charset 'utf-8' in ::mime::word_decode
comment:
  The UTF-8 charset is currently not handled by
  ::mime::word_decode and related procs:

  tclsh8.4% ::mime::word_decode =?utf-8?Q?H=C3=BCrz?=
  unknown charset 'utf-8'

  Suggested change:

  Add UTF-8 mapping to encList in mime.tcl:
  diff -c1 mime-1.33.tcl mime.tcl
  *** mime-1.33.tclWed Jul  2 17:31:44 2003
  --- mime.tclWed Jul  2 17:58:16 2003
  ***************
  *** 183,185 ****
                unicode "" \
  !             utf-8 ""]
    
  --- 183,185 ----
                unicode "" \
  !             utf-8 UTF-8]
    


tkt_uuid: 987305ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: uuid::compare should be uuid::equal
comment:
  From the uuid manpage:

  | ::uuid::uuid compare id1 id2
  |                                                     
                             
  | Compares two uuids. If equal the result is 0 
  | otherwise the result will be either +1 or -1.

  It's almost never necessary to check if one UUID is
  less than or greater than another; UUIDs don't really
  have a natural ordering relation.  

  It's far more common to check UUIDs for equality.  I'd
  suggest that:

  | ::uuid::uuid equal $id1 $id2
  |  Returns 1 if $id1 and $id2 are equal, 0 otherwise.

  would be a more useful API.


tkt_uuid: 1541436fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: Problems on asn package
comment:
  The module asn.tcl contains errors that makes the 
  module ldap not working

  proc ::asn::asnGetApplication {data_var appNumber_var 
  {contet_var {}}} {


  should use content_var instead of contet_var and the 
  following test

  if {[string length content_var]} {

  shoud be

  if {[string length $content_var]} {


tkt_uuid: 1627892fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Networking: what about SSH ??
comment:
  Hi,

  There are ssh library for ruby, for python but NOTHING for tcl !!

  I am really talking about SSH (not SSL).

  I think it could be a part of the Networking module and you could start with an ssh client (i.e not server).

  for ssh see:
  http://www.ssh.com/products/ssh_secure_shell/

  http://www.googlesyndicatedsearch.com/u/ietf?hl=fr&ie=ISO-8859-1&q=ssh&btnG=Rechercher

  thank you
  bye
  FD 


tkt_uuid: 844766ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: snit
priority: 6
foundin: None
title: need ability to split class defs across files
comment:
  snit does not currently allow one to create classes that 
  spread across multiple files.  It would be very useful to 
  have commands that enable one to modify (type)
  method bodies after creation without knowing snit 
  internals.  Itcl does allow this.


tkt_uuid: 1923685fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: graph
priority: 9 Immediate
foundin: None
resolution: Fixed
title: Crash in tcllibc with struct::graph...
comment:
  I have observed a crash with tcllibc and the struct::graph package. Under ActiveTcl 8.5.1, the attached script crashes. Using teacup to uninstall tcllibc, the script runs fine. Please note that both attached files must be in the same directory to get the attached script to run.


tkt_uuid: 478989ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: control
priority: 5 Medium
foundin: None
resolution: Fixed
title: Test failure
comment:
  tcllib CVS head, configure, make test.

  Module: control
  modules/control/no-op.test
  modules/control/rswitch.test

  ==== rswitch-3.0 rswitch argument checking FAILED
  ==== Contents of test case:

      [list [catch {rswitch 1 \{} msg] $msg $::errorInfo

  ==== Test generated error:
  missing close-bracket
  ---- Result should have been:
  1 {unmatched open brace in list} {unmatched open brace
  in list
      while executing
  "rswitch 1 \{"}
  ==== rswitch-3.0 FAILED


tkt_uuid: 553773ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: calculus
priority: 5 Medium
foundin: None
resolution: Fixed
title: calculus: define and doc scope of funcs
comment:
  The commands math::calculus::* take "func" arguments,
  Tcl commands that accept and return numeric values.

  The scope for these commands needs to be defined.
  Currently, the command name passed in is just called
  within the procs, effectively seeking the commands
  in the ::math::calculus and :: namespaces.

  Reasonable alternatives would be to look in only ::,
  or in only the caller's context.

  I think I favor using the caller's context via
  [uplevel].

  Whatever choice is made, it should be documented.


tkt_uuid: 936064ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: uri
priority: 5 Medium
foundin: None
resolution: Fixed
title: password:user@host.com not parsed
comment:
  URI does not handle RFC2396 mentioned http style with
  user:password included:

  % uri::split http://foo:bar@baz.com:80/bla/
  port {} path :bar@baz.tcl:80/ scheme http host foo query {}

  Regexps get it wrong...

  Michael


tkt_uuid: 1300795fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: struct :: prioqueue
priority: 5 Medium
foundin: None
resolution: Accepted
title: fix for prioqueue binary serach
comment:
  === patch ===

  --- prioqueue.tclFri Sep 23 13:28:13 2005
  +++ new/prioqueue.tclFri Sep 23 13:28:21 2005
  @@ -417,6 +417,7 @@
              } elseif {$test > 0 } {
                   # search lower section
                   set upper $pivot
  +                set bound $upper
                   set pos -1
              } else {
                   # search upper section 

  === testcase ===

  ::struct::prioqueue -integer testI

  testI put 1 1
  testI put 2 5
  testI put 3 7
  testI put 4 6
  testI put 5 0

  puts "[testI get]   =   3"
  puts "[testI get]   =   4"
  puts "[testI get]   =   2"
  puts "[testI get]   =   1"
  puts "[testI get]   =   5"

  Submitted by:
  Krzysztof Ska&#322;ecki <krys@dacsystem.pl>
  Tomasz Kosiak <tk@dacsystem.pl>


tkt_uuid: 448634ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Accepted
title: pop3 uidl support
comment:
  Added support for (optional) pop3 UIDL command.
  Changed version to 1.3
  Some minor formatting changes to pop3.tcl.
  pop3.tcl sorted by proc name.
  Added uidl command summary to man page.
  Some minor formatting to man page.
  Updated pkgIndex.tcl for version 1.3


tkt_uuid: 1266913fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: skiplist
priority: 1 Zero
foundin: None
resolution: Not Applicable Here
title: skiplist - Walking through a range
comment:
  To walk through the skiplist, we already have the
  [walk] subcommand.
  But wouldn't it be better if we could walk, for instance,
  from one key to another like in SQL :
  SELECT... WHERE ID>='BOB' AND ID<='SMALL'
  I think this would be valuable.


tkt_uuid: 2038217fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: irc
priority: 5 Medium
foundin: None
resolution: Fixed
title: the irc package is misusing namespace variables
comment:
  The irc package neglects to use [variable] within the namespace eval to get the right scope in proc ::irc::connection.

  The following is an example:
  % set ::sock "I'm a global value"
  I'm a global value
  % source ./irc.tcl
  % set c [::irc::connection] 
  ::irc::irc0::network
  % set ::sock
  % 

  The following namespace variables should be used with [variable]:
  sock, dispatch, linedata, config, logger

  Right now this totally defeats the purpose of using a namespace.


  It also results in this interesting bug if the dispatch global variable exists.

  % set dispatch global
  % set c [irc::connection]
  can't array set "dispatch": variable isn't array

  You may want to check the bug tracker for similar bugs from existing globals that the irc package tries to overwrite.

  There may be more problems lurking in the irc package.


tkt_uuid: 606141ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 8
foundin: None
resolution: Fixed
title: csv bug: empty field in middle of row
comment:
  csv has a bug parsing an empty field in the middle of a
  row.

  In the attached tarball, see sample.data (taken from MS
  Access export file).  The fourth field in the last
  three rows is empty, but csv parses it as containing a
  single double-quote character.  The fix is a single
  line added to  csv.tcl, see csv.diff in the tarball, or
  csv-fixed.tcl.  Run the sample program  csv-test.tcl to
  see the difference in action.

  I'd be grateful if you could incluge this fix in the
  next release, as I am relying on the csv package in one
  of my projects.

  -Tod Olson <tod@uchicago.edu>


tkt_uuid: 2913700fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Rejected
title: extra character in range [!..~]
comment:
  When parsing email messages, I ran across 1 message of thousands that mime would not parse. It's a spam message, none the less, it should parse? The error is:

  expecting character in range [!..~]
      while executing
  "$state(encoding) -mode decode  -- $state(string)"
      (procedure "mime::getbody" line 104)
      invoked from within
  "mime::getbody $m"
      (procedure "_body" line 5)
      invoked from within
  "_body $m"
      (procedure "insert" line 55)
      invoked from within
  "insert $content"
      (procedure "import_file" line 17)
      invoked from within
  "import_file {*}$args"
      (procedure "::mailroom::message::import" line 5)
      invoked from within
  "::mailroom::message import -file $filename"
      ("foreach" body line 3)
      invoked from within
  "foreach filename $messages {
    puts "Importing $filename"
    ::mailroom::message import -file $filename
  }"
      (file "test.tcl" line 12)


tkt_uuid: 1445219fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget Notebook memory leak?
comment:
  I'm using the BWidget NoteBook widget, and having a
  problem with memory. When I open a new tab, wish takes
  more memory (that's fine). But when I close the tab,
  wish also takes more memory. I would have expected it
  to release memory (or at least stay constant, although
  that's not desirable), but instead, the memory
  footprint grows.

  I'm working in Windows XP using ActiveTcl 8.4.10.1.
  [And I'm looking at the "virtual memory" size in the
  Task Manager (which gives a pretty reliable reading),
  and not "Memory Usage" (which is inaccurate). It seems
  to be a real effect, and not just a problem with the
  way Windows calculates memory use.]


tkt_uuid: 1283594fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: $object info self command
comment:
  When an object inherits publically from another, it
  would sometimes be useful to be able to determine the
  object name from outside - this suggested instance
  standard command would enable that, by returning (for
  any object) its $self value.

  I don't believe there's any other way to do this
  introspectively.


tkt_uuid: 3603562fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tklib: crosshair
priority: 7 High
foundin: None
title: confine crosshair::crosshair to a canvas area
comment:
  Hi,

  Sorry but I could not find a crosshair category.

  Currently the Tklib crosshair::crosshair  creates the crosshair in the whole canvas. To make this more flexible it would be better to have the ability to confine the crosshair to a location in the canvas (or a series of locations in a canvas).

  In my case I am using PlotChart to create a series of plots. I would like to confine the crosshair in the plot area only. In other words I do not want the cross hairs to extend pass the axis of the graph and running over the plot labels and titles.

  This enhancement can easily be done by passing the BBox (llx lly urx ury) to crosshair. Store the bbox in a crosshair name space variable and when drawing the lines in the move procedure use the bbox boundary as the start and end points of the lines drawn.

  In the case of a series of locations in a canvas, the user can pass a list of BBoxes when the mouse pointer enters one of those areas the same approach will be done with the move procedure but in that case using the BBox associated with that area. Plotchart allows the user to put more than one plot in a canvas. Therefore this will be an even more versatil implementation of crosshair.

  Thanks in advance,
  Frank


tkt_uuid: 410104ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 6
foundin: None
resolution: Fixed
title: ::fileutil::find infinite recursion
comment:
  ::fileutil::find will go into an infinite recursion if
  it encounters a circular sequence of softlinks.


tkt_uuid: 1352422fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: jpeg
priority: 5 Medium
foundin: None
resolution: None
title: tcllib jpeg bugs
comment:
  2 bugs in tcllib jpeg 0.1 module

  1. ::jpeg::isJPEG : the return value is inverted. Here is
  the correct code:

  proc ::jpeg::isJPEG {file} {
      set is [catch {openJFIF $file} fh]
      catch {close $fh}
      return [expr {! $is}]
  }


  2. ::jpeg::dimensions : this code needs to find the SOF
  marker but only recognizes the SOF marker type byte
  of value c0 and misses c1, c2 and c3. The wiki page 
  http://wiki.tcl.tk/757 has more details.

  Here is the correct code:


  proc ::jpeg::dimensions {file} {
      set fh [openJFIF $file]
      set chunks [markers $fh]

      foreach SOFByte {0 1 2 3} {
          set sof [lsearch $chunks "c$SOFByte *"]
          if {$sof != -1} break
      }
      if {$sof == -1} { return -code error "cannot locate sof 
  marker" }
      seek $fh [lindex $chunks $sof 1] start
          
      binary scan [read $fh 5] cSS precision height width
      close $fh
      return [list $width $height]
  }


  Keith Vetter


tkt_uuid: 3066026fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Development Tools
priority: 5 Medium
foundin: None
resolution: Fixed
title: testutilities.tcl presumes tcltest loaded
comment:
  From the definition and description of [testsNeedTcltest] in testutilities.tcl, it is clear that we want to allow for the case that the tcltest package has not yet been loaded; this procedure has a branch that does the necessary [package require].

  However, on line 145 one finds the command

  if {![package vsatisfies [package provide tcltest] 2.0]} {

  which errors out in that case, since [package provide tcltest] then returns the empty string. 

  Thus I get the following, if I try to source just a single .test file:

  lars% tclsh
  % source modules/math/math.test
  expected version number but got ""
  % set errorInfo
  expected version number but got ""
      while executing
  "package vsatisfies [package provide tcltest] 2.0"
      invoked from within
  "if {![package vsatisfies [package provide tcltest] 2.0]} {
      # Tcltest 2.0+ provides a documented public API to define and
      # initialize a test c..."
      (file "modules/devtools/testutilities.tcl" line 145)
      invoked from within
  "source [file join \
  [file dirname [file dirname [file join [pwd] [info script]]]] \
  devtools testutilities.tcl]"
      (file "modules/math/math.test" line 14)
      invoked from within
  "source modules/math/math.test"
  % 

  Running tests using sak.tcl only seems to provide module granularity, and e.g. math is a rather large module.


tkt_uuid: 1927092fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ncgi
priority: 1 Zero
foundin: None
resolution: Not Applicable Here
title: ncgi documentation - confusing use of term 'session'
comment:
  The man page for ncgi appears to be using the word 'session' in a way that doesn't fit with the common concept of a session in web-application environments.

  e.g  
  "Set the query data and Content-Type for the current CGI session."

  "If url is specified, then it defines the URL for the current session"

  My suggestion is to replace the word 'session' with 'invocation'.


tkt_uuid: 784523ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: (unused)
priority: 7 High
foundin: None
resolution: Fixed
title: make install fails on Mac OS X
comment:
  On Mac OS X, configure generates a Makefile with 
  extraneous carriage returns in the VERSION and pkglibdir 
  variables.  There might be additional problems as well.

  My suspicion is that the following calls to sak.tcl in 
  configure.in are responsible:

  PACKAGE=`$TCLSH_PROG ${srcdir}/sak.tcl name`
  MAJOR_VERSION=`$TCLSH_PROG ${srcdir}/sak.tcl major`
  MINOR_VERSION=`$TCLSH_PROG ${srcdir}/sak.tcl minor`


tkt_uuid: 607085ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: struct
priority: 8
foundin: None
resolution: Accepted
title: priority queue
comment:
  Hi, simple priority queue implementation.

  Not perfect and missing docs (and more tests, as always).


tkt_uuid: 1572867fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: mime tests fail in 1.9
comment:
  Building tcllib-1.9 on FreeBSD with Tcl 8.4.13 fail:

  ==== mime-2.2 Generate a multi-part MIME message FAILED
  ==== Contents of test case:

      set tok1 [initialize -canonical "Text/plain"
  -string "jack and jill"]
      set tok2 [initialize -canonical "Text/plain"
  -string "james"]
      set bigTok [mime::initialize -canonical
  Multipart/MyType  -param [list MyPar
  am foo]  -param [list boundary bndry]  -header [list
  Content-Description "Test M
  ultipart"]  -parts [list $tok1 $tok2]]
      set msg [mime::buildmessage $bigTok]

      # The generated message is predictable except for
  the Content-ID
      list [regexp "MIME-Version: 1.0\r
  Content-Description: Test Multipart\r
  Content-ID: \[^\n]+\r
  Content-Type: multipart/mytype;\r
                \[^\n]+;\r
                \[^\n]+\r
  \r
  --bndry\r
  MIME-Version: 1.0\r
  Content-ID: \[^\n]+\r
  Content-Type: text/plain\r
  \r
  jack and jill\r
  \r
  --bndry\r
  MIME-Version: 1.0\r
  Content-ID: \[^\n]+\r
  Content-Type: text/plain\r
  \r
  james\r
  \r
  --bndry--\r
  " $msg] [regexp "boundary=\"bndry\"" $msg] [regexp
  "myparam=\"foo\"" $msg]

  ---- Result was:
  0 1 1
  ---- Result should have been (exact matching):
  1 1 1
  ==== mime-2.2 FAILED

  ---
  ==== mime-3.4 Try to parse a MIME message with an
  invalid version FAILED
  ==== Contents of test case:

      set msg1 {MIME-Version: 2.0
  Content-Type: text/plain

  msg1}

      set tok [mime::initialize -string $msg1]
      catch {mime::getbody $tok} err1
      catch {mime::buildmessage $tok} err1a
      list $err1 $err1a

  ---- Result was:
  msg1 {MIME-Version: 2.0
  Content-Type: text/plain

  msg1}
  ---- Result should have been (exact matching):
  msg1 {MIME-Version: 2.0
  Content-Type: text/plain

  msg1
  }
  ==== mime-3.4 FAILED


  --
  ==== mime-3.6 Try to parse a MIME message with no MIME
  version and generate a ne
  w message from it FAILED
  ==== Contents of test case:


      # No MIME version
      set msg3 {Content-Type: text/plain

  foo}

      set tok [mime::initialize -string $msg3]
      catch {mime::getbody $tok} err3
      catch {mime::buildmessage $tok} err3a
      list $err3 $err3a

  ---- Result was:
  foo {MIME-Version: 1.0
  Content-Type: text/plain

  foo}
  ---- Result should have been (exact matching):
  foo {MIME-Version: 1.0
  Content-Type: text/plain

  foo
  }
  ==== mime-3.6 FAILED


tkt_uuid: 1285549fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Out of Date
title: comm 4.2.1 doesn't work on Tk8.3.4
comment:
  Upgrading from tcllib1.3 to tcllib1.7 includes an upgrade 
  from comm-4.0 to comm-4.2.1. 

  Under tcl/tk 8.3.4 comm-4.0 works fine but comm-4.2.1 
  does not.

  The doco for comm says it requires 8.2.

  To test this try the following under 8.3.4

  Pre-conditions:
    Both versions of comm are somewhere in
    your auto-path. What I have done is install
    tcllib-1.3, copy tcllib/comm to a temp location
    as comm-1.3. Then uninstall tcllib-1.3 and install
    tcllib-1.7. Copy comm-1.3 back to tcllib/

  Test:
   1) Open two wish shells
   2) In both: package require -exact comm 4.0 -> 4.0
   3) In one: comm::comm self -> <id>
   4) In the other: comm::comm send <id> puts fred
      --> "fred" appears in console of first shell.

   Now repeat this but use this alternate step 2:
   2) In both: package require comm -> 4.2.1

   The outcome in the second case is that nothing
   happens.


tkt_uuid: 447042ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Accepted
title: Package versions and dependencies
comment:
  Here's a big patch that fixes many bugs dealing with
  what versions of what packages are in tcllib, and
  what versions of what packages they depend on.  Bugs
  fixed by this patch are:

  447038
  447035
  447033
  447013
  447012
  447011
  447010
  232017


tkt_uuid: 620103ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Bug in Button armcommand
comment:
  See the following script:

  puts [package require BWidget]
  Button .b -armcommand "puts ARMCOMMAND"
  pack .b


  By pressing the button you get the following error 
  message:

  can't read "pathopt(-repeatdelay)": no such element in 
  array
  can't read "pathopt(-repeatdelay)": no such element in 
  array
      while executing
  "set pathopt($option)"
      (procedure "Widget::getMegawidgetOption" line 4)
      invoked from within
  "Widget::getMegawidgetOption $path -repeatdelay"
      (procedure "Button::_press" line 10)
      invoked from within
  "Button::_press .b"
      (command bound to event)


  I'm using bwidget version 1.3.1 together with tcl/tk 8.4.0.

  I have the same error with bwidget 1.4.1, but not with 
  bwidget 1.2.1


tkt_uuid: 1167797fffffffffffffffffffffffffffffffff
type: Patch
status: Open
subsystem: tklib: ctext
priority: 5 Medium
foundin: None
resolution: None
title: 8.5 speed improvement via -all
comment:
  Date: Thu, 10 Feb 2005 12:24:38 -0400
  From: Andrew Black <ablack@arva.net>
  To: GeorgePS@XMission.com
  Subject: ctext patch
  Parts/Attachments:
     1 Shown     14 lines  Text
     2   OK    ~7.4 KB     Text
  ----------------------------------------
  Hi George, Ive attached a patch to ctext.  It includes
  a highlight85 proc
  which uses the -all flag for searching (according to
  time I am seeing an
  average of 36% increase in speed)  And an overhaul of
  the linemap.  I did a full height widget with all
  linenumbers, and linked the yviews of the two text
  widgets.  There is also a change to use a tile frame if
  tile has been loaded.
   There were a couple of other minor tweaks, but they
  were purely personal, so review the patch carefully. 
  Mainly, I turned off quote matching and increased the
  flash time for bracematching.  Hope this helps.

  --
  Andrew J. Black
  Chief Engineer
  Automatic Rolls of Virginia
      [ Part 2, Text/X-PATCH (Name: "ctext.tcl.patch") 
  127 lines. ]

  ----
  The linemap changes may not handle images, or wrapping
  lines... -GPS


tkt_uuid: 2813069fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ftp client close hangs
comment:
  I've found a bug in the ftp client library 2.4.8 that bites
  when a connection is closed.  When you call ::ftp::Close $handle
  you sometimes get a TCL exception (thrown in an event handler
  so a catch around ::ftp::Close doesn't help) and sometimes
  you get an endless loop.  Depends on the ftp server you're
  talk to and doesn't happen consistently, but enough to be
  annoying.

  The faulty code is about line 35 of ::ftp::StateHandler which
  does "set number [gets $sock bufline]".  This code reads
  a continuation line, so normally isn't called after the
  socket is closed, but sometimes it is and an exception is
  the result.  The fix is to wrap in a catch.

  But then the second bug bites - this code is in a loop and
  if the gets returns <= 0, the loop is infinite.  The fix is to
  break from the loop, and change the code structure a little
  to ensure "if { [eof $ftp(CtrlSock)] } ..." gets called
  in this case.

  I believe this is a separate issue to 1076923 found by Keith
  Vetter - that was the gets on line 16 of ::ftp::StateHandler.

  If it's helpful I can provide source for the fix.


tkt_uuid: 2999846fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: plotchart
priority: 5 Medium
foundin: None
resolution: None
title: createHorizontalBarchart: wrong order of args
comment:
  Call of createHorizontalBarchart:
  Help file says:
  ::Plotchart::createHorizontalBarchart w ylabels xaxis noseries
  However, the proc demands a different order:
  proc ::Plotchart::createHorizontalBarchart { w xscale ylabels noseries }

  Oliver


tkt_uuid: 1091766fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclbench
priority: 2
foundin: None
resolution: Fixed
title: runbench.tcl - documentation not up to date
comment:
  tclbench CVS as of 2004-12-27.

  doc/runbench.1 has

         -errors
                Takes  a  boolean  value  (0 or 1). True
  means that
                errors are thrown, else they are ignored.

  The runbench.tcl script itself exects:

          -throwerrors            # propagate errors in
  benchmarks files 

  The -threads option understood by the script isn't
  documented at all.


tkt_uuid: 850245ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: md5
priority: 5 Medium
foundin: None
resolution: Out of Date
title: Performance blow under md5 2
comment:
  Hello out there,
  I got informed that one of my applications barely
  crawls under 8.4.5 and traced it back to the md5
  package. The script below shows it. The resulting
  timing is (Win98 on a 1,3 GHz machine):

  Version: 8.4.4
  md5 needed      1 ms for a string of     1000 chars
  md5 needed      1 ms for a string of    10000 chars
  md5 needed      4 ms for a string of   100000 chars
  md5 needed     42 ms for a string of  1000000 chars
  md5 needed    400 ms for a string of 10000000 chars

  Version: 8.4.5
  md5 needed     12 ms for a string of     1000 chars
  md5 needed     62 ms for a string of    10000 chars
  md5 needed    601 ms for a string of   100000 chars
  md5 needed   6005 ms for a string of  1000000 chars
  md5 needed  60086 ms for a string of 10000000 chars

  -----
  package require md5

  proc tstMD5 {str} {
      set start [clock clicks -millisecond]
      set cks [md5::md5 $str]
      set end [clock clicks -millisecond]
      return [expr {$end - $start}]
  }

  set l "0123456789"
  # l1000 is a string containing 1000 chars
  set l1000 [string repeat $l 100]

  puts "Version: [info patchlevel]"
  set i 0
  set str $l1000
  while { $i < 5 } {
      set time [tstMD5 $str]
      puts "md5 needed [format %6d $time] ms for a string
  of [format %8d [string length $str]] chars"
      set str [string repeat $str 10]
      incr i
  }
  ------

  Best regards
  Helmut Giese


tkt_uuid: 445675ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Accepted
title: Enhanced mainframe toolbar
comment:
  I pack many buttons on to the mainframe toolbar
  and one thing I wanted to do was to put a few select
  buttons right justified (they are MDI kind of buttons)

  To do this, I had to make one change to mainframe.tcl
  that effectively packed the toolbar with an expand
  set to "yes". This should be a fully backward compatible
  change and allows users to do have left and/or right
  justified buttons.

  I only modified one line but I have attached the
  entire file....


tkt_uuid: 444172ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Function key accelerators in menus
comment:
  The BWidget Mainframe allows a menu with an item
  of the form:

      "&Help" {} {} 0 {
          {command "&Contents" {} "Help" "F1" \
                  -command ::help}
          {command "&About" {} "About" {} \
                  -command ::about}
      }

  The "F1" key does not work.  In general any function
  key doesn't work as a menu item.  This patch at
  least lets the F1 work as it is:


tkt_uuid: 3606619fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pt (parsetools)
priority: 5 Medium
foundin: None
resolution: Fixed
title: test fail - pt-peg-to-json-3* *-ultracompact
comment:
  ==== pt-peg-to-json-3.0.0 pt::peg::to::json, basic arithmetic-ultracompact, ok FAILED
  ==== Contents of test case:

      pt::peg::to::json convert $data
  running 

  tclsh8.6 sak.tcl test run -v pt

  on 4e66a372368bfccb80d68fa6cc80f58e205e0c2c I get following error. Same hapens for 1.15 release.


  ---- Result was:
  {\"pt::grammar::peg\":{\"rules\":{\"AddOp\":{\"is\":\"/ {t -} {t +}\",\"mode\":\"value\"},\"Digit\":{\"is\":\"/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}\",\"mode\":\"value\"},\"Expression\":{\"is\":\"/ {x {t (} {n Expression} {t )}} {x {n Factor} {* {x {n MulOp} {n Factor}}}}\",\"mode\":\"value\"},\"Factor\":{\"is\":\"x {n Term} {* {x {n AddOp} {n Term}}}\",\"mode\":\"value\"},\"MulOp\":{\"is\":\"/ {t *} {t /}\",\"mode\":\"value\"},\"Number\":{\"is\":\"x {? {n Sign}} {+ {n Digit}}\",\"mode\":\"value\"},\"Sign\":{\"is\":\"/ {t -} {t +}\",\"mode\":\"value\"},\"Term\":{\"is\":\"n Number\",\"mode\":\"value\"}},\"start\":\"n Expression\"}}
  ---- Result should have been (exact matching):
  {\"pt::grammar::peg\":{\"rules\":{\"AddOp\":{\"is\":\"\\/ {t -} {t +}\",\"mode\":\"value\"},\"Digit\":{\"is\":\"\\/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}\",\"mode\":\"value\"},\"Expression\":{\"is\":\"\\/ {x {t (} {n Expression} {t )}} {x {n Factor} {* {x {n MulOp} {n Factor}}}}\",\"mode\":\"value\"},\"Factor\":{\"is\":\"x {n Term} {* {x {n AddOp} {n Term}}}\",\"mode\":\"value\"},\"MulOp\":{\"is\":\"\\/ {t *} {t \\/}\",\"mode\":\"value\"},\"Number\":{\"is\":\"x {? {n Sign}} {+ {n Digit}}\",\"mode\":\"value\"},\"Sign\":{\"is\":\"\\/ {t -} {t +}\",\"mode\":\"value\"},\"Term\":{\"is\":\"n Number\",\"mode\":\"value\"}},\"start\":\"n Expression\"}}
  ==== pt-peg-to-json-3.0.0 FAILED


tkt_uuid: 1016865fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: md5
priority: 9 Immediate
foundin: None
resolution: Fixed
title: md5 test suite causes tcl core dump!
comment:
  platform: sparc sunblade 100 solaris 8, sun c compiler,
  tcl 8.4.7, tcllib latest cvs snapshot - this has been
  going on for a day or so now.


  Module: md5
  modules/md5/md5.test
  - md5 1.4.3 (Trf based)
  modules/md5/md5x.test
  - md5 2.0.1 (Trf based)

  Module: md5crypt
  modules/md5crypt/md5crypt.test
  - md5crypt 1.0.0 (pure Tcl)
  child killed: bus error
      while executing
  "exec [info nameofexecutable]  [file join $distribution
  all.tcl]  -modules $modules  >@ stdout 2>@ s
  tderr"
      (procedure "__test" line 10)
      invoked from within
  "__$cmd"
      (file "../sak.tcl" line 1593)
  gmake: *** [test] Error 1

  The stack trace is a bit peculiar:
   $ dbx /usr/tcl84/bin/tclsh8.4 core
  Reading tclsh8.4
  core file header read successfully
  Reading ld.so.1
  Reading libtcl8.4g.so
  Reading libdl.so.1
  Reading libsocket.so.1
  Reading libnsl.so.1
  Reading libm.so.1
  Reading libc.so.1
  Reading libmp.so.2
  Reading libc_psr.so.1
  Reading libtk8.4g.so
  Reading libX11.so.4
  Reading libXext.so.0
  Reading libTrf2.1g.so
  Reading libz.so
  Reading libmemchan.so
  program terminated by signal BUS (invalid address
  alignment)
  dbx: warning: can't find file
  "/vol/tclsrcsol/tcl84/trf/md5.o"
  dbx: warning: see `help finding-files'
  0xfec5d4d8: md5_process_block+0x0130:   ld      [%l0], %l5
  dbx: warning: can't find file
  "/vol/tclsrcsol/tcl84/trf/md5dig.o"
  dbx: warning: can't find file
  "/vol/tclsrcsol/tcl84/trf/digest.o"
  dbx: warning: can't find file
  "/vol/tclsrcsol/tcl84/trf/registry.o"
  Current function is FlushChannel
   2078                   &errorCode);
  (dbx 1) where                                         
                 
    [1] md5_process_block(0xff00, 0xd76aa478, 0xff00,
  0xffbe80c0, 0x61, 0x5a71dc), at 0xfec5d4d8
    [2] md5_process_bytes(0x5a93a0, 0xc8, 0x5a71c0,
  0x5aa3b0, 0x719, 0x5aa3b8), at 0xfec5d324
    [3] MDmd5_UpdateBuf(0x5a71c0, 0x5a93a0, 0xc8, 0x1030,
  0x2234c, 0xfefc1ce4), at 0xfec45f7c
    [4] EncodeBuffer(0x2453e0, 0x5a93a0, 0xc8, 0x0,
  0xfec77ad8, 0x19e94c), at 0xfec44244
    [5] TrfOutput(0x5a7128, 0x5a93a0, 0xc8, 0xffbe8330,
  0x16ee4d, 0xff332b01), at 0xfec30d94
  =>[6] FlushChannel(interp = (nil), chanPtr = 0x270560,
  calledFromAsyncFlush = 0), line 2078 in "tclIO.c"
    [7] CheckFlush(chanPtr = 0x270560, bufPtr = 0x5a9380,
  newlineFlag = 0), line 3429 in "tclIO.c"
    [8] WriteBytes(chanPtr = 0x270560, src = 0x5a2fa0
  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  srcLen = 200), line 3040 in "tclIO.c"
    [9] Tcl_WriteObj(chan = 0x34ecd0, objPtr = 0x1fdfa8),
  line 2957 in "tclIO.c"
    [10] Tcl_PutsObjCmd(dummy = (nil), interp = 0x1fa328,
  objc = 4, objv = 0x19e9a4), line 132 in "tclIOCmd.c"
    [11] TclEvalObjvInternal(interp = 0x1fa328, objc = 4,
  objv = 0x19e9a4, command = (nil), length = 0, flags =
  0), line 3087 in "tclBasic.c"
    [12] TclExecuteByteCode(interp = 0x1fa328, codePtr =
  0xba750), line 1404 in "tclExecute.c"
    [13] TclCompEvalObj(interp = 0x1fa328, objPtr =
  0x19a088), line 982 in "tclExecute.c"
    [14] TclObjInterpProc(clientData = 0x1b3a70, interp =
  0x1fa328, objc = 3, objv = 0x19e998), line 1100 in
  "tclProc.c"
    [15] InvokeImportedCmd(clientData = 0x110bc8, interp
  = 0x1fa328, objc = 3, objv = 0x19e998), line 1476 in
  "tclNamesp.c"
    [16] TclEvalObjvInternal(interp = 0x1fa328, objc = 3,
  objv = 0x19e998, command = (nil), length = 0, flags =
  0), line 3087 in "tclBasic.c"
    [17] TclExecuteByteCode(interp = 0x1fa328, codePtr =
  0x3551e8), line 1404 in "tclExecute.c"
    [18] TclCompEvalObj(interp = 0x1fa328, objPtr =
  0x16aae0), line 982 in "tclExecute.c"
    [19] TclObjInterpProc(clientData = 0x3562b8, interp =
  0x1fa328, objc = 4, objv = 0xffbe9424), line 1100 in
  "tclProc.c"
    [20] TclEvalObjvInternal(interp = 0x1fa328, objc = 4,
  objv = 0xffbe9424, command = 0xff35b5e4 "", length = 0,
  flags = 524288), line 3087 in "tclBasic.c"
    [21] Tcl_EvalObjv(interp = 0x1fa328, objc = 4, objv =
  0xffbe9424, flags = 524288), line 3203 in "tclBasic.c"
    [22] AliasObjCmd(clientData = 0x24aa10, interp =
  0x1fa328, objc = 3, objv = 0xffbe95a8), line 1486 in
  "tclInterp.c"
    [23] TclEvalObjvInternal(interp = 0x1fa328, objc = 3,
  objv = 0xffbe95a8, command = 0x150b09
  "::md5crypt::md5crypt $passwd $salt\n    ", length =
  35, flags = 0), line 3087 in "tclBasic.c"
    [24] Tcl_EvalEx(interp = 0x1fa328, script = 0x150b00
  "\n        ::md5crypt::md5crypt $passwd $salt\n    ",
  numBytes = 48, flags = 262144), line 3683 in "tclBasic.c"
    [25] Tcl_EvalObjEx(interp = 0x1fa328, objPtr =
  0x1611e0, flags = 262144), line 4000 in "tclBasic.c"
    [26] Tcl_UplevelObjCmd(dummy = (nil), interp =
  0x1fa328, objc = 1, objv = 0x19e994), line 674 in
  "tclProc.c"  [27] TclEvalObjvInternal(interp =
  0x1fa328, objc = 3, objv = 0x19e98c, command = (nil),
  length = 0, flags = 0), line 3087 in "tclBasic.c"
    [28] TclExecuteByteCode(interp = 0x1fa328, codePtr =
  0x34f618), line 1404 in "tclExecute.c"
    [29] TclCompEvalObj(interp = 0x1fa328, objPtr =
  0x2ae910), line 982 in "tclExecute.c"
    [30] TclObjInterpProc(clientData = 0x247cb0, interp =
  0x1fa328, objc = 3, objv = 0x304960), line 1100 in
  "tclProc.c"
    [31] TclEvalObjvInternal(interp = 0x1fa328, objc = 3,
  objv = 0x304960, command = 0xff35b5e4 "", length = 0,
  flags = 262144), line 3087 in "tclBasic.c"
    [32] Tcl_EvalObjv(interp = 0x1fa328, objc = 3, objv =
  0x304960, flags = 262144), line 3203 in "tclBasic.c"
    [33] Tcl_EvalObjEx(interp = 0x1fa328, objPtr =
  0x96b98, flags = 262144), line 3997 in "tclBasic.c"
    [34] Tcl_UplevelObjCmd(dummy = (nil), interp =
  0x1fa328, objc = 1, objv = 0x19e988), line 674 in
  "tclProc.c"
    [35] TclEvalObjvInternal(interp = 0x1fa328, objc = 3,
  objv = 0x19e980, command = (nil), length = 0, flags =
  0), line 3087 in "tclBasic.c"
    [36] TclExecuteByteCode(interp = 0x1fa328, codePtr =
  0x371de0), line 1404 in "tclExecute.c"
    [37] TclCompEvalObj(interp = 0x1fa328, objPtr =
  0x1f9a68), line 982 in "tclExecute.c"
    [38] TclObjInterpProc(clientData = 0x25fa80, interp =
  0x1fa328, objc = 3, objv = 0x1a8348), line 1100 in
  "tclProc.c"
    [39] TclEvalObjvInternal(interp = 0x1fa328, objc = 3,
  objv = 0x1a8348, command = 0xff35b5e4 "", length = 0,
  flags = 262144), line 3087 in "tclBasic.c"
    [40] Tcl_EvalObjv(interp = 0x1fa328, objc = 3, objv =
  0x1a8348, flags = 262144), line 3203 in "tclBasic.c"
    [41] Tcl_EvalObjEx(interp = 0x1fa328, objPtr =
  0x24f138, flags = 262144), line 3997 in "tclBasic.c"
    [42] Tcl_UplevelObjCmd(dummy = (nil), interp =
  0x1fa328, objc = 1, objv = 0x19e97c), line 674 in
  "tclProc.c"
    [43] TclEvalObjvInternal(interp = 0x1fa328, objc = 3,
  objv = 0x19e974, command = (nil), length = 0, flags =
  0), line 3087 in "tclBasic.c"
    [44] TclExecuteByteCode(interp = 0x1fa328, codePtr =
  0x37ad00), line 1404 in "tclExecute.c"
    [45] TclCompEvalObj(interp = 0x1fa328, objPtr =
  0x250c70), line 982 in "tclExecute.c"
    [46] TclObjInterpProc(clientData = 0x12d048, interp =
  0x1fa328, objc = 5, objv = 0x19e960), line 1100 in
  "tclProc.c"
    [47] InvokeImportedCmd(clientData = 0x2527d8, interp
  = 0x1fa328, objc = 5, objv = 0x19e960), line 1476 in
  "tclNamesp.c"
    [48] TclEvalObjvInternal(interp = 0x1fa328, objc = 5,
  objv = 0x19e960, command = (nil), length = 0, flags =
  0), line 3087 in "tclBasic.c"
    [49] TclExecuteByteCode(interp = 0x1fa328, codePtr =
  0x8a6a0), line 1404 in "tclExecute.c"  [50]
  TclCompEvalObj(interp = 0x1fa328, objPtr = 0x98848),
  line 982 in "tclExecute.c"
    [51] Tcl_EvalObjEx(interp = 0x1fa328, objPtr =
  0x98848, flags = 0), line 4012 in "tclBasic.c"
    [52] Tcl_ForeachObjCmd(dummy = (nil), interp =
  0x1fa328, objc = 4, objv = 0xffbeb750), line 1863 in
  "tclCmdAH.c"
    [53] TclEvalObjvInternal(interp = 0x1fa328, objc = 4,
  objv = 0xffbeb750, command = 0x2a6408 "foreach {n salt
  passwd expected} [list \\n    1    {a}  {} 
  {$1$a$8CfZSfErbeskipdhZHtvu.} \\n    2    {a}  {a}
  {$1$a$44cUw6Nm5bX0muHWNIwub0} \\n    3    {a}  [string
  repeat a  100] {$1$a$vTAcWEblAgdUlX6KBz0NM.} \\n    4 
    {a}  [string repeat a  200]
  {$1$a$kC.K4D6mvUznpkjWJK8Tm0} \\n    5    {a}  [string
  repeat a  400] {$1$a$nBvNVTsAryOnHlW7L/gzf/} \\n    6 
    {a}  [string repeat a 1000]
  {$1$a$yhNnTV4IKHbl8oEB/eJaj0} \\n] {\n    test
  md5passwd-4.${n} {md5crypt check passwd} {\n       
  ::md5crypt::md5crypt $passwd $s" ..., length = 800,
  flags = 0), line 3087 in "tclBasic.c"
    [54] Tcl_EvalEx(interp = 0x1fa328, script = 0x2a55c8
  "# -*- tcl -*-\n# md5crypt.test:  tests for the
  md5crypt commands\n#\n# This file contains a collection
  of tests for one or more of the Tcllib\n# commands. 
  Sourcing this file into Tcl runs the tests and
  generates\n# output for errors.  No output means no
  errors were found.\n#\n# Copyright (C) 2003 Pat Thoyts
  <patthoyts@users.sourceforge.net>\n#\n# RCS: @(#) $Id:
  md5crypt.test,v 1.5 2004/02/14 05:59:21 andreas_kupries
  Exp $\n\n#
  -------------------------------------------------------------------------\n#
  Initialize the " ..., numBytes = 5337, flags = 0), line
  3683 in "tclBasic.c"
    [55] Tcl_FSEvalFile(interp = 0x1fa328, pathPtr =
  0x250628), line 1749 in "tclIOUtil.c"
    [56] Tcl_SourceObjCmd(dummy = (nil), interp =
  0x1fa328, objc = 2, objv = 0x19e958), line 1058 in
  "tclCmdMZ.c"
    [57] TclEvalObjvInternal(interp = 0x1fa328, objc = 2,
  objv = 0x19e958, command = (nil), length = 0, flags =
  0), line 3087 in "tclBasic.c"
    [58] TclExecuteByteCode(interp = 0x1fa328, codePtr =
  0x1c0a30), line 1404 in "tclExecute.c"
    [59] TclCompEvalObj(interp = 0x1fa328, objPtr =
  0x2321c0), line 982 in "tclExecute.c"
    [60] Tcl_EvalObjEx(interp = 0x1fa328, objPtr =
  0x2321c0, flags = 0), line 4012 in "tclBasic.c"
    [61] Tcl_CatchObjCmd(dummy = (nil), interp =
  0x1fa328, objc = 3, objv = 0x19e94c), line 254 in
  "tclCmdAH.c"
    [62] TclEvalObjvInternal(interp = 0x1fa328, objc = 3,
  objv = 0x19e94c, command = (nil), length = 0, flags =
  0), line 3087 in "tclBasic.c"
    [63] TclExecuteByteCode(interp = 0x1fa328, codePtr =
  0x12ba00), line 1404 in "tclExecute.c"
    [64] TclCompEvalObj(interp = 0x1fa328, objPtr =
  0x163978), line 982 in "tclExecute.c"
    [65] Tcl_EvalObjEx(interp = 0x1fa328, objPtr =
  0x163978, flags = 0), line 4012 in "tclBasic.c"
    [66] SlaveEval(interp = 0x23858, slaveInterp =
  0x1fa328, objc = 1, objv = 0x254b4), line 2094 in
  "tclInterp.c"
    [67] SlaveObjCmd(clientData = 0x1fa328, interp =
  0x23858, objc = 3, objv = 0x254ac), line 1933 in
  "tclInterp.c"
    [68] TclEvalObjvInternal(interp = 0x23858, objc = 3,
  objv = 0x254ac, command = (nil), length = 0, flags =
  0), line 3087 in "tclBasic.c"

    [69] TclExecuteByteCode(interp = 0x23858, codePtr =
  0x152030), line 1404 in "tclExecute.c"
    [70] TclCompEvalObj(interp = 0x23858, objPtr =
  0x4de78), line 982 in "tclExecute.c"
    [71] Tcl_EvalObjEx(interp = 0x23858, objPtr =
  0x4de78, flags = 0), line 4012 in "tclBasic.c"
    [72] Tcl_ForeachObjCmd(dummy = (nil), interp =
  0x23858, objc = 4, objv = 0x2549c), line 1863 in
  "tclCmdAH.c"
    [73] TclEvalObjvInternal(interp = 0x23858, objc = 4,
  objv = 0x2549c, command = (nil), length = 0, flags =
  0), line 3087 in "tclBasic.c"
    [74] TclExecuteByteCode(interp = 0x23858, codePtr =
  0xb2548), line 1404 in "tclExecute.c"
    [75] TclCompEvalObj(interp = 0x23858, objPtr =
  0x31300), line 982 in "tclExecute.c"
    [76] Tcl_EvalObjEx(interp = 0x23858, objPtr =
  0x31300, flags = 0), line 4012 in "tclBasic.c"
    [77] Tcl_ForeachObjCmd(dummy = (nil), interp =
  0x23858, objc = 4, objv = 0xffbecda8), line 1863 in
  "tclCmdAH.c"
    [78] TclEvalObjvInternal(interp = 0x23858, objc = 4,
  objv = 0xffbecda8, command = 0x34c55 "foreach module
  $modules {\n    set ::tcltest::testsDirectory [file
  join $root modules $module]\n\n    if { ![file
  isdirectory $::tcltest::testsDirectory] } {\n^Iputs
  stdout "unknown module $module"\n    }\n\n    set
  auto_path $old_apath\n    set auto_path [linsert
  $auto_path 0 $::tcltest::testsDirectory]\n\n    #
  foreach module, make a slave interp and source that
  module's tests into\n    # the slave.  This isolates
  the test suites from one another.\n    puts stdout
  "Module:\t[file tail $module]"\n    set c [interp
  creat" ..., length = 3554, flags = 0), line 3087 in
  "tclBasic.c"
    [79] Tcl_EvalEx(interp = 0x23858, script = 0x33de8 "#
  all.tcl --\n#\n# This file contains a top-level script
  to run all of the Tcl\n# tests.  Execute it by invoking
  "tclsh all.test" in this directory.\n#\n# To test a
  subset of the modules, invoke it by 'tclsh all.test
  -modules "<module list>"'\n#\n# Copyright (c) 1998-2000
  by Ajuba Solutions.\n# All rights reserved.\n# \n# RCS:
  @(#) $Id: all.tcl,v 1.19 2004/08/10 07:01:30
  andreas_kupries Exp $\n\nset old_auto_path
  $auto_path\n\nif {[lsearch [namespace children]
  ::tcltest] == -1} {\n    namespace eval ::tcltest {}\n
     proc " ..., numBytes = 7355, flags = 0), line 3683
  in "tclBasic.c"
    [80] Tcl_FSEvalFile(interp = 0x23858, pathPtr =
  0x2c8f8), line 1749 in "tclIOUtil.c"
    [81] Tcl_Main(argc = 3, argv = 0xffbed3f0,
  appInitProc = 0x10820 = &Tcl_AppInit(Tcl_Interp
  *interp)), line 292 in "tclMain.c"
    [82] main(argc = 4, argv = 0xffbed3ec), line 90 in
  "tclAppInit.c"
  (dbx 2) 


tkt_uuid: 2346118fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: tklib
priority: 7 High
foundin: None
resolution: None
title: canvas::sqmap limitations
comment:
  The items used to show the images in their cells are currently visible to the user of the canvas::sqmap, allowing hacks and tricks, and possibly confusing things, like when finding nearest/overlapping items.
  Fix this before going v1. Basically have to inspect all methods taking and returning items and filter the internal items out. Ditto for tags, our tag for the image items should not be visible outside.


tkt_uuid: 1610965fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: bwidget 1.7/8 ComboBox getvalue cmd fails on identical items
comment:
  Hello,

  follwing code demonstrates the issue:

  % ComboBox .cb -values {a b c a b c}
  .cb
  % pack .cb
  % .cb configure -modifycmd {puts ".cb getvalue = [.cb getvalue]"}

  If now the user clicks on items of the dropped listbox, than then the ComboBox returns always the first found item index, where the contents of the ComboBox entry is identical to a listbox's item.

  This would be ok, if the user entered a value!

  But if the user selects a listbox item, than I expect to get the right result - the index of the selected listbox item.

  Best regards,

  Martin Lemburg


tkt_uuid: 839469ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 9 Immediate
foundin: None
resolution: Fixed
title: entry doesn't work in 8.3
comment:
  In entry.tcl, the package vcompare should be more 
  clearly:

  if {![package vsatisfies [package provide Tk] 8.4]}

  but most importantly that still doesn't work for 8.3.


tkt_uuid: 1122790fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: treeql
priority: 5 Medium
foundin: None
resolution: Fixed
title: Scoping undefined for node set iterators
comment:
  The documentation states nothing about the scope the
  body of the varous node set iterators (foreach, with,
  and over) is executed in. Experiments indicate that it
  is neither global scope, nor the scope of the code
  performing the query the operator is part of, but some
  impementation defined internal scope. IMHO it should be
  defined to be the scope of the calling code.


tkt_uuid: 435097ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Keynavigation failed in Tree
comment:
  Having supplied open/close-commands for the tree-
  widget, they are not called when pressing the "Right"-
  Button or the "Left"-Button.

  This can be especially observed in the directory-tree-
  demo, where the subtree is build in the "open-
  callback"-command. Pressing the "Right"-Key doesn't 
  open the tree, because the "open-command" isn't called.

  The following could be inserted in tree.tcl for 
  proc Tree::_keynav {which win} {
   ...
    "right" {
    # On a right arrow, if the current node is closed, 
  open it.
    # If the current node is open, go to its first child
    if { [string equal $node ""] } {
      return
    }
    set open [$win itemcget $node -open]
    # patch begin -->
    if {!$open && [set cmd [Widget::getoption $win -
  opencmd]] != ""} {
      uplevel \#0 $cmd $node
     }
     # <-- patch end
     if { [llength [$win nodes $node]] } {
     ...


    "left" {
    # On a left arrow, if the current node is open, 
  close it.
    # If the current node is closed, go to its parent.
    if { [string equal $node ""] } {
      return
    }
    set open [$win itemcget $node -open]
    if { $open } {
      $win itemconfigure $node -open 0
      # patch begin -->
      if {[set cmd [Widget::getoption $win -closecmd]] !
  = ""} {
        # call close-callback
        uplevel \#0 $cmd $node
      }
      # <-- patch end
      return
    } else {
    ...



  Best regards
    Stefan


tkt_uuid: 3439693fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pki
priority: 5 Medium
foundin: None
resolution: Out of Date
title: ::pki::x509::parse_cert error
comment:
  While parsing a cert, a bug comes when reviving strings on the issuer and subject objects.  The problem comes in proc ::pki::x509::_dn_to_list as some certs has UTF8String instead of PrintableString.  My solution was to replace

  ::asn::asnGetPrintableString curr_part value

   by:

  set a $curr_part
  ::asn::asnPeekByte a b
  switch -- $b {
  19 {::asn::asnGetPrintableString curr_part value}
  12 {::asn::asnGetUTF8String curr_part value}
  default {::asn::asnGetPrintableString curr_part value}
  }

  Hope that helps

  Regards

  -=Raul=-


tkt_uuid: 1261101fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: math :: bignum
priority: 5 Medium
foundin: None
title: Allow easy comparisons with 0 (zero)
comment:
  In ::math::bignum, most of the comparison functions
  (except for iszero) require two bignums as inputs.
  However, there are many cases where the comparison is
  between 0 and some number.

  Right now, you need to make a bignum of 0 to do the
  comparison. It should be possible to special case the
  comparisons so that the comparison is against the
  literal 0 would be permitted.

  Another possibility would be to predefine two useful
  numbers as bignum constants: 0 and 1. With those two
  predefined, a lot of tests would be able to avoid
  having to create them. (Other powers of two (2^1, 2^2,
  2^3, ...2^64) would be potentially useful as well, but
  perhaps less worth the overhead.)


tkt_uuid: 2935347fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Accepted
title: bug 2935339 (::ftpd::config)
comment:
  Here's a fix for bug 2935339 which is where calling ::ftpd::config a second time resets previously set values.The problem is that it uses cmdline::getoptions but supplies the application default values instead of the current values.


tkt_uuid: 1008455fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Documentation
priority: 5 Medium
foundin: None
resolution: Fixed
title: online docs incorrectly hyperlink to other modules
comment:
  for example in the struct::pool page at
  http://tcllib.sourceforge.net/doc/pool.html
  "clear" and "destroy" are linked to the stack module.


tkt_uuid: 1446320fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib
priority: 5 Medium
foundin: None
resolution: Out of Date
title: widget::dialog -modal local option does not work
comment:
  Specifying the "-modal local" option to a
  widget::dialog does not make the dialog modal. It
  actually would generate an error because of invalid
  -local option to grab but the offending line is under a
  catch so the error gets ignored.
  A patch to fix this is:

  195c195,201
  <           catch {grab -$option(-modal) $win}
  ---
  >           catch {
  >                 if {$options(-modal) eq "local"} {
  >                     grab $win
  >                 } else {
  >                     grab -$option(-modal) $win
  >                 }
  >             }

  /Ashok


tkt_uuid: 1826418fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: None
priority: 5 Medium
foundin: None
resolution: None
title: Various syntax errors
comment:
  Attached file tcllib.tar.gz holds the results of a procheck anaysis on all tcllib scripts.

  As you will undoubtedly notice, some errors are reported because my version of procheck is outdated. However, some of the errors are indeed syntax errors.

  It is easy to compensate for the procheck version mismatch by rerunning the script procheck.tcl with a recent version.

  Erik Leunissen

  Attached file: tcllib.tar.gz (containing: procheck.tcl, procheck.out, procheck.err)


tkt_uuid: 688227ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Notebook left side not drawn (0 borderwidth)
comment:
  In a NoteBook widget, if the canvas has 0 borderwidth
  (perhaps set by option database), the left side of the
  notebook will be drawn at -1 x coordinate and will not
  be visible. This patch fixes that by never allowing the
  left side to be drawn at an x coordinate that is negative.

  This bug was found in the bwidget1.5 distribution as
  released with ActiveTcl 8.4.1

  - Bryan Schofield


tkt_uuid: 1861700fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Submission: Beta dist and Incomplete Beta Function
comment:
  Hi,

  I've implemented the Beta distribution and also provided an implementation of the incomplete Beta function (which is the CDF for the Beta distribution).

  I've tested the incomplete Beta function quite a bit (as shown), and think that it is now robust. However, I probably didn't make the most efficient implementation. An alternative would be the collection of algorithms in DCDFLIB (http://people.scs.fsu.edu/~burkardt/f_src/dcdflib/dcdflib.html), but it is quite involved -- if this implementation is sufficient, so much the better.

  Eric


tkt_uuid: 723426ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ntp
priority: 8
foundin: None
resolution: Fixed
title: Testsuite failures
comment:
  I ran the testsuite of ntp using a tclsh 8.3.4 and a tclkit 
  8.4.1. In both cases I got failures, but different. Enclosed 
  the log files.


tkt_uuid: 2995969fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: ListBox: No multiple drag
comment:
  A BWidget listbox with multiple selection may not do multiple drag and drop.

  Code:
  pack [ListBox .l -selectmode multiple -dragenabled 1 -dropenabled 1]
  foreach item {A B C D E F} { .l insert end $item -text $item}

  Action:
  * Select item "A" and "B" with shift-select.
  Issue 1:
  * Click on the selection on "A" and move to the end of the list (to get a line) and drop (release mouse button)
    -> the click will unselect "B" and only item "A" will be moved to the end

  Issue 2:
  * (Restart script and select A and B)
  * Shift-Click on the selection on "A" and move to the end of the list (to get a line) and drop (release mouse button)
    -> Only item "B" will be moved to the end

  Reported by Robert Karen on c.l.t:
  http://groups.google.com/group/comp.lang.tcl/browse_thread/thread/90362f0d0200a5b9/22ffbc8fc3196a1f#22ffbc8fc3196a1f


tkt_uuid: 2811747fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
resolution: Fixed
title: Tests for graph(ops) - Don't import struct::graph into ::
comment:
  Get rid of
     namespace import -force struct::graph
  in modules/struct/graph/tests/Xsetup.

  This can mask bugs [graph] vs [struct::graph] in graph operations, by making the command available in the global namespace.

  Also: graphops.test seems to depend on setup done by graph.test, cannot run without. Fix.


tkt_uuid: 410100ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 6
foundin: None
resolution: Fixed
title: Package mgmt woes during development
comment:
  Assume the current codebase, an installed fileutil 1.0
  and a new
  fileutil 1.1 under development. The initialization of
  the tests scans
  the package directories and finds fileutil 1.0. The
  module then adds
  itself to the auto_path and then requires fileutil
  (without
  version). Now fileutil 1.0 is found by the pkg
  management, it is
  acceptable according to the rules of require and thus
  used. The new
  version is not considered at all, as changing the
  auto_path does *not*
  enforce a rescan of package directories.

  It is possible to solve the problem by having the
  modules require
  themselves and request a specific version (1.1 in this
  case). But this
  would mean that in each module we have (at least) one
  more file
  containing the version number (all test files!) and we
  have to
  maintain this for every module. I rather propose the
  following changes
  to all.tcl:

  Adds the module path to the auto_path (the tested
  modules did it
  themselves before) and also move the setting of the
  auto_path in the
  slave before the first 'package require' (of tcltest).

  Now all paths are in order when the first scan happens,
  immediately
  picking up the development version (provided that is
  has a higher
  version number :).


tkt_uuid: 720024ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget ComboBox claims selection on FocusIn
comment:
  The BWidget ComboBox automatically selects the (entire)
  entry contents whenever it receives a <FocusIn> event,
  (asserting ownership of the PRIMARY selection in the
  process).

  This is appropriate when the widget receives focus due
  to keyboard traversal, but not for all <FocusIn>
  events.  (For example, if the user changes focus to a
  different toplevel or application and back again, the
  ComboBox should not reselect its contents.)


tkt_uuid: 1316063fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tie
priority: 4
foundin: None
resolution: Fixed
title: tie/tie_rarray_comm.test prints extra info
comment:
  tie_rarray_comm.test includes gratuitous puts commands,
  cluttering the log.  It prints something about "self @
  xxxx," waiting for spawned comm system to boot" etc.


tkt_uuid: 1657338fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: blowfish
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Blowfish CFB mode
comment:
  Hi, 
  This patch enables CFB (Crypto Forward Block) stream encryption in the blowfish module.
  It has a simple test in the test suite, and I used it to decrypt data encrypted in a cryptofs (fuse userland encrypted filesystem) so I think it works.
  I'm no crypto expert...
  As far as I know, the limitation is that you can not call the encrypt/decrypt multipletimes if you don't use a full block, so ONLY the last block is allowed to be less than 64bits in size, which should not be a problem.

  Regards


tkt_uuid: 844660ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: install
priority: 5 Medium
foundin: None
resolution: None
title: tklib will not install documentation for some
comment:
  done
  Installing documentation for cursor
  install: `/opt/tcl8.5a0/man/mann/cursor.n' mode
  mismatch (0644 != 0444)
  Installing documentation for datefield
  install: `/opt/tcl8.5a0/man/mann/datefield.n' mode
  mismatch (0644 != 0444)
  Installing documentation for ipentry
  install: stat: ./modules/ipentry/*.n: No such file or
  directory
  install: installation of `./modules/ipentry/*.n' failed
  Installing documentation for autoscroll
  install: stat: ./modules/autoscroll/*.n: No such file
  or directory
  install: installation of `./modules/autoscroll/*.n' failed
  *** Error code 1 (ignored)
  chmod 444 /opt/tcl8.5a0/man/mann/*
  /usr/local/bin/install -c -m 644 ./man.macros
  /opt/tcl8.5a0/man


  The files in ipentry and autoscroll end in .man not .n


tkt_uuid: 1860190fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Duplicate
title: tkchat: can't read "state(status)": no such variable
comment:
  tkchat v1.413:

  After trying to "Login via IRC ..." (menu File), I got:

  can't read "state(status)": no such variable
      while executing
  "return $state(status)"
      (procedure "http::wait" line 10)
      invoked from within
  "http::wait $token"
      (procedure "http::geturl" line 146)
      invoked from within
  "http::geturl http://www.tcl.tk/cgi-bin/tct/tip/tclIndex.txt  -timeout 15000  -p
  rogress ::tkchat::Progress  -command [list [namespace origin fetchurldo..."
      (procedure "GetTipIndex" line 2)
      invoked from within
  "GetTipIndex"
      (procedure "::tkchat::LoadHistory" line 14)
      invoked from within
  "::tkchat::LoadHistory"
      ("after" script)


tkt_uuid: 2779581fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: sid2SDDL function
comment:
  For converting sids to their text SDDL representations for further use in searches and/or saving to databases etc.


tkt_uuid: 500654ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Duplicate
title: man pages not formatted
comment:
  On some systems (at least mine) the tcllib man pages
  cannot be displayed with the normal 'man csv' command.

  Instead the formatted page, only a lot of error
  messages  showed up.

  make install works smoothly.

  man.macros is in place.

  It seems, the problem is the inclusion of man.macros
  into the tcllib man pages with the instruction
  .so man.macros

  If I copy the context of man.macros directly into the
  man page and remove the '.so man.macros' instruction,
  everything works.

  The tcl core man pages have man.macros literaly
  included and work smoothly. The inclusion is done by a
  sed command during the installation process. Out of
  Tcl8.3.4 Makefile on Linux (after ./configure):

          @echo "Installing command (.n) docs";
          @cd $(TOP_DIR)/doc; for i in *.n; \
              do \
              rm -f $(MANN_INSTALL_DIR)/$$i; \
              sed -e '/man\.macros/r man.macros' -e
  '/man\.macros/d' \
                      $$i > $(MANN_INSTALL_DIR)/$$i; \
              chmod 444 $(MANN_INSTALL_DIR)/$$i; \
              done;

  (see target install-doc).


tkt_uuid: 436340ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Twoline patch for bwidget passwddlg
comment:
  The password dialog does not support an option 



    -logineditable



  which would work like e.g. -passwdeditable



  This might be important for cases where the login was already chosen previouslyu and one doesn't want the user to change it again.



  Anyway, implementing this is quite easy: in the actual CVS remove "-editable" in the following lines (at the very top of the file):

  Widget::bwinclude PasswdDlg LabelEntry .frame.lablog \
      remove [list -command -editable -justify -name -show -side ...

  and add it in this line

      prefix [list login -helptext -helpvar -label -text \ ...

  So that it now reads:

  Widget::bwinclude PasswdDlg LabelEntry .frame.lablog \
      remove [list -command -justify -name -show -side ...

  and

     prefix [list login -editable -helptext -helpvar -label -text \ ...


  Salut,
            Bastien

  PS: Documentation should be changed.
  PPS: perhaps automatically activate the passwdentry when doing this, I din't find the place yet :/


tkt_uuid: 3604129fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: imap4
priority: 5 Medium
foundin: None
resolution: Accepted
title: added imap "copy" command
comment:
  I've added a proc for the imap "copy" function, which is needed if you want to move a message from one mailbox to another.  Currently, it's not possible to move messages between folders with the imap4 library. This proc fixes that problem.

  To add this feature, paste the following proc below the "proc expunge" function in imap4.tcl

  May I ask that you add this patch to the imap library ?

  Thanks!

  -john



     # copy : copy a message to a destination mailbox
     proc copy {chan msgid mailbox} {
         if {[simplecmd $chan COPY SELECT [list $msgid $mailbox]]} {
             return 1
         }
         return 0
     }


tkt_uuid: 1582535fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: Infinite loop in StateHandler
comment:
  Hello,

  I have discovered a series of events which cause the 
  StateHandler proc to be called in an infinite loop. A 
  possible scenario to trigger this is the following:
   - open a ftp connection and start a get
   - make sure the control connection times out because 
  of network errors
   - try the ftp::Close proc and notice the "infinite 
  number of loops" exception of tcl.

  The reason for this to happen is that the 
  StateHandler passes through the [eof $ftp(CtrlSock)] 
  branch, where it goes back to vwait in 'WaitComplete 
  $s 0', without taking away the cause of the event. 
  Meaning the ftp(CtrlSock) is still readable, and so 
  the StateHandler is called again, and again, ...

  I have added a patchfile for this against revision 
  1.43 of ftp.tcl.

  Greetings,
  Guy


tkt_uuid: 3167244fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: hook(n) man page renders incorrectly
comment:
  The hook man page renders incorrecty in the REFERENCE section. There is a staircase effect which sends output to the right.
  Attached is the result of "man n hook > hook.txt"
  Error messages on stderr are:
  $ man n hook > hook.txt
  <standard input>:385: warning: macro `CE:' not defined (probably missing space after `CE')
  <standard input>:424: warning: macro `CE,' not defined (probably missing space after `CE')
  <standard input>:437: warning: macro `CE,' not defined (probably missing space after `CE')
  <standard input>:449: warning: macro `CE.' not defined (probably missing space after `CE')
  <standard input>:543: warning: macro `CE,' not defined (probably missing space after `CE')


tkt_uuid: 831496ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 9 Immediate
foundin: None
resolution: None
title: BWidget combobox popdown keyboard traversal broken
comment:
  In the combobox,  when the listbox is popped down,
  <Key-Up> and <Key-Down> could be used to change the
  selected item, and <Key-Return> would select it and
  unpost the listbox.

  Now (combobox r1.26),  pressing <Key-Up> or <Key-Down>
  immediately unposts the listbox after changing the
  selected item.


tkt_uuid: 457498ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
title: Extended log module
comment:
  The current 'log' module only consider the criticality
  of a message when deciding wether to log the message
  and where.

  The next generation should allow to specify a message
  category as well. In contrast to criticality categories
  are highly application dependent. This means that we
  will need interfaces to define, configure and
  introspect categories. Criticalities required only a
  configuration interface.

  An example application for the log module could be
  one listening on one or more sockets and displaying
  the incoming messages in one or more text widgets.
  A generalized message console.


tkt_uuid: 1213527fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: mime: Adds spurious CRLF to each item
comment:
  I've been trying to use the mime package for HTTP form 
  data (see <http://wiki.tcl.tk/FileUploadWithTclSHttp>). 
   
  One problem is that mime::buildmessage adds a CRLF at the 
  end of every item and than again before each boundary. This 
  is one CRLF to much. 
   
  This is mostly harmless with HTML or GIF parts in mails, 
  because the additional CRLF is at the end of the file data and 
  just ignored by most viewers.  But for servers parsing it as 
  HTTP form data it is parsed as a significant part of the data. 
   


tkt_uuid: 1043107fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: MainFrame: Accelerator Ctrl f does not work
comment:
  A Ctrl f accelerator in a MainFrame menu definition
  does not work.

  Example script:

  package require BWidget

  set menuDef {
      "Datei" {} {} 0 {
          {command "E Entry" {} "" {Ctrl e} \
               -command  {puts "E Entry called"}}
          {command "F Entry" {} "" {Ctrl f} \
               -command  {puts "F Entry called"}}
          {command "G Entry" {} "" {Ctrl g} \
               -command  {puts "G Entry called"}}
      }
  }

  MainFrame .mf -menu $menuDef

  Control-e and Control-g fire, Control-f does not.

  The reason is in MainFrame::_parse_accelerator. The
  regexp {f[1]?[0-9]*} tries to select f1 etc, to
  capitalize the f, but unfortunately the regexp also
  match a single 'f'. This ends in the Binding
   <Control-Key-F> instead of the necessary <Control-Key-f>.


tkt_uuid: 533025ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 7 High
foundin: None
resolution: Accepted
title: sendmessage: response too short
comment:
  smtp::sendmessage can return the error "response too 
  short" when sending through a mail server that 
  responds very quickly.
  This is due to smtp::readable not handling the "no 
  full-line available" condition.
  I have attached a fix that works for me, in the form 
  of a diff against smtp.tcl from tcllib0.6.1.

  Regards
  Simon Scott


tkt_uuid: 916160ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: tree
priority: 7 High
foundin: None
title: Add a prune operation to the tree walk command
comment:
  In version 2.0, struct::tree added handling for walk
  scripts to execute [break], [continue], and [return]. 
  A call to [break] or [return] will halt the walk
  altogether.  A call to [continue] allows the remainder
  of the walk script to be bypassed for a given iteration
  and doesn't modify which nodes are visited.  

  It would be nice to also have a prune command available
  that would alter the walk such that for a dfs, for
  instance, the walk would go no deeper than the node for
  which the prune is invoked.

  One way to implement this is as follows:

  Add the following arm to the [switch -exact -- $code]
  call in the function ::struct::tree::WalkCall:

      5 {
          # Force the rest of the current while loop
  iteration in 
          # the caller to be skipped, resulting in a
  "prune" effect
          return -code continue
      }

  And add the following function:

  #
  # For use within a walk call.  Stops the descent on the 
  # current node but continues walking the rest of the 
  # nodes for a dfs search
  #
  proc ::struct::prune {} {
      return -code 5
  }

  Here is a test that illustrates the operation:

  test tree-4.4.18 {prune in dfs walk} {
      tree mytree
      set t [list ]
      mytree insert root end 0 1 2
      mytree insert 0 end a b c
      mytree insert b end I II III
      lappend t ==
      mytree walk root {a n} {
  if {[string equal $n "b"]} {
              lappend t .

              # Skip the I, II, and III nodes
              ::struct::prune
          }
  lappend t $a $n
      }
      lappend t ==
      mytree destroy
      set t
  } {== enter root enter 0 enter a . enter c enter 1
  enter 2 ==}


tkt_uuid: 3439702fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: html
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ::html::js & ::html::css error
comment:
  Hi,

  When calling this 2 procs mentioned, it tries to set a namespace variable with a ::html::set instead of ::set.  However, even replacing "set" by "::set" on those 2 procs, it overrides the last value.

  What i did was just to replace "set page(js)" by "lappend page(js)".  same for css, as ::html::head calls those vars with a "foreach", meaning that they should be lists.  Now it works fine.

  Regards

  -=Raul=-


tkt_uuid: 2986744fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: sha1
priority: 5 Medium
foundin: None
resolution: Fixed
title: issue with tcllib sha256 on 64bit systems
comment:
  Having compiled Tcltk on a 64bit system I could not open databases which were encrypted with the sha256 algorithm. Before I used only 32bit versions of ActiveState binaries. Debugging the sha256.tcl file I found the reason:

  In line 303-308 there was one expression which was not ANDed by 0xffffffff. The patched line looks now like:

  for {set t 16} {$t < 64} {incr t} {
              lappend W [expr {([sigma1 [lindex $W [incr t2]]] \
                                   + [lindex $W [incr t7]] \
                                   + [sigma0 [lindex $W [incr t15]]] \
                                   + [lindex $W [incr t16]]) & 0xffffffff}]
          }

  Now everything works fine. 

  Zbigniew Diaczyszyn


tkt_uuid: 222664ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 8
resolution: Fixed
title: ftpd package does not handle binary files correctly
comment:
  Software:
  ---------
  I am using TCL 3.3.2 and installed the latest tcllib0.8.
  Contained in this library is a new package "ftpd" whose current version
  is 1.1.

  Problem:
  --------
  I wrote the following 2 line test script in order to test an FTP server:
   
          package require ftpd
          ::ftp::server
   
  However when I used this server to down-load binary files they were
  either
  corrupted or incomplete.
  The FTP protocol between client and server correctly specifed binary
  transfer mode.
   
  Bug:
  ----
  The default file system procedure "::ftpd::fsFile::fs" returns a file
  handle
  representing the local file for the following sub-commands :
  append,retr,store
  However the logic does not check what the current transfer mode when
  opening the 
  file for reading/writing.

  Correction:
  -----------
  One solution is to correct the following procedures:

  1)
  ::ftpd::command::APPE
  ::ftpd::command::RETR
  ::ftpd::command::STOR
  ::ftpd::command::STOU

  When calling the procedure "::ftpd::FS" add an additional parameter
  $data(mode) indicating the current transfer mode.
  This can be done easily because the procedure has a variable number
  of arguments.

      if {![catch {::ftpd::Fs retr $path $data(mode)} f]} {

  2)
  ::ftpd::fsFile::fs

  The extra parameter is passed from "::ftpd::FS" and can be tested
  in the logic handling the sub-commands append,retr and store.

  If the mode is binary then configure the file handle for binary 
  operation.

           set fhandle [open $path r]
           if {[lindex $args 0] == "binary"} {
              fconfigure $fhandle -translation binary
           }
           return $fhandle


tkt_uuid: 481022ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: matrix
priority: 5 Medium
foundin: None
title: new matrix related methods requested
comment:
  1. Ability to tell matrix to print itself out (ala
  parray)

  2. Ability to give matrix a term to search for, with
  ability to either search any column of a row, or
  particular columns (or column ranges)


tkt_uuid: 1533868fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Fixed
title: Connection not properly marked as unbound in ::ldap::unbind
comment:
  The connection is not properly marked as unbound 
  in ::ldap::unbind.

  A local variable is modified, instead of the array 
  used to remember the connection parameters.


tkt_uuid: 1835240fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Duplicate
title: Error from http package during login
comment:
  Got:

  can't read "state(status)": no such variable
  can't read "state(status)": no such variable
      while executing
  "if {$state(status) eq "error"} {
      # Something went wrong while trying to establish the connection.
      # Clean up after events and such, but DON'..."
      (procedure "http::geturl" line 255)
      invoked from within
  "http::geturl http://www.tcl.tk/cgi-bin/tct/tip/tclIndex.txt  -timeout 15000  -progress ::tkchat::Progress  -command [list [namespace origin fetchurldo..."
      (procedure "GetTipIndex" line 2)
      invoked from within
  "GetTipIndex"
      (procedure "::tkchat::LoadHistory" line 14)
      invoked from within
  "::tkchat::LoadHistory"
      ("after" script)

  Note that this is using a partially patched http package from 8.5. In my case the body of the http::status command is:
  % info body http::status

      if {![info exists $token]} { return "error" }    
      upvar 0 $token state
      return $state(status)


tkt_uuid: 1345967fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
resolution: Fixed
title: graph serialize broken (easy fix)
comment:
  Serialize does not work properly when arc name
  contains spaces.
  Fix: in modules/struct/graph.tcl line 2269 should
  become "set arc [list $a]" instead of "set arc $a"


tkt_uuid: 1798413fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Documenting related commands on one man page
comment:
  It's difficult to write a man page about multiple commands. Here's an example:

  http://naviserver.sourceforge.net/n/naviserver/files/ns_memoize.html
  http://naviserver.cvs.sourceforge.net/naviserver/naviserver/doc/src/mann/ns_memoize.man?view=markup


  - Each command is given a numbered anchor, so to link to ns_memoize_flush the link is: .../ns_memoize.html#2. This will change if commands are added, removed or reordered.


  - If you use the [cmd ...] markup, the name of the command becomes a link but only if it has the same name as the page current page.

  In the example above, ns_memoize is a link to itself. However ns_memoize_flush is not a link at all. Neither is ns_cache_eval, which is documented on another page (named ns_cache).

  What would be useful is if each mention of a command would link to it's definition, i.e. .../ns_cache.html#ns_cache_eval


  - Some commands are in the form of subcommands, like Tcl's 'string'. It would be useful to be able to refer to  a subcommand like: [cmd "string is"] and have it parse the space and link to the correct place.


tkt_uuid: 1545306fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: sasl
priority: 9 Immediate
severity: Minor
foundin: None
resolution: Not Applicable Here
title: nonce-count for DIGEST-MD5 handled incorrect
comment:
  The RFC states that the nonce-count is to be used to
  guard against replay attacks, and has to be increased
  for each time the nonce is sent.

  But the current Tcllib SASL code increases the
  nonce-count for every request, which leads to
  increasing nonce-count values between different sasl
  contexts.

  Example:
  set ctx [SASL::new -mechanism DIGEST-MD5 ...]
  # send a request, which fails, maybe because the
  password is wrong
  SASL::cleanup $ctx
  # nonce-count is now 1

  set ctx [SASL::new -mechanism DIGEST-MD5 ...]
  # try again with correct password
  # this fails because the server complains about a
  nonce-count of 2, while his internal counter just reached 1

  Michael


tkt_uuid: 1743868fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: pop3d
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Fix extra line between message headers
comment:
  pop3d sends messages with a blank line between each header line. This causes Multipart Mime messages not to be recognized. In particular pop3 client fails to recognized a multipart message sent by pop3d.

  The error is caused by both the pop3d package and the mime package handling the network crlf standard. mime appends \r to all headers for mime::buildmessage and mime::copymessage. pop3d fconfigures the socket channel to crlf.

  This diff mods pop3d to follow the mime package convention; leaving the channel as translation lf and adding \r to strings where required.

  It has been tested for message sizes that can be sent as one segment.  The test suite was not run.


tkt_uuid: 1559489fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Installer
priority: 7 High
foundin: None
resolution: Fixed
title: GUI Installer writes error only to stdout
comment:
  The GUI mode installer.tcl terminates when it
  encounters a non writable install location. So far so
  good, but the error message only appears on stderr,
  which is not optimal on windows where someone might
  click on the installer.tcl file and start without
  stderr. The installer should open a message box and
  notify the user about the non writable location if in
  GUI mode.


tkt_uuid: 1695128fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: doctools - Add backend 'semantic'
comment:
  Create a backend which extracts all words which have been markup up in same way, and how (constants, options, commands, terms, etc. pp.), and return a dictionary (markup -> list of words).


tkt_uuid: 2595296fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: grammar_fa
priority: 5 Medium
foundin: None
resolution: Fixed
title: state rename bugs then state has transition to itself
comment:
  Executing:
  -----
  grammar::fa fa
  fa state add a
  fa next a {} --> a
  fa state rename a b
  -----

  Produces:
  -----
  can't read "order(a)": no such element in array
      while executing
  "upvar #0 ${selfns}::trans_$order($sin) jump"
      ("foreach" body line 3)
      invoked from within
  "foreach srcitem $transinv($snew) {
  struct::list assign $srcitem sin sym
  upvar #0 ${selfns}::trans_$order($sin) jump
  upvar 0 jump($sym) destin..."
      ("rename" arm line 35)
  ----- the rest is skipped -----


tkt_uuid: 476988ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: textutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: splitx and the empty string
comment:
  Using splitx on an empty string does not return

  an empty list.



  # test script

  package require textutil

  namespace import ::textutil::split::splitx

  puts [llength [split ""]]  ;# ==> 0

  puts [llength [splitx ""]] ;# ==> 1





  The first line of the splitx should be

    if {[string length $str]==0} {return {}}


tkt_uuid: 1672347fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: set
priority: 5 Medium
foundin: None
resolution: Out of Date
title: test set-1.0 fails on tcl 8.5a5
comment:
  The test set-1.0 reports "setop" instead of ::struct::set
  in tcl 8.5a5

  Tested on Linux and FreeBSD.
  See attached patch.


tkt_uuid: 446997ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: sha1
priority: 5 Medium
foundin: None
resolution: Fixed
title: sha1 fails on 64-bit platform
comment:
  % package require sha1
  1.0
  % sha1::sha1 abc     
  integer value too large to represent as non-long
  integer
  % set errorInfo
  integer value too large to represent as non-long
  integer
      while executing
  "format %0.8x%0.8x%0.8x%0.8x%0.8x $H0 $H1 $H2 $H3 $H4"
      (procedure "sha1::sha1" line 112)
      invoked from within
  "sha1::sha1 abc"


tkt_uuid: 1176744fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: counter
priority: 5 Medium
foundin: None
resolution: Fixed
title: counter, improper use of alt=
comment:
  It should be title= as firefox doesn't (correctly)
  display a tooltip for alt.

  RCS file:
  /cvsroot/tcllib/tcllib/modules/counter/counter.tcl,v
  retrieving revision 1.18
  diff -c -r1.18 counter.tcl
  *** counter.tcl3 Oct 2004 23:06:55 -00001.18
  --- counter.tcl5 Apr 2005 02:04:43 -0000
  ***************
  *** 1019,1025 ****
            set img src=$options(-images)/$options(-gif)
        }
        append result "<td valign=bottom><img $img
  height=$height\
  !         width=$options(-width) alt=$value></td>\n"
        }
        append result "</tr>"
    
  --- 1019,1025 ----
            set img src=$options(-images)/$options(-gif)
        }
        append result "<td valign=bottom><img $img
  height=$height\
  !         width=$options(-width) title=$value></td>\n"
        }
        append result "</tr>"
    


tkt_uuid: 720208ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ntp
priority: 7 High
foundin: None
resolution: Fixed
title: test failure: ntp module with tcl 8.3
comment:
  Test platform: tcl 8.3.5 Windows 2K intel.

  The following failures produced when using tcl 8.3.5 to
  run the tcllib test suite. These do not occur with tcl 8.4

  It seems these tests rely on features only present in
  tcltest 2.2+ (the ::tcltest::interpreter proc)

  Module:ntp
  modules/ntp/time.test

  ==== time-1.1 time::gettime FAILED
  ==== Contents of test case:

      global token
      list [catch {
          set f [createServerProcess]
          gets $f port
          set token [::time::gettime -protocol tcp
  localhost $port]
          set r {}
      } msg] $msg    

  ---- Result was:
  1 {invalid command name "::tcltest::interpreter"}
  ---- Result should have been:
  0 {}
  ==== time-1.1 FAILED


  ==== time-1.2 time::status FAILED
  ==== Contents of test case:

      global token
      list [catch {time::status $token} m] $m

  ---- Result was:
  1 {can't read "State(status)": no such variable}
  ---- Result should have been:
  0 ok
  ==== time-1.2 FAILED


  ==== time-1.2 time::unixtime FAILED
  ==== Contents of test case:

      global token
      list [catch {
          set t [time::unixtime $token]
          string is integer -strict $t
      } m] $m

  ---- Result was:
  1 {can't read "State(status)": no such variable}
  ---- Result should have been:
  0 1
  ==== time-1.2 FAILED


tkt_uuid: 1589111fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: Wrong keysym in combobox code
comment:
  This part of the BWidget Combobox code does work as
  intended (if it does) only by bug:

  proc ComboBox::_auto_post { path key } {
      ...
      if {([string length $key] > 1 && [string tolower
  $key] != $key) && \
  [string equal $key "Backspace"] != 0 && \
  [string equal $key "Up"] != 0 && \
  [string equal $key "Down"] != 0} {
   return
      }
      ...
  }

  There isn't a keysym "Backspace", that is "BackSpace".


tkt_uuid: 1019052fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: bwidget listbox makes wrong key-bindings
comment:
  versions: 1.6 and 1.7
  Tcl: TclKit 8.4.5 and Tcl/Tk 8.4.6
  OS: SuSE Linux 9.1 running KDE 3.2.1, verified in the 
  BWidget demo from ActiveTcl 8.4.5 (BWidget 1.7)

  The BWidget ListBox binds the <Key-Up> and <Key-
  Down> events to the class ListBox, which refers to the 
  frame. It should however be bound to the canvas inside 
  that frame.

  A quick hack for me was to add these two lines to the 
  end of ListBox::create:

  bind $path.c <Key-Up> \
  [list ListBox::_keyboard_navigation $path -1]
  bind $path.c <Key-Down> \
  [list ListBox::_keyboard_navigation $path 1]

  There is probably a nice way of doing this....


tkt_uuid: 1254934fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: mime
priority: 7 High
foundin: None
resolution: Fixed
title: mime - Extra line feed removed from output
comment:
  The following patch fixed a problem with extra line
  feeds in mime attachments in code to upload binary
  files to a web page. I imagine that the extra line feed
  is not noticed with text files.

  A line feed is output before the border, making this
  line-feed unneccessary. 

  This problem is mentioned on http://wiki.tcl.tk/13675

  I have only tested the fix with my code - it should be
  tested to verify that it does not cause problems in
  other situations.

  The patch file is generated with cvs diff -u, I hope
  that's ok (I wasn't sure what the standard way of doing
  this was.


tkt_uuid: 532783ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: matrix
priority: 6
foundin: None
resolution: Fixed
title: Linked matrix not propagating changes
comment:
  The documentation for the ::struct::matrix operation implies 
  that after linking, changes to the matrix object will be propagated 
  to the linked array variable. However, it isn't happening. Here's a 
  simple test case run interactively:

  % package require 
  struct
  1.2
  % ::struct::matrix test
  test
  % test add columns 
  4
  % test add row {1 2 3}
  % test link arr
  % array get arr
  0,0 1 1,0 2 
  2,0 3 3,0 {}
  % test add row {a b c d}
  % array get arr
  0,0 1 1,0 2 2,0 3 
  3,0 {}

  Line 1245 of the source looks suspiciously like it has a 
  typo of the variable name "data":

  trace variable date  w  [list 
  ::struct::matrix::MatTraceOut $variable $name]

  However, 
  changing "date" to "data" in this line didn't work:

  % package 
  require struct
  1.2
  % ::struct::matrix test
  test
  % test add 
  columns 4
  % test add row {1 2 3}
  % test link arr
  % array get 
  arr
  0,0 1 1,0 2 2,0 3 3,0 {}
  % test add row {a b c d}
  can't set 
  "data(0,1)": can't set "array(0,1)": bad row index 1, row does not 
  exist


tkt_uuid: 1091764fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclbench
priority: 5 Medium
foundin: None
resolution: Fixed
title: runbench.tcl does not run on windows w/ msys
comment:
  runbench.tcl exec 'echo' in proc getInterps:

  if {[catch {exec echo "puts \[info patchlevel\] ;
  exit" | \
  $interp} patchlevel]} {...}

  This does not work with msys, because it doesn't come
  with an echo binary (but only an echo written in terms
  of a shell script, which obviously isn't recognized as
  executable in an exec call). runbench.tcl seems to
  expect a cygwin environment (which has an echo.exe).

  Though, since both cygwin and msys (and any unix
  anyway) have a sh, I propose to change that code in
  getInterps to:

  if {[catch {exec sh -c "echo puts \[info patchlevel\]
  ; exit" | \
  $interp} patchlevel]} {...}

  With only this change, runbench.tcl runs under msys or
  a windows console with the msys binariers in the PATH.


tkt_uuid: 3058654fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 8
foundin: None
resolution: Not Applicable Here
title: Incorrect nroff generation
comment:
  When generating nroff from a [titledesc] directive, it's important that the description of commands all be placed on a single line. This is because the apropos search tool assumes that these descriptions are on a single line following the ".SH NAME" directive. Right now, you generate output here that is multiline in some cases (found when preparing HTML documentation for the Thread package with Tcl's 'make html', which failed; that's now fixed, but even so...) It's also expected that the part of the NAME description before the \- will be a list of commands described by the manual page, and not the name of the manual page itself. This makes a difference when manual pages describe multiple commands or when the name is not a "good" filename (e.g., by containing a colon).

  It would also be useful if the generation of nroff from [example] used .CS/.CE to surround the example code instead of .nf/.fi as that is converted better. (.CS always marks sample code in some sense, .nf is used for many purposes.)


tkt_uuid: 1292966fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Performance: connection timeout
comment:
  Hi,

  When I try to connect via (latest version 2.4.1):
  ftp::Open $some_ip anonymous "" -mode passive

  I takes sometimes more than a minut (sometimes a timeout).
  * We only have this when starting on Solaris connecting
  to Windows via a Fortigate 200 Antivirus Appl. and a
  firewall.
  * Windows to Windows via Fortigate and firewall works fine.
  * Solaris to whatever OS not via Fortigate and firewall
  works fine
  * When I test the connection via regular UNIX ftp
  command -->
  no problem

  The line of code slowing down is located in ftp.tcl
  proc ftp::OpenControlConn
  --> set peer [fconfigure $ftp(CtrlSock) -peername]

  This line is used only for a DisplayMsg. (I think this
  line should be in the if statement, but this is not the
  real issue).

  I found an old bug report on fconfigure -peername (tcl
  project):
  [ 533301 ] fconfigure -peername very slow

  Does somebody have an idea?

  Moving the fconfigure line into the 
  #    if { $VERBOSE } {

  block fixes my problem when VERBOSE mode is off.


tkt_uuid: 479482ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Accepted
title: RFC: new smtpd module.
comment:
  I am submitting a skeleton Simple Mail Transfer
  Protocol daemon (smtpd) for inclusion into tcllib. This
  was written to permit testing of mail sending software
  (SOAP over SMTP) on the windows platform but may have
  other uses.

  The skeleton talks SMTP and will accept mail subject to
  validation of the host, sender and recipients. Once
  received the mail is passed to a user-specified
  delivery procedure for processing.

  I suggest creating a new subdirectory under
  tcllib/modules as has been done for the ftp/ftpd
  client/server packages.

  Comments please!


tkt_uuid: 447141ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Accepted
title: Corrections for INSTALL_ROOT
comment:
  $(INSTALL_ROOT) should not only be prepended to prefix
  and exec_prefix, but also to libdir and mandir to
  provide a complete installation to a virtual location.


tkt_uuid: 772435ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
title: snit: Initialization of type variables
comment:
  From a mail by Will, author of snit:

  * I'd like to add a good way to initialize array 
  typevariables.


tkt_uuid: 1735601fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: grammar_fa
priority: 5 Medium
foundin: None
title: grammar::fa::op::toRegexp
comment:
  Just wanted to log this natural companion of fromRegexp.

  I don't need it myself right now, but I might do in the 
  future, and about a month ago two colleagues mentioned 
  it would be nice if their program could also convert the 
  automata it generated to regexps...

  I'll probably fill this RFE myself, eventually, unless 
  someone beats me to it. :-)


tkt_uuid: 1191326fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Fixed
title: ldap::add cannot handle multi-valuated attributes
comment:
  ::ldap::add cannot add entries with multiple values for an 
  attribute. 
   
  My test program: 
   
  ----------------------------------------------------- 
  #!/usr/local/bin/tclsh8.4 
   
  package require ldap 
  set ldapfd [::ldap::connect ldap.my.domain] 
   
  ::ldap::bind $ldapfd "cn=admin,o=test" "mypassword" 
  set dn "cn=Test,ou=persons,o=test" 
   
  set attrval1 { 
      objectClass person 
      cn          Test 
      sn          Test 
      telephoneNumber {+31415926535 +27182818285} 
  } 
   
  set attrval2 { 
      objectClass person 
      cn          {Test User} 
      sn          Test 
      telephoneNumber +31415926535 
      telephoneNumber +27182818285 
  } 
   
  ::ldap::add $ldapfd $dn $attrval1 
   
  ::ldap::disconnect $ldapfd 
  ----------------------------------------------------- 
   
  When $attrval2 is given to ::ldap::add, I get an error 
  since telephoneNumber is repeated twice. 
   
  When $attrval1 is given to ::ldap::add, there is one 
  occurrence of the telephoneNumber with the two 
  numbers, which is not the required result. 
   
  This may (also) be a documentation problem. 


tkt_uuid: 1416746fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
resolution: Fixed
title: grammar_me: test suite bugs
comment:
  with -debug 1:

  Module: grammar_me
  modules/grammar_me/me_tcl.test
  - tcllib::testutils 1.0
  * grammar::me::tcl 0.1
  test name 'mevmtcl-icl_get-2.0' re-used; prior use in
  /local/src/tcllib/modules/grammar_me/me_tcl.test
  test name 'mevmtcl-icl_get-2.1' re-used; prior use in
  /local/src/tcllib/modules/grammar_me/me_tcl.test
  test name 'mevmtcl-icl_get-2.0' re-used; prior use in
  /local/src/tcllib/modules/grammar_me/me_tcl.test


tkt_uuid: 1078215fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: calculus
priority: 5 Medium
foundin: None
resolution: None
title: Possible bug in Runge-Kutta method
comment:
  Mark Stucky reported this in c.l.t.:

  I think that I've found a small bug / typo within
  tcllib 
  (tcllib::math::calculus)
  rungeKuttaStep routine.

  Possibly I am just missing something here (it wouldn't
  be the first time), 
  but
  here is the routine (from tcllib-1.7) with my suggested
  fix :

   proc ::math::calculus::rungeKuttaStep { t tstep xvec
  func } {

     set funcq    [uplevel 1 namespace which -command
  $func]

     #
     # Four steps:
     # - k1 = tstep*func(t,x0)
     # - k2 = tstep*func(t+0.5*tstep,x0+0.5*k1)
     # - k3 = tstep*func(t+0.5*tstep,x0+0.5*k2)
     # - k4 = tstep*func(t+    tstep,x0+    k3)
     # - x1 = x0 + (k1+2*k2+2*k3+k4)/6
     #
     set tstep2   [expr {$tstep/2.0}]
     set tstep6   [expr {$tstep/6.0}]

     set xk1      [$funcq $t $xvec]
     set xvec2    {}
     foreach x1 $xvec xv $xk1 {
        lappend xvec2 [expr {$x1+$tstep2*$xv}]
     }

     set xk2      [$funcq [expr {$t+$tstep2}] $xvec2]
     set xvec3    {}
     foreach x1 $xvec xv $xk2 {
        lappend xvec3 [expr {$x1+$tstep2*$xv}]
     }

     set xk3      [$funcq [expr {$t+$tstep2}] $xvec3]
     set xvec4    {}
     foreach x1 $xvec xv $xk3 {
        lappend xvec4 [expr {$x1+$tstep2*$xv}]

  >********************************************************************************
  >  Here is the "bug" : $tstep2 in the above line should
  actually be $tstep
  >  From the description above
  >           # - k4 = tstep*func(t+    tstep,x0+    k3)
  >  tstep is used rather than tstep*0.5 (ie tstep2)
  >********************************************************************************

     }

     set xk4      [$funcq [expr {$t+$tstep}] $xvec4]
     set result   {}
     foreach x0 $xvec k1 $xk1 k2 $xk2 k3 $xk3 k4 $xk4 {
        set dx [expr {$k1+2.0*$k2+2.0*$k3+$k4}]
        lappend result [expr {$x0+$dx*$tstep6}]
     }

     return $result
  }


  --Mark 


tkt_uuid: 616911ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: log
priority: 4
foundin: None
resolution: Out of Date
title: services for log
comment:
  This is my first go at creating 'services' for the log
  package.  It is not complete: it is lacking
  documentation and testing.  I am including it here not
  for review for inclusion, yet, but to make sure I'm on
  the right track.  I will post to the mailing list as
  well, which is better suited to quick discussion
  (October 2002).


tkt_uuid: 754920ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: text/html file content causes socket error
comment:
  My original experimental code combined three MIME 
  parts into a single message and used SMTP to send 
  successfully. The parts where a plain text file, a binary 
  file and an html file.

  When I moved the html file to the beginning of the 
  -parts list, I started getting 

  400: error writing "sock248": invalid argument

  out of mime::copymessageaux

  On further trials, I've simplfied the issue and it seems 
  related to the *contents* of a file.

  The following script will trigger the error. (file is 
  attached)

  # 14Jun03RT - experimental mime/smtp coding
  package require mime
  package require smtp

  proc mb {} {
      # Build a mime thingy
      set TO royterry@earthlink.net
      set FROM royterry@earthlink.net
      set SUBJ "Mime [clock format [clock seconds] -
  format "%m%d-%T"]"

         set hfile mime-bad.htm

      # Start making mime parts
       # The error also occurs if "text/html" is used
      set hpart [mime::initialize -canonical text/plain  -file 
  $hfile]

      # Put them all together
      # The error also occurs if 2 or 3 parts are combined 
  as long as $hpart is the first in the list.
      set allparts [mime::initialize -canonical 
  multipart/mixed \
          -parts [list $hpart ] ]


      # Send it!
      set sres [smtp::sendmessage $allparts      \
          -header [list From $FROM]    \
          -header [list To $TO]        \
          -header [list Subject $SUBJ] \
          -servers mail.earthlink.net ]

  }


tkt_uuid: 1403452fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Out of Date
title: parsedatetime routine using clock format incorrectly
comment:
  G'day,
  I have found a bug in the mime package (version 1.4.1)
  for the parsedatetime routine.

  The "%e" format option is being used in stead of "%m"
  for months.  This affects the selection of a short or
  long month from the MONTHS_SHORT and MONTHS_LONG arrays.

  I suggest the following changes:
  return [lindex $MONTHS_LONG [expr [clock format $clock
  -format %m] - 1]]

  in place of 
  return [lindex $MONTHS_LONG [clock format $clock
  -format %e]]

  and similar for the MONTHS_SHORT array.

  Christopher


tkt_uuid: 944995ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Fixed
title: xml content/type
comment:
  Reported as tclhttpd bug '[ 698549 ] direct url getting
  xml content/type' at
  http://sourceforge.net/tracker/index.php?func=detail&aid=698549&group_id=12884&atid=112884

   when using in ie ActiveXObject("Microsoft.XMLHTTP");
  to get xml from a direct_url the is a server 500 error.
  the problem is the content-type:
  Unknown Content-Type: text/xml
  while executing
  "ncgi::nvlist"(procedure "ncgi::parse" line 8)


  this is because ncgi package does not reconize test/xml
  type.
  adding it to ncgi solves the problem:

  proc ncgi::nvlist {} {
  set query [ncgi::query]
  set type [ncgi::type]
  switch -glob -- $type {
  "" -
  application/x-www-form-urlencoded -
  application/x-www-urlencoded -
  text/xml
  {

  I'm handpassing this to you.


tkt_uuid: 3612465fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: inifile
priority: 5 Medium
severity: Minor
foundin: None
resolution: Not Applicable Here
title: Spaces around section line specifications should be ignored
comment:
  When parsing a file, if a section line contains some leading or trailing spaces (outside the square brackets), it is not recognized. A sample ini file reproducing the error would be (please note the extra trailing in the section line: "[General]   "):

  [General]    
  key=value
  key2=value2


  # Before patch
  package require inifile
  set fh [::ini::open sample.ini]
  puts [llength [ini::sections $fh]]
  0

  # After applying the attached patch
  package require inifile
  set fh [::ini::open sample.ini]
  puts [llength [ini::sections $fh]]
  1


tkt_uuid: 528392ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Invalid
title: Missing commands in nroff format
comment:
  The nroff format does not implement the commands [lb]
  and [rb]. These are necessary for entering code
  examples in the man pages.


tkt_uuid: 546423ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: Documentation
priority: 5 Medium
foundin: None
resolution: Out of Date
title: tcllib manpage
comment:
  tcllib should have its own manpage. I would have added
  it myself via cvs but wasn't sure where it should go,
  so I'll leave it to whomever is most in tune with the
  doc's.


tkt_uuid: 1557268fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: html
priority: 5 Medium
foundin: None
resolution: Fixed
title: TABLE tag case
comment:
  This is a minor but easy thing. In looking through the
  html package there are a couple instances where the
  table tag is being passed back in UPPERCASE when it
  should all come back in lowercase.

  Look into the following procs:

  ::html::tableFromArray
  ::html::tableFromList

  As far as I can tell everything else is passed back as
  lowercase.


tkt_uuid: 1739240fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: plotchart
priority: 8
foundin: None
resolution: None
title: tklib plotchart doc failure during build
comment:
  when i try to build the cvs head of tklib , I get this error:
  Generating /projects/sprs_lwv/tcl85/man/mann/plotchart.n
  Doctools Error in macro at line 150, column 24:
  [emph in days]
  --> wrong # args: should be "emph text"
      while executing
  "::doctools::_format dt {[comment {-*- tcl -*- doctools manpage}]
  [manpage_begin Plotchart n 1.3]
  [copyright {2007 Arjen Markus <arjenmarkus@users.sour..."
      ("eval" body line 1)
      invoked from within
  "eval [list ::doctools::_$cmd $name] $args"
      (procedure "::doctools::DoctoolsProc" line 15)
      invoked from within
  "dt format [get_input $f]"
      (procedure "_man" line 17)
      invoked from within
  "_man plotchart nroff n /projects/sprs_lwv/tcl85/man/mann"
      ("eval" body line 1)
      invoked from within
  "eval $guide($m,$type) $m $args"
      (procedure "xinstall" line 4)
      invoked from within
  "xinstall doc nroff n    $config(doc,nroff,path)"
      (procedure "doinstall" line 18)
      invoked from within
  "doinstall"
      (procedure "main" line 11)
      invoked from within
  "main"
      (file "../installer.tcl" line 485)
  gmake: *** [install] Error 1


tkt_uuid: 697022ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: In Button, -repeatdelay command not cancelled on release
comment:
  Say you have a Button that uses the -armcommand -
  repeatdelay -repeatinterval commands:

  Button .vol.up -image imgvolup  -borderwidth 0 -
  highlightthickness 0 -repeatdelay 700 -repeatinterval 
  200 -armcommand {VolUp}

  (Note: VolUp just increses by 1 the volume)

  If you press the .vol.up button repeatedly then hold it 
  down it goes much faster than it should.  I think it is 
  because the after $delay "Button::_repeat $path" delay 
  command is never cancelled when the button is 
  released.

  I was trying to fix this and was able to do that in 
  button.tcl in the Button::_release procedure. I just 
  added an after cancel command and it appeared to fix 
  the problem:

  proc Button::_release { path } {
      variable _current
      variable _pressed

      if { $_pressed == $path } {
          set _pressed ""
          set relief [Widget::getMegawidgetOption $path -
  relief]
          #####################
          after cancel "Button::_repeat $path" 
          #####################
          if { ![string compare $relief "link"] } {
              set relief raised
          }
          $path:cmd configure -relief $relief
  set cmd [Widget::getMegawidgetOption 
  $path -disarmcommand]
          if { $cmd != "" } {
              uplevel \#0 $cmd
          }
          if { $_current == $path &&
               [string compare [$path:cmd cget -
  state] "disabled"] && \
       [set cmd [Widget::getMegawidgetOption 
  $path -command]] != "" } {
              uplevel \#0 $cmd
          }
      }
  }


tkt_uuid: 1693491fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: grammar_fa
priority: 5 Medium
foundin: None
resolution: Accepted
title: Expand the grammar::fa::dexec
comment:
  Here is my implementation for the feature request. I only did the .tcl and the .man. I don't quite understand the .test format and procedures, so no .test file.

  Thanks,
  Bogdan.


tkt_uuid: 1892687fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Build System & Testing
priority: 5 Medium
foundin: None
resolution: Fixed
title: sak.tcl test shell add fails
comment:
  I tried to add a shell for testing to sak.tcl but get a not so informative stack trace:
  (this is inside msys/mingw, using AS Tcl shells)

  $ c:/tools/bin/tclsh85.exe sak.tcl test shell add c:/tools/bin/tclsh85.exe
  invalid command name "::uplevel"
      while executing
  "::uplevel #0 {set I 0
  set {C {} {}} 0
  set {N 0 P} {}
  set {N 0 M} 1158662637
  }"
      invoked from within
  "$ip eval [list ::uplevel \#0 $data]"
      (procedure "::tie::std::file::Snit_methodReplay" line 30)
      invoked from within
  "$self Replay"
      (procedure "::tie::std::file::Snit_methodLoadJournal" line 7)
      invoked from within
  "$self LoadJournal"
      (procedure "::tie::std::file::Snit_methodget" line 7)
      invoked from within
  "$dso get"
      (procedure "Connect" line 6)
      invoked from within
  "Connect thearray $open $merge $dso"
      (procedure "tie::tie" line 42)
      invoked from within
  "tie::tie ::pregistry::Snit_inst2::data file ~/.Tcllib/Registry"
      ("eval" body line 1)
      invoked from within
  "eval [linsert $value 0 tie::tie [myvar data]]"
      (procedure "::pregistry::Snit_methodTIE" line 9)
      invoked from within
  "::sak::registry::pregistry1 TIE -tie {file ~/.Tcllib/Registry}"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command"
      (procedure "::snit::RT.method.configurelist" line 37)
      invoked from within
  "$self configurelist $args"
      (procedure "::pregistry::Snit_constructor" line 5)
      invoked from within
  "::pregistry::Snit_constructor ::pregistry ::pregistry::Snit_inst2 ::sak::registry::pregistry1 ::sak::registry::pregistry1 -tie {file ~/.Tcllib/Registr..."
      ("eval" body line 1)
      invoked from within
  "eval [linsert $arglist 0  ${type}::Snit_constructor $type $selfns $instance $instance]"
      (procedure "RT.ConstructInstance" line 9)
      invoked from within
  "RT.ConstructInstance $type $selfns $name $args"
      (procedure "::snit::RT.type.typemethod.create" line 45)
      invoked from within
  "pregistry %AUTO%  -tie [list file $state]"
      (procedure "Setup" line 11)
      invoked from within
  "Setup"
      (procedure "sak::registry::local" line 2)
      invoked from within
  "sak::registry::local  get||default Tests Shells {}"
      (procedure "sak::test::shell::add" line 8)
      invoked from within
  "sak::test::shell::add $argv"
      (procedure "sak::test::shell" line 9)
      invoked from within
  "sak::test::$cmd $argv"
      (file "./support/devel/sak/test/cmd.tcl" line 25)
      invoked from within


tkt_uuid: 735450ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: Fixed
title: ftpd - Check usage of fcopy
comment:
  We have to check if fcopy is properly used with respect 
  to -encoding on control and data channels, for versions 
  of Tcl from 8.3/8.4. Especially binary versus text 
  downloads.


tkt_uuid: 1477590fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: None
title: -vcmd option not supported in Tile version of tkchat
comment:
  Line 3729 of tkchat.tcl (Version 1.334) uses the option 
  -vcmd for an entry. While this is ok when tkchat is 
  used without Tile, this shorthand option is not 
  supported in Tile and thus the Tile version of tkchat 
  will throw an error here (Click on Preferences -> 
  Macros to see the error)

  This can be avoided by not using the shorthand here. 
  Using -validatecommand instead makes tk::entry and ttk
  ::entry happy (thanks to Reinhard Max for this 
  proposal!)


tkt_uuid: 1898189fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: special
priority: 5 Medium
foundin: None
resolution: None
title: Unbalanced parenthesis in elliptic.tcl
comment:
  Hi,
  The line #209 of the file elliptic.tcl
  contains the evaluation of an expression containing an unbalanced parenthesis :

  return [expr {sqrt(...)}]

  where the closing parenthesis does not exist in the source.
  This prevents the math package from being included as-is in a compiled starkit or starpack.

  Best regards,

  Michaël


tkt_uuid: 1005948fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
title: LabelComboBox and LabelSpinBox
comment:
  It was - convenient to have such widgets with
  properties ComboBox and SpinBox in the version 1.2.x.
  It is convenient and readable at writing a code, and
  for example the command "$w -state disbled" will effect
  (to change color) both on Label and on ComboBox.
  In fact is LabelEntry - why to not make LabelComboBox
  and LabelSpinBox? :)
  Itself would write and send - a patch, but it is not
  confident, that I can write a good code.


tkt_uuid: 1076923fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: ftp::close failing
comment:
  I'm consistently getting an error while 
  calling ::ftp::close after downloading multiple files. The 
  error message reads 
    error reading "sock1868": connection reset by peer 
    while executing "gets $sock bufline" 
    (procedure "::ftp::StateHandler" line 16)


  I dug into this a bit and it appears to be a timing error.. 
  It occurs after a "QUIT" has been sent to the server 
  and ::ftp::StateHandler is trying to read the goodbye 
  lines but the connection gets reset before it can do so.

  The simplest solution two fold: first wrap the "gets" in a 
  catch and setting number to 0 when it fails. Second, in 
  the error handling code don't give error 
  message "Service not available" if $ftp(State) 
  eq "quit_sent". I've attached a file with the updated 
  procedure with the fix.

  An annoying aspect of this bug is that it occurs in a 
  background handler and there's a vwait that doesn't get 
  satisfied--effectively making this uncatchable.


tkt_uuid: 1866134fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
title: Submission: Student's t-distribution
comment:
  Hi,

  I'm submitting some code for pdf-students-t and random-students-t (cdf-students-t is already implemented). Both procs will allow noninteger degrees of freedom, but the algorithm for the random deviates requires a value >= 1.

  Eric


tkt_uuid: 2807160fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: ComboBox should use unmanaged scrollwindow
comment:
  When one of the values of a combobox contains a long string, not only the horizontal, but also the vertical scrollbar appears (even when there are only a few entries). It seems the window height is always [nr of entries]-1 in that case.

  Example:
    ComboBox .cb -textvariable v -values {a b somelooooooooooooooooooooooooongstring c d}
    pack .cb
  and click on the arrow button.

  The attached patch solves this.


tkt_uuid: 948273ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
resolution: Fixed
title: logger::services returns "services", not $services
comment:
  I believe the code in the logger::services

  proc ::logger::services {} {
      variable services
      return services
  }
                                                        
                                                        
                       
  should return $services, not "services"


  regards
  Jouni.Ryno@fmi.fi


tkt_uuid: 1852718fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Fixed
title: ldap filters with binary values not handled correctly
comment:
  The filter buildup proc doesn't handle escaped binary in the filter value correct. It should follow RFC 2254.


tkt_uuid: 3606564fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Build System & Testing
priority: 8
foundin: None
resolution: Fixed
title: test fail - can't delete "namespace": command doesn't exist
comment:
  when running the testsuite with

  tclsh8.6 ./sak.tcl validate

  I get following error

  [ ] zip ~~ 0/ 2 ! 2 U 0 E 0 W 0
  can't delete "namespace": command doesn't exist
  while executing
  "::rename namespace {}"
  invoked from within
  "interp eval $ip [list ::rename namespace {}]"
  (procedure "Setup" line 19)
  invoked from within
  "Setup"
  (procedure "sak::validate::testsuites::run" line 31)
  invoked from within
  "sak::validate::testsuites::run $modules $mode $stem $tclv"
  (procedure "sak::validate::all" line 9)
  invoked from within
  "sak::validate::$cmd $argv $mode($raw$log) $stem $tclv"
  (file "./support/devel/sak/validate/cmd.tcl" line 67)
  invoked from within
  "source $cmdf"
  invoked from within
  "if {[file exists $cmdf] && [file readable $cmdf]} {
  source $cmdf
  exit 0
  }"
  (file "./sak.tcl" line 2402)


tkt_uuid: 576873ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
title: add autoscroll to tklib
comment:
  http://mini.net/tcl/950 is a package for Tk that turns
  display of a gridded scrollbar on or off, depending on
  whether it is needed or not.


tkt_uuid: 893259ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 8
foundin: None
title: Add simple plotting and charting package
comment:
  I have written a simple package for drawing plots and
  charts:
  - xy-plots
  - piecharts
  - barcharts
  - polar plots

  (I would like to add some simple 3D presentations too)

  It is still very much in its infancy, but I include
  the source nonetheless for early comments and
  suggestions.

  The basic design criterium was:

  Provide an easy-to-use package. It may not be as
  flexible as some others, but by offering lots of
  different chart types it should be worth looking
  into.


tkt_uuid: 1800408fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: Extra spaces around link text
comment:
  Using cvs HEAD, the following doctools markup:

    See [cmd ns_rollfile] for details...

  Produces this HTML output:

    See <b class='cmd'><a href="../ns_rollfile.html"> ns_rollfile </a></b> for details...


  There is extra space before and after 'ns_rollfile' within the anchor tag.

  In the above example it's not noticeable as runs of spaces are collapsed in HTML, but if there is anything other than a space surrounding the link, e.g. brackets, parentheses or question marks, the extra spaces break the formatting.


tkt_uuid: 776010ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: list
priority: 8
foundin: None
title: Add set operations.
comment:
  Date: 22 Jul 2003 17:46:51 GMT
  From: lvirden@yahoo.com
  Newsgroups: comp.lang.tcl
  Subject: Re: common elements in list of list


  According to Michael A. Cleverly <michael@cleverly.com>:
  :On 22 Jul 2003, Sasi wrote:
  :
  :>        How can get the list of common elements in
  the list of list? eg:
  :> set x {
  :>        {1 2 3 4 5 6}
  :>        {6 7 8 9 5 1}
  :>        {1 2 7 5 8 9}
  :>       }
  :>
  :> the common elements in this list of list are 1 & 5
  :> is there any easy way to extract them?
  :
  :Here's a solution off the top of my head:

  Michael, would you consider possibly adding this
  solution, or a derivation, to the struct::list module
  of tcllib?


tkt_uuid: 795608ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: tk binding problem in Gnome and Ximian
comment:
  There seems to be a bug when a tk listbox is embedded 
  inside a BWidget paned window frame. I have tried 
  putting the listbox outside of the frame and it works 
  correctly. This problem does not occur in KDE or using a 
  vnc. Is this a tcl/tk bug or is there some default setting 
  in Gnome or Ximian that needs to be changed in order 
  for the double-click event to be recognized? 

  Don


tkt_uuid: 429695ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: base64
priority: 5 Medium
foundin: None
resolution: Fixed
title: Speed increase of base64 & md5
comment:
  The patch contains:

  (a) Rewrite of base64::encode and base64::decode. The
  processing times are about 30% of the previous;
  additionally, this version runs for Tcl8.0

  (b) Rewrite of the pure tcl md5 algorithm. The
  processing times are about 30% of the previous.


tkt_uuid: 772461ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
title: snit: Allow masking of options (undefine)
comment:
  I wrote a 'mklabel' (adaptor) which gets
  its information from a metakit view/cursor. It 
  has a new
  option, handled in the megawidget, and uses 
  the label's
  -text and -textvariable to set the data.

  I don't want the megawidget to expose -text, 
  nor
  -textvariable. I currently have to alternatives 
  for doing so:

  1)List all options of the label we expose 
  and
  delegate them individually.

  - Long list, error prone, break when 
  label gets more
    options (= maintenance problem).

  2)Delegate option * and define -text -
  textvariable
  on the megawidget level, with 
  onconfigure/oncget
  as no-ops.

  - Still exposes the variables, although 
  as nulls.
    Setting them has no effect, reading 
  returns empty
    string

  I would like to be able to 'undefine' an option. 
  Causing the
  megawidget to know: This option is illegal, not 
  defined for
  the megawidget, nor must it be delegated.

  Then I would be able to

  undefine -text
  undefine -textvariable
  delegate option * to hull

  for my label, making it safe against unwanted 
  manipulation of
  the contents.


tkt_uuid: 953854ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: htmlparse
priority: 1 Zero
foundin: None
resolution: Accepted
title: Errors when parsing HTML to a tree
comment:
     Hello,

  In func

  proc ::htmlparse::mapEscapes

  line: return [subst $new]
  should change to:
     return [subst -nobackslashes -novariables $new]

  If not, if new has a backslash \, the subs breaks the 
  string (specially noted in paths on Windows)

  -------
  In func

  ::htmlparse::Reorder

  Lines:
      if {
         $sibling == {} ||
         (![string compare $tp [$tree get $sibling type]])
                   } {
                       break
                   }
  Should change to:
         if { $sibling == "" } { break }
         if { [lsearch "h1 h2 h3 h4 h5 h6 p li" [$tree get
                   $sibling type]] != -1 } {
      break
       }

    Second option is less agressive when reordering tags.

    Regards,

    Ramon Ribó
    ramsan@cimne.upc.es


tkt_uuid: 1158037fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: dns
priority: 5 Medium
foundin: None
resolution: Fixed
title: Resource exaustion
comment:
  dns::resolve fails after 65535 requests. It happens
  even with CVS head of dns.tcl.

  Error message:

  can't read "state(reply)": no such variable
  while executing
  "binary scan $state(reply) SS id flags"
  (procedure "Receive" line 6)
  invoked from within
  "Receive [namespace current]::$id"
  (procedure "::dns::UdpEvent" line 12)
  invoked from within
  "::dns::UdpEvent ::dns::66665"


tkt_uuid: 1242629fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: smtp
priority: 7 High
foundin: None
resolution: Accepted
title: Fix of CRAM-MD5
comment:
  Hi Marshall,

  today I tried to use the smtp modul to send mail
  to an authenticating MTA (qmail) using CRAM-MD5.
  That didn't work.
  Looking at the logs, I found the response to the
  challenge 4 char too short. The base64::encode
  proc folds this long response into 2 lines (which
  is coorect), but qmail is not able to digest a
  2 line response. Maybe other MTA's have the same
  problem. A simple removal of the newline char
  fixed the problem (see patch).
  I'm not sure if it's a bug of tcllib or if qmail
  is to blame. Regardless, now it works. Would you
  (or someone else) please check it against other
  MTAs?

  Best regards

  Ulrich


tkt_uuid: 943145ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 7 High
foundin: None
title: doctools - [namespace] markup request
comment:
  Please add a [namespace] markup command
  to the doctools format for marking a namespace
  name in the documentation.


tkt_uuid: 870429ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: html
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::html::textInput does not allow overriding of input.size
comment:
  Basically a trivial problem:

  ::html::textInput foo bar size=\"20\"

  on would expect (in the generated html):

  <input ... size="20"> 

  but one gets:

  <input ... size="45" size="20">

  This is documented in the source code comments for
  ::html::textInput, but i think it is plain stupid:

  Possible fix:
  expand defaults/tagParam to handle lists of params and
  use that in ::html::textInput to check for overridden
  default values.

  Michael


tkt_uuid: 2993029fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: aes
priority: 5 Medium
foundin: None
resolution: Fixed
title: aes procedure gives an error _just_ with a given vector
comment:
  After some "test and error", I find out that the vector that I am trying to decrypt triggers an error !!! but with similar vector the error does not happen!!!
  I upload a file with the ok vectors, and the bad one.
  Please, give me some feedback asas. Thank yo very much.
  Josep


tkt_uuid: 1220090fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 3 Low
foundin: None
resolution: Fixed
title: subsection markup doesn't detect duplicate anchors
comment:
  If a doctools file has two "subsection" tags with the same title, the 
  two subsections will have identical HTML anchor string.  Doctools 
  should issue a warning, and provide a way for the author to resolve 
  the ambiguity without necessarily changing their titles.


tkt_uuid: 621178ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget error in Tree under 8.4
comment:
  The following code under ActiveTcl 8.4.0.1 under Windows:

  package require BWidget

  pack [Tree .t]

  .t insert end root foo -text Foo
  .t selection set foo
  .t delete foo


  Yields the result:

  .t selection set: Cannot select unknown node "foo".
      while executing
  "selection .t set foo"
      ("eval" body line 1)
      invoked from within
  "eval selection $path set $sel"
      (procedure "Tree::delete" line 18)
      invoked from within
  "Tree::delete .t foo"
      ("eval" body line 1)
      invoked from within
  "eval Tree::$cmd .t $args"
      (procedure ".t" line 1)
      invoked from within
  ".t delete foo "

  This only occurs if the deleted node is selected.  If
  you remove the "selection set" line, everything works fine.


tkt_uuid: 547331ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: stooop
priority: 7 High
foundin: None
resolution: Not Applicable Here
title: stooop redefines [::proc] !
comment:
  It looks to me like the package stooop is
  redefining the commands [::proc]!  Yuck!

  It seems like a better idea to me for stooop
  to define and export [::stooop::proc].  Then
  if I want to import it and make use of it as
  a replacement for [proc] in my namespace, or
  for a replacement for [::proc] more globally,
  I have that choice.  Currently the stooop
  package makes the choice for you.


tkt_uuid: 732597ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: general request
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: move tcllib doc generation to build step
comment:
  Currently the tcllib generated Makefile generates the
  nroff documentation each time one does a make install.

  This means that if one has to install the library on
  1000 machines, the doc has to be generated a 1000 times.

  A change to make use of the Makefile, the target could
  be set up to only build the pieces which are out of
  date, and to do so once, at build time, saving computer
  resources and user time.


tkt_uuid: 1416798fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: stooop
priority: 5 Medium
foundin: None
resolution: Fixed
title: stooop: test suite bug
comment:
  with -debug 1:

  Module: stooop
  modules/stooop/stooop.test
  - tcllib::testutils 1.0
  WARNING: cleanupTests deleting /local/src/tcllib/91...
  env array elements created:     STOOOPCHECKOBJECTS


tkt_uuid: 1176295fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: memoize package
comment:
  A package that can be used to cache, load and save the
  values of expensive pure function calls i.e function
  without side effects

  Implmentation: http://wiki.tcl.tk/memoize

  Perl has it as a default package  since 5.8.0
  http://perl.plover.com/Memoize/

  regards,,
  Detlef


tkt_uuid: 412932ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: Works For Me
title: ftpd on win2000
comment:
  when running the server on a windows 2000 box
  the file transfers always fails, no errors are issued 
  but the downloaded file never downloads complete.and 
  ex. the pwd command does not work etc....

  i even tried it on a win98 with the same result.


tkt_uuid: 1416786fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: rc4
priority: 5 Medium
foundin: None
resolution: Fixed
title: rc4:test suite bugs
comment:
  with -debug 1:

  * rc4 1.1.0
  > pure Tcl - array based
  > pure Tcl - list based
  WARNING: cleanupTests deleting
  /local/src/tcllib/rc4test.data...
  WARNING: cleanupTests deleting
  /local/src/tcllib/rc4test2.data...


tkt_uuid: 3556779fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: widget
priority: 5 Medium
foundin: None
resolution: Out of Date
title: No calendar in August
comment:
  I use widget_calendar with this command:
  widget::calendar .z5fd.app.frdia.date -dateformat "%Y-%m-%d" -language de -textvariable zAr_uiDia(exposureDate)  -command z5ui_selectedDate

  In July all works fine  ..  today, Index 08 = August ???
  Executing the script i get:

  bad index "08": must be integer?[+-]integer? or end?[+-]integer? (looks like invalid octal number)
  bad index "08": must be integer?[+-]integer? or end?[+-]integer? (looks like invalid octal number)
      while executing
  "lindex $LANGS(mn,$lang) $month"
      (procedure "::widget::calendar::Snit_methodformatMY" line 9)
      invoked from within
  "$self formatMY $data(month) $data(year)"
      (procedure "::widget::calendar::Snit_methodRefresh" line 42)
      invoked from within
  ".z5fd.app.frstor.date Refresh"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 [linsert $args 0 $self]"
      invoked from within
  "::snit::RT.CallInstance ::widget::calendar::Snit_inst1 Refresh"
      ("after" script)
  bad index "08": must be integer?[+-]integer? or end?[+-]integer? (looks like invalid octal number)
  bad index "08": must be integer?[+-]integer? or end?[+-]integer? (looks like invalid octal number)
      while executing
  "lindex $LANGS(mn,$lang) $month"
      (procedure "::widget::calendar::Snit_methodformatMY" line 9)
      invoked from within
  "$self formatMY $data(month) $data(year)"
      (procedure "::widget::calendar::Snit_methodRefresh" line 42)
      invoked from within
  ".z5fd.app.frstor.date Refresh"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 [linsert $args 0 $self]"
      invoked from within
  "::snit::RT.CallInstance ::widget::calendar::Snit_inst1 Refresh"
      ("after" script)

  I got this error both - on a linux-System and on win7, 
     active-tcl 8.5.11,  tklib 0.5

  well, i hope, you can help
  regards Bernd


tkt_uuid: 1082061fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Accepted
title: ldap::search has no way to specify scope
comment:
  ldap 1.2 (Tcllib 1.7)

  ldap::search has no way of specifying scope.  The
  "default" scope is subtree.  This makes searching from
  the base DN not possible, see:

  % package require ldap
  1.2
  % set l [ldap::connect localhost]
  ::ldap::ldapsock5
  % ldap::search $l {} (objectClass=*) namingContexts
  LDAP error noSuchObject:

  I propose adding an optional "args" option arg to the
  end of the call signature for [ldap::search], like so:

  % package require ldap
  1.3
  % set l [ldap::connect localhost]
  ::ldap::ldapsock5
  % ldap::search $l {} (objectClass=*) namingContexts
  -scope base
  {{} {namingContexts dc=panoptic,dc=com}}

  Attached is a patch to provide the functionality in the
  above example.  The currently only valid switch is
  "-scope" and valid  values are: base, one{level},
  sub{tree}, or any integer (0-2).


tkt_uuid: 672956ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: math
priority: 8
foundin: None
title: New submodule for math - optimisation
comment:
  I would like to submit a first version of a new
  submodule, optimize.
  It contains two working procedures, to optimize a given
  function. Work is being carried out to add a linear
  program solver.

  The tar-ball contains the source code, documentation
  and test cases (even for the routine that is not fully
  implemented yet)


tkt_uuid: 1658061fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 3 Low
foundin: None
resolution: Fixed
title: Poor/misleading diagnostics from smtp::sendmessage
comment:
  After switching to a new server, my TCL mailing list software stopped working -- sending to all addresses would fail with "read from server timed out".

  The server (on localhost) would log simply "unexpectedly closed connection".

  It was not until I modified the script to print out the entire errorInfo, that I saw the _real_ problem: "can't find package tls".

  Similarly, on another installation, the SMTP server was modified (unbeknown to me) to require username and password. Instead of relaying the "553 Authorization required" error message to me, smtp::sendmessage began complaining:

  key message-id not in header
      while executing
  "error "key $mixed not in header""
      ("default" arm line 5)
      invoked from within
  "switch -- $key {
          "" {
              set result ""
              foreach lower $state(lowerL) mixed $state(mixedL) {
                  lappend result..."
      (procedure "::mime::getheader" line 7)
      invoked from within
  "::mime::getheader $part ${message-idL} "
      invoked from within
  [... my code ...]


tkt_uuid: 1693391fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Rejected
title: TitleFrame doesn't collapse after deleting all widgets
comment:
  I the following sample the TitleFrame reduces it's size, when the first widget $f.foo is deleted, but it doesn't collapse after deleting the last widget $f.bar:

  ##########
  package require BWidget
  TitleFrame .tf -text "title"
  grid .tf -sticky news

  set f [.tf getframe]
  label $f.foo -text "foo foo foo"
  label $f.bar -text "bar bar bar"
  grid $f.foo -sticky news
  grid $f.bar -sticky news

  after 3000 [list destroy $f.foo] 
  after 6000 [list destroy $f.bar] 
  ##########

  Rolf.


tkt_uuid: 1567320fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: sasl
priority: 5 Medium
foundin: None
resolution: Fixed
title: hpux, testcase SASL-DIGESTMD5-4.0 starts and hangs
comment:
  Running the tcllib testsuite on a hpux-parisc machine
  the testcase mentioned in the subject hangs without any
  type of feedback.


tkt_uuid: 1042613fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Can't drag into an emtpy tree widget
comment:
  A drag to a tree widget does not work, if the
  destination tree doesn't have any nodes. 

  This script illustrates the problem:

  package require BWidget

  proc dropcmd {dest source dropInfo operation dataType
  data} {
      set sourceTree [winfo parent $source]
      $dest insert end root $data \
           -text [$sourceTree itemcget $data -text]
      $sourceTree delete $data
  } 

  set t1 [Tree .t1 -dragenabled 1]
  $t1 insert end root aNode -text "A sample Node"

  set t2 [Tree .t2 -dropenabled 1 \
              -dropovermode w \
              -dropcmd dropcmd]
  # If the destination tree has at least one node,
  everything works
  # $t2 insert end root anotherNode  -text "Another node"

  pack $t1 $t2 -side left

  If the destination tree doesn't have a node, the
  dropcmd will not be called. As far, as I've debugged
  the problem, the reason, that the dropcmd isn't called,
  is in  Tree::_drop_cmd:
      if {[llength $data(dnd,node)]
          && [llength [set cmd [Widget::getoption $path
  -dropcmd]]]} {
          return [uplevel \#0 $cmd \
                      [list $path $source $data(dnd,node)
  $op $type $dnddata]]
      }
  If the destination tree doesn't have a node,
  $data(dnd,node) is empty (but should be "widget", as
  far, as I can tell)


tkt_uuid: 1168649fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Installer
priority: 5 Medium
foundin: None
resolution: Fixed
title: debian package regression 1.7 (from 1.6.1)
comment:
  I was trying to make a new Debian package of tcllib:
  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=300805
  but I found there's a regression in tcllib-1.7 from
  tcllib-1.6.1 since it tries to install dtplite direcly
  in /usr/bin/ instead the debian package directory.
  Could you fix this problem so I can make a Debian package?
  Any idea how to fix it?

  ---8<---
  error copying "./apps/dtplite" to "/usr/bin/dtplite":
  permission denied
      while executing
  "file copy -force $aexe    $adst"
      (procedure "ainstall" line 16)
      invoked from within
  "ainstall"
      (procedure "doinstall" line 26)
      invoked from within
  "doinstall"
      (procedure "main" line 11)
      invoked from within
  "main"
      (file "./installer.tcl" line 536)
  make[1]: *** [install] Error 1
  make[1]: Leaving directory `/tmp/tcllib/tcllib-1.7'
  make: *** [install-stamp] Error 2
  ---8<---


tkt_uuid: 772430ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: snit: clean up error stacks, hide internals.
comment:
  From a mail by Will, author of snit:

  I'd like Snit to do a much better job of cleaning up error 
  stack trace so that the Snit internals are hidden by 
  default.


tkt_uuid: 1308006fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ftp::List problem on Windows
comment:
  When connection to a windows server
  whith ftp::Open ...

  Then:
  ftp::List $h "filename-which-does-not-exists"
  --> error     error | E: Error receiving list!

  When I add try with "x*" no problem. 
  An empty string is returned: meaning no file starting
  with x.

  When I connect to a Solaris server:
  ftp::List $h "filename-which-does-not-exists"
  works fine (without adding the *)


tkt_uuid: 3419727fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: inifile
priority: 9 Immediate
foundin: None
resolution: Fixed
title: global variable key is destroyed during file open procedure
comment:
  code snipset out of
  # RCS: @(#) $Id: ini.tcl,v 1.15 2008/05/11 00:53:58 andreas_kupries Exp $

  the line
    ::set key [string trim [lindex $line 0]]

  destroys the content of the global variable  "key". 


tkt_uuid: 1642050fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: PasswdDlg <Return> traversal wrong when -passwdstate disable
comment:
  Create a PasswdDlg with -passwdstate disabled.  Type in the login name and hit Return.  It should destroy the dialog and perform the login, but instead it sets focus to the disabled password entry field.

  I believe the problem is that the -command option for the login entry is always set to [list PasswdDlg::_verifonpasswd $path $frame.labpass]                                regardless of the value of the -passwdstate option.  If the -passwdstate is disabled, the -command option for the login entry should be [list PasswdDlg::_verifonlogin $path $frame.lablog] instead.


tkt_uuid: 1409083fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: fileutil::find documentation improvement
comment:
  1.  typo:  "loose" -> "lose"
  2. The man page does not indicate that the filtercmd
  should return a boolean value.  An example would be
  warranted.  Suggested text to be appended to what
  currently exists:
  =====
  The result of [arg filtercmd] is a boolean value that
  indicates if the current file should be included in the
  list of interesting files.  Example:

  # find tcl files
  package require fileutil
  proc is_tcl {name} {return [string match *.tcl $name]}
  set tcl_files [fileutil::find . is_tcl]
  =====


tkt_uuid: 440051ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 3 Low
foundin: None
resolution: Fixed
title: latest sha1 test suite fails
comment:
  Note: I don't see sha1 listed in the sf tcllib project
  categories.

  I downloaded the latest tcllib snapshot from scriptics
  on July 10, 2001 at 9:30 AM EDT.

  when I run the test from the top level directory, I get
  this error.

  Module: sha1
  modules/sha1/sha1.test
  sha1 1.0 (pure Tcl)

  ==== sha1-1.0 sha1 FAILED
  ==== Contents of test case:

      catch {::sha1::sha1} result
      set result

  ---- Result was:
  wrong # args: should be "::sha1::sha1 msg"
  ---- Result should have been (exact matching):
  no value given for parameter "msg" to "::sha1::sha1"
  ==== sha1-1.0 FAILED

  ==== sha1-1.1 sha1 FAILED
  ==== Contents of test case:

      catch {::sha1::hmac} result
      set result

  ---- Result was:
  wrong # args: should be "::sha1::hmac key text"
  ---- Result should have been (exact matching):
  no value given for parameter "key" to "::sha1::hmac"
  ==== sha1-1.1 FAILED

  ==== sha1-1.2 sha1 FAILED
  ==== Contents of test case:

      catch {::sha1::hmac key} result
      set result

  ---- Result was:
  wrong # args: should be "::sha1::hmac key text"
  ---- Result should have been (exact matching):
  no value given for parameter "text" to "::sha1::hmac"
  ==== sha1-1.2 FAILED


tkt_uuid: 1518803fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget::write fails for NoteBook widget
comment:
  The error message: 
    invalid command name "-classonly::use"

  The NoteBook widget uses (eventually) DynamicHelp.
  DynamicHelp uses "-classonly", as defined in
  $BWidget::use(DynamicHelp)

  The proc BWidget::classes (utils.tcl, line 563) will
  invoke "-classonly::use" for DynamicHelp.

  The following context diff will fix it:

  $ diff -c utils.tcl.orig utils.tcl
  *** utils.tcl.orig      Mon Apr 17 12:19:03 2006
  --- utils.tcl   Fri Jul  7 10:55:27 2006
  ***************
  *** 567,573 ****
        set classes [list $class]
        if {![info exists use($class)]} { return }
        foreach class $use($class) {
  !       eval lappend classes [classes $class]
        }
        return [lsort -unique $classes]
    }
  --- 567,575 ----
        set classes [list $class]
        if {![info exists use($class)]} { return }
        foreach class $use($class) {
  !         if {![string equal $class "-classonly"]} {
  !             eval lappend classes [classes $class]
  !         }
        }
        return [lsort -unique $classes]
    }


tkt_uuid: 1376323fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Duplicate
title: large message size causes error
comment:
  I reported this issue to ActiveState. You can 
  reference it by going to 
  http://bugs.activestate.com/show_bug.cgi?id=42067

  Basically, when using a remote server, sending a 
  message that is greater than ~9000 bytes on a windows 
  XP pro platform causes the function to crash.

  Since I don't want to upload everything all over 
  again please get the info at ActiveState.

  This issue is really limiting what I'm trying to do.


tkt_uuid: 1784843fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Documentation
priority: 5 Medium
foundin: None
resolution: Accepted
title: minor spelling corrections to devdocs files
comment:
  There may be content-oriented updates needed to these files ... this patch is not that.

  All I am doing here is correcting several typos I encountered while running ispell over the files.


tkt_uuid: 521386ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Dialog freezing on Windows (and patch)
comment:
  The Dialog::draw routines freezes on Windows when the
  toplevel of the window is in state withdrawn, due to a
  tkwait visibility waiting forever.

  The supplied patch just skips over the visibility part
  if this is the case.

  Effects to existing code:
  Unknown, but improbable.


tkt_uuid: 1710644fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: treeql
priority: 5 Medium
foundin: None
resolution: Fixed
title: No {expand} for you!
comment:
  The file treeql85.tcl uses the
  {expand} syntax which is no longer
  approved.  Migrate to the {*} replacement.


tkt_uuid: 1581075fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: units
priority: 5 Medium
foundin: None
title: Feature submission: metric-imperial unit conversion
comment:
  I have recently created a simple set of procedures to
  convert imperial units of measurement to metric units
  and vice versa. I think it would be a useful addition
  to TCLLIB.

  Please see
  http://www.toxicantidote.net/scripts/tcl-metimp.shtml
  for details of usage and file download.


tkt_uuid: 2646568fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: jpeg
priority: 5 Medium
foundin: None
resolution: Accepted
title: jpeg::imageInfo opens files with r+
comment:
  The procedure never needs to write the file -- and really ought not to, of course.

  So, it is wrong for it to open the file with mode r+ -- doing so requires increased permissions (a program is unable to gather imageInfo on a file, that it is not allowed to overwrite), and is otherwise wrong.

  The simple patch is attached -- it will soon be part of FreeBSD's devel/tcllib port.

  Thanks.


tkt_uuid: 909104ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: tkchat - interface: can't send errors to /dev/null
comment:
  Debug->Error Logging->To File... has trouble setting
  destination to /dev/null

  complains about overwriting an existing file.


tkt_uuid: 1526641fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: find mishandles "hidden" files on Win
comment:
  fileutil::find has two separate implementations for
  Windows and Unix... the Windows implementation
  incorrectly uses a glob pattern intended for Unix which
  assumes that filenames starting with "." need explicit
  matching, leading to files so named being listed twice
  in the result.

  In the Windows implementation, the line:

      set filenames [glob -nocomplain * .*]

  should be:

      set filenames [glob -nocomplain *]

  ####
  fileutil version 1.6.1


tkt_uuid: 1416814fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: tree
priority: 5 Medium
foundin: None
resolution: Fixed
title: tree: test suite bugs
comment:
  with -debug 1:

  * struct::tree 1.2.2
  test name 'tree-11.2' re-used; prior use in
  /local/src/tcllib/modules/struct/tree1.test
  test name 'tree-13.3' re-used; prior use in
  /local/src/tcllib/modules/struct/tree1.test
  test name 'tree-14.2' re-used; prior use in
  /local/src/tcllib/modules/struct/tree1.test


tkt_uuid: 2801896fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: jpeg
priority: 5 Medium
foundin: None
resolution: Accepted
title: jpeg package: adds support for GPS Exif tags
comment:
  I needed something to interpret GPS tags in Exif headers, so I found the jpeg package and added it.  Nice job whoever wrote the _exif routine--it was very easy to extend.  I haven't done a patch before, so I'm probably doing it all wrong--I'm attaching the whole file I updated, and just put comments in the vicinity of my changes (I didn't comment the place where I added an optional argument...)--look for "mdp".


tkt_uuid: 653266ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: ListBox Shift-extended selection fails
comment:
  Extending a selection using the shift key in a BWidget 
  ListBox causes a failure if the list item tags are not 
  integers (and maybe if they are too). It appears to 
  assume that the tags are numbers and applies "incr" to 
  them. I have attached a patch to fix this problem.


tkt_uuid: 1079712fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Works For Me
title: listbox item selection abnormally cancelled
comment:
  Version: ACTIVETCL 8.4.8.0
               BWidgets 1.7

  When using multiple selection widgets like
  listbox/combobox...in a same window,
  if you mouse-click other ones like combobox
  and select something, the selected item
  in listbox will be unselected at once,
  and if you use command:
  "set sel [listbox_path curselection]"

  $sel will be an empty string.
  This potentially denies the usage of listbox with some 
  other stuff.


tkt_uuid: 1838731fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: statistics
priority: 5 Medium
foundin: None
resolution: Fixed
title: Pretty quick inverse normal cdf
comment:
  Hello,

  I have written a pretty quick inverse normal cdf proc. I start with a decent (I think good to 10^-4 ??) approximation from Abramowitz and Stegun as a starting point and then use Newton's method to find a much better estimate.

  Use it as you like. I'm attaching the code, and providing it as public domain (no copyright).

  Incidentally, math::statistics::pnorm is much faster than math::statistics::cdf-normal, and it might be better to use it (??)

  Eric


tkt_uuid: 521590ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: textutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: tabify2/untabify2 fails on empty string
comment:
  textutil::untabify2 and textutil::tabify2 both fail on
  the empty string, due to an uninitialized variable.  

  Attached patch fixes the bug and adds this test to the
  test suite.

  On an unrelated note: are 'tabify' and 'untabify'
  really needed?  They don't do anything useful (or that
  couldn't be accompished with [string map] or [regsub]
  in the unlikely event that someone does want this
  behaviour); they should probably be replaced with the
  tabify2/untabify2 implementations.


tkt_uuid: 3162548fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tar
priority: 8
foundin: None
resolution: Accepted
title: tar -- support existing/nonseekable channels
comment:
  The attached patch adds a "-chan" option to [contents/stat/get/untar/create]  (but *not* [add/remove], foor good reasons), which interprets the first argument as a channel name instead of filename. This allows to pass already opened channels, seekable or not. One typical usage is the emulation of 'tar cf - | ...':

     ::tar::create  $pipe  $listoffiles -chan

  Which is typically useful for Wub, to serve content that is to be tarred on-the-fly, instead of (currently) using tempfiles.
  The same applies on input, where seek is emulated by repeated reads when the channel is not seekable; similarly a "tar tf -" can thus be done on any pipe or socket.

  Note that the responsibility for 'fconfigure -translation binary' is left to the caller; only raw IO are done on the provided channel, and it is left open on return. 

  I have not included the (needed) documentation update; I would appreciate a hand since I don't have the renderer handy ;-)


tkt_uuid: 1213646fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 2
foundin: None
resolution: Fixed
title: French locale (fr) is blocking man pages making
comment:
  I tried to install tcllib-1.7 from the tar.gz archive.
  On my computer (under WinME) the doc generation step
  throws an error that I could localize in
  'modules/doctools/mpformats/fr.msg'.
  mcset (from msgcat package) is used with an incorrect
  number of arguments :

  mcset fr "tag" "english desc" "french desc"

  All we need to fix this bug is to remove the "english
  desc" from all similar calls. And this is still present
  in the current CVS snapshot.
  May this be useful.
   Stephane


tkt_uuid: 1471885fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Invalid
title: snit2.tcl - faulty "in" keyword
comment:
  Don't know what the deal is..


  -@- -) tclsh
  % info tclversion
  8.5
  % info patchlevel
  8.5a2
  % package require snit
  2.0
  % snit::type dog { }
  syntax error in expression "$name in $arglist": extra 
  tokens at end of expression


  So I look in the source and find
      if {$name in $arglist} {
  replace it with
      if {[lsearch $arglist $name] != 1} {
  and recompile which fixes that 'bug'.


  -@- -) tclsh
  ...
  % snit::type dog { }
  ::dog
  % snit::type dog {option -color brown}
  syntax error in expression "$option in $compile
  (delegatedoptions)": extra tokens at end of expression


  So I find all instances of:
      if {X in Y} {
  replace them with
      if {[lsearch Y X] != 1} {
  and recompile to fix.


  But what gives? I can't find "X in Y" used anywhere 
  else in tcllib, and the only clue I have is the "in" 
  procedure for xifo objects.

  Dylan.


tkt_uuid: 1061100fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: dns
priority: 5 Medium
foundin: None
resolution: Works For Me
title: ip::equal should only look at significant bits
comment:
  It seems that the comparison, the two must have identical bits in the 
  longest match, but I think what is actually wanted is identical bits in 
  the shortest match.  

  Both the first and second comparisons should match, but the
  first succeeds and the second doesn't.  The third succeeds
  when I make sure that the longest has the same bits as the
  shortest.

  The fourth example is what I would use this for most commonly (is 
  this address a part of this subnet - would it match a route in the
  routing table, eg)?  However it will always fail since the subnet
  doesn't have all the significant bits of the /32.  

  I hope this is a bug and not purposeful because I would really like the 
  other feature.  :)

  % ip::equal 129.12/16 129.12/24
  1
  % ip::equal 129.12/12 129.12/16
  0
  % ip::equal 129/12 129/16
  1

  % ip::equal 129.12/16 129.12.1.1/24        
  0

  % ip::equal 129.12/16 129.12.1.1
  0
  % ip::equal 129.12/16 129.12.0.1/24
  1
  % ip::equal 129.12/16 129.12.1.1/24        
  0


tkt_uuid: 681119ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: bwidget - Add percentage text to progressbar
comment:
  Attached is a patch that shows the percentage of the 
  progressbar.  This new behavior is optional and by 
  default, it is disabled.


tkt_uuid: 2144802fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: snit's from command underdocumented, and possible flaw
comment:
  It is not documented that 'from argvName option ?default?' only finds the first occurence of the option.
  It is not documented that no attempt is made to resolve how to handle multiple occurences of the same option.

  The flaw: from is able to find an option name, even if it was actually the value for a different option and thus not really an option.

  set argv {-foo -bar -snarf 0}
  from argv -bar x
  => returns -snarf as value
  and argv changes to {-foo 0}

  Should have returned x, as -bar is not present as option, only as value to option -foo.


tkt_uuid: 1416774fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: mime: test suite bugs
comment:
  with -debug 1:

  * mime 1.4.1
  test name 'mime-7.1' re-used; prior use in
  /local/src/tcllib/modules/mime/mime.test
  env array elements created:     TZ


tkt_uuid: 520907ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Out of Date
title: Notebook tab color bug (and patch)
comment:
  Motivation:

  Using another color than the standard grey, I saw that
  the Notebokk tabs do not honor the chosen background
  color. The submitted patch goes a step further and adds
  a -tabbackground (similar to -activebackground) option
  to be able to specify another colour if wanted.

  The attached tar contains a diff to the actual head,
  the complete new notebook.tcl source and the updated
  documentation should the patch be accepted.


tkt_uuid: 1385688fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: pop3
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: pop3 - New retrieval method + minor performance improvement
comment:
  Attached is the entire pop3.tcl with the proposed 
  changes.  I took the liberty of bumping up the 
  version from 1.6.3 to 1.7.  Note that this code has 
  actually been in operation for almost two years.

  First a minor performance improvement in RetrFast - 
  don't spend time splitting potentially large message 
  if not doing any debug logging.

  Second is a new retrieval method - tofile.
  Since POP3 messages can be very large, with 
  attachments that may never need to be processed in 
  tcl, to minimize memory usage, it may be best to 
  write the retrieved message to a temp file and return 
  the temp filename instead of the entire message.

  # Alex Hisen (alex@am.net) 2005-12-18:
  # In order to provide support for the new tofile 
  retrieval method
  # we need a way to generate temporary file 
  paths/names.
  # We first try to use an AOLserver command if 
  available.
  # If not we try to see if our version of Tcl supports
  # the file tempfile subcommand (see TIP #210:
  # http://www.tcl.tk/cgi-bin/tct/tip/210.html )
  # Finally we fallback to the tcllib fileutil package.
  # Note that our package require fileutil is caught, 
  so even
  # if you don't have any of the three methods, this 
  package
  # will work fine as long as you don't use tofile 
  retrieval.
  #
  # The Tempfile proc we create in our namespace 
  operates
  # the way TIP #210 prescribes - it opens the file for 
  write,
  # returns the open file channel, and sets the 
  supplied variable
  # to the full path and name of the created temporary 
  file. 


tkt_uuid: 459186ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: stats - deprecated
priority: 4
foundin: None
resolution: Out of Date
title: counter & stats modules are almost same
comment:
  A cursory look at the diffs of counter.tcl and stats.tcl files
  gives the impression that both are essentially the same.
  Moreover, the ChangeLog file under counter module says:

  2000-10-02  Brent Welch <welch@ajubasolutions.com>

          * NAME CHANGE from "stats" to "counter"
          * counter.tcl: Changed shading of histogram labels.


  I think having two such modules with almost the same 
  functionality can lead to several problems, including confusing
  users on which module to use as well as code maintenance.

  Therefore, it would be best to delete one of the two modules
  -- I don't care which one. It it is not possible to delete one of the
  modules then the procs common to both should be merged into
  a single new library module and then both the modules should 
  refer/call the procs in the new library module.


tkt_uuid: 548832ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: Tcl version of mime::qp_encode broken
comment:
  The mime package has a preference for Trf's
  quoted-printable command, but falls back to a pure Tcl
  implementation when Trf is not present.

  In tcllib 0.8 (mime package version 1.2 iirc),
  mime::qp_encode correctly encoded the equal sign as
  =3D.  Currently in tcllib 1.2 (mime package version
  1.3.1) mime::qp_encode does NOT encode the equal sign. 
  This causes the quoted-printable output of the mime
  package to not be decodable by many other programs
  (such as pine).

  A (rather simple) patch is attached.


tkt_uuid: 457489ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
title: httpd
comment:
  Add the kernel of an HTTP server as module.
  Just the core part, i.e. collection of incoming
  requests. Dispatch via a singe callback. Everything
  else can be grafted to this from there.

  Not a replacement for TclHTTPd, much more lightweight
  Could be used as part of TclHTTPd. See the ftpd
  module for an example (No storage access in the
  module itself, only hooks to delegate this to the
  sourrounding code).

  Jeff mentioned a micro server used in the testsuite
  of tcl. This could be a useful starting point.


tkt_uuid: 1951544fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 6
foundin: None
title: YAML module add
comment:
  I impremented a load/dump library for YAML.

  Now, the library name is YAPT.(YAml Parser for Tcl)
  But according to the naming convention of tcllib, this library name might be 'yaml'?

  Although whichever of two names is satisfactory for me, I want to continue development by the determined name.

  Comments?


tkt_uuid: 1099581fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Accepted
title: New module submission: docstrip
comment:
  This is a suggested new module for tcllib, containing two 
  packages 'docstrip' and 'docstrip::util'.

  What the docstrip package provides is primarily the ability 
  to use source files that are not in the traditional "raw code" 
  form, but may contain also much other material (typically 
  documentation). Secondarily this makes it convenient to use 
  a form of literate programming that is very common in the 
  LaTeX community also for Tcl programs.

  (For an example, see
    http://cvs.sourceforge.net/viewcvs.py/alphatcl/Developer/
  Source/dialogs/dialogsNew.dtx?rev=HEAD&view=log   
  (source file)
  and
    http://cvs.sourceforge.net/viewcvs.py/alphatcl/Help/
  Dialogs%20Help.pdf?rev=HEAD&content-type=application/
  pdf   (typeset form of the above)
  .)

  The attached archive contains seven files.
    docstrip.tcl
    docstrip.man
    docstrip.test
    docstrip_util.tcl
    docstrip_util.man
  are the traditional .tcl sources, doctools-style 
  documentation, and test suite required a tcllib module. The 
  sixth file
    tcldocstrip.dtx
  is the _actual_ source for the entire module. The first five 
  files can be regenerated from it by LaTeXing the seventh file
    tcldocstrip.ins
  For what good would a source documentation system be if 
  one couldn't use it to document itself?


tkt_uuid: 2691870fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: plotchart
priority: 5 Medium
foundin: None
resolution: Fixed
title: determineScale with close numbers
comment:
  Hi,
  With Plotchart 1.6.1, used in Tcl 8.4.

  % package require Plotchart
  1.6.1
  % Plotchart::determineScale 0.99999999999999911  1.0000000000000007
  integer value too large to represent

  The cause is in the computation of nicemin :

  set nicemin [expr {$step*$factor*int($xmin/$factor/$step)}]

  Here the value of the factor is very low :

  dx = 1.55431223448e-015
  expon = -14
  factor = 1e-014
  step = 0.2
  xmin = 0.99999999999999911

  so that the value $xmin/$factor/$step is not representable as a 32 bit integer, used in Tcl 8.4.
  In fact, the relative shift between the 
  two numbers is 1.e-15, very close to the 
  precision of double precision floating 
  point numbers.

  A possible fix is to compute the relative shift,
  and to modify the inputs so that at least 8 significant digits are different.
  The modified version gives the result :

  % catch {Plotchart::determineScale 0.99999999999999911  1.0000000000000007 0 8} errmsg ; set errmsg
  expon = -8
  factor = 1e-008
  step = 0.2
  xmin = 0.999999995
  0.999999994 1.000000006 2e-009

  The patched version is in attachment of the bug report.

  Best regards,

  Michael


tkt_uuid: 1034580fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Fixed
title: Failure in parsing <??? /> tags
comment:
  It seems that htmlparse module failes to handle tags of 
  the form <tag_name attr_1=val ... />. A quick fix is the 
  following:

  Add to line 329 of htmlparse.tcl:

  # Convert the HTML string into a script.
  set sub "\}\n$cmd {\\1} {/} {\\2} \{"
  regsub -all -- {<([^\s>]+)\s*([^>]*)/>} $html $sub 
  html
  set sub "\}\n$cmd {\\2} {\\1} {\\3} \{"
  regsub -all -- {<(/?)([^\s>]+)\s*([^>]*)>} $html $sub 
  html

  I simply add a new regular expression, that handles only 
  this special case.

  George


tkt_uuid: 453519ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 7 High
foundin: None
resolution: Out of Date
title: 10.5 Needs Tk 8.4 (TIP 44) update
comment:
  Question 10.5 refers to redefining the commands
  [tk{Text|Entry}Insert] and accessing the 
  variable tkPriv to implement an overwrite
  mode for the text or entry widgets.

  These instructions are out of date now that
  private internal commands of Tk have been
  moved into the ::tk namespace for Tk 8.4
  (see TIP 44).


tkt_uuid: 1272836fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: bignum :: float
priority: 5 Medium
foundin: None
resolution: None
title: math::bigfloat - failed tests with Tcl 8.5
comment:
  ==== bigfloat-round-1.0 eval : 'tostr [round [fromstr
  $x]]' FAILED
  ==== Contents of test case:
  uplevel 1 $code
  ---- Result was:
  1
  ---- Result should have been (exact matching):
  0
  ==== bigfloat-round-1.0 FAILED


  ==== bigfloat-round-1.0 eval : 'tostr [round [fromstr
  $x]]' FAILED
  ==== Contents of test case:
  uplevel 1 $code
  ---- Result was:
  -1
  ---- Result should have been (exact matching):
  0
  ==== bigfloat-round-1.0 FAILED


tkt_uuid: 2840180fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tar
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Incorrect prefix/name split?
comment:
  While digging around, I encountered a discrepancy between what the tar package does and how the tar file format is documented here:
  http://www.freebsd.org/cgi/man.cgi?query=tar&sektion=5&manpath=FreeBSD+8-current

  The problem is with how a filename is split between the name and prefix fields of the header, when the filename is longer than 100 characters. The tar package simply puts the last 100 characters in "name" and what comes before it in "prefix". That tar manpage rather says that the split _must happen at a slash_, and that a slash will be inserted between the prefix and name when joining the two up again.[Section "POSIX ustar Archives", description of "prefix"]

  I haven't been able to actually test what actual tar utilities do with name and prefix, however; some basic attempts (at tclsh prompt) of mine of making a tarfile with one item that has name "name" and prefix "prefix" just results in tar saying "This does not look like a tar archive" :-(


tkt_uuid: 905132ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Accepted
title: time.tcl (version 1.8) fails to catch TCP connection timeout
comment:
  time.tcl fails to catch a timeout on the TCP socket
  connect, though it handles the UDP situation correctly.
   When used in TCP mode, either without the UDP package
  loaded or by specifying -protocol tcp, if there is
  nothing listening on the port of the specified server,
  the program ends with "connection refused".

  Also - this package is MISREPRESENTED. It does NOT
  implement the Network Time Protocol, RFC 1305, port
  123, nor does it claim to. It implements RFC 868, the
  system-independent time protocol, port 37, often
  implemented with other "simple server" protocols, like
  echo, chargen, and so forth (on Unix-derived systems,
  right in inetd). Whoever registered this within the tcl
  offering as NTP didn't do their homework.

  To make matters worse, if you really connect this thing
  to the REAL ntp on port 123, it doesn't recognize the
  fact, and it returns a WRONG VALUE. If I get time, I'll
  see if I can get it to return an error instead of a
  wrong value, but with the early, simple protocols,
  that's not always practical. I will also see how
  difficult it would be to get a value from the REAL NTP,
  though I'm not going to attempt to implement the
  convergence algorithms, just grab the time - though
  that isn't quite what it was intended for.


tkt_uuid: 1465066fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: logger
priority: 3 Low
foundin: None
resolution: Not Applicable Here
title: logger does not print correct args when passed multiple args
comment:
  (bin) 49 % package require logger
  0.6.2
  (bin) 50 % set f [logger::init foo]
  ::logger::tree::foo
  (bin) 51 % ${f}::debug foo bar baz
  [Wed Apr 05 17:41:43 Westeuropäische Normalzeit 2006]
  [bar] [debug] 'baz'
  (bin) 52 % 

  This should print:
  'foo bar baz'

  seems like the origin tracking code is not robust enough.

  Michael


tkt_uuid: 1400838fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: MessageDlg bug, LabelEntry bug, demo bug
comment:
  I have found 2 bugs in BWidgets and 1 bug in BWisgets-demo 
  (ActiveState Tcl/Tk 8.4 12 WindowsXP).
  BWidgets bug1: MessageDlg abort-retry-ignore -
  "-default must 
  not be """ 
  BWidgets bug2: Dialog focus bug with LabelEntry.
  Dialog draw LabelEntry - LabelEntry not request focus.
  When I change LabelEntry with tk-entry - all OK.

  BWidgets demo bug: Notebook page 'Basic' - 'Entry' 
  In entry command must be space before and after ';'.
  When I 
  press Enter on entry - error genrates. After adding
  space all 
  works ok.


tkt_uuid: 3106208fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: tree itemconfigure mishandling of node names
comment:
  The original description, as submitted to ActiveState:
  ========================================
  I am currently using version 1.8 of the BWidget library. I have found an  error (or lack of documentation) in the Tree library. I am using the tree structure in my software to display connections between devices. Each node in  my tree is named using the unique ID of the device which the tree node represents (these are integer values). When doing an "itemconfigure" in my code I run into an error. The error is caused by using integer values for node names. The error is described below.

  In the code section (below) taken from Tree::itemconfigure there exists a case when a node name is the same value as a flag value (in my system I had a node named 16 and a flag value that turned out to be 16). When doing the lsearch to find the idx of the node, the search finds the index of the flag value 16 (and assumes this is the node). When it does the incr to get the corresponding flag value it is really picking up a node name. In my system I also have node names that are strings. In my case the code was picking up a node name that was a string and when trying to set the flag it was doing an "|" with a flag value and a string (which causes Tcl to crash).

   if { $data(upd,level) < 3 && $flag } {
        if { [set idx [lsearch -exact $data(upd,nodes) $node]] == -1 } {
           lappend data(upd,nodes) $node $flag
        } else {
           incr idx
           set flag [expr {[lindex $data(upd,nodes) $idx] | $flag}]
           set data(upd,nodes) [lreplace $data(upd,nodes) $idx $idx $flag]
        }

  I do not see any documentation stating that node names cannot be integer values. As a result, I deem this to be a bug that should be addressed.
  If you are not the people who deal with Tcl bug, please pass this on to the people who fix bugs. Thanks.
  ========================================

  My fix for the problem is attached.


tkt_uuid: 483838ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 6
foundin: None
resolution: Fixed
title: minor changes to several BWidget widgets
comment:
  I've attached the result of a 'cvs diff' between my
  local BWidget
  sources and the current CVS head (20-nov-2001). This
  diff
  contains the following changes:

  1) tree.tcl

  Added a 'recursive' argument to 'Tree::opentree' and 
  'Tree::closetree'

  2) dialog.tcl

  Added '-transient' and '-place' flag

  3) listbox.tcl

  Added '-selectmode' flag and 2 possible select-modes:
  single and 
  multiple

  4) widget.tcl

  Select element 4 (was 3) from the config-options to get
  value from 
  optiondb

  5) progressbar.tcl

  Added new type 'nonincremental_infinite' and modified
  movement of 
  progressbar when in 'infinite' or
  'nonincremental_infinite' mode. The
  'nonincremental_infinite' can be used when a certain
  process 
  monitored by a ProgressBar returns a total count and
  not an 
  increment count.

  6) panedw.tcl

  Added '-weights' flag with possible value 'extra' or
  'available'. 
  Since BWidget-1.3.1, the meaning of the '-weight' flag
  for the 
  'PanedWindow::add' command was changed. This made it
  difficult to 
  create a layout where the panes occupy a certain amount
  of the 
  screen. When using the '-weights extra' flag when
  creating a 
  PanedWindow widget, the >=1.3.1 behavior is used: the
  weights
  for the different panes are only used for extra space.
  When using 
  the '-weights available' flag, the weights for the
  different panes are 
  used to set the size of each panes relative to the
  total available 
  space.

  Impact of changes to existing code: 
   
  None, behaviour is exactly the same when not specifying
  one of the 
  new flags or arguments (these have default values
  corresponding to 
  the old behavior), except for movement of ProgressBar
  in 
  one of the 'infinite' modes.


tkt_uuid: 3183064fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pt (parsetools)
priority: 5 Medium
foundin: None
resolution: Fixed
title: package provide statement not correct.
comment:
  When generating a parser for snit or TclOO the final substitution of the parser package name is not correctly substituted into the package provide statement on the second to last line of the output.


tkt_uuid: 582828ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: exif
priority: 5 Medium
foundin: None
resolution: Accepted
title: Patches exif.tcl for Digital IXUS
comment:
  I've been trying to use the tcllib Exif parser to process
  pictures taken with my Canon Digital IXUS camera.
  It turns out that the IXUS's image files contain a
  »makerNote« field which doesn't have various fields
  used by other Canon cameras. The attached patch
  upgrades the »makerNote« procedure to do some
  more checks for non-existing fields and such.


tkt_uuid: 1063774fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: textutil
priority: 5 Medium
foundin: None
resolution: Accepted
title: [splitn string ?len=1?] split string in chunks of length len
comment:
  Dear tcllib maintainers, 
   
  This is a patch against tcllib, adding a new procedure splitn to 
  split.tcl and in addition having relevant tests in split.test. 
   
  [splitn string ?len=1?] will split string into chunks of length $len.  
  These are returned in a list.  If the string length is not an entire 
  multiple of $len, the last chunk will be short.  With an empty 
  string the empty list is returned.  And a nonpositive len will result 
  in an error. 
   
  The implementation used for splitn is almost identical to code 
  submitted by Bryan Oakley in a ``contest'' I did on c.l.t ... as this 
  was the first submitted code that used more than one algorithm 
  depending on the string length, I asked B.O. if I could use it.  
  Unfortunately I got no reply sofar.  But my spare time is running 
  short, so I will submit this patch now.  Once I get B.O.'s reply I 
  will forward it to the tcllib project. 
   
  Except as stated above the code is in the public domain. 
   
  Best regards, Robert S. 


tkt_uuid: 1154619fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Accepted
title: segfault in tkchat
comment:
  On Solaris 9, with Tcl/Tk 8.4.9,
  and tile 0.4, the tkchat.tcl
  program Revision 1.263
  segfaults at startup at line 4416

    catch {destroy $w}

  Upgrading to tile 0.5 corrects
  the problem.

  I recommend updating tkchat
  to [package require tile 0.5]


tkt_uuid: 548224ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: hpupdate status incorrectly displays
comment:
  The idea in this demo is that one will, on a
  regular basis, update a series of files and then upload
  them via ftp to an http server.

  It depends on a proc called Touch to update a file's
  update date , which then it uses to determine which
  files were changed since that date.

  On my SPARC Solaris 8, using Tcl/Tk 8.4, the Touch
  proc does NOT update the file.  This results in the
  demo program not functioning properly.

  The strange thing is that I don't see a reason for it
  to fail.  And in fact, no errors occur - but the file's
  date never changes.

  I will continue searching for a solution.


tkt_uuid: 1906274fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pop3
priority: 7 High
foundin: None
resolution: Not Applicable Here
title: pop3 module doesn't support pop3s
comment:
  The pop3 module doesn't support pop over ssl (pop3s).
  This patch adds support for a "-tls" option (must be boolean). The tls package should be present or it throws an error (I think this is the correct behaviour).
  Being there, also corrects a mispelled error message ("Too" instead of "To")


tkt_uuid: 647974ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 7 High
foundin: None
resolution: Fixed
title: find has problems recursing a metakit fs
comment:
  The command 'fileutil::find' has problems when recursing 
  a directory structure coming from a metakit filesystem 
  (fr example starkit). It reports the first file per directory 
  (and the directory), but nothing else.

  I believe the reason for this is that the metakit FS 
  returns bogus i-node information to [file stat]. And 'find' 
  uses 'file stat' to get i-node information to stop the 
  recursion for already visited files and directories. This 
  part of its handling of symbolic links, to break circular 
  link chain.

  A bug will be entered a tclvfs too, refering to this report.


tkt_uuid: 2881739fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: interpolate
priority: 5 Medium
foundin: None
resolution: Fixed
title: Cubic spline interpolation is wrong
comment:
  Hi,

  I have discovered that the cubic splines interpolation in math::interpolate returns wrong results.

  Check this little example of a cuadratic function (from the tests):

      set xcoord {1 2 3 4 5}
      set ycoord {1 4 9 16 25}
      set coeffs [::math::interpolate::prepare-cubic-splines $xcoord $ycoord]

  I see a strange behaviour when evaluating the function close to one of the interpolated points:
  ::math::interpolate::interp-cubic-splines $coeffs 2.0 -> Result: 4.0
  ::math::interpolate::interp-cubic-splines $coeffs 1.96 -> Result:3.847744 (Seems ok)
  ::math::interpolate::interp-cubic-splines $coeffs 2.04 -> Result:4.19061942857 (Seems slightly inaccurate...)

  ::math::interpolate::interp-cubic-splines $coeffs 2.96 -> Result:9.58423771429 (Fully wrong! It is even much higher than 3^2)
  ::math::interpolate::interp-cubic-splines $coeffs 3.0  -> Result: 9.0
  ::math::interpolate::interp-cubic-splines $coeffs 3.04 -> Result:9.26423771429

  From this results it also looks like there is a discontinuity at x=3.0, which can not be.
  ::math::interpolate::interp-cubic-splines $coeffs 2.9999 -> Result: 9.85645715143
  ::math::interpolate::interp-cubic-splines $coeffs 3.0001 -> Result: 9.00065715143

  I suggest that somebody should check the algorithm implementation.

  As a comparison and additional help, here are the results I get when I use a cubic spline interpolation algorithm coded in Fortran (also assuming zero second derivative at the extremes of the interpolated interval):
       1.9600000000000    3.8477440000000
       2.0000000000000    4.0000000000000
       2.0400000000000    4.1563337142857
  ...
       3.9600000000000    15.676333714286
       4.0000000000000    16.000000000000
       4.0400000000000    16.327744000000

  Best regards,
  JM


tkt_uuid: 3581373fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: base64
priority: 2
foundin: None
resolution: Fixed
title: "::base64::encode -maxlen 0" not documented
comment:
  Documentation of tcllib command "::base64::encode"

  It should be explicitly documented, that a value of "0" of the parameter "-maxlen" would disable the insertion of wrap characters.


tkt_uuid: 3288977fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Accepted
title: client hangs on bad multi-line server responses
comment:
  If the server doesn't speak strict RFC-959 when it comes to multi-line responses, it can cause the client to hang.

  For example, this was causing Tcllib ftp code to have an infinite loop  and eat 100% cpu.

      RETR blah
      150 Opening BINARY mode data connection for blah (180 bytes).
      226 Transfer complete.
      QUIT
      221-You have transferred 180 bytes in 1 files.

      ^^^ notice no "221 Goodbye."

  Most likely the network I was using was dropping the last couple of packets after the client said QUIT, that included the "221 Goodbye" response that the code was waiting for.

  This is the same issue described in the latter half of 2813069. I couldn't upload files to it, so I created a new bug and have attached a patch.


tkt_uuid: 1240910fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
resolution: None
title: Error in math::interpolate::neville
comment:
  Dear

  I have found out a situation where this function
  generates an error.

  The arguments that I let it pass through this function is :

  set arg1 "45 45 63 81 99 135 135 135 135 135 135 297
  324 351 369 396 423 450 477 504 531 558 585 603 630 657
  684 711 738 765 792 819 846 864 891 918 945 972 990
  1017 1044"

  set arg2 "2 6 10 14 18 22 26 30 34 38 42 46 50 54 58 62
  66 70 74 78 82 86 90 94 98 102 106 110 114 118 122 126
  130 134 138 142 146 150 154 158 162"

  set arg3 268

  In calling:
  math::interpolate::neville $arg1 $arg2 $arg3

  it generates the error:
  *********************************************************
  divide by zero
  divide by zero
  while executing
  "expr { $w / ( $ho - $hp ) }"
  (procedure "math::interpolate::neville" line 42)
  invoked from within
  "math::interpolate::neville [lindex $ipt 0] [lindex
  $ipt 1] $width"
  (procedure "adjustFont" line 3)
  invoked from within
  "adjustFont $font $width $ipt"
  (procedure "configureBinding" line 2)
  invoked from within
  "configureBinding title {{45 45 63 81 99 135 135 135
  135 135 135 297 324 351 369 396 423 450 477 504 531 558
  585 603 630 657 684 711 738 765 792 819 84..."
  (command bound to event) error :
  ********************************************************

  Has anyone an idea

  Best regards
  SaigonKid


tkt_uuid: 1725324fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: uri
priority: 5 Medium
foundin: None
resolution: None
title: uri::split does not parse hosts with no dots (.) in them
comment:
  uri::split parses hosts with no dots (.) in them incorrectly:
  uri::split "http://3531454999:80/XXX/YYY"  returns an array with a "host" entry set to ""

  uri::split also fails with the following URIs:
  http://0xc9.0x02.0xdf.0x11:80/XXX/YYY
  http://0x5061bf3f/XXX/YYY


tkt_uuid: 1323295fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: sasl
priority: 9 Immediate
foundin: None
resolution: None
title: sasl test failure for Tcl 8.5
comment:
  Create one then move this bug
  report to it:

  The following test fails against
  the curren Tcl HEAD on 32-bit
  platforms:

  ==== SASL-NTLM-1.1 NTLM client response FAILED
  ==== Contents of test case:

      list [catch {
          set ctx [SASL::new -mechanism NTLM -callback
  NTLMCallback]
          SASL::step $ctx ""
          SASL::step $ctx [base64::decode $Chk(2)]
          set response [SASL::response $ctx]
          SASL::cleanup $ctx
          base64::encode -maxlen 0 $response
      } res] $res

  ---- Result was:
  0
  TlRMTVNTUAADAAAAGAAYAGoAAAAYABgAggAAAAwADABAAAAACAAIAEwAAAAWABYAVAAAAJoAAAABAgAAAAAAAABEAE8ATQBBAEkATgB1AHMAZQByAFcATwBSAEsAUwBUAEEAVABJAE8ATsM3zVy9RPyXgqZnr21CfG3mfCDC0+d8VoLTftHx9ZaM2NlnEeJBCjvPm4ryx3aR4A==
  ---- Result should have been (exact matching):
  0
  TlRMTVNTUAADAAAAGAAYAGoAAAAYABgAggAAAAwADABAAAAACAAIAEwAAAAWABYAVAAAAJoAAAABAgAAAAAAAEQATwBNAEEASQBOAHUAcwBlAHIAVwBPAFIASwBTAFQAQQBUAEkATwBOAMM3zVy9RPyXgqZnr21CfG3mfCDC0+d8ViWpjBwx6BhHRmspst9GgPOZWPuMITqcxg==
  ==== SASL-NTLM-1.1 FAILED

  It's possible the actual bug is really in Tcl, but
  assistance of the sasl maintainers will be
  helpful to determine that.


tkt_uuid: 1165525fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: Listbox bug, a non-stop loop cause the shaking of the widge
comment:
  Following is a test code, run it and your will see a
  ScrolledWindow shaking. Before you run it, please make
  sure that "CP: 555  * AAA-I am shaking wildly 10mm dia:
   59.5 mm" is in a single line. The length of the list
  item name really matters.

  ######### test code starts ######################
  set bwidget_path *YOUR BWIDGET PATH HERE*
  lappend auto_path $bwidget_path
  package require BWidget
                                                        
                           
  toplevel  .shaking
                                                        
                           
  set f [frame .shaking.butF]
                                                        
                           
  set sw [ScrolledWindow $f.sw -auto both\
              -relief sunken -borderwidth 2]
                                                        
                           
  set marksList [ListBox $f.lb -relief flat -borderwidth 0 \
                  -padx 0 -height 8 -width 40 -bg white]
                                                        
                           
  $sw setwidget $marksList
                                                        
                           
  grid $sw -row 0 -column 0 -columnspan 6 -pady 0 -padx 2m
                                                        
                           
  $marksList insert end 1 -text "1"
  $marksList insert end 2 -text "2"
  $marksList insert end 3 -text "3"
  $marksList insert end 4 -text "CP: 555  * AAA-I am
  shaking wildly 10mm dia:  59.5 mm"
  # make sure that "CP: 555  * AAA-I am shaking wildly
  10mm dia:  59.5 mm" is a single line
  $marksList insert end 5 -text "5"
  $marksList insert end 6 -text "6"
  $marksList insert end 7 -text "7"
  $marksList insert end 8 -text "8"
                                                        
                           
  pack $f       
  #### test code ends #################################

  #### test environment ################################
  If you run it by wish8.3, no problme at all, 
  if you run it by wish8.4, you got  a shaking widget.

  My testing environment:
        1. Redhat Linux  2.4.21-9.ELsmp
        2. BWidget-1.7.0, tcl 8.4, and tk 8.4
        3. Default font

  #### Code analysis ##################################
  Bwidget induces an endless loop through a "bind" command.
  (In Bwidget-1.7.0),
  In line 105 of listbox.tcl:
    bind ListBox <Configure> [list ListBox::_resize  %W]

  In proc ListBox::_resize, line 1139 of listbox.tcl:
    it call _update_scrollregion :
   } else {
          if {[Widget::cget $path -selectfill]} {
              _update_select_fill $path
          }

          _update_scrollregion $path
      }

  in proc ListBox::_update_scrollregion, line 918 of
  listbox.tcl
    it call $path.c configure -scrollregion [list 0 0 $w $h]

  This triggered bind ListBox <Configure> event and call
  _resize again, forming a loop.

  If you put in "puts " command in _resize and
  _update_scrollregion
  you will see _resize and _update_scrollregion called
  alternatively
   Reason:
  Bwidget induces a endless loop by "bind" command.
  (In Bwidget-1.7.0),
  In line 105:
    bind ListBox <Configure> [list ListBox::_resize  %W]

  In proc ListBox::_resize, line 1139 of listbox.tcl:
    it call _update_scrollregion 

  in proc ListBox::_update_scrollregion, line 918 of
  listbox.tcl
    it call $path.c configure -scrollregion [list 0 0 $w $h]

  This triggered bind ListBox <Configure> event and call
  _resize again, forming a loop.


tkt_uuid: 767522ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: tree
priority: 8
foundin: None
title: add tree command list processing
comment:
  NOTE: This builds on the use of the "-key ?Pattern?" 
  enhancement request that I made earlier.


  I think it would be very useful to allow ::struct::tree 
  commands to hadle and return list inputs based on either 
  a ::struct::tree command or another tcl 
  command/variable that a user may wish to use.

  EXAMPLE GOAL: Extract a set of keys from a node, 
  extract all of the key-names/values to an array

  array set myArray [myTree getall [myTree get %n -key 
  paramValue*]]

  The point here is 3 fold:
  1) extract a group of keys by a pattern match
  2) get key values based on a list of keys
  3) getall keys/values based on a list of extracted node 
  keys and put into an array.


  As you can see, if the above example was implemented, 
  there would be significantly less coding required to 
  extract simple or complex ::stree::tree keys or values 
  (or both) as compared to several processes/variables to 
  track the same things.

  I realize that a user could simple convert the entire 
  structure into an array, but that is not the goal, 
  the ::struct::tree has the potential to be more 
  functional and useful if it had the abilities to truely 
  loop/break and had filtering capabilities.

  Questions?

  Dave Bigelow


tkt_uuid: 1969847fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: yaml
priority: 5 Medium
foundin: None
resolution: Fixed
title: Testsuite failures
comment:
  Attached a quick run of the testsuite.

  It seems that a 'switch' command in yaml is not protected against the occurrence of '-' in its input, leading to misinterpretation as option.

  I.e. the code contains

      switch $ch

  and it should better be

     switch -- $ch


tkt_uuid: 638236ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: BWidget: Entry "-state disabled" doesn't gray
comment:
  There is a difference between TK's entry and BWidget's
  Entry
  concerning the -state disabled option.

  % package require BWidget
  1.4.1
  % pack [label .l1 -text "Tk entry"]
  % pack [entry .e1]
  % pack [label .l2 -text "BWidget Entry"]
  % pack [Entry .e2]

  # Make both entries yellow ==> okay
  % .e1 configure -bg yellow
  % .e2 configure -bg yellow

  # Disable both entries ==> !!! .e1 becomes gray, .e2
  stays yellow
  % .e1 configure -state disabled
  % .e2 configure -state disabled

  # Disable both entries ==> okay, yellow
  % .e1 configure -state normal
  % .e2 configure -state normal 

  # Get -disabledbackground option==> BWidget fails
  %  .e1 cget -disabledbackground 
  SystemButtonFace
  %  .e2 cget -disabledbackground
  unknown option "-disabledbackground"
  %  .e2 cget -disabledforeground
  SystemDisabledText


tkt_uuid: 687923ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: stooop
priority: 6
foundin: None
resolution: Fixed
title: tcllib.sourceforge.net/doc/stooop.html points to itself
comment:
  At the end of the document above, a link points to the
  full HTML documentation for stooop.
  Unfortunately, it points to the current document, which
  is the HTML version of the manual page, instead of the
  large HTML document shipped with stooop.
  As the author, is there anything I can do to help
  resolve this issue?

  Many thanks in advance,  Jean-Luc (jfontain@free.fr)


tkt_uuid: 862491ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 7 High
foundin: None
resolution: Fixed
title: fileutil::find ... no catch around 'cd'
comment:
  Cd sequences are not checked to see if the succeed. 
  I.e. failed due to permissions. 
  If failure occurs the code terminates. I would rather 
  it skip the problem children in a find. This problem has 
  been reproduced in both WIN32 & HP-UX


tkt_uuid: 891024ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: color handling problems for unrecognised users
comment:
   can't read "Options(Color,<[A]bomination>,Web)": no
  such element in array
      while executing
  "string compare $Options(Color,$nick,Web) $clr"
      (procedure "checkNick" line 23)
      invoked from within
  "checkNick $nick $clr"
      (procedure "addAction" line 3)
      invoked from within
  "addAction $clr "<$truenick>" $msg $mark"
      (procedure "addMessage" line 35)
      invoked from within
  "addMessage "" $nick $msg HISTORY"
      (procedure "::tkchat::LoadHistoryLines" line 15)
      invoked from within
  "::tkchat::LoadHistoryLines"
      ("after" script)


tkt_uuid: 2123397fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ip
priority: 5 Medium
foundin: None
resolution: Accepted
title: bad [string first] in [::ip::version]
comment:
  In the proc ::ip::version, I see:

      if {[string first $addr :] < 0 && [IPv4? $addr]} {
          set version 4

  where the arguments to [string first]
  appear to be out of order.


tkt_uuid: 2829049fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: tklib
priority: 5 Medium
foundin: None
resolution: None
title: "failure" or missing feature in "getstring"
comment:
  Hello,

  I would really like to see the attached changes in the package "getstring".

  Just because the current implementation has one bug and one annoyance:
  1. "wm withdraw" is called after the "UI" is already built, instead of right after creating the toplevel
  2. a given variable to contain the result of "getstring" is simply overwritten, instead of using its contents inside the entry and changing it at the end

  Best regards,

  Martin


tkt_uuid: 3357765fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: Accepted
title: Many commands assume a socket is established, may not be so.
comment:
  When using PASV the client may not connect to the server until after the command that needs the data connection is issued.  Currently Fs commands are just given the sock handle of "" when this happens.

  The FTP RFC indicates that it is acceptable for the client not to have connected to the port described by the result of the PASV command until after a command that needs it is issued.


tkt_uuid: 1603273fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tar
priority: 5 Medium
foundin: None
resolution: Fixed
title: Error in handling filenames with spaces in untar
comment:
  When file names contains spaces untar fails because of comparing a brace delimited string (list representation) with a "normal" string.

  Patch provided.

  Another problem I fell in was the fact that the parameter calles "files" is interpreted as list of files.
  Whereas a single file maybe entered in this situation it fails when specifying a file name with spaces.
  For clarity reasons I would prefer the expression "filelist" in these procedures.

  Best regard,
    Gerhard


tkt_uuid: 1081971fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: None
title: &ob; and &cb; don't seem to exist?
comment:
  The htmlparse::PrepareHtml procedure has this line:

      return [string map [list "\{" "&ob;" "\}" "&cb;"
  "\\" "&bsl;"] $html]

  I don't think &ob; and &cb; are really HTML for {}.  At
  least they don't work in my browser.  Best just to use
  the numeric versions, &#123; and &#125;.


tkt_uuid: 1272913fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: profiler
priority: 5 Medium
foundin: None
resolution: Fixed
title: profiler - failed test with Tcl 8.5
comment:
  ==== profiler-7.2 sortFunctions FAILED
  ==== Contents of test case:

      set c [interp create]
      interp alias $c parentSet {} set
      set result [$c eval {
          set auto_path [parentSet auto_path]
          package require profiler
          profiler::init
          proc ::foo {} {
              set foobar 0
          }
          proc ::bar {} {
              set foobar 1
          }
          foo; foo; bar;
          profiler::sortFunctions calls
      }]
      interp delete $c
      set result

  ---- Result was:
  {::tcl::clock::scan 0} {::tcl::clock::format 0}
  {::tcl::clock::add 0} {::bar 1} {::foo 2}
  ---- Result should have been (exact matching):
  {::bar 1} {::foo 2}
  ==== profiler-7.2 FAILED


tkt_uuid: 740474ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: DropSite::register documenation error
comment:
  The current DropSite HTML page says:

  --- quotation start ---
  DropSite::register  path  ?option value...?
      This command is used to declare path as a drop
  site. Options are:

  -dropcmd
      This command is called when user release the drag
  icon over a valid drop target widget. It takes the same
  arguments as -dragovercmd command. Its return values is
  passed as a result to the -dragendcmd command of the
  drag source widget. 
  --- quotation end ---

  The reference to "-dragovercmd" in the -dropcmd is
  strange, because there isn't either a -dragovercmd
  implemented nor documentation for it.

  Probably, this is a typo and that "-dragovercmd" should
  read as "-dropovercmd". But even this isn't fully
  corret. It seems, the -dropcmd exptects the same args
  as -dropovercmd, with the expection of the "event" arg
  (which indeed would be senseless for the -dropcmd). In
  other words (and as a propose for a minimum text).

  Arguments passed to the command are:

      * pathname of the drop target (the widget itself),
      * pathname of the drag source,
      * root x-coordinate of the pointer,
      * root y-coordinate of the pointer,
      * operation,
      * type of the dragged data,
      * dragged data. 


tkt_uuid: 3606620fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
resolution: Fixed
title: test strangeness - math-12.1 !error reading
comment:
  Running test on math module I get following error:

  ++++ math-11.1 PASSED
  ---- math-12.1 start
  error reading package index file ./lib/pkgIndex.tcl: permission denied
  error reading package index file ./pkgIndex.tcl: permission denied
  error reading package index file $p(:573:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:572:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:571:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:570:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:569:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:568:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:567:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:566:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:565:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:564:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:563:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:562:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:561:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:560:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:559:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:558:)/pkgIndex.tcl: not allowed to invoke subcommand exists of file
  error reading package index file $p(:556:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:555:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:554:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:553:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:552:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:550:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:549:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:548:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:547:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:546:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:545:)/pkgIndex.tcl: no such file or directory


tkt_uuid: 1708110fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: png
priority: 7 High
foundin: None
resolution: Fixed
title: [png::removeComments] destroy a png file.
comment:
  Hi.
  I noticed the bug that png::removeComments destroy a file.
  Version of png is CVS HEAD. It seems to me that the 
  cause is that output encoding isn't binary. 

  Please see attached patch.


tkt_uuid: 467835ffffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Invalid
title: tkchat retrieve menu item
comment:
  This patch adds a Retrieve menu item to the debug menu
  which delegates to tkchat::Retrieve and obtains the
  current HEAD revision from the SourceForge CVS tree.
  The user may then re-source from the new version.

  Taken from tkcon and modified slightly for tkchat.


tkt_uuid: 1376903fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: tkchat - aqua mods - set app name + unhide on alert
comment:
  A could of mods to tkchat to make it "nicer" for AquaTk users

  The first sets the application name (i.e. the left most menu name in the 
  menu bar) to TkChat.

  The second "unhides" the chat window on alert. Previously only minimised 
  (i.e. iconified) windows were de-iconified.

  Both changes use Ffidl - thanks to Daniel Steffen for the pointers on how 
  to use it.

  A starkit containing the changes + Ffidl for OSX is at http://mini.net/
  sdarchive/tkchat.kit


tkt_uuid: 3471182fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Documentation
priority: 5 Medium
foundin: None
resolution: Fixed
title: funny mistake in struct_tree manual
comment:
  A funny, yet harmless, mistake appears in the struct_tree manual page, where explanation for  subcommand 'exists' reads "Remove true if the specified node exists in the tree" instead "Returns true...."


tkt_uuid: 1416730fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
resolution: Fixed
title: csv: test suite bugs
comment:
  with -debug 1:

  * csv 0.6
  WARNING: cleanupTests deleting
  /local/src/tcllib/eval-out1.csv...
  WARNING: cleanupTests deleting
  /local/src/tcllib/eval-out2.csv...
  WARNING: cleanupTests deleting
  /local/src/tcllib/eval-out3.csv...


tkt_uuid: 3504018fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Duplicate
title: callback command gets called with varying arguments
comment:
  Another problem related to badly formed html, here I think the problem is an open tag inside an attribute value, combined with a xhtml-style null end tag.

  %  htmlparse::parse {<img src="x<y" /> <i></i>}
  ==> hmstart {} {} {}
  ==> img {} src=\"x
  ==> y\" {} {} {}
  ==> img / {} { <i} {}
  ==> i / {} {}
  ==> hmstart / {} {}

  The html is malformed, so parsing is a guessing game, but the parser should try to be as resilient as possible.  What happens in this case is that the callback command, documented as always being called with 4 arguments, is called with 3 and 5 arguments.  This causes an error if your callback command has formal arguments instead of "args".


tkt_uuid: 839066ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: bwidget - Binding for whole Tree Area
comment:
  I'm using BWidgets for creating a user interface for a
  test system.
  Among other things this user interfaces shows and
  handles data presented as a tree (which I have realized
  by BWidgets). By this I have to be able to show a
  context menu when the mouse is clicked upon the
  BWidgets tree. This means I need a binding not only for
  the text or the image of a node but for the entire tree
  area.

  I made a litte enhancement in the module tree.tcl which
  offers me the command
      $tree bindArea $event $script

  I added the following lines:
  15d14
  < #     - Tree::bindArea
  443,448d441
  < #
  ----------------------------------------------------------------------------
  < #  Command Tree::bindArea (added by MHO - Sigos GmbH)
  < #
  ----------------------------------------------------------------------------
  < proc Tree::bindArea { path event script } {
  <   bind $path.c $event $script
  < }


  I think this enhancement is useful for all users of
  BWidgets and therefore I would be encouraged, if you
  could take this enhancement over into the next version
  of BWidgets.

  Best regards
  Monika Holzammer

  E-Mail: Monika.Holzammer@sigos.de


tkt_uuid: 1507713fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: Documentation error: -opencmd option for Tree widget
comment:
  According to the documentation of the -opencmd option
  for he Tree widget the path to the tree widget and the
  node that was opened are both appended to the command.

  However, in the "current" implementation (1.7 as
  delivered with ActiveTcl 8.4.12) only the node is appended.

  It is probably best to adapt the documentation, not the
  code:
  - The value for -opencmd is a "command prefix" 
  - The node that was opened is appended
  - To get the tree widget use something like:
   
    -opencmd "mycmd .tree"


tkt_uuid: 918099ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: smtp
priority: 7 High
foundin: None
resolution: Accepted
title: SMTP AUTH support (RFC 2554)
comment:
  This patch adds support for the SMTP AUTH extension
  (RFC 2554). Currently this only deals with the LOGIN
  authentication mechanism but additional support for
  CRAM-MD5 and DIGEST-MD5 is planned.


tkt_uuid: 490151ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pop3
priority: 5 Medium
foundin: None
resolution: Fixed
title: bugs in ::pop3::retrieve (RetrSlow)
comment:
  In ::pop3::retrieve with retr-mode "slow" or "list" with fallback to slow, 

  following call is missing just before calling set msgBuffer [RetrSlow $chan]

  ::pop3::send $chan "RETR $index"

  Consequences: The retrieve call will hang for ever. The call waits for data from
  the E-Mail server but the E-Mail server never got a Retrieve command to deliver data.

  The last code part in RetrFast looks very similar to functionality of RetrSlow

  P.s. Good work. Like the new structure in the package.

  In the meantime there do exist MS-Exchange Server that do understand 
  crlf. (-msex ). 
  Better rename the -msex option to tran-mode. Is more neutral.


tkt_uuid: 556509ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: doctools
priority: 3 Low
foundin: None
resolution: Fixed
title: mpexpand nroff header comments
comment:
  'mpexpand nroff' inserts some comments in the header
  that probably do not belong there. It assigns copyright
  to the person who ran the converter (the original
  author may disagree with this :-), and inserts an
  unexpanded CVS revision tag (CVS: $Id$), which is
  inappropriate for an output file.

  It also adds the mysterious admonition "do not modify
  the .SH NAME line immediately below!" -- I don't think
  there's any reason to keep this particular coke bottle
  around.

  The attached patch removes the above stuff.


tkt_uuid: 2807147fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: buttonbox -homogeneous widths
comment:
  In buttonbox.tcl, the code which is used to ensure homogeneous button widths is bad. It can't accomodate buttons of which the width changes after they are initially drawn. This can be solved by using grid's -uniform option instead of -minsize, as in the attached patch. The code is much cleaner too.


tkt_uuid: 3004301fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Bad images.tgz files in CVS
comment:
  The images.tgz files in the CVS seem to be corrupted. Maybe they were not marked as binary files to CVS ?

  % tar tvfz ./themes/keramik_alt/images.tgz
  drwxr-xr-x oberdo/catia      0 2009-08-04 16:37:48 images/
  tar: Skipping to next header

  gzip: stdin: invalid compressed data--crc error

  gzip: stdin: invalid compressed data--length error
  tar: Child returned status 1
  tar: Error exit delayed from previous errors

  % gzip -t ./themes/keramik_alt/images.tgz
  gzip: ./themes/keramik_alt/images.tgz: invalid compressed data--crc error
  gzip: ./themes/keramik_alt/images.tgz: invalid compressed data--length error


tkt_uuid: 481023ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
title: read2matrix new functionality requested
comment:
  If the matrix being filled in has not had the number of
  columns set, I would like to request that this value be
  set based on the first record read - perhaps only if a
  special flag is present?


tkt_uuid: 1187273fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Accepted
title: Restore window to same state after minimising to icon
comment:
  Currently, if is chat window is zoomed and is 
  minimised to the system tray, when it is deiconified 
  it reappears in normal state instead of zoomed.
  This patch allows it to be restored to zoomed state.


tkt_uuid: 554475ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 6
foundin: None
resolution: Fixed
title: tcllib 'build' warning msgs
comment:
  the latest cvs head of tcllib, obtained from
  activestate's snapshot ftp site, generates the
  following warning during the tmml gen step:

  Gen (tmml):
  /vol/tclsrcsol/tcl84/tcllib/modules/html/html.man
  Warning: Cannot start context section dd li

  This occurs for quite a number of the man pages,
  including stoop, sha1, report, log, expander, smtpd,
  and more


tkt_uuid: 514494ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: uri
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Information about uri schemes
comment:
  The following place lists existing uri schemes
  and specifications.

  http://www.w3.org/Addressing/schemes


tkt_uuid: 415001ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: xpm2image/bwidget
comment:
  Hi,
  it seems that not all graphic programs produce the same
  XPM output.

  Here's the difference:

  a sample line by "pixmap"
  "#c #feb66c",

  a sample line by "Gimp"
  "# c #feb66c",

  The problem is that there is no tab between "#" and "c"
  with the line of Gimp and xpm2image fails

  Greets

  Simon


tkt_uuid: 492156ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: textutil
priority: 5 Medium
foundin: None
resolution: Accepted
title: New expand method 'textcmd'
comment:
  Enclosed a patch which reintroduces 
  the 'raw_text_hook' known to the expand application in 
  the form of 'textcmd', a macro which is run for all 
  plain text encountered in a template.


tkt_uuid: 664392ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: uri
priority: 6
foundin: None
resolution: Not Applicable Here
title: Test failures in uri module for Win32
comment:
  The uri package is failing the recent uri::canonicalize
  tests under Win32 systems.

  The problem is some of the tests are using the file
  scheme with a hostname part:
    file://localhost/a/b/c

  When using Windows a split and join operation results in
    file://localhost:/a/b/c
  due to code in the uri::join for the file scheme.

  Common usage under windows is to permit the drive
  letter to be used as the host part and we are
  supporting this - however, we must also support the RFC
  specification too.

  We can expect to use  file://c:/autoexec.bat (although
  this should strictly be file:///c:/autoexec.bat - thus
  using a null host part). Also we must permit
  file://localhost/c:/ as this is what the RFC specifies.

  Other problems: the path section must be in the URL/URI
  style.
  % uri::join scheme file path {c:\windows}
  file://c:\windows

  This _MUST_ be file://c:/windows. Backslashes are
  illegal in URLs. This goes for Mac's and VMS too. I
  believe that [file normalize] will fix the host's path
  into very nearly correct RFC style. Probably just need
  some quoting of illegal characters (like space). [file
  native] should probably be invoked in the uri::split
  function too.


tkt_uuid: 792796ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Let ::mime::parsepart accept a header only with multipart
comment:
  When calling ::mime::initialize with a header only and the 
  header includes a multipart description, ::mime::parsepart 
  will return an end-of-file error.
  This patch fixes that by counting the lines after the 
  header. If no lines are found, no error is thrown.

  This is useful when you want to parse a mail header only 
  with help of the mime package.

  Something to think of:
  This only works if the last newline character returned 
  from ::pop3::top is removed prior to calling ::mime::
  initialize. I thought of patching pop3 too, but thought 
  that it's correct that the last line returned also contains 
  a newline character.
  To help the user so he not needs to think of removing the 
  last newline character, maybe ::mime::parsepart should 
  count non-blank lines after the header, instead of just 
  counting lines.


tkt_uuid: 2814050fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: fix [notebook itemconfigure -helptext]
comment:
  This is a small fix for notebooks. When calling [itemconfigure -helptext] on a notebook tab, the helptext is currently not updated.
  The _set_help proc already contains code for checking whether the helptext has changed, but it is not called from itemconfigure.


tkt_uuid: 484117ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: html
priority: 5 Medium
foundin: None
resolution: Accepted
title: new html function
comment:
  I attached a new function for the html module. This
  function creates a bulleted list of links given a list
  of label, URL pairs. 

  Result: A <ul><li><a...><\li>.....<\ul> fragment


tkt_uuid: 1924065fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tiff
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: tiff - addEntry doesn't overwrite
comment:
  The documentation of tiff::addEntry states that it does overwrite the data of a tag should that tag exist. This doesn't seem to happen.

  See tests tiff-23.*, in tiff.test, marked as knownBug.

  They first use addEntry to add a tag for 'Artist', and then addEntry again to overwrite 'Artist' with new data.
  The new data is not taken, per the inspection with 'getEntry'.


tkt_uuid: 519189ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Combobox bugs (and patch)
comment:
  Hello,

  the combobox has some small bugs I included a patch
  for:

  1. the selection is not cleared when the widget loses
  the focus
      (resulting in weird colour display when explicitly
  setting colours 
       other than the default)
  2. the dropdown list does not honour the the colours
  requested for      the entry widget (always displayed
  in dark grey).

  I have included a diff as well as the complete new
  combobox source.

  Regards,
            Bastien


tkt_uuid: 1206499fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 5 Medium
foundin: None
resolution: Fixed
title: struct::list flatten throws error for valid list
comment:
  this script throws error:
  %set a [list \[a\] \[b\]]
  {[a]} {[b]}
  %  struct::list flatten $a
  invalid command name "a"

  this is the errorInfo:
  invalid command name "a"
      while executing
  "a"
      invoked from within
  "::lappend result [a]"
      ("eval" body line 1)
      invoked from within
  "eval [::list ::lappend result] $item"
      (procedure "::struct::list::Lflatten" line 26)
      invoked from within
  "::struct::list::Lflatten {{[a]} {[b]}}"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 [linsert $args 0 ::struct::list::$sub]"
      (procedure "struct::list" line 15)
      invoked from within
  "struct::list flatten $a"


tkt_uuid: 621331ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Allow delete of selected Tree nodes
comment:
  Hi,

  damon@unreality.com (Damon Courtney) reported a problem
  on CLT where deletion of selected nodes in a Tree
  widget failed. Attached is a new Tree::delete proc
  which fixes this problem.

  Jos.


tkt_uuid: 917798ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Invalid
title: No redraw during scrolling
comment:
  I'm on Mac OS 10.3.3 , TCL-TK 8.4.6 with BWdiget 1.70 and TKAqua

  package require BWidget
  proc test_scroll {} {
  toplevel .test
  ScrolledWindow .test.sc
  ScrollableFrame .test.sc.f
  .test.sc setwidget .test.sc.f
  set path [.test.sc.f getframe]

  for {set i 0} {$i < 20 } {incr i} {
  checkbutton $path.b$i -text "Probando probando" -variable 
  prueba
  checkbutton $path.c$i -text "HOLY HOLY" -variable prueba
  pack $path.b$i -side top
  pack $path.c$i -side top

  }
  pack .test.sc
  }

  With this script, when I scroll, the content into the frame is not 
  redraw. The content of the frame is not updated until I stop 
  scrolling.
  Do you know how can I fix that? 


tkt_uuid: 783878ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: FTP library responding WAY to slow on ftp connect timeout.
comment:
  I am currently programming a tcl script for an 
  eggdrop(www.egghelp.org) which shall tell me if a list of 
  ftp's are up and running or not. For making the coding a 
  lot more easy for me I am using the FTP library package 
  and I am running TCL 8.4.4 (did also try with 8.3.4). It is 
  a really great library and all seems to work ok, but a 
  rather large problem occurs when I am trying to connect 
  to a server which ends up with a timeout. It takes just 
  way to long time for the tcl library to give me the right 
  response: "-1".

  When I connect to this server in FlashFXP in Windows it 
  says;
  Connecting to 123.456.789.123
  Connection failed (Connection timed out)
   
  This is what I type & get in tcl cmd line;
  % ftp::Open 123.456.789.123 username password 
  -timeout 2 -port 12345 -mode passive
  -1
   
  As you can see, this works in theory, but it takes several 
  minutes before I get the "-1" response, even though I've 
  set the "timeout" setting.
   
  Those minutes causes my eggdrop to totally "crash" for 
  some minutes and usually disconnects from the IRC 
  server because of this... In short; I need it to tell me 
  MUCH faster if the ftp is responding or not...
   
  If this is not a bug in the tcl library, how can/shall I solve 
  my problem? If it is a bug, would it be possible for any of 
  you guys to give me a 
  fix? A fix is appreciated!
   
  Thanks!


tkt_uuid: 534334ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 8
foundin: None
resolution: Fixed
title: add tk-specific man page macro: tkoption
comment:
  standard tk widget man pages have a section 
  named "Widget Specific Options" that has a format that 
  is tedious to code with the existing mpexpand formats. 
  Options are typically described like this:

  -----------------------
  Command-Line Name: -value
  Database Name: value
  Database Class: Value


  Specifies the value for the foo widget.
  -----------------------

  To mark this up with the existing man page markup one 
  needs to create a definitions list for the list of 
  option names, which is tedious. I suppose there are 
  other ways, too. 

  I propose a special keyword just for this construct. 
  I've written one for the html renderer as a prototype. 
  It is used like this:

  ------------------------
  [tkoption -value value Value "Specifies the value for 
  the foo widget."]
  ------------------------

  It takes four arguments: the command line name, the 
  database name, the database class, and a description. 
  The description could be left off of the API, since 
  normal paragraphs would work, too. In my prototype 
  implementation, if the db name or class is null, those 
  parts don't appear in the output. This, for 
  megawidgets that may not have option database support.

  I've attached my hacked version of fmt.html with the 
  proposed macro. To make it work, one also needs to add 
  the macro to a foreach command in mpexpand where it 
  makes interp aliases for each of the macros. I don't 
  know if this is the best implementation, but it's a 
  starting point...


tkt_uuid: 955187ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Unknown state "<whatever>_sent"
comment:
  Most of the time it's Unknown state "type_sent" ... but 
  this time it's pwd_sent .... -shrug-

  --[ Error as follows. ]--

  Unknown state "pwd_sent"
      while executing
  "error "Unknown state \"$ftp(State)\"""
      ("default" arm line 2)
      invoked from within
  "switch -regexp -- $ftp(State) {
          list {
              fileevent $sock readable [list [namespace 
  current]::HandleList $s $sock]
              set ft..."
      (procedure "::ftp::InitDataConn" line 27)
      invoked from within
  "::ftp::InitDataConn 0 sock6 <cut> 56721"


tkt_uuid: 2935339fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::ftpd::config not idempotent
comment:
  Calling ::ftpd::config a subsequent time with a different option resets all previously set options. The problem is is that it uses cmdline::getoptions but supplies the application defaults for unspecified options instead of current values.

  Example:
   ::ftpd::config -authUsrCmd myAuthUsrCmd
   ::ftpd::config -logCmd myLogCmd 
  ==> the authUsrCmd has been reset


tkt_uuid: 1566389fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: tests fail in fileutil 1.9
comment:
  @@ Tcl 8.4.14
  @@ MatchTests *
  @@ SkipFiles l.*.test
  @@ MatchFiles *.test
  @@ Start 1159368646
  @@ Module fileutil
  @@ Testsuite modules/fileutil/fileutil.test
  - tcllib::testutils 1.1
  - cmdline 1.2.5
  * fileutil 1.9]

  ...

  ==== install-2.1 install a directory FAILED
  ==== Contents of test case:

      list [catch {
          fileutil::install [file join installSrc subdir]
  installDst
          set result [lsort [glob -tails -directory [file
  join installDst subdir] [file join . / *]]]
          file delete -force installDst
          set result
      } err] $err

  ---- Result was:
  0 {/subfile1 /subfile2 /subfile3}
  ---- Result should have been (exact matching):
  0 {subfile1 subfile2 subfile3}
  ==== install-2.1 FAILED

  ---- install-2.2 start

  ==== install-2.2 install a directory FAILED
  ==== Contents of test case:

      list [catch {
          fileutil::install [file join installSrc subdir]
  installDst
          set result [lsort [glob -directory [file join
  installDst subdir] [file join . / *]]]
          file delete -force installDst
          set result
      } err] $err

  ---- Result was:
  0 {installDst/subdir//subfile1
  installDst/subdir//subfile2 installDst/subdir//subfile3}
  ---- Result should have been (exact matching):
  0 {installDst/subdir/subfile1
  installDst/subdir/subfile2 installDst/subdir/subfile3}
  ==== install-2.2 FAILED


tkt_uuid: 1048995fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::fileutil::find filtercmd needs cwd
comment:
  ::fileutil::find should have been perfect for me to use in 
  traverse a directory with tens of thousands of files. The 
  problem is filtercmd only gets the rootname of the file 
  making it useless to do any processing. The alternative 
  of not using a filter and walking the resulting list is 
  unworkable due to the large number of files.

  I'd like to request either fully qualifying the filename or 
  passing in $cwd.


tkt_uuid: 1027730fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Fixed
title: Covering case: undetectable originator
comment:
  I bumped into this case while trying to find out why
  smtp cannot send mail from a Rivet script. 

  I was getting the following error:

  -------- cut here --------
  can't read "aprops(error)": no such element in array
      while executing
  "if {$aprops(error) != ""} {
              error "error in $who: $aprops(error)"
          }"
      (procedure "smtp::sendmessage" line 152)
      invoked from within
  "smtp::sendmessage $token -recipients $recipient
  -servers $email_server"
      (procedure "send_simple_message" line 8)
  -------- cut here --------

  I have found otu that while the too many senders
  (originators) case was covered:

  -------- cut here --------
  set addrs [::mime::parseaddress $originator]
  if {[llength $addrs] > 1} {
              error "too many mailboxes in $who: $originator"
          }
  -------- cut here --------

  the no sender (actually, undetectable sender) case was
  not covered.
  I am suggesting the following three lines be added to
  smtp.tcl to cover the no sender case and thus give a
  more comprehensive error message.

  -------- cut here --------
  # diff -u /usr/lib/tcllib1.6/mime/smtp.tcl~
  /usr/lib/tcllib1.6/mime/smtp.tcl---
  /usr/lib/tcllib1.6/mime/smtp.tcl~2004-05-27
  03:17:10.000000000 +0200+++
  /usr/lib/tcllib1.6/mime/smtp.tcl2004-09-13
  17:41:59.000000000 +0200@@ -252,6 +252,9 @@        
  if {[llength $addrs] > 1} {             error "too
  many mailboxes in $who: $originator"         }+     
    if {[llength $addrs] == 0} {+            error
  "could not detect sender address"+        }        
  array set aprops [lindex $addrs 0]         if
  {$aprops(error) != ""} {             error "error in
  $who: $aprops(error)"
  -------- cut here --------

  Optionally, the following note could be added to
  smtp(3tcl):

  -------- cut here --------
  # diff -u smtp.3tcl~ smtp.3tcl
  --- smtp.3tcl~2004-09-14 09:03:28.000000000 +0200
  +++ smtp.3tcl2004-09-14 09:10:18.000000000 +0200
  @@ -314,6 +314,11 @@
   added to the outgoing message as necessary to ensure
  that a valid
   822-style message is sent.
   .sp
  +NOTE: it could be necessary to specify the originator
  address with
  +the -originator option, especially when
  ::smtp::sendmessage is used
  +in server-side scripts such as e.g. Rivet scripts, in
  which case it
  +could happen that the originator address cannot be
  detected.
  +.sp
   The command returns a list indicating which recipients
  were
   unacceptable to the SMTP server. Each element of the
  list is another
   list, containing the address, an SMTP error code, and
  a textual
  -------- cut here --------

  Thank you.


tkt_uuid: 856280ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
title: Add deletion callbacks to logger
comment:
  At the moment there is no (public) way to do a clean
  shutdown of the logger system. If one uses a custom
  logproc that opens files etc. it is not possible to
  detect the correct time a logfile should be closed etc. 

  So a mechanism to associate a destructor with the
  logging service would be very nice to cleanup things,
  without extra bookkeeping.

  Either a new subcommand of ${log} or as an option to
  logger::init, the procs should be called when a delete
  operation is performed, walking the tree from the
  children to the root of the tree.

  Michael 


tkt_uuid: 528287ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Invalid
title: Explodes for 'From: <>'
comment:
  I have some code to replicate a pop3 box by downloading
  it
  and resending it to N other popboxen via SMTP.

  Care is taken to pass the message thru "as is",
  from headers to MIME body.

  Running it against a real-world pop that had 14Mb of
  email,
  it blew up on the RFC valid "bounce" syntax of 'From:
  <>'.

  ----

  -header {Date {Wed, 20 Feb 2002 20:34:04 -0400 (EDT)}} 
  \
  -header {From <>}  \
  -header {Subject {Home Based Employment - No Selling}} 
  \
  -header {Bcc {}}  \
  -header {Message-id <805913@635096>}  \
   '.
  error in From: expecting mailbox in local-part (found
  >)
      while executing
  "error "error in $who: $aprops(error)""
      (procedure "smtp::sendmessage" line 144)
      invoked from within
  "smtp::sendmessage $part -servers vpop1.superb.net  
  -recipients
  [redacted]@orwellian.org,[redacted]@orwellian.org
  -header {Return-path <>}  \
  -header {..."
      ("eval" body line 1)
      invoked from within
  "eval $Build_SMTP"
      (procedure "Main" line 57)
      invoked from within
  "Main
  "
      (file "./Multiplier.tcl" line 130)
  Exit 1


tkt_uuid: 723692ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: tree
priority: 8
foundin: None
title: ADD: ::struct::tree -copy -- myTree myTree2
comment:
  Currently there appears to be no way to copy 
  a ::struct::tree without walking the tree and setting 
  contents to a new tree structure.

  CURRENT METHOD:

  # note - "myTree" already exists in this example (which 
  does not account for keys and values - just node 
  transfer)

  # New Tree Structure
  ::struct::tree myTree2

  ::struct::tree walk root -command {
      if {"%n" != "root"} {
         myTree2 insert [myTree parent %n] end %n
      }
  }


  PROPOSED METHOD:
  ::struct::tree -copy -- myTree myTree2


  This command would greatly simplify and enhance the 
  ability to duplicate a tree and all of the attributes within it 
  and it's nodes as compared to the the current work 
  around.

  Any Questions?

  David Bigelow
  davidhbigelow@compuserve.com


tkt_uuid: 780704ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: Clear value of combobox
comment:
  When a BWidget ComboBox has an empty list of values,
  the value can no longer be cleared. This patch addes an
  'clearvalue' proc.

  Jos.


tkt_uuid: 756893ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtpd
priority: 5 Medium
foundin: None
resolution: Invalid
title: Error in rcpt
comment:
  When I use a "command" rcpt , I receive an eror:
  ----
  mail from:x
  501 Syntax error in parameters or arguments
  ----

  In server a message log is:

  ----
  debug     received: mail from: x
  debug     MAIL failed wrong # args: should be "array
  set arrayName list"
  ----

  I get tcllib1.4, tcl8.4.3 and tk8.4.3 today.

  When I use tcllib1.3 with same program I don't receive
  this error.

  For test only, I downgrade for "tcllib1.3", execute the
  same program, and the er

  In "telnet localhost 25"
  -----
  mail from:x
  250 OK
  -----

  In SERVER
  -----
  debug     received: mail from:x
  debug     MAIL FROM: x@fb.home
  -----

  Thank you.

  FB

  P.S.: I'm sorry, my english is bad!!!!


tkt_uuid: 3493711fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: amazon-s3
priority: 5 Medium
severity: Minor
foundin: None
resolution: Not Applicable Here
title: S3: Fix wasteful string conversion of large binary object
comment:
  In our app S3::Get is used to download large binary objects from AWS (many hundreds of MB).
  The current code stores the downloaded object in "x" then does: S3::debug "Body: $x"
  This causes "x" to be converted to a string, and creates a second huge string "Body: .....".
  The patch below passes the large object directly from the binary network channel to the result dict entry.

  A small test program that downloads a 5MB file uses 24MB before the patch vs 9MB with the patch.

  --- /System/Library/Tcl/tcllib1.12/amazon-s3/S3.tcl.orig2012-02-25 15:32:45.000000000 +1100
  +++ /System/Library/Tcl/tcllib1.12/amazon-s3/S3.tcl2012-02-25 15:33:25.000000000 +1100
  @@ -580,9 +580,7 @@
   if {[dict exists $thunk orig outchan]} {
       fcopy $s3 [dict get $thunk orig outchan]
   } else {
  -    set x [read $s3]
  -    dict set thunk outbody $x
  -    S3::debug "Body: $x"
  +    dict set thunk outbody [read $s3]
   }
   return [S3::nextdo all_done $thunk readable]
       } else {


tkt_uuid: 446799ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
title: add suspend/resume API to profiler
comment:
  In addition to ::profiler::reset functionality, the
  profiler module should also contain ::profiler:suspend
  and ::profiler::resume API.

  I am attaching the patch for its implementation code as
  well as for the docs.

  Hemang.


tkt_uuid: 1656200fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: struct man name inconsistencies
comment:
  It is confusing for some of the man pages, on Unix anyways, to be installed with a ''struct_'' prefix and the others not. It would be useful to at least install a linked version of the pages to all have the same prefix. If developers feel strongly about also having the man pages installed without the prefix, that is fine.

  Consistency of reference doc naming is important


tkt_uuid: 3574004fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: aes
priority: 5 Medium
foundin: None
resolution: Fixed
title: decrypt/encrypt fails for data beginning with '-'
comment:
  % set data_block -[string repeat \\0 15]
  -\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
  % aes::aes -hex -mode cbc -dir encrypt -key $nil_block $data_block
  bad option "-\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0": must be one of -chunksize, -dir, -hex, -in, -iv, -key, -mode, -out

  The last item in the args list is always the data (or the in stream name).
  It is never a "-" option and should not be treated as one even if it starts with a "-".

  I have a server system that has been running for more than a year before happening to have some data beginning with a "-".
  Very hard to test for unless you already know what the problem is.

  Suggested fix: terminate argument processing when the args list length gets to 1...

  --- tcllib-1.14.orig/modules/aes/aes.tcl2012-07-25 10:53:21.000000000 +1000
  +++ tcllib-1.14/modules/aes/aes.tcl2012-10-03 12:19:44.000000000 +1000
  @@ -519,7 +519,7 @@
       set opts(-iv) [string repeat \0 16]
       set modes {ecb cbc}
       set dirs {encrypt decrypt}
  -    while {[string match -* [set option [lindex $args 0]]]} {
  +    while {[llength $args] > 1 && [string match -* [set option [lindex $args 0]]]} {
           switch -exact -- $option {
               -mode      { set opts(-mode) [SetOneOf $modes [Pop args 1]] }
               -dir       { set opts(-dir) [SetOneOf $dirs [Pop args 1]] }


tkt_uuid: 1272798fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: exif
priority: 2
foundin: None
resolution: Fixed
title: exif - failed test with Tcl 8.5
comment:
  ==== exif-makernote-19.0 makernote field 19 (afpoint)
  is optional FAILED
  ==== Contents of test case:

      # AFPoint == AutoFocus Point

      set f [open [file join $::tcltest::testsDirectory
  noafpoint.jpg] r]
      fconfigure $f -translation binary
      set res [dictsort [exif::analyze $f]]
      close $f
      set res

  ---- Result was:
  AFPointsUsed {3 right} AperatureValue 7.1 AutoFocusMode
  {AI servo} CameraMake Ca
  non CameraModel {Canon PowerShot S100} ColorSpace 1
  ComponentsConfigured 0x00030
  201 Contrast Normal DateTime {2004:09:06 05:22:56}
  DateTimeDigitized {2004:09:06
   05:22:56} DateTimeOriginal {2004:09:06 05:22:56}
  ExifImageHeight 1200 ExifImage
  Width 1600 ExifInteroperabilityOffset 1088 ExifVersion
  0210 ExposureBiasValue 0 
  ExposureTime {1/250.0 seconds} FNumber 7.1 FileSource
  {3 - Digital camera} Firmw
  areVersion {Firmware Version 1.0} Flash no FlashMode
  auto FlashPixVersion 0100 F
  ocalLength {5.40625 mm} FocalPlaneResolutionUnit inch
  FocalPlaneXResolution 7766
  .9902912621355 FocalPlaneYResolution 7741.935483870968
  ISO unknown ImageFormat {
  IMG:JPEG file} ImageNumber 140-4060 ImageQuality Fine
  ImageSize large MacroMode 
  normal MeteringMode unknown Orientation 1 Owner Irochka
  ResolutionUnit inch Satu
  ration Normal SensingMethod 2 Sharpness Normal
  ShootingMode {Single frame} Shutt
  erSpeedValue {250 Hz} SubjectDistance {3.358 m}
  UnknownTag-0x10 100925440 UserCo
  mment {554 - } WhiteBalance Auto XResolution 180.0
  YCbCrPositioning {Center of p
  ixel array} YResolution 180.0
  ---- Result should have been (exact matching):
  AFPointsUsed {3 right} AperatureValue 7.1 AutoFocusMode
  {AI servo} CameraMake Ca
  non CameraModel {Canon PowerShot S100} ColorSpace 1
  ComponentsConfigured 0x00030
  201 Contrast Normal DateTime {2004:09:06 05:22:56}
  DateTimeDigitized {2004:09:06
   05:22:56} DateTimeOriginal {2004:09:06 05:22:56}
  ExifImageHeight 1200 ExifImage
  Width 1600 ExifInteroperabilityOffset 1088 ExifVersion
  0210 ExposureBiasValue 0 
  ExposureTime {1/250.0 seconds} FNumber 7.1 FileSource
  {3 - Digital camera} Firmw
  areVersion {Firmware Version 1.0} Flash no FlashMode
  auto FlashPixVersion 0100 F
  ocalLength {5.40625 mm} FocalPlaneResolutionUnit inch
  FocalPlaneXResolution 7766
  .99029126 FocalPlaneYResolution 7741.93548387 ISO
  unknown ImageFormat {IMG:JPEG 
  file} ImageNumber 140-4060 ImageQuality Fine ImageSize
  large MacroMode normal Me
  teringMode unknown Orientation 1 Owner Irochka
  ResolutionUnit inch Saturation No
  rmal SensingMethod 2 Sharpness Normal ShootingMode
  {Single frame} ShutterSpeedVa
  lue {250 Hz} SubjectDistance {3.358 m} UnknownTag-0x10
  100925440 UserComment {55
  4 - } WhiteBalance Auto XResolution 180.0
  YCbCrPositioning {Center of pixel arra
  y} YResolution 180.0
  ==== exif-makernote-19.0 FAILED


tkt_uuid: 821126ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: base64
priority: 7 High
foundin: None
resolution: Fixed
title: uninitialized "$output" in ::base64::decode
comment:
  Bug: '$output' is not defined in some situations at the
  end of
  proc ::base64::decode

  Rationale:
  Citing base64::decode comments:
       # RFC 2045 says that line breaks and other
  characters not part
       # of the Base64 alphabet must be ignored, and that
  the decoder
       # can optionally emit a warning or reject the
  message.  We opt
       # not to do so, but to just ignore the character.
  So, if you pass to base64::decode a totally bad string,
  you should
  get "" on return, not an error, since for the empty
  string we get "".

  How to reproduce:
  tcl>package require base64
  tcl>base64::decode "  "
  Error: can't read "output": no such variable

  Proposed patch:
  At the beginning of base64::decode (base64.tcl, line 281):
  set output ""


tkt_uuid: 1151935fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: statistics
priority: 5 Medium
foundin: None
resolution: None
title: math::stats divide by zero error
comment:
  If the sum of the numbers sent to math::stats is zero
  there will be a divide by zero error when it goes to
  calculate the coefficient of variation.


tkt_uuid: 1178045fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Invalid
title: Bad conversion for UTF-8 strings
comment:
  UTF-8 are not handled correctly in LDAP module (or may be 
  ASN). 
   
  Repeat by: 
   
  ---------------------------------------------- 
  package require ldap 
  set x [::ldap::connect ldap.u-strasbg.fr] 
  set y [::ldap::search $x o=ulp {(cn=*jamet an*)} *] 
  set z [lindex $y 0] 
  array set t [lindex $z 1] 
  puts $t(cn) 
  --------------------------------------------- 
   
  I get UTF-8 characters on dislay, even if stdout is 
  fconfigured with the normal "iso8859-15" encoding. 
   


tkt_uuid: 602279ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Rejected
title: tkchat - Shared whiteboard
comment:
  This patch implements a shared whiteboard that hitches
  a ride on tkchat for its communication protocol. 
  Naturally, it needs more polishing before it is perfect
  for use...


tkt_uuid: 1711544fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Development Tools
priority: 5 Medium
foundin: None
resolution: Fixed
title: sak.tcl validate fails with bad error msg without module nam
comment:
  Trying to use ./sak.tcl validate i see the following failure:
  schlenk@chronos:~/devel/tcllib> tclsh ./sak.tcl validate
  Validating tcllib 1.9 development
  ===================================================
  1: Existence of testsuites ...
  ------------------------------------------------------
    Without testsuite : bench
    Without testsuite : ftp
    Without testsuite : ftpd
    Without testsuite : grammar_peg
    Without testsuite : http
    Without testsuite : irc
    Without testsuite : javascript
    Without testsuite : jpeg
    Without testsuite : nmea
    Without testsuite : nntp
    Without testsuite : page
    Without testsuite : pluginmgr
    Without testsuite : smtpd
    Without testsuite : tar
    Without testsuite : tcllibc
    Without testsuite : term
    Without testsuite : tiff
    Without testsuite : transfer
  ------------------------------------------------------

  2: Existence of package indices ...
  ------------------------------------------------------
  ------------------------------------------------------

  3: Consistency of package versions ...
  ------------------------------------------------------
  unmatched open quote in list
      while executing
  "foreach {n v} $line break"
      ("foreach" body line 12)
      invoked from within
  "foreach line [split [read $fh] \n] {
              regsub "\#.*$" $line {} line
              if {![regexp {provide} $line]} {continue}
              if {![regexp {package} $lin..."
      ("foreach" body line 24)
      invoked from within
  "foreach f $files {
          # We ignore package indices and all files not in a module.

          if {[string equal pkgIndex.tcl [file tail $f]]} {continue}
          if {![reg..."
      invoked from within
  "foreach f $files {
          # We ignore package indices and all files not in a module.

          if {[string equal pkgIndex.tcl [file tail $f]]} {continue}
          if {![reg..."
      (procedure "ppackages" line 24)
      invoked from within
  "ppackages"
      (procedure "validate_versions" line 3)
      invoked from within
  "validate_versions"
      (procedure "_validate_all" line 21)
      invoked from within
  "_validate_all"
      (procedure "__validate" line 4)
      invoked from within
  "__$cmd"
      (file "./sak.tcl" line 2550)


tkt_uuid: 922877ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: bwidget PasswdDlg - honour labelwidth and fix return binding
comment:
  Fixes the BWidget PasswdDlg widget so that it doesn't ignore the 
  -labelwidth option when calculating the label width.

  Also reinstalled the Return binding so that return now moves through 
  the widgets rather than always selecting OK (i.e. more like the 
  behaviour of various login managers on Windows, Unix)


tkt_uuid: 2155034fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: aes
priority: 8
foundin: None
resolution: Fixed
title: Sign overflow in AddRoundKey
comment:
  There is a sign overflow in AddRoundKey that can cause 
  a 'integer value too large to represent' error from EncryptBlock or DecryptBlock.  When expr{} xors together a positive & negative number it preserves the sign and may extend the values to 64 bit.

  Similar sign overflows were fixed in EncryptBlock & DecryptBlock in aes.tcl 1.6.

  To reproduce:
  --
  package require aes

  set keyhex c47b0294dbbbee0fec4757f22ffeee3587ca4730c3d33b691df38bab076bc558
  set texthex 46f2fb342d6f0ab477476fc501242c5f

  aes::aes -dir decrypt -mode ecb -hex -key [binary format H* $keyhex] -- [binary format H* $texthex]
  --

  Fix: use a mask to limit the result to 32 bit
  Change to aes.tcl:
  --
  proc ::aes::AddRoundKey {Key round words} {
      upvar #0 $Key state
      set r {}
      set n [expr {$round * $state(Nb)}]
      foreach w $words {
          lappend r [expr {0xffffffff & ($w ^ [lindex $state(W) $n])}]
          incr n
      }
      return $r
  }
  --

  Additional note:
  There are uses of expr{} in ExpandKey that may also overflow in a similar manner, and should be investigated.


tkt_uuid: 1699575fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: graph
priority: 3 Low
foundin: None
resolution: Fixed
title: criticl accelerators have wrong error msgs with Tcl 8.5
comment:
  The struct::graph testsuite throws a lot of errors due to wrong style error messages when using Tcl 8.5 and the critcl wrappers.


tkt_uuid: 433147ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: None
title: csv man page term needs clarified
comment:
  The csv man page mentions the word "values" as an
  argument to, for instance, ::csv::join .  What should
  be mentioned there though is that it is a single
  argument.  I don't know if this argument must be in a
  list format, but I suspect so.  If so, that too should
  be mentioned.

  When I try 
  package require csv
  set a [::csv::join 1 2 3]

  expecting that, passing values, I would get 1,2,3 ,
  instead I get an error.


tkt_uuid: 883573ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ftp change directory problems
comment:
  There is a problem changing to directories with some
  special
  characters.

  I checked the ftp with gftp client and the directories
  are accessible.

  Roi


tkt_uuid: 1155390fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: asteroids
priority: 5 Medium
foundin: None
resolution: Fixed
title: app:asteroids: missing music reset
comment:
  The "music" in the game asteroids does not reset to its
  initial speed when you start a new game. After playing
  a fair number of games, it's going at a silly speed
  even on the initial level...


tkt_uuid: 3508577fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: json
priority: 5 Medium
foundin: None
resolution: Duplicate
title: json: pretty-printing a dictionary
comment:
  Based on json.tcl (1.1.2)
  I added a new proc named "json2prettydict"

  Aim of this proc is to return a "pretty-printed" tcl-dictionary.

  I think this proc could be useful for documentating complex nested dictionaries.

  - Internal Notes -
  "json2prettydict" is heavily based on existing json2dict and json::parseXXX procs.
  I slightly changed the internal code of all json::parseXXX procs, so that
  these procs, may be called in two ways: for getting a (traditional) tcl-dict
  or for getting a pretty-printed tcl-dict.

  [Source code is attached]

  -------------------------------------
  Here is a demo:

  set jsonStr { \
   { "photos": { "page": 1, "pages": "726", "perpage": 3, "total": "7257", 
      "photo": [
        { "id": "6974156079", "owner": "74957296@N08", "secret": "005d743f82", "server": "7197", "farm": 8, "title": "Kenya Watamu \"Deep Sea Fishing\" \"Indian Ocean\" \"Blue Marlin\"", "ispublic": 1, "isfriend": 0, "isfamily": 0 },
        { "id": "6822988100", "owner": "52857411@N08", "secret": "56630c18e8", "server": "7183", "farm": 8, "title": "Gedi Ruins, Local Guide", "ispublic": 1, "isfriend": 0, "isfamily": 0 },
        { "id": "6822909640", "owner": "52857411@N08", "secret": "f4e392ea36", "server": "7063", "farm": 8, "title": "Local Fisherman, Mida Creek", "ispublic": 1, "isfriend": 0, "isfamily": 0 }
      ] }, "stat": "ok" }
  }
  # First, just for comparision, call json2dict
  set d1 [json::json2dict $jsonStr]
   # result is the following
  if {0} {

  photos {page 1 pages 726 perpage 3 total 7257 photo {{id 6974156079 owner 74957296@N08 secret 005d743f82 server 7197 farm 8 title {Kenya Watamu "Deep Sea Fishing" "Indian Ocean" "Blue Marlin"} ispublic 1 isfriend 0 isfamily 0} {id 6822988100 owner 52857411@N08 secret 56630c18e8 server 7183 farm 8 title {Gedi Ruins, Local Guide} ispublic 1 isfriend 0 isfamily 0} {id 6822909640 owner 52857411@N08 secret f4e392ea36 server 7063 farm 8 title {Local Fisherman, Mida Creek} ispublic 1 isfriend 0 isfamily 0}}} stat ok

  }
   # Then create a pretty printed dictionary
  set d2 [json::json2prettydict $jsonStr]
   # result is the following
  if {0} {

  photos {
  page 1
  pages 726
  perpage 3
  total 7257
  photo {
  {
  id 6974156079
  owner 74957296@N08
  secret 005d743f82
  server 7197
  farm 8
  title {Kenya Watamu "Deep Sea Fishing" "Indian Ocean" "Blue Marlin"}
  ispublic 1
  isfriend 0
  isfamily 0
  }
  {
  id 6822988100
  owner 52857411@N08
  secret 56630c18e8
  server 7183
  farm 8
  title {Gedi Ruins, Local Guide}
  ispublic 1
  isfriend 0
  isfamily 0
  }
  {
  id 6822909640
  owner 52857411@N08
  secret f4e392ea36
  server 7063
  farm 8
  title {Local Fisherman, Mida Creek}
  ispublic 1
  isfriend 0
  isfamily 0
  }
  }

  }
  stat ok

  }

  # -- end


tkt_uuid: 464560ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Fixed
title: ncgi::redirect request_uri
comment:
  In the ncgi::redirect procedure, a variable called 
  request_uri is created, depending upon whether or not 
  env(REQUEST_URI) exists.

  Later in the procedure, env(REQUEST_URI) is used as 
  part of a regexp evaluation, when instead, the 
  request_uri variable should be used. The request_uri 
  variable should be used because the env(REQUEST_URI) 
  variable may not exist. (the source makes a comment 
  w/regard to not all servers having the leading 
  protocol spec...)

  Thanks,


tkt_uuid: 438748ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: Misc typo fixes in man pages
comment:
  Here are some fixes for the tcllib man pages.
  The typos fixed are pretty consistent.  The
  comment lines added allow Sun man command to format
  the pages.


tkt_uuid: 886385ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: control
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Enhanced do...while|until [prefix] [suffix] Control Structur
comment:
  This one came out of my customer demand! Pat Thoyts 
  and Donal K. Fellows suggested me to submit it here.

  The submission is in form of a TIP. Please search 
  for "sample implementation" to get to the code.

  Please also see at the end of it, untried version of tests. 
  Please search for "tests for do" to get to the code

  TIP 
  Title 
  Enhanced do...while|until [prefix] [suffix] Control 
  Structure 
  Version 
  $Revision: 1.4 
  Author 
  Bhushit Joshipura 
  State 
  Draft 
  Type 
  Project 
  Vote 
  Pending 
  Created 
  20-Jan-2004 
  Keywords 
  control structure, do, while, until, prefix, suffix 
  ~ Abstract 
  This TIP proposes the introduction of an enhancement 
  on do...while|until control structure already present in 
  TCLLib. It proposes to add prefix statement list and 
  suffix statement list to prepend and append to 
  statement body of do...while|until for the "while" part 
  (second loop onwards) of the loop. 
  ~ Rationale 
  Theoretically only two controls - if and goto - are 
  sufficient to implement all algorithms. However, 
  languages provide more control structures for better 
  representation of algorithms. 
  do...while|until is a useful structure in itself for parsing, 
  file reading etc. With little pain, a while loop does the 
  job too. However, when it comes to nesting, 
  do...while|until into another, equivalent while loop starts 
  becoming clumsier. 
  In situations where do...while|until is used in testing, if 
  the statement body of do...while|until changes state of 
  entity being tested, next iteration is bound to have side 
  effects. At that time, proposed prefix and suffix 
  statements come handy. 
  While it is still possible to handle all of these in a while 
  loop, nesting becomes a nightmare. 
  Proposed solution is more elegant, in spirit of 
  do...while|until's spirit of treating first pass specially. 
  ~ Implementation in Other Languages 
  C, C++, Java, Pascal have do...while. Perl has 
  do...while|until. Python does not have any equivalent. 
  ~ Grammar and Behavior 
  |do { 
  | 
  |} while|until { } [ prefix { }] [suffix { statements2>}] 
  1. are executed 
  2. while|until is evaluated 
  3. while associated are true ( or until are false ) 
  3.1 are executed 
  It is necessary to specify one and only one of "while" 
  or "until" with proper condition block following it. 
  ~Sample Invocations 
  set x 1 
  |do { 
  |    puts "Hello world!" 
  |    incr x 
  |} until { $x > 3 } prefix { 
  |    puts "prefix begin" 
  |    puts $x 
  |    puts "prefix end" 
  |} suffix { 
  |    puts "suffix begin" 
  |    puts $x 
  |    puts "suffix end" 
  |} 
  ~Contrast 
  Contrast above code with its while loop equivalent 
  |set x 1 
  |set firsttime "yes" 
  |while { $x <= 3 } { 
  |    if { $firsttime == "no" } { 
  | puts "prefix begin" 
  | puts $x 
  | puts "prefix end" 
  |    } 
  |    puts "Hello world!" 
  |    incr x 
  |   if { $firsttime == "no" } { 
  | puts "suffix begin" 
  | puts $x 
  | puts "suffix end" 
  |    } 
  |    set firsttime "no" 
  |} 
  ~Sample Implementation 
  |# do.tcl -- 
  |# 
  |#        Tcl implementation of a "do ... while|until" loop. 
  |#        Once first iteration gets over, body can be 
  augmented using prefix or suffix 
  |# 
  |# Originally written for the "Texas Tcl Shootout" 
  programming contest 
  |# at the 2000 Tcl Conference in Austin/Texas. 
  |# 
  |# Copyright for TCLLib implementation was 
  |# Copyright (c) 2001 by Reinhard Max 
  |# 
  |# Added prefix and suffix by Bhushit Joshipura, 
  December 15, 2003 
  |# Bhushit does not know what happens to copyrights 
  |# 
  |# See the file "license.terms" for information on usage 
  and redistribution 
  |# of this file, and for a DISCLAIMER OF ALL 
  WARRANTIES. 
  |# 
  |# 
  |namespace eval ::control { 
  | 
  |    proc do {body args} { 
  | 
  | # 
  | # Implements a "do body while|until test [ [prefix | 
  suffix] bodyparts ]" loop 
  | # 
  | # It is almost as fast as builtin "while" command for 
  loops with 
  | # more than just a few iterations. 
  | # 
  | 
  | set len [llength $args] 
  | if {$len != 6 && $len != 4 && $len !=2 && $len != 0} { 
  |     set proc [namespace current]::[lindex [info level 0] 
  0] 
  |     return -code error "wrong # args: should be \"$proc 
  body\" or \"$proc body \[until|while\] test\" or \"$proc 
  body \[until|while\] test \[ \[ prefix | suffix \] bodyparts 
  \]" 
  | } 
  | set test 0 
  | set bodyprefix "" 
  | set bodysuffix "" 
  | set whileOrUntil "" 
  | 
  | foreach { argument value } $args { 
  |     switch -exact -- $argument { 
  | "while" { 
  |     if { $whileOrUntil == "" } { 
  | set whileOrUntil $argument 
  | set test $value 
  |     } else { 
  | return -code error \ 
  |     "\"$argument\" found after \"$whileOrUntil\"" 
  |     } 
  | } 
  | "until" { 
  |     if { $whileOrUntil == "" } { 
  | set whileOrUntil $argument 
  | set test !($value) 
  |     } else { 
  | return -code error \ 
  |     "\"$argument\" found after \"$whileOrUntil\"" 
  |     } 
  | } 
  | "prefix" { 
  |     # last of prefix will be considered 
  |     set bodyprefix $value 
  | } 
  | "suffix" { 
  |     # last of suffix will be considered 
  |     set bodysuffix $value 
  | } 
  | default { 
  |     return -code error \ 
  | "bad option \"$whileOrUntil\": must be until, while, 
  prefix or suffix" 
  | } 
  |     } 
  | } 
  | 
  | # the first invocation of the body 
  | set code [catch { uplevel 1 $body } result] 
  | 
  | # decide what to do upon the return code: 
  | # 
  | #               0 - the body executed successfully 
  | #               1 - the body raised an error 
  | #               2 - the body invoked [return] 
  | #               3 - the body invoked [break] 
  | #               4 - the body invoked [continue] 
  | # everything else - return and pass on the results 
  | # 
  | switch -exact -- $code { 
  |     0 {} 
  |     1 { 
  | return -errorinfo [ErrorInfoAsCaller uplevel do]  \ 
  |     -errorcode $::errorCode -code error $result 
  |     } 
  |     3 { 
  | # FRINK: nocheck 
  | return 
  |     } 
  |     4 {} 
  |     default { 
  | return -code $code $result 
  |     } 
  | } 
  | 
  | set body [ format "%s\n%s\n%s" $bodyprefix $body 
  $bodysuffix ] 
  | 
  | # the rest of the loop 
  | set code [catch {uplevel 1 [list while $test $body]} 
  result] 
  | if {$code == 1} { 
  |     return -errorinfo [ErrorInfoAsCaller while do] \ 
  | -errorcode $::errorCode -code error $result 
  | } 
  | return -code $code $result 
  | 
  |    } 
  |} 
  ~Copyright 
  This document is placed in public domain. 


  Tests for do

  # do.test --
  #
  #         Tests for [control::do]
  # 
  # RCS: @(#) $Id: do.test,v 1.6 2003/05/01 22:40:13 
  patthoyts Exp $
  #

  package forget control
  catch {namespace delete control}

  # Direct loading of provide script -- support testing even
  # when not installed.  And be sure we test the local copy
  # and not some later version that may be installed.
  source [file join [file dirname [info script]] control.tcl]
  namespace import ::control::do

  package require tcltest
  namespace import -force 
  tcltest::test ::tcltest::cleanupTests

  # This constraint restricts certain tests to run on tcl 
  8.3+
  if {[package vsatisfies [package provide tcltest] 2.0]} {
      # tcltest2.0+ has an API to specify a test constraint
      ::tcltest::testConstraint tcl8.3plus \
          [expr {[package vsatisfies [package provide Tcl] 
  8.3]}]
  } else {
      # In tcltest1.0, a global variable needs to be set 
  directly.
      set ::tcltest::testConstraints(tcl8.3plus) \
          [expr {[package vsatisfies [package provide Tcl] 
  8.3]}]
  }

  # ----------------------------------------
  test {do-1.0} {do ... while} {
      set x 0
      do {incr x} while {$x < 10}
      set x
  } 10

  # ----------------------------------------
  test {do-1.1} {do ... until} {
      set x 0
      do {incr x} until {$x > 10}
      set x
  } 11

  # ----------------------------------------
  test {do-1.2} {break} {
      set x 0
      do {
  incr x
  if {$x == 5} {break}
      } until {$x == 10}
      set x
  } 5

  # ----------------------------------------
  test {do-1.3} {continue} {

      set x 0
      set xx [list]
      do {
  incr x
  if {$x == 5} {continue}
  lappend xx $x
      } until {$x == 10}
      set xx
  } {1 2 3 4 6 7 8 9 10}

  # ----------------------------------------
  test {do-1.4} {error} {
      catch {
  set x 0
  do {
      incr x
      if {$x == 5} {foo}
  } while {$x < 10}
      } result
      list $x $result
  } {5 {invalid command name "foo"}}

  # ----------------------------------------
  test {do-1.5} {return} {
      proc foo {} {
  set x 0
  do {
      incr x
      if {$x == 5} { return $x }
  } while {$x < 10}
      }
      set result [foo]
      rename foo ""
      set result
  } 5

  # ----------------------------------------
  test {do-1.6} {break in the first loop} {
      set x 0
      do {
  break
  incr x
      } while {$x < 10}
      set x
  } 0

  # ----------------------------------------
  test {do-1.7} {continue in the first loop} {
      set x 0
      set xx [list]
      do {
  incr x
  if {$x == 1} {continue}
  lappend xx $x
      } until {$x == 10}
      set xx
  } {2 3 4 5 6 7 8 9 10}

  # ----------------------------------------
  test {do-1.8} {error in the first loop} {
      set x 0
      catch {
  do {
      foo
      incr x
  } until {$x == 10}
      } result
      list $x $result
  } {0 {invalid command name "foo"}}

  # ----------------------------------------
  test {do-1.9} {[do ... while] with false condition} {
      set x 0
      do {
  incr x
      } while 0
      set x
  } 1

  # ----------------------------------------
  test do-1.10 {[do ... until] with true condition} {
      set x 0
      do {
  incr x
      } until 1
      set x
  } 1

  # ----------------------------------------
  test do-1.11 {third arg is neither while nor until} {
      set x 0
      catch {
  do {
      incr x
  } foo 1
  set x
      } result
      list $x $result
  } {0 {bad option "foo": must be until, or while}}

  # ----------------------------------------
  test do-1.12 {stack traces for errors in the first 
  iteration} {
      proc a {} b
      proc b {} {do c while 1}
      proc c {} d
      catch a
      set ::errorInfo
  } {invalid command name "d"
      while executing
  "d"
      (procedure "c" line 1)
      invoked from within
  "c"
      ("do" body line 1)
      invoked from within
  "do c while 1"
      (procedure "b" line 1)
      invoked from within
  "b"
      (procedure "a" line 1)
      invoked from within
  "a"}

  # ----------------------------------------
  test do-1.14 {stack traces for errors in subsequent 
  iterations} tcl8.3plus {
      proc a {} b
      proc b {} {
  set i 10
  do {
      incr i -1
      c $i
  } while {$i}
      }
      proc c {i} {if {$i==5} e}
      catch a
      set ::errorInfo
  } {invalid command name "e"
      while executing
  "e"
      (procedure "c" line 1)
      invoked from within
  "c $i"
      ("do" body line 3)
      invoked from within
  "do {
      incr i -1
      c $i
  } while {$i}"
      (procedure "b" line 3)
      invoked from within
  "b"
      (procedure "a" line 1)
      invoked from within
  "a"}

  # ----------------------------------------
  test do-2.0 {one-shot do} {
      set x 0
      do {incr x}
      set x
  } 1

  # ----------------------------------------
  test do-2.1 {one-shot do with break} {
      set x 0
      do {incr x; break; incr x}
      set x
  } 1

  # ----------------------------------------
  test do-2.2 {wrong no of arguments} {
      set x 0
      set res [catch {do {incr x} foo} ret]
      list $x $res $errorInfo
  } {0 1 {wrong # args: should be "::control::do body" 
  or "::control::do body [until|while] test"
      while executing
  "do {incr x} foo"}}

  # ----------------------------------------
  test do-2.3 {wrong no of arguments} {} {
      set res [catch do]
      if {[string match \
       {no value given for parameter "body" 
  to "do"*} \
       $::errorInfo]
      } then {
  set ::errorInfo {wrong # args: should be "do 
  body args"
      while executing
  "do"}
      }
      list $res $::errorInfo
  } {1 {wrong # args: should be "do body args"
      while executing
  "do"}}

  # ----------------------------------------
  test do-2.4 {one-shot do with error} {
      set x 0
      set res [catch {do {
  incr x
  foo
  incr x
      }}]
      list $x $res $::errorInfo
  } {1 1 {invalid command name "foo"
      while executing
  "foo"
      ("do" body line 3)
      invoked from within
  "do {
  incr x
  foo
  incr x
      }"}}

  cleanupTests

  if {[info exists ::argv0] && $::argv0 == [info script]} {
      # a proc that wastes some time
      proc something {n} {
  for {set i 0} {$i < $n} {incr i} {}
      }
      
      proc main {} {
  # run it for the first time to get it byte compiled
  something 1

  set payload {
      something 10
      incr x
  }
  puts "\nComparing performance of do-while, do-
  until and builtin while..."
  set format "%-8s : %20s for %4d iteration(s)."
  foreach c {1 10 5000} {
      puts ""
      foreach {descr script} {
  {do while} {do $payload while {$x < 
  $c}}
  {do until} {do $payload until {$x == 
  $c}}
  {while} {while {$x < $c} $payload}
      } {
  set x 0
  puts [format $format $descr [lrange 
  [time $script 1] 0 1] $x]
      }
  }
      }
      main
  }

  # Local variables:
  # mode: tcl
  # End:


tkt_uuid: 501339ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 6
foundin: None
resolution: Accepted
title: CRC32 from Wiki - Call for comments.
comment:
  I've tcllib-ized the CRC32 Cyclic Redundancy Check
  implementation that is available from
  http://mini.net/tcl/2259.tcl by Wayland Augur and
  posted by Arjen Markus. We currently have sha, md5 and
  base64 modules so keeping with this style I propose a
  new crc module with the attached code etc.

  What does everyone think?


tkt_uuid: 3606621fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Installation
priority: 5 Medium
foundin: None
resolution: Fixed
title: man pages collision with tcl-8.6.0
comment:
   package dev-tcltk/tcllib-9999 NOT merged
   * 
   * Detected file collision(s):
   * 
   * /usr/share/man/mann/zlib.n.xz
   * /usr/share/man/mann/variable.n.xz
   * /usr/share/man/mann/string.n.xz
   * /usr/share/man/mann/coroutine.n.xz
   * 
   * Searching all installed packages for file collisions...
   * 
   * Press Ctrl-C to Stop
   * 
  Some man pages from tcllib collide with tcl-8.6 installation.

   * dev-lang/tcl-8.6.0
   * /usr/share/man/mann/coroutine.n.xz
   * /usr/share/man/mann/string.n.xz
   * /usr/share/man/mann/variable.n.xz
   * /usr/share/man/mann/zlib.n.xz
   * 


tkt_uuid: 2819151fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Development Tools
priority: 5 Medium
foundin: None
resolution: Fixed
title: Link to SF webdav file upload form for releases
comment:
  The SF webdav file upload form for release archives is at.
  https://frs.sourceforge.net/webupload

  Save the info in the developer/release mgr docs.


tkt_uuid: 1392879fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: inifile
priority: 5 Medium
foundin: None
resolution: None
title: inifile: docs and code at odds
comment:
  The inifile docs for the open command say "Opens an INI
  file and returns a handle that is used by other
  commands. Mode has the same types as the open command.
  The default mode is r+."  But the code only allows
  r/w[+], not append mode.  


tkt_uuid: 2909962fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: json
priority: 5 Medium
foundin: None
resolution: Accepted
title: Faster, more readable implementation of json parser
comment:
  When parsing documents of some nontrivial size (i.e. >100kB), I have found the json parser package 1.0 to be far too slow.

  Here is a considerably faster implementation (I have measured speed gains of a factor of 30). The main difference is that a regular expression is used for tokenizing the json text.

  This means that the parsing process restrict itself to a sequence of recognized tokens; it is blind to non-whitespace text between recognized tokens. I have therefore added a proc json::validate which can be used to test the validity of the entire text.

  I have not touched the *2json procs.

  The code is commented according to our internal guidelines; adaptations to the tcllib guidelines may thus have to be made if it is to be published in a future tcllib release.

  I haven't changed the package version number, and my CVS has tampered with the CVS mark in the header.


tkt_uuid: 460230ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct
priority: 5 Medium
foundin: None
resolution: None
title: there should be an 'exists -key xyz'
comment:
  There is no way to tell whether a node's key exists or
  not.  If you try and get it and it doesn't exist, it
  fails with an error.  There ought to be a command that
  you can use to see if it exists or not.


tkt_uuid: 900178ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: Fixed
title: Incorrect or unclear Response to PASS
comment:
  In proc ::ftpd::command::PASS, the positive response is
  generated as puts $sock "200 OK" (line# 1050). The RFC
  (imo) states, that it should be "230 ...." instead.

  The ftpd-Version is:
  ftpd.tcl,v 1.17 2003/07/05 04:59:35 andreas_kupries

  This behaviour leads to the message
  Unexpected response: OK
  with the widely-used NCFTP-Clients.

  M.Hoffmann@hmk.info 


tkt_uuid: 454718ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: control
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Semephore
comment:
  With packages that provide a call back mechanism, it is
  possible to have many essentially background processes.
  Take the http:: package. It is possible to have many
  http::geturl requests running simultaneously, but there
  is really no default way to coordinate the call backs for
  the various open requests.

  A semephore package with the ability to wait on any
  number of call backs is desirable. Using a generic
  waitany routine would require that I be aware of the
  internal variables of the http package to wait on
  changes of these variables. Implimenting all of this in
  a single semephore package allows the same
  functionality without the need to have knowledge of the
  internals of a package.

  As a staring point I submit the following. There may
  have to be changes due to multi-threaded tcl code, but
  its a start none the less.

  #  semephore.tcl
  #  Impementation of semephores
  #
  #  Semephore::Signal token
  #  Semephore::Wait   ?pattern?   - returns token
  #  Semephore::Reset  token

  package provide SemephorePkg 2.1

  # 2.1 - October 22, 2000
  #     - fixed a bug that would result in a very slow
  memory leak

  namespace eval Semephore {
    variable SemData
    array set SemData {}
    variable SemAny 0

    namespace export Signal Wait Reset
  }


  # -------------------------------------------------
  Signal ----
  # Signal a semephore
  proc Semephore::Signal { SemToken } {
    variable SemData
    variable SemAny

    if {![info exist SemData($SemToken)]} then {
       set SemData($SemToken) 1
    } else {
       incr SemData($SemToken)
    }
    incr SemAny
  }

  # -------------------------------------------------
  Wait ----
  # Wait for a semephore
  # Note: Resetting a semephore does not signal it.

  proc Semephore::Wait { args } {
    variable SemData
    variable SemAny

    set Pattern [lindex $args 0]
    if {"$Pattern" == ""} then { set Pattern "*" }
    set FoundFlag 0
    set FoundName ""
    if {$SemAny != 0} then {
      foreach n [array names SemData $Pattern] {
        if {$SemData($n) > 0} then {
          set FoundName $n
          set FoundFlag 1
          break
        }
      }
    }
    while {!$FoundFlag} {
      vwait Semephore::SemAny
      foreach n [array names SemData $Pattern] {
        if {$SemData($n) > 0} then {
          set FoundName $n
          set FoundFlag 1
          break
        }
      }
    }
    if {[incr SemData($FoundName) -1] == 0} then {
      unset SemData($FoundName)
    }
    incr SemAny -1
    return $FoundName
  }

  # -------------------------------------------------
  Reset ----
  # Reset a semephore
  # Note: Resetting a semephore does not signal it.

  proc Semephore::Reset { SemToken } {
    variable SemData
    variable SemAny

    if {[info exist SemData($SemToken)]} then {
      incr SemAny -$SemData($SemToken)
    }
    set SemData($SemToken) 0
  }


tkt_uuid: 3423097fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: smtp lacks -timeout option
comment:
  There's a need for such option, to assure reliability for scipts using smtp client package. I made a simple "experiment": while sending a few mails simply pulled ethernet plug out of the socket - the script went "frozen" for several minutes (didn't measure...), until I plugged it in again. IMHO there should be possibility to give up ("-timeout x", where "-timeout 0" could mean "keep trying unlimited time"), And perhaps it could be improved a bit: to keep the entire script responsible, even in the case of network problems, like loss of connectivity?


tkt_uuid: 2872536fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: stripPath checks partial path components
comment:
  Example:
  (woof) 51 % fileutil::stripPath c:/temp c:/tempx/foo/bar
  foo/bar

  Should return c:/tempx/foo/bar

  My guess is it does a prefix string comparison without checking if next char is a dir seprator or not.


tkt_uuid: 3288793fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Accepted
title: ftp::List does not work inside tkcon
comment:
  the proposed fix is to replace:
  proc ::ftp::__ftp_ls {args} {
          foreach i [eval ::ftp::List_org $args] {
              puts $i
          }
      }
  with:
      proc ::ftp::__ftp_ls {args} {
          set rc [eval ::ftp::List_org $args]
          foreach i $rc {
              puts $i
          }
          return $rc
      }

  in ftp.tcl file.


tkt_uuid: 2001539fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: calculus
priority: 5 Medium
foundin: None
resolution: None
title: calculus::solveTriDiagonal bug
comment:
  The execution of :math::calculus::solveTriDiagonal on a 3x3 matrix, such as  :
     set X [::math::calculus::solveTriDiagonal {3 3} {1 1 1} {2 2} {1 0 0}]
  returns a liste of length 2 :
     { 1 0 }

  It should return a list of length 3 (the size of the matrix).



  The bug may be either on line 527 or 536 or 557 in calculs.tcl version 0.7, revision 1,13.


  The for loop should pbly go one step further.


tkt_uuid: 3105412fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
resolution: Duplicate
title: ::csv incorrect format implementation on LINE BREAK records
comment:
  Hi,

  Hope this post will allow you to fixe this annoying problem...

  Many thanks
  Cyril ROUX

  ===========
  According to "Network Working Group" (rfc4180 - October 2005) about CSV format :
  2.  Definition of the CSV Format
     6.  Fields containing line breaks (CRLF), double quotes, and commas
         should be enclosed in double-quotes.  For example:

         "aaa","b CRLF
         bb","ccc" CRLF
         zzz,yyy,xxx

  That is to say tcllib ::csv package have to take into account LINE BREAK the
  same way it manages separatorChar (,) and delimiterChar (")...

  ==========
  Especialy, bug can be fixed in "join" procedure by adding line break (\n) to
  match list of special characters (, and ") that generate quoting records :
  proc ::csv::join {values {sepChar ,} {delChar \"}} {
      set out ""
      set sep {}
      foreach val $values {
          if {[string match "*\[${delChar}$sepChar\n\]*" $val]} {
              append out $sep${delChar}[string map [list $delChar ${delChar}${delChar}] $val]${delChar}
          } else {
              append out $sep${val}
          }
          set sep $sepChar
      }
      return $out
  }

  ==========
  To reproduce this problem jus t create a matrix with records containing line break
  then dump it in a CSV file, then read CSV file back in TCL and consistency will be lost !

  lappend ::auto_path [file join  /sw/freetools/tcl/8.5.6/Linux/rh4/x86_64  lib]

  package require csv
  package require struct::matrix

  struct::matrix M
  M add columns 3
  M insert row 0 { "name" "code" "description" }
  M add row { "me" {if ( test == null ){
    var = false;
  } else {
    var = true;
  }
  } {code by:
  me in JAVA} }

  #display matrix
  M format 2string

  #then we can see consistency is preserved
  #-----+----------------------+------------
  #name | code                 | description
  #-----+----------------------+------------
  #me   | if ( test == null ){ | code by:   
  #     |   var = false;       | me in JAVA 
  #     | } else {             |           
  #     |   var = true;        |          
  #     | }                    |           
  #-----+----------------------+------------

  # dump matrix in CSV file
  set CSV [open /tmp/test.csv w]
  ::csv::writematrix ::M $CSV
  close $CSV

  #CSV file is without delimiters around
  #any values with LINE BREAK :
  #
  #name,code,description
  #me,if ( test == null ){
  #  var = false;
  #} else {
  #  var = true;
  #}
  #,code by:
  #me in JAVA

  # Recover CSV
  set CSV [open /tmp/test.csv r]
  ::csv::read2matrix $CSV Mread , auto
  close $CSV

  #display matrix
  Mread format 2string

  #then now we can see consistency is lost due to NO delimiters used when line breaks!!!
  #+--------------+--------------------+-----------+
  #|name          |code                |description|
  #|--------------+--------------------+------------
  #|me            |if ( test == null ){|           |
  #|--------------+--------------------+------------
  #|  var = false;|                    |           |
  #|--------------+--------------------+------------
  #|} else {      |                    |           |
  #|--------------+--------------------+------------
  #|  var = true; |                    |           |
  #|--------------+--------------------+------------
  #|}             |                    |           |
  #|--------------+--------------------+------------
  #|              |code by:            |           |
  #|--------------+--------------------+------------
  #|me in JAVA    |                    |           |
  #| -------------+--------------------+------------


tkt_uuid: 725557ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 8
foundin: None
resolution: Fixed
title: tcllib installer failure
comment:
  I fetched the 20030419 cvs snapshot from Activestate
  ftp site.
  $ rm -rf tcllib
  $ gtar xfz tcllib-20030419.tar.gz
  $ mkdir tcllib/unix
  $ cd tcllib/unix
  $ ../configure --prefix=/usr/tcllib
  $ make all
  $ make install
   $ make install;exit                  
  /usr/tcl84/bin/tclsh8.4 `echo ../installer.tcl` \
          -pkg-path   /usr/tcl84/lib/tcllib1.4 \
          -no-examples -no-html -no-nroff \
          -no-wait -no-gui
  Installing Tcllib 1.4
  You have chosen the following configuration ...

  Packages:      /usr/tcl84/lib/tcllib1.4
  Examples:      Not installed.
  Documentation: Not installed.

  .........error copying "../modules/calendar/tclIndex"
  to "/usr/tcl84/lib/tcllib1.4/calendar/tclIndex": file
  already exists
      while executing
  "file copy [file join $distribution modules $module
  tclIndex]  [file join $libdir $module]"
      (procedure "_tci" line 5)
      invoked from within
  "_tci calendar /usr/tcl84/lib/tcllib1.4"
      ("eval" body line 1)
      invoked from within
  "eval $guide($m,$type) $m $args"
      (procedure "xinstall" line 4)
      invoked from within
  "xinstall   pkg $config(pkg,path)"
      (procedure "doinstall" line 5)
      invoked from within
  "doinstall"
      (procedure "main" line 11)
      invoked from within
  "main"
      (file "../installer.tcl" line 579)
  *** Error code 1
  make: Fatal error: Command failed for target
  `install-libraries'
  Connection closed.


tkt_uuid: 1416821fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: treeql
priority: 5 Medium
foundin: None
resolution: Fixed
title: treeql: test suite bug
comment:
  with -debug 1:

  * treeql 1.3
  > tree : pure Tcl

  test name 'treeql-tcl-0.3' re-used; prior use in
  /local/src/tcllib/modules/treeql/treeql.testsuite
  test name 'treeql-tcl-0.3' re-used; prior use in
  /local/src/tcllib/modules/treeql/treeql.testsuite


tkt_uuid: 481292ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: new package proposal: stooop
comment:
  This is not really a patch, but I am offering to add
  the Tcl only OO extension stooop (at
  http://jfontain.free.fr/).

  I think it is ready to go (has own namespace,
  documentation, test suite and examples).

  Please let me know if you need anything else.

  URL: http://jfontain.free.fr/stooop-4.1.1.tar.gz
  Best regards,

  Jean-Luc


tkt_uuid: 712951ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: Potential infinite loop in doctools::cvs::scanLog
comment:
  In doctools/cvs.tcl, ~line 63:

  while { ! [regexp "(-----*)|(=====*)" $line] } {
      append comment $line "\n"
      incr i
      set line [lindex $text $i]
  }

  This will fail to terminate if the input doesn't end
  with a "-----*" or "=====*" line.  The while loop
  controlling clause should also include a test for " ...
  && $i < $n", to account for the possibility of bad
  input.


tkt_uuid: 532246ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: NoteBook tabs text not entirely visible
comment:
  Using BWidget 1.4.0 NoteBook widget:

  The lower portion of the text on the tabs gets 
  truncated on all tabs except the selected tab.

  The text should appear in its entirety on all tabs.


tkt_uuid: 934702ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Add a XML parsing module to tcllib
comment:
  As there is no XML parsing module in either the tcl
  core distro nor the Tcllib yet, there is a large class
  of modules not really nicely includeable into tcllib
  (nearly everything xml related). 

  A Tcllib XML parsing module would be really nice,
  especially if linked to a DOM module using the
  ::struct::tree (not super efficient but standard). 

  Candidates would be the TclXML package from the tclxml
  project or a new development. 

  A new development could unify the two most used C
  extensions in the area (TclXML and tDOM).


tkt_uuid: 1725717fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: plotchart
priority: 5 Medium
foundin: None
resolution: None
title: package load writes to stdout
comment:
  When loading the plotchart package two lines are written to stdout. It is assumed that these are debug statements which were left active during checkin.

  The offending lines are in scaling.tcl, lines 140-141.
  To fix change line 139.


tkt_uuid: 2034464fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: tablelist
priority: 5 Medium
foundin: None
resolution: Fixed
title: columnconfigure -bg isn't respected for -state disabled
comment:
  A tablelist with -state disable doesn't respect columnconfigure -background settings unter a lot of circumstances. If the -state is disabled, the -background color of the widget itself is used as background color. Though, even that isn't always the case. Sometimes, even with -state disabled, the column -background setting is respected. 

  The script below illustrates this. The tablelist widgets .tl1 and .tl2 differ only in the -state -- .tl2 is disabled.

  With a click on the button you change the 3. tablelist. Its content change and it is switched to -state disabled, but the colum -background settings are respected.

  If you hit a second time at the button, the column -background settings are forgotten.

  package require tablelist

  proc changetl3 {} {
      global tl3
      set tl3 [list]
      lappend tl3 [list "" ""]
      .tl3 configure -state disabled
  }

  set cols {
      0 "Column 1" left
      0 "Column 2" left
  }

  lappend tl1 [list foo bar]
  lappend tl2 [list foo bar]
  lappend tl3 [list foo bar]
  for {set i 1} {$i < 4} {incr i} {
      tablelist::tablelist .tl$i \
          -height 4 \
          -columns $cols \
          -background green \
          -listvariable tl$i
  }

  foreach tl {.tl1 .tl2 .tl3} {
      $tl columnconfigure 0 -background white
      $tl columnconfigure 1 -background red
  }
  .tl1 configure -state disabled

  button .b -text "Disable tl3" -command changetl3

  pack .tl1 .tl2 .tl3 .b


tkt_uuid: 2807256fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: Combobox sets X-selection
comment:
  When selecting an item in a Combobox, the X-selection is also set. Personally, I find this "feature" annoying. (I'm not sure about standards compliance, though.)

  The purpose of a combobox is to select an item from a list, not to select characters from a text for copy/paste actions.
  In case there is doubt about the usefulness of this feature, it could be made an option to the Combobox command.

  The attached patch against BWidget 1.8.0 turns this behaviour off.


tkt_uuid: 1484791fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: list
priority: 5 Medium
foundin: None
title: lmap and lfilter procs (like 'lmap' on the wiki)
comment:
  I am used to these two little procs, and I would like
  to see them in tcllib, as I do not want have always to
  'reinvent the wheel'.

  I know that [struct::list map] and [struct::list
  filter] already are in tcllib, but I feel more
  comfortable with the ability, not to define trivial
  procs like :

  proc first {list} {lindex $list 0}
  struct::list map $mylist first

  Here are the ones I like:

  proc lmap {var list cmd} {
      upvar $var elt
      set out ""
      foreach elt $list {
          lappend out [uplevel $cmd]
      }
      return $out
  }
  proc lfilter {var list condition} {
      upvar $var x
      set out ""
      foreach x $list {if {[uplevel expr $condition]}
  {lappend out $x}}
      return $out
  }

  Of course, if we adopt these two, we should
  differentiate  the existing from the new with a prefix.
  'l' seems nice to me, you might prefer something else.

  Hope this will be useful.

  Stéphane Arnold


tkt_uuid: 492563ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: relative domain when parsing email addresses
comment:
  I am submitting a request for a feature for
  mime::
  package.
  If I do mime::parseaddress on some addresses,
  I am getting them parsed against the machine name.
  But I have a very complicated server with a lot of
  domain names pointed to it. I need an option for
  mime::parseaddress to parse addresses relative
  not to machine name but to domain directly provided.
  for example
  set zinfo [mime::parseaddress -mydomain qq.com
  "addr1@qq.com"]
                                  Thank you
                                  Denis Medvedev
  P.S. where is a distribution of tcllib1.1?
  I can't download it from sourceforge - bad requests...
  If you can, please update the distribution of tcllib
  on ftp.scriptics.com - there is only  version 0.8


tkt_uuid: 1061759fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: pop3
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Make pop3 non-blocking
comment:
  Hi,

  I was using tcllib code for a plugin in amsn* to check
  pop3 email. The problem was that every time the email
  was checked it blocked amsn while it was checking.
  Therefore I suggest changing the code such that it is
  non-blocking. I have made a start (and possibly all the
  changes necessary). I made the ::pop3::open, and
  ::pop3::send both non-blocking which I think should
  then include all other functions (haven't looked)?

  Just note that Im not sure which version of pop3 I
  started with (someone else copied the code originally).
  Also in trying to make it non-blocking I went around in
  a couple of circles before getting it correct, so may
  have removed some code that could be reinserted.

  Now that it is complete it is not so hard to
  understand, and I recommend having a look at what I
  have done and possibly implementing it into pop3 in tcllib.

  Also to note, the way I have done it (to make it
  simpler) was that it is blocking to the calling process
  but not the program in entirety. This was ok for what I
  was doing as the calls to it were done by the after
  command which creates a new process and doesn't block
  the whole program.

  If you have any comments or questions don't hesistate
  to contact me at my sf email. Or by posting here.

  Lio.

  *PS The code was copied and a reference that the code
  was from tcllib was made, hope this is ok? if not tell
  me and I will remove.


tkt_uuid: 1567155fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: blowfish
priority: 5 Medium
foundin: None
resolution: Fixed
title: blowfish appending extra NULL chars
comment:
  It appears blowfish is appending some NULL characters 
  at the end of a string when decrypting a string.  I 
  noticed this when I couldn’t get a simple 
  encrypt/decrypt script to work.  Visually, the 
  strings do match but there are “hidden” NULL 
  characters appended to the decrypted string.  I was 
  able to tell that by writing out the string to a file 
  and then performing an octal dump.  Here is this 
  simple script and the result when I run it.


  Thanks

  Al Silverstein
  asilver@net-sense.com


  #!/usr/local/ActiveTcl/bin/tclsh

  package require blowfish
  package require base64

  set KEY abc

  set clear_text secret

  set enc_string [::blowfish::blowfish -dir encrypt -
  mode cbc -iv 12345678  -key $KEY $clear_text]

  set decr_string [::blowfish::blowfish  -dir decrypt -
  mode cbc -iv 12345678  -key $KEY $enc_string]


  puts "Encrypted String is <$enc_string>"

  if { "$clear_text" == "$decr_string" } {
          puts "Success"
  } else {
          puts "clear_text <$clear_text> is NOT equal 
  to decr_string <$decr_string>"
  }

  set aa [open clear_text.txt "w"]
  set bb [open decr_string.txt "w"]

  puts $aa $clear_text
  puts $bb $decr_string

  close $aa
  close $bb


   ---------------------------------------------

  Here is what happens when I run the script:


  asilver@sys-1:~/tcl2> ./blowfish_test2.tcl

  Encrypted String is <Ã½Ã
  clear_text <secret> is NOT equal to decr_string 
  <secret>
  asilver@sys-1:~/tcl2>



  -----------------------------------------------

  Here is the octal dump:

  asilver@sys-1:~/tcl2> od -h clear_text.txt
  0000000 6573 7263 7465 000a
  0000007

  asilver@sys-1:~/tcl2> od -h decr_string.txt
  0000000 6573 7263 7465 0000 000a
  0000011
  asilver@sys-1:~/tcl2>


tkt_uuid: 1253947fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Invalid
title: installer script fails with non-existing directories
comment:
  I updated the complete directory tree for Tcllib, using
  cvs update (without any options) and then ran the
  installer script like this:

  > tclsh installer.tcl

  The only option I set in the GUI that came up was to
  use a "dry run." 

  The script initially failed with error messages from
  [glob] complaining about asn/*.tcl and so on. When I
  removed this and other directories that were not
  present in my directory tree but were listed in
  "installed_modules.tcl", it all worked, that is the
  "dry" installation produced a long list of files that
  were detected and actions that were supposedly taken.

  Presumably I should have used the ./configure script
  and the resulting make file, but "installer.tcl" is
  such an inviting name ;)


tkt_uuid: 503471ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: ftp GET to non-existent directory
comment:
  Hello,

  i started to use ftp package and i have problems with
  this situation:

  set fd [ftp::Open host user passwd]
  ftp:Get $fd file /non-existent-directory

  After timeout it hangs for a long period of time and
  exists with a lot of messsages:

      Error in bgerror: invalid command name "bgerror"
  bgerror failed to handle background error.
      Original error: can't wait for variable
  "::ftp::ftp2(state.data)":  would wait forever
      Error in bgerror: invalid command name "bgerror"
  bgerror failed to handle background error.
      Original error: can't wait for variable
  "::ftp::ftp2(state.data)":  would wait forever
      Error in bgerror: invalid command name "bgerror"


tkt_uuid: 1393564fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
resolution: Fixed
title: erorr in ::math::linearalgebra::angle
comment:
  Hello,

  There is an error in:

  ::math::linearalgebra::angle

  instead of:

  set n1 [norm_2 $vect1]
  set n2 [norm_2 $vect2]

  it should be:

  set n1 [norm $vect1]
  set n2 [norm $vect2]

  or also:

  set n1 [norm_two $vect1]
  set n2 [norm_two $vect2]

  Also, there is no cross product fucnction in the
  package. It is a VERY common need for 3D vectors.

   Regards,


tkt_uuid: 1897841fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: stringprep
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: nameprep test 5 fails
comment:
  sparc solaris 9 , sun c compiler, cvs head for tcl 8.5 and tcllib:

  ---- nameprep-5 start

  ==== nameprep-5 Case folding U+2121 U+33C6 U+1D7BB FAILED
  ==== Contents of test case:

          list [catch {::stringprep::stringprep nameprep  [encoding convertfrom ut
  f-8 $input]} res] $res
      
  ---- Result was:
  1 prohibited_character
  ---- Result should have been (exact matching):
  0 telc?kg?
  ==== nameprep-5 FAILED


tkt_uuid: 1267178fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 8
foundin: None
title: Aes module for tcllib
comment:
  Hi,

  I've written a Tcl-Implementation of the Advanced
  Encryption Standard (AES) for my so-called "individual
  project" at university and thought it might be usefull
  for the tcllib.

  Since it's my first (real) program in Tcl, it may not
  be perfect, but I would be glad, if it would be
  considered helpful in some way.

  I've added a small manpage (in doctools format) and
  test-suite, but I'm not sure if I did it the way it is
  desired. So tell me if something is missing or can be
  improved.

  Thorsten 


tkt_uuid: 1852685fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: ip
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ::ip::isOverlap should support IPv6
comment:
  ::ip::isOverlap should support IPv6

  tcl>package require ip
  1.1.1
  tcl>::ip::isOverlap 10.35.1.0/24 10.35.1.5
  1
  tcl>::ip::isOverlap 2002:0a23:0100::/80 2002:0a23:0100::5 
  Error: expected integer but got "2002:0a23:0100::"


tkt_uuid: 1043581fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: SelectFont: add a -relief option?
comment:
  Hi all,

  I am facing a problem with the SelectFont command 
  from the BWidget toolkit. SelectFont is a dual "nature" 
  command, as it can present itself as a dialogo or a 
  toolbar.
  I am trying to use it as a toolbar. However, in toolbars 
  usually all widgets have a flat relief, whcih changes to 
  raised when the mouse gets over a widget. This, cannot 
  be done with the current implementation of SelectFont, 
  which does not even have a -relief option. It would be a 
  good idea to at least add a "-relief" option to the 
  widget, even if it applies to all the internal sub-widgets 
  simultaneously...

  George


tkt_uuid: 1040372fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
title: generalise ::fileutil::stripPwd to any prefix
comment:
  It would be useful if stripPwd was [stripPrefix
  $somepath $someprefix] which returned a path relative
  to $someprefix, instead of only [pwd].
   


tkt_uuid: 782735ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Fixed
title: import file
comment:
  documentation refers to [importFile] but implementation 
  still has [import_file]

  attempt to invoke import_file gives
  invalid command name "pre"

  which is not surprising


tkt_uuid: 1046955fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget 1.7.0: Tree::insert does not find parent node
comment:
  To the maintainer of BWidget's Tree widget:

  When inserting an element into a parent tree node which
  contained an ampersand (&) in the node name, this
  parent node is not found and an error is issued by
  Tree::insert.

  The following code shows the behaviour:

  package require BWidget 1.7
  frame .ftop
  pack .ftop
  set sampleTree .ftop.tsample
  Tree $sampleTree
  pack $sampleTree
  $sampleTree insert end root "/First&IT" -text "First&IT"
  $sampleTree insert end "/First&IT" "Abc" -text "Abc"

  The error is:

  node "/First&IT" does not exist
      while executing
  "Tree::insert .ftop.tsample end /First&IT Abc -text Abc"
      ("eval" body line 1)
      invoked from within
  "eval [linsert $args 0 Tree::$cmd .ftop.tsample]"
      (procedure ".ftop.tsample" line 1)
      invoked from within
  "$sampleTree insert end "/First&IT" "Abc" -text "Abc""
      (file
  "/home/users/roger/Dev/TclTk/Singles/treetest.tcl" line 17)

  When removing the "&" character from the insert
  commands it works.

  The attached one-line patch solves the problem: The
  parent node name is not converted to canonical form
  with _node_name before checking if the array entry exists.

  The patch does the following:

  set parent [_node_name $path $parent]

  This call overwrites parent with the canonical (mapped
  special characters) node name, add this line just
  before the [info exists data($parent)] line.

  The patch worked fine for me. I did not check the rest
  of the tree.tcl for other missing _node_name calls --
  maybe there are more...

  -- Roger

  PS: Thanks for the cool Tree widget!


tkt_uuid: 567428ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: problem with tmml documentation
comment:
  The following modules have a problem with the way their
  tmml documentation generates nroff:

  counter/counter.man
  fileutil/fileutil.man
  ftp/ftp.man
  ftpd/ftpd.man
  html/html.man
  irc/irc.man
  javascript/javascript.man
  log/log.man
  math/combinatorics.man
  math/math.man
  mime/mime.man
  mime/smtp.man
  ncgi/ncgi.man
  nntp/nntp.man
  pop3/pop3.man
  profiler/profiler.man
  report/report.man
  smtpd/smtpd.man
  stooop/stooop.man
  textutil/expander.man

  The nroff that gets generated starts out with:

  '\" -*- tcl -*- doctools manpage

  But that causes Sun's nroff to fail to format the man page.
  The error that is caused says:

  $ man -s n counter
  Reformatting page.  Wait...unknown preprocessor specifier -


tkt_uuid: 614591ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::namespace::cmd vs namespace::cmd
comment:
  In some modules - control and mime, for instance,
  commands don't start with a leading '::'.  In most of
  the rest of them, :: is used.  This should be
  consistent throughout.


tkt_uuid: 564767ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: profiler
priority: 5 Medium
foundin: None
resolution: Fixed
title: Missing variable initialization in dump
comment:
  The result var in profiler::dump is not initialized. This leads
  to a runtime error when [array names callCount $pattern] 
  returns an empty list.

  FIX: 

  proc ::profiler::dump {{pattern *}} {
      variable callCount
      variable compileTime
      variable totalRuntime
      variable callers
      variable descendantTime
      variable descendants
      variable statTime

      foreach name [lsort [array names callCount $pattern]] {

  ###############    FIX here  
  set result [list];
  ###############    FIX end

  set i [expr {[string length $name] + 1}]

  ...


tkt_uuid: 2054498fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Race condition in ftp::Get -variable
comment:
  While using the METAR package by Jos Decoster (http://wiki.tcl.tk/19635) I frequently get an error from the ftp package:

  can't read "ftp(GetData)": no such element in array
      while executing
  "set returnData $ftp(GetData)"
      (procedure "::ftp::StateHandler" line 778)
      invoked from within
  "::ftp::StateHandler 0 sock19"
  Error in plug-in weather:
  can't read "ftp(GetData)": no such element in array
      while executing
  "set returnData $ftp(GetData)"
      (procedure "::ftp::StateHandler" line 778)
      invoked from within
  "::ftp::StateHandler 0 sock19"

  Investigation shows that this appears to be caused by a race condition between the data and control socket. The error shows up when the control event handler sees the "226 File send OK" report before the event handler on the data socket fires and processes the incoming file contents.

  Here's the log with VERBOSE and DEBUG on:

  debug      | Starting new connection with: 
  debug      |   no option
  debug     control | C: Connection from 140.90.128.71:21
  debug      | -> rc="220"
  -> msgtext="220 Authorized users only. All activity may be monitored and reported."
  -> state="user"
  debug      | ---> USER anonymous
  debug     control | C: 220 Authorized users only. All activity may be monitored and reported.
  debug      | -> rc="331"
  -> msgtext="331 Please specify the password."
  -> state="passwd"
  debug      | ---> PASS anonymous
  debug     control | C: 331 Please specify the password.
  debug      | -> rc="230"
  -> msgtext="230 Login successful."
  -> state="connect"
  debug     control | C: 230 Login successful.
  debug      | -> rc="   "
  -> msgtext=""
  -> state="type"
  debug      | ---> TYPE I
  debug      | -> rc="200"
  -> msgtext="200 Switching to Binary mode."
  -> state="type_sent"
  debug     control | C: 200 Switching to Binary mode.
  debug      | -> rc="   "
  -> msgtext=""
  -> state="cd"
  debug      | ---> CWD data/observations/metar/stations
  debug      | -> rc="250"
  -> msgtext="250 Directory successfully changed."
  -> state="cd_sent"
  debug     control | C: 250 Directory successfully changed.
  debug      | -> rc="   "
  -> msgtext=""
  -> state="get_active"
  debug     data | D: Port is 33870
  debug      | ---> PORT 192,168,1,2,132,78
  debug      | -> rc="200"
  -> msgtext="200 PORT command successful. Consider using PASV."
  -> state="get_open"
  debug      | ---> RETR EHAM.TXT
  debug     control | C: 200 PORT command successful. Consider using PASV.
  debug      | -> rc="150"
  -> msgtext="150 Opening BINARY mode data connection for EHAM.TXT (62 bytes)."
  -> state="get_sent"
  debug     control | C: 150 Opening BINARY mode data connection for EHAM.TXT (62 bytes).
  debug      | -> rc="226"
  -> msgtext="226 File send OK."
  -> state="get_close"
  debug     data | D: Connection from 140.90.128.71:20
  debug     data | D: Port closed

  I guess the error will only show up for small files. On larger files I can imagine that the last part of the file may be missing, but I haven't actually seen that happen.

  I haven't yet come up with a solution for this problem. I fear it's not going to be straight forward. Temporarily removing the fileevent from the control socket may be a possibility.


tkt_uuid: 1242740fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: Error in tkcat::addAction
comment:
  In the wild, with tkchat v1.301 I got abrupt the error:


  can't read "tags": no such variable
  can't read "tags": no such variable
      while executing
  "$w insert $mark "\n" $tags"
      (procedure "::tkchat::addAction" line 38)
      invoked from within
  "::tkchat::addAction .txt $color $nick $msg $mark
  $timestamp $opts"
      (procedure "::tkjabber::parseMsg" line 47)
      invoked from within
  "::tkjabber::parseMsg $from $m(-body) $color end
  $timestamp"
      ("groupchat" arm line 23)
      invoked from within
  "switch -- $type {
          chat {
              set from $m(-from)
              set w .txt
              set name $from
              if { [regexp {([^/]+)/(.+)} $m(-from) ->
  conf name] } {
                  i..."
      (procedure "::tkjabber::MsgCB" line 42)
      invoked from within
  etc.


  Can't say, what triggered this, but it seems, that
  tkchat::addAction is too credulous. In the line 

    $w insert $mark "\n" $tags

  it depends on the variable tags to exist. But this
  variable is only set within this foreach loop in the proc:

      foreach { str url } [parseStr $str] {
         ....
      }

  which will run 0 times, if [parseStr] returns the empty
  list (which is possible, as a look at that proc shows
  and the error msg demonstrates), let tags unset.

   


tkt_uuid: 595240ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
title: patch for mime & mbot example files
comment:
  andreas - attached are two files

  1. a small patch to mime.tcl that makes it more robust with 
  respect to a common mime encoding error

  2. some new files that go under modules/mime/examples/

  thanks!

  /mtr


tkt_uuid: 1763707fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ::ftp::Get returns "" in mode inline + error
comment:
  contrary to the man-page ::ftp::Get returns the empty string when in mode $ftp(inline) and an error occurs.

  -------------------------------------
  % packa requi ftp
  2.4.8
  % set conn [ftp::Open localhost  user pass]
  0
  % set erg [ftp::Get $conn not_existing_file -variable var]
  error     error | E: Error retrieving file "not_existing_file"!:
  error     invalid command name "ftp::Open"
  error         while executing
  error     "ftp::Open localhost  user pass"
  % puts $erg

  %
  ------------------------------------
  This is 7 line before the end of ftp::Get 

  2 lines after that:
  CloseDataConn $s is only called if $ftp(inline) is false.
  Is this correct?

  In the normal configuration I am unable to retrieve the info about the error. Am I suppost to redefine the DisplayMsg for this?

  thanks for your efforts
  Albrecht Mucha MediTec GmbH
  a.mucha at mdtec . de


tkt_uuid: 1060245fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 9 Immediate
foundin: None
resolution: Fixed
title: bee: Corrupt file in CVS
comment:
  File
    modules/bee/examples.torrent
  is corrupt on Windows (missing -kb flag; use 'cvs
  admin' to fix.)


tkt_uuid: 483125ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
resolution: Fixed
title: added features for struct::graph
comment:
  [btw: the Category button at SF does not offer
  a "struct" entry, so this is in the "none"
  category.]

  The attached patch adds some features that I am
  missing in the graph package:

  - set, get, and unset operations for the graph
    itself
  - ability to select arcs and nodes based on their
    associated keyed values

  Feel free to use or ignore.


tkt_uuid: 1377937fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: missing tcl.m4
comment:
  The bwidget 1.7.0 source tarball is missing tcl.m4,
  which is needed by autoconf in order to build the
  configure script.

  Please either include tcl.m4 or generate the configure
  script before making a source tarball.


tkt_uuid: 501210ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Patch for: [ #500890 ] Mainframe ...
comment:
  I suppose I'm the culprit for this bug (forgot to
  protect variables when adding the eval). I've attached
  the patch to resolve this below as I couldn't attach it
  directly to the bug report.

  Regards,
     Bastien


tkt_uuid: 2340355fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Combobox path to entry
comment:
  Hi,

  There is no current method to test the bindings 
  of the entry based on the Combobox widget because 
  the API does not provide the path to the 
  entry.
  Suppose the method "getentry" exists.
  One can generate an event so that the command 
  bound to the entry is fired.

  () 49 % package require BWidget
  1.8
  () 50 % ComboBox .mycbb
  .mycbb
  () 52 % set ntr [.mycbb getentry]
  .mycbb.e
  () 54 % configure .mycbb -command {puts "COUCOU !"}
  () 57 % pack .mycbb
  () 63 % focus -force .mycbb.e;event generate .mycbb.e <Return>
  COUCOU !

  To be able to do this script, I added the following 
  method which returns the path to the entry.

  proc ComboBox::getentry { path } {
      return $path.e
  }

  I would be very pleased if that method was added 
  to BWidget's Entry, or if someone show me another 
  way to do this.

  By the way, thank you for the great work on Tcllib.

  Best regards,

  Michaël


tkt_uuid: 961452ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: plotchart
priority: 5 Medium
foundin: None
resolution: None
title: Plotchart does not handle "missing values"
comment:
  (Reminder)
  Plotchart currently does not handle missing values
  (empty strings). Adding such a feature is not too
  difficult though


tkt_uuid: 769871ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: 2 apparent protocol violations
comment:
  These may not matter but as I'm troublshooting
  obscure failures they come to my attention.

  Disclaimer: I haven't coded much with smtp/mime so my 
  authority for these claims is the O'Reilly 
  book "Programming Internet Email", David Wood.

  1. Wood says the headers for MIME parts should never 
  contain the MIME-version header. Yet they do appear.

  2. Boundary strings should never include '=' yet they do.

  Woods also comments that Content-ID is optional and 
  rare and must be world-unique. Is there value in tcllib 
  mime generating this header?

  Thanks for any clarification,
  Roy Terry
  (still stuck with premature socket close when reloading 
  the mime parts from a file)


tkt_uuid: 547336ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Fixed
title: [package require Trf] twice
comment:
  There are two instances of
  [catch {package require Trf}]
  in smtp.tcl.  When there is no Trf package
  installed, the invokes a costly [tclPkgUnknown]
  in a default Tcl installation.  There's no
  need to pay this price twice.  After the
  first [package require] you have it if it's
  available.  Use [package present] in the second
  instance.


tkt_uuid: 1280862fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: profiler
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: profiler - errorInfo modifiable in enter- & leaveHandler
comment:
  enterHandler and leaveHandler use catch statements to
  test for the existance of certain namespace varibales.

  if these catch statements fire, they modify errorInfo.

  catching an error, and trying to log errorInfo can log
  the wrong information if you are visiting a function
  for the first time.

  can't read
  "::profiler::descendants(process_message,::errlog)": no
  such element in array
      (reading value of variable to increment)
      invoked from within
  "incr ::profiler::descendants($caller,$name)"


  I added
     global errorInfo

      set origError $errorInfo

  to the beginning and

   set errorInfo $origError

  to the end of both enterHandler and leaveHandler.


tkt_uuid: 1047058fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: md5
priority: 5 Medium
foundin: None
resolution: Fixed
title: document end of options switch -- for md5 2
comment:
  The md5 package has trouble with strings containing -
  as first character, so there is support for -- as end
  of options...

  example:

  # this errors
  md5::md5 -hex -flabber
  # this does not
  md5::md5 -hex -- -flabber

  So everything is fine, but the switch isn't documented....

  Optionally it could be an idea to just interpret the
  last argument as string if neither -file nor -channel
  is given and only one argument is left, would safe md5
  from the classical nuisance we have with switch...


  Michael


tkt_uuid: 1613224fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: too much braced message header values (::mime::getheader)
comment:
  Hello,

  currently experienced, that an eMail had for one message part a Content-ID like "abc$def$ghi@jklmnop".

  Using ::mime::getheader on that message part returned:

      % set header [::mime::getheader ::mime::3-2]
      Content-ID {{<002401c71848_6fba22d0$a500a8c0@dittc48ca0f6af>}}
      % dict get $header Content-ID
      {<002401c71848_6fba22d0$a500a8c0@dittc48ca0f6af>}
      % ::mime::getheader ::mime::3-2 Content-ID
      {<002401c71848_6fba22d0$a500a8c0@dittc48ca0f6af>}

  I expected to get a once-braced value, but not a twice-braced value.

  I used the mime package v1.5 from the tcllib 1.9 in tcl/tk 8.4.13 and 8.5a4.

  IMHO this is a misbehaviour, a bug.

  Thanks,

  Martin Lemburg


tkt_uuid: 1800420fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: doctools nroff output for type/arg reversed
comment:
  This markup:


    [section Arguments]
    [list_begin arguments]

    [arg_def [type Ns_Sls] *sls in/out]

    An opaque SLS slot handle.


  Produces this HTML output:


    ARGUMENTS

    Ns_Sls *sls (in/out)
      An opaque SLS slot handle.



  Which is correct. The nroff output looks like this:


    ARGUMENTS
      *sls Ns_Sls (in/out)
        An opaque SLS slot handle.


  The type and argument names have switched position, which looks weird.


tkt_uuid: 636977ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: uri
priority: 5 Medium
foundin: None
title: news scheme not recognized
comment:
  The 'news' and 'nntp' schemes are not implemented. 
  These aren't that uncommon.  I will see about doing
  this if I have a moment.


tkt_uuid: 436386ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 3 Low
foundin: None
resolution: Works For Me
title: BWidget demo bug
comment:
       In the BWidget demo, choose the 'Dialog' tab, 
  then select 'Abort, Retry, Ignore' in the 'Message 
  Dialog' frame.  Click 'Show', and an error message 
  appears "Error: Bad default value "": must be...".  
  The stack trace is:

  bad -default value "": must be abort, retry, ignore, 
  ok, cancel, no, or yes
      while executing
  "tk_messageBox -icon info -default {} -message 
  {Message for MessageBox} -type abortretryignore -title 
  Information"
      ("eval" body line 1)
      invoked from within
  "eval tk_messageBox [array get tkMBoxArgs"
      (procedure "MessageDlg::create" line 80)
      invoked from within
  "MessageDlg::create .msgdlg -parent . -message 
  {Message for MessageBox} -type abortretryignore -icon 
  info -buttons {}"
      ("eval" body line 1)
      invoked from within
  "eval MessageDlg::create $path $args"
      (procedure "MessageDlg" line 1)
      invoked from within
  "MessageDlg .msgdlg -parent .  -message "Message for 
  MessageBox"  -type    $msg(type)  -icon    $msg
  (icon)  -buttons $msg(buttons)"
      (procedure "DemoDlg::_show_msgdlg" line 5)
      invoked from within
  "DemoDlg::_show_msgdlg"
      invoked from within
  ".mainframe.frame.nb.fdemoDlg.titf3.f.but invoke"
      ("uplevel" body line 1)
      invoked from within
  "uplevel #0 [list $w invoke]"
      (procedure "tkButtonUp" line 9)
      invoked from within
  "tkButtonUp .mainframe.frame.nb.fdemoDlg.titf3.f.but
  "
      (command bound to event)


tkt_uuid: 3163541fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: grammar_peg
priority: 5 Medium
foundin: None
resolution: Fixed
title: Possibly wrong call of ict_match_token
comment:
   in line 116 of grammar_peg/peg_interp.tcl:
              ict_match_token "Expected $ch"
  should read
              ict_match_token $ch "Expected $ch"

  See, e.g. <http://wiki.tcl.tk/15512> for more details


tkt_uuid: 709123ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::csv::split with | as separator
comment:
  I am trying to use ::csv::split2matrix with | as the
  separator char.

  set trec "REC|DPI|AD1|AD2|AD3"
  set sepchar "|"
  set line [::csv::split $trec $sepchar]
  puts $line

  - -----> {"} {} {"REC} DPI AD1 AD2 AD3

  set trec "REC,DPI,AD1,AD2,AD3"
  set sepchar ","
  set line [::csv::split $trec $sepchar]
  puts $line

  - -----> REC DPI AD1 AD2 AD3


tkt_uuid: 3425271fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Installation
priority: 5 Medium
foundin: None
resolution: Accepted
title: Template files not installed
comment:
  The *.template files for "page" are not installed, needed by certain parser generators.
  Their lack causes the app "page" to err out by default.
  Patches to installer use "_trt" - suggested abbreviation, maybe not the best choice.
  Also included a patch to the "page" demo to add the installed "page" dir to the auto_path so that the plugins can be found; probably not the best solution, take as suggestion, reminder. :)


tkt_uuid: 1531199fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: add color chooser to font selector
comment:
  Hi,

  for the aMSN project we modified the bwidget library a
  bit, one of the changes that might be nice to include
  upstream is the addition of a color chooser in the font
  selector. The patch attached is how this is done in the
  modified amsn bwidget, it also adds an option to not
  show the size selector (this is because in msn chats
  you have no way of specifying the size of you outgoing
  messages)

  I hope these changes can be done upstream.

  Kind regards,

  Sander Hoentjen


tkt_uuid: 700781ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: tkchat - Hide Users doesn't scroll userlist
comment:
  when I pop up the Visibility->Hide Users menu, the
  result is a huge series of checkboxes so large that the
  list proceeds off screen, unable to access them all.

  Either a scrollbar is needed for the list, or something
  other than a menu popup is needed.

  Also, if hide users doesn't hide IRCbridge users, then
  that functionality probably should be fixed.  That was
  what I was looking for in fact when I discovered the
  problem ...


tkt_uuid: 634258ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Invalid
title: package require tcllib returns "Don't ..
comment:
  etc. -- it seems this is a bit unconventional and
  really belongs in the docs --- package require
  <package> should  return package <package> not found or
  a version string. I expect to load a tcllib package
  when I do a package require so that I can maintain my
  code and still upgrade -- instead I get programming
  instructions..  


tkt_uuid: 1016141fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pop3d
priority: 5 Medium
foundin: None
resolution: Fixed
title: pop3d test suite reports package version conflict
comment:
  platform: sparc solaris 8
  tcl: 8.5a2 cvs snapshot
  tcllib: latest cvs snapshot

  From: "Andreas Kupries" <andreask@activestate.com>

  > Module: pop3
  > modules/pop3/pop3.test
  > - tcltest 2.2.6
  > - pop3    1.6.1
  >
  > Module: pop3d
  > modules/pop3d/pop3d.test
  > skipped pop3d.test: conflicting versions provided for
  package
  > "md5": 2.0.1, then 1.4.3
  > modules/pop3d/pop3d_dbox.test
  > skipped pop3d_dbox.test: conflicting versions
  provided for
  > package "md5": 2.0.1, then 1.4.3
  > modules/pop3d/pop3d_udb.test
  > - pop3d::udb 1.1
  >
  > Any ideas what might be going on here?

  Something loaded the v1 md5, some other part wants md5
  v2, and the package
  system of the core balks at the conflict. Bug.


tkt_uuid: 2593520fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: json
priority: 5 Medium
foundin: None
resolution: Fixed
title: json one-line fix for number parsing
comment:
  in json::_json2dict, when parsing a number value
  (line 192ff.), the code essentially does:
  string is double -failindex last $txt
  set num [string range $txt 0 [expr {$last - 1}]]

  WHAT: this code works fine for cases like
  attr: 123,
  but not for cases with whitespace after the number,
  e.g. if it's the last attribute of an object
  attr: 123
          }

  WHY: due to "last" being set to failindex
  (the character that fails the "is double" test),
  the resulting "num" also contains all whitespace
  after the number and before the failing char.

  FIX: add a "string trimright" to the num definition.


