# ticket

tkt_uuid: 2031231fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Out of Date
title: webchain integration
comment:
  Adding these lines to function tkjabber::parseMsg will hide the 'webchain' bridge name in tkchat:

  }
  +    } elseif { $nick eq "webchain" } {
  +set nick [lindex $msg 0]
  +set msg [lrange $msg 1 end]        
      } elseif { $nick eq $::Options(JabberConference) } {

  Kind regards,

  Jos.


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: 2526629fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: spf
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: SPF package is apparently dysfunctional
comment:
  SPF package (version 1.1.1) does not work.

  % package require spf
  1.1.1
  % spf::spf 1.2.3.4 example.com bob@example.com
  none
  % spf::SPF example.com
  =spf1 ip4:127.1.28.7 -all
  % package present dns
  1.3.3



  Applying the following diff to "spf.tcl" results in correct operations:
  --- spf.tcl     2009-01-21 13:09:37.450402473 -0500
  +++ spf.tcl.fixed       2009-01-21 12:57:04.043184940 -0500
  @@ -579,7 +579,7 @@
               set ndx [lsearch $res rdata]
               incr ndx
               if {$ndx != 0} {
  -                append txt [string range [lindex $res $ndx] 1 end]
  +                append txt [lindex $res $ndx]
               }
           }
       }


  Correct operation output:
  % ::spf::spf 1.2.3.4 example.com bob@example.com
  -
  % spf::SPF example.com
  v=spf1 ip4:127.1.28.7 -all


tkt_uuid: 1908510fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Submission: fileutil::globfind
comment:
  globfind is designed as a fast and simple alternative to fileutil::find.  It takes advantage of glob's ability to use multiple patterns to scan deeply into a directory structure in a single command, hence the name.

  It is two to three times faster than fileutil::find, and somewhat faster than perl's standard directory traversal utility, File::Find.

  See http://wiki.tcl.tk/19762 for performance details.

  Some example filter commands are included for use with globfind: one powers a wrapper proc that duplicates the function of a subset of the Gnu find utility's parameters; another performs directory syncing.


tkt_uuid: 2815302fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
resolution: Fixed
title: Wrong usages of struct::set substract
comment:
  There are some wrong usages of "struct::set substract" command in graphops.tcl - Fleury and TarjanSub procedures and possibly more. 

  As "struct::set substract" works well only for arguments not containing whitespaces, changing it to "struct::set exclude" fixes the problem.


tkt_uuid: 1695126fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: doctools - Add backend 'wordlist'
comment:
  Create a backend which extracts all plain text words found in the input document and returns a list of them.


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: 1416723fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: cmdline
priority: 5 Medium
foundin: None
resolution: Fixed
title: cmdline: test suite bugs
comment:
  with -debug 1:

  * cmdline 1.2.4
  WARNING: removeFile removing "/local/src/tcllib/script":
    not created by makeFile
  WARNING: removeFile removing "/local/src/tcllib/script":
    not a file
  modules/cmdline/typedCmdline.test
  - tcllib::testutils 1.0
  * cmdline 1.2.4
  test name 'cmdline-6.1' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-6.2' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-6.3' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-6.4' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-6.5' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-6.6' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-6.7' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-6.8' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-6.9' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-6.10' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-6.11' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-7.1' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-7.2' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-7.3' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-7.4' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-7.5' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-7.6' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-7.7' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-7.8' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-7.9' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-7.10' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-7.11' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-7.12' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-7.13' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-7.14' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test
  test name 'cmdline-7.15' re-used; prior use in
  /local/src/tcllib/modules/cmdline/cmdline.test


tkt_uuid: 1450231fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: linearalgebra
priority: 5 Medium
foundin: None
resolution: None
title: ::math::linearalgebra::transpose not exported
comment:
  it is necessary to add

  namespace eval ::math::linearalgebra {
  namespace export transpose
  }

  to package math::linearalgebra


tkt_uuid: 3000165fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: include an attribute parser
comment:
  htmlparse currently provides the uninterpreted tag attributes to the callback function.  It would be useful if the package provided a standard way to parse these attributes instead of every user needing to do it themselves.


tkt_uuid: 1416765fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: linearalgebra
priority: 5 Medium
foundin: None
resolution: Fixed
title: linearalgebra: test suite bug
comment:
  with -debug 1:
  * math::linearalgebra 1.0
  test name 'symmetric-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/linalg.test
  test name 'svd-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/linalg.test


tkt_uuid: 1642275fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: word_encode bombs on empty input
comment:
  since the last commit of file mime.tcl (CVS Head, 1.54), the function word_encode bomps on empty strings.
  Attached patch fixes it, supposed that it is the right thing to return an empty string on an empty input.


tkt_uuid: 1680176fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: set
priority: 5 Medium
foundin: None
resolution: Fixed
title: struct::set returns opaque error msg on invalid arguments
comment:
  unclear on the usage of struct::sets, I tried various things.  unfortunately, until you hit upon the exact correct syntax, you receive a rather mysterious error message.

  % package require struct
  2.1

  # this is invalid b/c first arg to subtract must
  # be a set/list, i.e. $somelist
  % struct::set subtract {a b} {a b c}
  % set abc [list a b c]
  a b c
  can't read "A": no such variable

  # arguments in wrong order:
  % struct::set subtract {a b} abc
  can't read "A": no such variable

  # giving $abc instead of abc
  % struct::set subtract $abc {a b}
  can't read "A": no such variable

  # ah!  now I've got it:
  % struct::set subtract abc {a b}
  % puts $abc
  c


  nathan/grarp
  ndparrish@yahoo.com


tkt_uuid: 946856ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 7 High
foundin: None
title: Enhance uri command
comment:
  I would like to generate a URL link in the output (html)
  where the displayed text is something other than the 
  link itself. The uri command doesn't seem to allow this. 
  In other words, I want to say

  [uri "http://foo.com" FOO] 

  and have it generate 

  "<a href='http://foo.com'>FOO</a>".


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: 1042122fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Out of Date
title: Combobox: placement of dropdown list strange - near bottom
comment:
  The dropdown part of a combobox gets posted near the
  top of the screen when the combobox is too close to the
  bottom edge.

  This is with BWidget 1.6


tkt_uuid: 652140ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: smtpd
priority: 5 Medium
foundin: None
resolution: Rejected
title: HELO and EOL cumulative patches
comment:
  I've noticed a small bug in smtpd triggered by MS
  Outlook. Sometimes, when you send a PDF file attached
  to a message, Outlook sets the MIME type to
  "quoted-printable" and the file is not base-64 encoded.

  Since we read one line at a time, lines ending with
  CR+LF will be converted by TCL in LF only; this causes
  errors
  with both Acroread and ghostview.

  The patch splits the DATA section on LF only; CR is
  considered a normal character; includes (and thus
  obsoletes) the previously submitted patches for 
  hostname in HELO, QUIT, etc...


tkt_uuid: 2103920fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: ico
priority: 5 Medium
foundin: None
resolution: Works For Me
title: Problems with package ico
comment:
  Hi,

  I have found some problems using ico package and I have tried to repair them as far as I could:

  It appears that variable "RES($file,group,$name,members)" in procedure "::ico::getIconMembersEXE" doesn't always exist. Using 

  set n [icons $file]
     RES($file,group,$n,members)

  instead current variable,correct information is returned.


  On the other hand, I have found that variable "RES($file,icon,$name,data)" when calling procedure "::ico::writeIconEXE" only has three elements in my case, so there is an error message. It could be avoided using:
      
      if {![string match "* $w $h $bpp" $RES($file,icon,$name,data)] && [llength $RES($file,icon,$name,data)] == 4} {
          return -code error "icon format differs from original"
      }
      if {![string match "$w $h $bpp" $RES($file,icon,$name,data)] && [llength $RES($file,icon,$name,data)] == 3} {
          return -code error "icon format differs from original"
      }

  Finally, when the icon of an executable is modified, the final executable's icon (depending on the size selected) is not shown in Windows Vista. It appears theres is something wrong with the masks in some icon size.

     set and [getAndMaskFromColors $data]
     set xor [getXORFromColors $bpp $data]


tkt_uuid: 1482926fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: Add /eval to tkchat to be able to try out one-liners
comment:
  I have tkchat run most of the time and sometimes I just 
  want to test 1 liners like regexp/lsearch switches/
  string is ... and so on. I then tend to run tkcon, but 
  I guess it would be easier to just check in tkchat.

  A simple implementation is as follows (could be 
  expanded to distinct break/continue/return/error):

  proc ::tkchat::checkCommand { msg } {
      switch -re -- $msg {
        (...)
  {^/eval\s} {
      set evalCode [catch [string range $msg 6 end] 
  evalResult]
      switch -- $evalCode {
  0 {
      if {![string equal $evalResult ""]} {
  tkchat::addMessage .txt "" "" 
  "Result:\t$evalResult" ACTION end [clock seconds]
      }
  }
  default {
      tkchat::addMessage .txt "" "" "Error 
  ($evalCode):\t$evalResult" ACTION end [clock seconds]
  }
      }
  }


tkt_uuid: 792775ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Duplicate
title: BWidgets 1.6.0 BUG: tk crashes when selecting interdependent
comment:
  I am not sure if this is a bug or not. I am running 
  tcl8.3/tk8.3 with BWidgets 1.6.0. The application 
  crashes.


tkt_uuid: 3164978fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: nmea
priority: 9 Immediate
foundin: None
resolution: Not Applicable Here
title: missing procs or wrong man
comment:
  According to http://tcllib.sourceforge.net/doc/nmea.html there are two procs: ::nmea::close_port 
   and ::nmea::close_file, which don't seem to have been implemented.

  There is a proc ::nmea::close, so either the documentation should be changed or the procs will have to be implemented.
  I prefer the latter.


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: 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: 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: Deleted
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: 2835744fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: widget
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: widget:dialog button handling bug?
comment:
  The comments in the "close" method claim:
      # 'break' return code - don't withdraw
      # Withdraw on anything but 'break' return code
  for the handling of the results from the "-command" callback.

  However, as I found out this is not true if the dialog is configured -synchronous 1 (default).
  In that case the method "display" unconditionally withdraws the dialog.

  This affects -type okcancelapply, as the apply button will not act like it should, i.e. apply changes, keep dialog open.

  My guess is that this is a limitation of the "-synchronous 1" mode, and it simply has to be documented.

  The workaround is to make the dialog "-synchronous 0".
  I guess that is sensible anyway, due to the use of a "-command" callback.


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

  * doctools 1.2
  test name 'doctools-6.13' re-used; prior use in
  /local/src/tcllib/modules/doctools/doctools.test


tkt_uuid: 1540261fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Installation
priority: 9 Immediate
foundin: None
resolution: Fixed
title: dont reflect new sak interface
comment:
  In Makefile.in is dont reflected new sak interface

  simple patch for instalation here:

  --- Makefile.in 2005-09-28 06:51:19.000000000 +0200   
                           
  +++ Makefile.in-patched 2006-08-13 17:13:09.000000000
  +0200                     
  @@ -96,17 +96,17 @@                                   
                           
                                                        
                           
                                                        
                           
   html-doc:                                            
                           
  -       $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/sak.tcl`
  html                       
  +       $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/sak.tcl`
  doc html                   
   nroff-doc:                                           
                           
  -       $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/sak.tcl`
  nroff                      
  +       $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/sak.tcl`
  doc nroff                  
   tmml-doc:                                            
                           
  -       $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/sak.tcl`
  tmml                       
  +       $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/sak.tcl`
  doc tmml                   
   wiki-doc:                                            
                           
  -       $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/sak.tcl`
  wiki                       
  +       $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/sak.tcl`
  doc wiki                   
   latex-doc:                                           
                           
  -       $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/sak.tcl` ps
                          
  +       $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/sak.tcl`
  doc ps                     
   list-doc:                                            
                           
  -       $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/sak.tcl`
  list                       
  +       $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/sak.tcl`
  doc list                   
                                                        
                           
   check:                                               
                           
          $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/sak.tcl`
  validate                   

  thanks
  wohnivec@dix.cz


tkt_uuid: 995545ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: record
priority: 5 Medium
foundin: None
resolution: Out of Date
title: package require struct::record does not work
comment:
  as described above 

  package require struct::record
  can't find package struct::record


  however

  package require struct
  namespace import ::struct::record

  does work

  this does not match the documentation!!!

  tcllib1.6


  from garyt@bmb.leeds.ac.uk


tkt_uuid: 772491ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 7 High
foundin: None
title: doctools: html out - generate in-document toc (of sections)
comment:
  HTML output should not only have
  a generated synopsis, but also a generated table of 
  contents (= list of sections in the file) at the head of 
  the file.


tkt_uuid: 2906306fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
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: 2821416fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: smtp should not use [vwait]
comment:
  Since the smtp client uses [vwait] to run asynchronously, it cannot be used within an application which also uses [vwait].  Since that includes any networking program of any complexity, the smtp client's utility is substantially reduced.

  I have an event-driven smtp client written using coroutines and tcloo which doesn't suffer from this problem, to which you are welcome.

  The same problem appears (on cursory grepping) to be evident in several other tcllib networking packages including ldap, ftp and comm.


tkt_uuid: 570227ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Works For Me
title: crc32 not like zlib crc (with patch)
comment:
  This may be a moot point, but...

  I am using the pure Tcl version of the crc32 package to 
  calculate crc's to match with crc's created from the zlib 
  version of crc code.  I found that the following change 
  would correct the Tcl crc32 to return the same value as 
  the zlib c code returns.  In the procedure crc::Crc32_tcl, 
  change the inital setting of crcval as follows:

       set crcval [expr {$seed ^ 0xFFFFFFFF}]

  I'm not using Trf so I don't know what crc code it uses or 
  if this change breaks that compatibility.  I had figured 
  this crc package was the same as zlib; and I expect 
  others may too.

  Hope this helps


tkt_uuid: 1346299fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tklib :: ctext
priority: 2
foundin: None
resolution: Not Applicable Here
title: ctext module dir contains obsolete files
comment:
  The ctext module dir contains file which are obsolete
  since the inclusion in tklib. This is the case at least
  for ctext/installer.tcl but may be true for other files
  related to installation.


tkt_uuid: 454505ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget bug: Label (+ 1 line patch)
comment:
  The balloon helptext of a Label widget does not get
  updated in subsequent configures.

  Test:
  set l [Label .l -text test -helptext "first helptext"]
  pack $l
  $l configure -helptext "second helptext"

  Patch:
  I presume it's a typo. File: label.tcl
  proc: BWLabel::configure { path args } 

  Change the line:     
      DynamicHelp::sethelp $path $path
  to
      DynamicHelp::sethelp $path $path.l

  (last line before return)


tkt_uuid: 3042811fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: json
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: huddle bug in dicts with complex keys
comment:
  package require huddle

  set bb [huddle create {a b} b c d]
  puts [huddle jsondump $bb]

  Run it, it produces:

  key "{a b}" not known in dictionary
      while executing
  "dict get $src $key"
      (procedure "::huddle::_dict_setting" line 22)
      invoked from within
  "$types(callback:$tag) get_sub $src $path"
      (procedure "_get2" line 4)

  I presume there's something in huddle which inappropriately deals with complex key cases.


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: 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: 1397543fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Snit v2 not handling tcl8.5 return -options
comment:
  Since snitv2 runs under tcl8.5, I think CallInstance
  needs to handle the extended error options available
  under 8.5, so suggest the following amendment:


  proc ::snit::RT.CallInstance {selfns args} {
      upvar ${selfns}::Snit_instance self

      set retval [catch {uplevel 1 [linsert $args 0
  $self]} result eo]

      if {$retval} {
              return -code $retval -options $eo $result
      }

      return $result
  }

  Although, now I think about it, it doesn't really make
  sense to trap the errors merely to re-throw them, so it
  might be best to just make it this:


  proc ::snit::RT.CallInstance {selfns args} {
      upvar ${selfns}::Snit_instance self

      return [uplevel 1 [linsert $args 0 $self]]
  }

  Or even this:

  proc ::snit::RT.CallInstance {selfns args} {
      upvar ${selfns}::Snit_instance self

      return [$self {expand}$args]
  }


tkt_uuid: 2220156fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Several questions about Snit objects
comment:
  I have a few questions on Snit objects (see:  http://wiki.tcl.tk/2831 for some details - the example near the end)

  1. Is it possible to _clone_ an object? 
     I ask because I want to "chain" methods from various 
     objects. In my example: to combine different 
     transformations into a single one.

  2. Is the command install only available at creation 
     time? If not, I would like to use it to vary the 
     components after the object has been created, to
     make its behaviour more dynamic.

  3. Is the delegate command only available when 
     defining the type?

  (The reasons for questions 2 and 3 are that I would like 
  some dynamic behaviour of the objects, beyond options
  and variables. Mostly, perhaps, because I am 
  experimenting with Snit, to get a feel for the style
  of programming)
   


tkt_uuid: 744095ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 8
foundin: None
title: file output for dtp
comment:
  Would it be possible to add a subcommand for dtp, or to add an 
  arg to doc subcommand to switch output from stdout to a 
  file.

  For example :

  dtp doc html graph.man 
  graph.html

  or :

  dtp filedoc graph.man 
  ?graph.html?


tkt_uuid: 607749ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: BWidget ListBox/Tree Selection Outline
comment:
  I Would also like to ask to expose two new options in 
  the listbox and tree widgets: 
   
    -selectoutline and -selectoutlinestipple 

  which would control the outline and stipple of the  
  selection rectangle in the canvas so it would be possible 
  to have it look like the windows selection in Listboxes 
  that have usually a black outline with a dashed stipple

  thanks
  /NL


tkt_uuid: 2014325fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: cmdline
priority: 5 Medium
foundin: None
resolution: Fixed
title: couldn't set variable "dummy"
comment:
  you get the error message 'couldn't set variable "dummy"'
  when sourcing cmdline.tcl in case of the existence of
  a global array (!) variable ::dummy.

  try, for example:

  echo 'array set dummy {a 1}; package require cmdline' | tclsh8.5
   
  patch:

  insert "variable dummy" within the context of
  "namespace eval ::cmdline {...}"

  ... near line 449 in cmdline.tcl, version 1.3,
  as in tcllib1.10

   


tkt_uuid: 1580120fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: snit
priority: 7 High
foundin: None
resolution: Fixed
title: Allow -class to be passed to snit::widget
comment:
  Attached is a patch that allows -class to be passed as
  an option to snit widgets.  This allows widgets like
  tklib's widget::scrolledwindow to be created with:

  widget::scrolledwindow .s -class SpecialScroller

  or used as a widgetadaptor like so:

  snit::widgetadaptor Scrolltree {
      ....
      constructor {args} {
  installhull using widget::scrolledwindow \
               -class Scrolltree
  install tree using treectrl $win.tree ...

  I think this is a natural extension to Snit and should
  be drop-in (backwards) compatible.  It just changed the
  undefined widgetclass behavior to allow for setting
  -class on the command line.


tkt_uuid: 1213545fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: mime: Provide getheaders and getbody (enhancement)
comment:
  I've been trying to use the mime package for HTTP form 
  data (see <http://wiki.tcl.tk/FileUploadWithTclSHttp>).  
    
  The http package wants additional HTTP headers as a list, 
  and the content-type separately. 
   
  The mime package doesn't have a getheaders method returning 
  a list of headers and getbody doesn't work for multipart. 
  I think buildmessage should be split into those two functions. 
  It's easy enough to get the content-type from the headers 
  ourself once we have them. 
   


tkt_uuid: 1653431fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: sasl
priority: 5 Medium
foundin: None
resolution: Accepted
title: Use authentication domain returned by server with NTLM
comment:
  Currently the type 1 message generated by the NTLM code, includes the req_target flag. This will request the correct authentication realm from the server. Currently this information is not used and therefore the correct domain always has to be specified even if the server returns it.
  The following patch on ntlm.tcl will use the domain returned by the server if available. This allows the user of the NTLM to omit the domain in most cases.

  diff ntlm.tcl.orig ntlm.tcl
  63a64,67
  >               # if server returns a domain, use it
  >               if {[info exists params(domain)]} {
  >                       set ctx(realm) $params(domain)
  >               }


tkt_uuid: 458301ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget ArrowButton bug (1.3.1) [patch]
comment:
  ArrowButtons, in version 1.2.1 (the latest release from Unifix),
  you could make a button a specific color, and place it in a frame of the
  same color without any problem.
  In 1.3.1 though, a gray outline appears, that cannot be eliminated
  through the ArrowButton options. This is because in 1.3.1 a frame is
  used to enclose all widget ellements.
  This frame has the default borderwidth and colour (1 & gray in my system),
  thus making a gray rectangular around the button.

  In my opinion, the solution is to set the borderwidth to 0 when creating
  the frame. So, line 89 in arrow.tcl has to be changed to

  frame $path -class ArrowButton -borderwidth 0 -highlightthickness 0

  in order to work as expected. (-highlightthickness 0 is not required, but
  why not :-))


tkt_uuid: 2459470fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Debug and Verbose do not generate output
comment:
  Because log suppresses warnings and lower the ftp package needs to unsuppress so when Verbose and/or Debug is set to 1, the log package will print out the debug messages. Recommend placing the command:
  ::log::lvSuppressLE emergency 0
  in the namespace eval ::ftp command, being the ftp package actually controls when the log command is executed there should be no repercussions in ensuring everything is unsuppressed.


tkt_uuid: 1897850fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tie
priority: 5 Medium
foundin: None
resolution: Fixed
title: tie test suite failures
comment:
  sparc solaris 9 sun c compiler cvs head tcl 8.5 and tcllib.

  ---- tie-file-2.1 start

  ==== tie-file-2.1 file get FAILED
  ==== Contents of test case:

      set f [makeFile {array set {b 2 a 1}} journal]
      tie::std::file x $f
      set res [dictsort [x get]]
      x destroy
      removeFile journal
      set res

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: invalid command name "::uplevel"
      while executing
  "::uplevel #0 {array set {b 2 a 1}
  }"
      invoked from within
  "$ip eval [list ::uplevel \#0 $data]"
      (procedure "::tie::std::file::Snit_methodReplay" line 33)
      invoked from within
  "::tie::std::file::Snit_methodReplay ::tie::std::file ::tie::std::file::Snit_ins
  t12 ::x ::x"
      ("eval" body line 1)
      invoked from within
  "eval [linsert $args 0  ::tie::std::file::Snit_method$method ::tie::std::file ::
  tie::std::file::Snit_inst12 ::x $self]"
      (procedure "::x" line 10)
      invoked from within
  "$self Replay"
      (procedure "::tie::std::file::Snit_methodLoadJournal" line 10)
      invoked from within
  "::tie::std::file::Snit_methodLoadJournal ::tie::std::file ::tie::std::file::Sni
  t_inst12 ::x ::x"
      ("eval" body line 1)
      invoked from within
  "eval [linsert $args 0  ::tie::std::file::Snit_method$method ::tie::std::file ::
  tie::std::file::Snit_inst12 ::x $self]"
      (procedure "::x" line 10)
      invoked from within
  "$self LoadJournal"
      (procedure "::tie::std::file::Snit_methodget" line 10)
      invoked from within
  "::tie::std::file::Snit_methodget ::tie::std::file ::tie::std::file::Snit_inst12
   ::x ::x"
      ("eval" body line 1)
      invoked from within
  "eval [linsert $args 0  ::tie::std::file::Snit_method$method ::tie::std::file ::
  tie::std::file::Snit_inst12 ::x $self]"
      (procedure "x" line 10)
      invoked from within
  "x get"
      invoked from within
  "dictsort [x get]"
      invoked from within
  "set res [dictsort [x get]]"
      ("uplevel" body line 4)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== tie-file-2.1 FAILED

  ---- tie-file-3.0 start

  ==== tie-file-3.0 file set, wrong#args FAILED
  ==== Contents of test case:

      set f [makeFile {} journal]
      tie::std::file x $f
      set     res {}
      catch {x set} msg
      x destroy
      removeFile journal
      set msg

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: command "::x" already exists
      while executing
  "error "command \"$name\" already exists""
      (procedure "::snit::RT.type.typemethod.create" line 22)
      invoked from within
  "::snit::RT.type.typemethod.create ::tie::std::file x /vol/tclsrcsol/tcl85/tclli
  b/unix/journal"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "tie::std::file x $f"
      ("uplevel" body line 3)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== tie-file-3.0 FAILED

  ---- tie-file-3.1 start

  ==== tie-file-3.1 file set, wrong#args FAILED
  ==== Contents of test case:
      set f [makeFile {} journal]
      tie::std::file x $f
      set     res {}
      catch {x set a b} msg
      x destroy
      removeFile journal
      set msg

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: command "::x" already exists
      while executing
  "error "command \"$name\" already exists""
      (procedure "::snit::RT.type.typemethod.create" line 22)
      invoked from within
  "::snit::RT.type.typemethod.create ::tie::std::file x /vol/tclsrcsol/tcl85/tclli
  b/unix/journal"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "tie::std::file x $f"
      ("uplevel" body line 3)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== tie-file-3.1 FAILED

  ---- tie-file-3.2 start

  ==== tie-file-3.2 file set FAILED
  ==== Contents of test case:

      set f [makeFile {} journal]
      tie::std::file x $f
      set     res {}
      lappend res [x set {c 3 b 2 a 1}]
      lappend res [viewFile journal]
      x destroy
       removeFile journal
      set res

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: command "::x" already exists
      while executing
  "error "command \"$name\" already exists""
      (procedure "::snit::RT.type.typemethod.create" line 22)
      invoked from within
  "::snit::RT.type.typemethod.create ::tie::std::file x /vol/tclsrcsol/tcl85/tclli
  b/unix/journal"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "tie::std::file x $f"
      ("uplevel" body line 3)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== tie-file-3.2 FAILED

  ---- tie-file-4.0 start

  ==== tie-file-4.0 file names, wrong#args FAILED
  ==== Contents of test case:

      set f [makeFile {array set {b 2 a 1}} journal]
      tie::std::file x $f
      catch {x names a} msg
      x destroy
      removeFile journal
      set msg

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: command "::x" already exists
      while executing
  "error "command \"$name\" already exists""
      (procedure "::snit::RT.type.typemethod.create" line 22)
      invoked from within
  "::snit::RT.type.typemethod.create ::tie::std::file x /vol/tclsrcsol/tcl85/tclli
  b/unix/journal"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "tie::std::file x $f"
      ("uplevel" body line 3)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== tie-file-4.0 FAILED

  ---- tie-file-4.1 start

  ==== tie-file-4.1 file names FAILED
  ==== Contents of test case:

      set f [makeFile {array set {b 2 a 1}} journal]
      tie::std::file x $f
      set res [lsort [x names]]
      x destroy
      removeFile journal
      set res

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: command "::x" already exists
      while executing
  "error "command \"$name\" already exists""
      (procedure "::snit::RT.type.typemethod.create" line 22)
      invoked from within
  "::snit::RT.type.typemethod.create ::tie::std::file x /vol/tclsrcsol/tcl85/tclli
  b/unix/journal"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within

  "tie::std::file x $f"
      ("uplevel" body line 3)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== tie-file-4.1 FAILED

  ---- tie-file-5.0 start

  ==== tie-file-5.0 file size, wrong#args FAILED
  ==== Contents of test case:

      set f [makeFile {array set {b 2 a 1}} journal]
      tie::std::file x $f
      catch {x size a} msg
      x destroy
      removeFile journal
      set msg

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: command "::x" already exists
      while executing
  "error "command \"$name\" already exists""
      (procedure "::snit::RT.type.typemethod.create" line 22)
      invoked from within
  "::snit::RT.type.typemethod.create ::tie::std::file x /vol/tclsrcsol/tcl85/tclli
  b/unix/journal"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "tie::std::file x $f"
      ("uplevel" body line 3)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== tie-file-5.0 FAILED

  ---- tie-file-5.1 start

  ==== tie-file-5.1 file size FAILED
  ==== Contents of test case:

      set f [makeFile {array set {b 2 a 1}} journal]
      tie::std::file x $f
      set res [x size]
      x destroy
      removeFile journal
      set res

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: command "::x" already exists
      while executing
  "error "command \"$name\" already exists""
      (procedure "::snit::RT.type.typemethod.create" line 22)
      invoked from within
  "::snit::RT.type.typemethod.create ::tie::std::file x /vol/tclsrcsol/tcl85/tclli
  b/unix/journal"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "tie::std::file x $f"
      ("uplevel" body line 3)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== tie-file-5.1 FAILED

  ---- tie-file-6.0 start

  ==== tie-file-6.0 file unset, wrong#args FAILED
  ==== Contents of test case:

      set f [makeFile {array set {foo bar fox snarf a 3}} journal]
      tie::std::file x $f
      set     res {}
      catch {x unset a b} msg

      x destroy
      removeFile journal
      set msg

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: command "::x" already exists
      while executing
  "error "command \"$name\" already exists""
      (procedure "::snit::RT.type.typemethod.create" line 22)
      invoked from within
  "::snit::RT.type.typemethod.create ::tie::std::file x /vol/tclsrcsol/tcl85/tclli
  b/unix/journal"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "tie::std::file x $f"
      ("uplevel" body line 3)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== tie-file-6.0 FAILED

  ---- tie-file-6.1 start

  ==== tie-file-6.1 file unset, default pattern FAILED
  ==== Contents of test case:

      set f [makeFile {array set {foo bar fox snarf a 3}} journal]
      tie::std::file x $f
      set     res {}
      lappend res [x unset]
      lappend res [viewFile journal]
      x destroy
      removeFile journal
      set res

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

  ---- errorInfo: command "::x" already exists
      while executing
  "error "command \"$name\" already exists""
      (procedure "::snit::RT.type.typemethod.create" line 22)
      invoked from within
  "::snit::RT.type.typemethod.create ::tie::std::file x /vol/tclsrcsol/tcl85/tclli
  b/unix/journal"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "tie::std::file x $f"
      ("uplevel" body line 3)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== tie-file-6.1 FAILED

  ---- tie-file-6.2 start

  ==== tie-file-6.2 file unset, by pattern FAILED
  ==== Contents of test case:

      set f [makeFile {array set {foo bar fox snarf a 3}} journal]
      tie::std::file x $f
      set     res {}
      lappend res [x unset f*]
      lappend res [viewFile journal]
      x destroy
      removeFile journal
      set res

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: command "::x" already exists
      while executing
  "error "command \"$name\" already exists""
      (procedure "::snit::RT.type.typemethod.create" line 22)
      invoked from within
  "::snit::RT.type.typemethod.create ::tie::std::file x /vol/tclsrcsol/tcl85/tclli

  b/unix/journal"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "tie::std::file x $f"
      ("uplevel" body line 3)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== tie-file-6.2 FAILED

  ---- tie-file-7.0 start

  ==== tie-file-7.0 file getv, wrong#args FAILED
  ==== Contents of test case:

      set f [makeFile {} journal]
      tie::std::file x $f
      set     res {}
      catch {x getv} msg
      x destroy
      removeFile journal
      set msg

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: command "::x" already exists
      while executing
  "error "command \"$name\" already exists""
      (procedure "::snit::RT.type.typemethod.create" line 22)
      invoked from within
  "::snit::RT.type.typemethod.create ::tie::std::file x /vol/tclsrcsol/tcl85/tclli
  b/unix/journal"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "tie::std::file x $f"
      ("uplevel" body line 3)


  ...

  and on and on and on...


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: 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: 2783215fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Invalid
title: search result is incorrect with multibyte characters
comment:
  This problem is best explained with the screenshot I attached.

  In my case all Chinese characters are broken, I think other multibyte UTF-8 string data should also be broken. Easily reproducible, we have this problem on Windows as well as Linux (where the screenshot was taken). The screenshot was taken from a system with UTF-8 locale setting.


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: 545368ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: uri
priority: 8
foundin: None
title: uri default scheme
comment:
  I've noticed that the uri package defaults to a http
  scheme when none is specified:

  % package require uri
  1.1
  % uri::split ftp.somewhere.com
  port {} path ftp.somewhere.com scheme http host {}
  query {}
                                 ^^^^^^^^^^^
  Wouldn't it make more sense for it to return a scheme
  of {} ? Then an application could default to http if
  required. In my case, I want to default to ftp, but
  need to know if the url contains another scheme
  specifier.

  I suppose the uri::split needs to assume a default
  scheme to that it knows which sub-proc to call (i.e.
  uri::SplitFtp, uri::SplitHttp) Perhaps the uri::split
  proc could take an optional arg to specify the default
  scheme?

  % uri::split ftp.somewhere.com ftp

  This addition is trivial to implement.

  proc uri::split {url {scheme {}}} {
   ...
  }

  or even make it more flexible with 'args' (but right
  now I don't see any need to specify defaults for
  anything other than the scheme)


tkt_uuid: 1006282fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 8
foundin: None
resolution: Accepted
title: comm - Uncaught error when protocol negotiation fails
comment:
  If a comm listening socket receives a connection (say
  your host is nmap'ed, for example) that does not
  properly negotiation a protocol version, comm currently
  calls [error], which results in bgerror being invoked &
  possibly requiring user intervention to clear the
  bgerror dialog box.  

  I've modified my local copy of comm.tcl to add support
  for a "-silent" configuration option that controls
  whether an error is thrown, after the port is closed,
  or whether the "error" is just silently ignored.   In
  my patch (which I'll attach), I've set the default for
  -silent to 0 so that past behavior (throwing the error)
  is maintained for those who may depend on it.


tkt_uuid: 475018ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: uri
priority: 5 Medium
foundin: None
resolution: Duplicate
title: interaction missing between uri and ftp
comment:
  when one invokes uri::geturl
  ftp://ftp.someplace.com/pub/tcl/stuff.gz
  you get an error because ftp doesn't define a "geturl"
  in all lower case characters.

  Also, the uri::split creates a value of "pwd" when
  "passwd" would be more obvious - pwd means print
  working directory in ftp:: for instance!


tkt_uuid: 470206ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Accepted
title: HTTP Redirect for TkChat
comment:
  This is two patches to the TkChat source because
  I can't disentangle them reliably and the cvs
  source has been changed since I posted my first
  patch and it'll clash now.

  So, patch 1 implements a Retrieve menu item for
  obtaining the current CVS file from the SourceForge
  repository via http.

  Patch 2 was induced by the recent loss of the
  mini.net domain and the subsequent use of purl.org
  for the Wiki. This patch provides HTTP Redirect
  following so that the chat program can be pointed
  at the PURL and dereference to the chat site.

  Pat Thoyts


tkt_uuid: 2933130fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: fuzzy
priority: 5 Medium
foundin: None
resolution: Fixed
title: math::fuzzy::tlt returns incorrect value
comment:
  [::math::fuzzy::tlt 1.0 1.1] returns 1 which is correct.
  [::math::fuzzy::tlt 1.1 1.0] however, also returns 1 which is not correct.

  (Tcl) 37 % package require math::fuzzy
  0.2
  (Tcl) 38 % ::math::fuzzy::tlt 1.0 1.1
  1
  (Tcl) 39 % ::math::fuzzy::tlt 1.1 1.0
  1


tkt_uuid: 772489ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 7 High
foundin: None
resolution: Not Applicable Here
title: doctools: latex, add document internal cross-referencing
comment:
  In LaTex:
  - \label to define a location by name, and
  - \ref to create reference to a named location.


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: 3313947fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: http :: autoproxy
priority: 5 Medium
foundin: None
resolution: Fixed
title: Bug 3094654 fixed, but man page update forgotten
comment:
  Item 3094654 (missing dash sign for option names) has been fixed several months ago, but the man page was not updated and still shows option names without dashes:

  http://tcllib.sourceforge.net/doc/autoproxy.html


tkt_uuid: 3434579fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: yaml
priority: 8
foundin: None
resolution: Not Applicable Here
title: Infinite loop
comment:
  When a yaml input file (or string) is not terminated with a \n (EOL) the yaml parser gos into an infinite loop at the end.


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: 2787849fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Can comm use Iocpsock under Windows
comment:
  I have one report of comm not being able to open a windows socket.
  Ther error message was:
  couldn't open socket: no buffer space available
  while executing
  "::comm::comm_cmd_new ::comm::comm ::comm::comm -port 0 -local 1 -listen 1"

  I have a feeling that if comm were to use the Iocpsock package where available this could be taken care of.
  Thanks


tkt_uuid: 3613162fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: log
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Adding support to log save to a file
comment:
  I feel it would be good if logger package support 
  1) saving log messages to logfile. 
  2) log file rotation.

  I already implemented these enhancement locally and would like to contribute same to community. 


tkt_uuid: 1039961fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Fixed
title: htmlparse - numeric character references with leading 0s
comment:
  Numeric character references with leading zeros are
  misparsed as octal.  For example, &#038;  (in case the
  SF bug tracker mangles that, it's: "ampersand, pound
  sign, zero, three, eight, semicolon").

  Attached patch fixes the problem and adds a test case.


tkt_uuid: 1542666fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Accepted
title: addition of ldap::modifyMulti
comment:
  This patch provides a new function "modifyMulti" 
  which takes arguments compatible with "addMulti" and 
  multiple-valuated arguments.

  This patch assumes that patch 1191326 has been 
  applied.

  No modification to current API (except the addition 
  of a new function.


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: 553848ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: stooop
priority: 5 Medium
foundin: None
resolution: Fixed
title: reliance on [namespace] bug.
comment:
  The tests stooop-86,87,89,90,95,96,97 all fail when
  tested with current development Tcl (8.4a5).  This
  is because the current Tcl sources have fixed Tcl
  Bug 545325 -- the failure of [namespace eval]s to
  appear as the results of [info level] calls.

  Unfortunately, stooop appears to expect the buggy
  behavior -- at least in its "debugging" mode.


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

  * logger 0.6.2
  test name 'logger-7.3' re-used; prior use in
  /local/src/tcllib/modules/log/logger.test
  test name 'logger-13.7' re-used; prior use in
  /local/src/tcllib/modules/log/logger.test


tkt_uuid: 3304371fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: irc
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Add secure IRC (TLS/994) support to pico IRC
comment:
  Attached is a patch that will add secure IRC support to pico irc.  It recognizes the RFC-standard ircs:// format and, if specified, sets a variable "secure" in the object, defaults to the 994 port (if not specified), and uses tls to establish a secure connection.

  A new command, ::picoirc::tls_status returns the security status of the connection as list of key-value pairs (certificate info) as returned by ::tls::status.

  The patch also includes updates to the manual page.


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: 3513149fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: exra bracket in nvlist command causes corrupt return value
comment:
  ncgi version 1.3.2

  There is a typo on line 28 of the proc ncgi::nvlist:

  set val [string range $x 1 end]]

  Note the extra close bracket at the end of the statement.
  Due to the strange coincidence of Tcl bug 3513146, this does not throw an error, but instead leads the proc to return a corrupt value.


tkt_uuid: 687912ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: crc
priority: 5 Medium
foundin: None
resolution: None
title: crc16.tcl missing in tcllib-1.[23].tar.gz
comment:
  % gunzip < tcllib-1.2.tar.gz | tar tf - | grep crc
  tcllib-1.2/modules/crc/
  tcllib-1.2/modules/crc/crc32.n
  tcllib-1.2/modules/crc/sum.n
  tcllib-1.2/modules/crc/pkgIndex.tcl
  tcllib-1.2/modules/crc/cksum.test
  tcllib-1.2/modules/crc/crc32.test
  tcllib-1.2/modules/crc/sum.tcl
  tcllib-1.2/modules/crc/cksum.tcl
  tcllib-1.2/modules/crc/crc32.tcl
  tcllib-1.2/modules/crc/ChangeLog
  tcllib-1.2/modules/crc/sum.test
  tcllib-1.2/modules/crc/cksum.n

  % gunzip < tcllib-1.3.tar.gz | tar tf - | grep crc
  tcllib-1.3/modules/crc/
  tcllib-1.3/modules/crc/pkgIndex.tcl
  tcllib-1.3/modules/crc/ChangeLog
  tcllib-1.3/modules/crc/cksum.man
  tcllib-1.3/modules/crc/cksum.n
  tcllib-1.3/modules/crc/cksum.tcl
  tcllib-1.3/modules/crc/cksum.test
  tcllib-1.3/modules/crc/crc32.man
  tcllib-1.3/modules/crc/crc32.n
  tcllib-1.3/modules/crc/crc32.tcl
  tcllib-1.3/modules/crc/crc32.test
  tcllib-1.3/modules/crc/sum.man
  tcllib-1.3/modules/crc/sum.n
  tcllib-1.3/modules/crc/sum.tcl
  tcllib-1.3/modules/crc/sum.test
  tcllib-1.3/doc/html/crc32.html
  tcllib-1.3/doc/nroff/crc32.n


tkt_uuid: 564279ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Fixed
title: ncgi::multipart bug
comment:
  In "ncgi::multipart" we have:
  ---
  if {[regexp -- $boundary\r\n $query]} {
      set lineDelim "\r\n"
  puts "DELIM"
      } else {
          set lineDelim "\n"
  puts "NO"
      }
  ---
  It seems to me that the 2 "puts" are for debugging
  purposes only: in real life, using ncgi::multipart
  causes the emission of a wrong header ("DELIM" or "NO").


tkt_uuid: 1656200fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
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: 2499978fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tklib
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Infinite bug on widget::scrolledwindow
comment:
  On a dialog that contains a ttk::treeview  as the widget of a scrolledwindow, when the treeview has certain items, this errors happens:

  too many nested evaluations (infinite loop?)
      (procedure "::snit::RT.CallInstance" line 5)
      invoked from within
  "::snit::RT.CallInstance ::widget::scrolledwindow::Snit_inst1 _set_scroll hsb 0 0.00555556"
  too many nested evaluations (infinite loop?)
      (procedure "::snit::RT.CallInstance" line 1)
      invoked from within
  "::snit::RT.CallInstance ::widget::scrolledwindow::Snit_inst1 _set_scroll vsb 0 0.00403226"
  too many nested evaluations (infinite loop?)
      (procedure "Tree::_update_scrollregion" line 42)
      invoked from within
  "Tree::_update_scrollregion .i_form_1.sw.i_frame.frame.lf_2.sw.tree"
      (command bound to event)
  too many nested evaluations (infinite loop?)
      (procedure "::snit::RT.CallInstance" line 42)
      invoked from within

  (this repeats several times).

  Unneded horizontal and vertical scrollbars are displayed too.

  The problem goes away with this patch:

  Index: scrollw.tcl
  ===================================================================
  --- scrollw.tcl(revision 333)
  +++ scrollw.tcl(working copy)
  @@ -183,7 +183,7 @@
   if {!$realized} { return }
   # This is only called if the scrollbar is attached properly
   upvar 0 $varname sb
  -if {$sb(auto)} {
  +if {$sb(auto) && !$sb(lock)} {
       if {!$sb(lock)} {
   # One last check to avoid loops when not locked
   if {$vmin == $sb(lastmin) && $vmax == $sb(lastmax)} {

  (I didn't remove the second if, which is now redundant, for making clear the ciritical change).


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: 650977ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pop3d
priority: 5 Medium
foundin: None
resolution: Fixed
title: bgerror when pop3 client disconnects
comment:
  If the pop3 client closes its socket to the pop3d 
  server as soon as it has sent the QUIT message it 
  sometimes causes a background error when the 
  pop3d server tries to close the connection via an 
  after idle ... command.

  can't read "conn(sock248)": no such element in 
  array
  can't read "conn(sock248)": no such element in 
  array
      while executing
  "upvar $conn($sock) cstate"
      (procedure "::pop3d::CloseConnection" line 6)
      invoked from within
  "::pop3d::CloseConnection mailserver sock248"
      ("after" script)


tkt_uuid: 1414159fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bench
priority: 4
foundin: None
resolution: Fixed
title: incorrect prefix stripping and formatting problems
comment:
  The bench::out::* functions and probably other parts of
  the package perform prefix stripping on array keys by
  using the following construction:

  set ip [lindex [split $key :] 1]

  This fails when $key contains more than on :, an
  example are package names with namespace qualifiers or
  paths on windows or using URL notation which include ':'.

  --
  For packages with no bench files provided the result is
  not sufficient.

  e.g.
  sak.tcl bench -format text pop3

  produces just an empty table but not a message that no
  benchmarks were found. 


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: 1005380fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: stack
priority: 9 Immediate
foundin: None
resolution: Fixed
title: stack::struct peek doesn't match docs
comment:
  The stack::struct man page says of the "peek" subcommand, "If 
  there are no items on the stack, this command will return count 
  empty strings."

  It doesn't say what happens if there are some items in the stack, 
  but fewer than "count"; the implication, clearly, is that your result 
  will be padded with empty strings.  

  Either way, it doesn't matter; if "count" is greater than the number 
  of items in the stack, whether the stack is empty or not, you don't 
  get a list padded with empty strings; what you get is an error,  
  "insufficient items on stack to fill request".

  I'd argue that the documented behavior is more Tcl-ish, but either 
  way the docs or the code should be updated.

  I haven't checked, but I'm betting that "pop" has the same 
  problem.


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: 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: 1409177fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: more secure alternative to [tempfile]
comment:
  The [tempfile] command creates
  a new file and returns its name.

  The caller is then free to
  [open] that filename.

  The separation of file creation
  and the [open] leaves an interval
  when an attacker might manipulate
  that file.  So care must be taken
  when using this facility.

  A more secure strategy is to have
  one command do all parts: generate
  the file name, create and open
  the file, and pass back the channel
  of the open file in addition to
  the file name.

  This is analogous to using 
  mkstmp() instead of tmpnam()
  in a C program.

  It would be good to either modify
  [tempfile] to improve security, or
  if compatibility is a concern, offer
  an alternative command for the more
  secure option.

  Note there are some security issues
  that cannot be addressed fully at
  Tcl script level with Tcl's current
  built-in commands, and will require
  a C-coded solution.  See TIP 210.


tkt_uuid: 832487ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: Documentation
priority: 5 Medium
foundin: None
resolution: Fixed
title: pattern arg for profiler::reset not documented
comment:
  Hi,

  The profiler man page does not document the optional
  argument ?pattern? for the reset command.

  Here's the patch for the same:

  godel:140> cvs diff profiler.man 
  Index: profiler.man
  ===================================================================
  RCS file:
  /cvsroot/tcllib/tcllib/modules/profiler/profiler.man,v
  retrieving revision 1.4
  diff -r1.4 profiler.man
  81c81
  < [call [cmd ::profiler::reset]]
  ---
  > [call [cmd ::profiler::reset] [opt [arg pattern]]]
  godel:141> 


tkt_uuid: 2787872fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: default standard channel should not be created implicitely
comment:
   "comm" provides a default "communication channel" named "comm::comm" .

   If your app. doesn't need to "provide services", but just to call services, you should destroy it, and then create a simple outgoing channel.

   I think that when you load comm (package require comm), such standard channel should not be created automatically.
  Users should be explicitely create it 
     comm::comm new comm::comm


tkt_uuid: 3536709fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: yaml
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: huddle get does not accept non-scalar dict keys
comment:
  Found a bug in how huddle dict objects lookup non-scalar keys.  The bug is in huddle::_key_reflexive and stems from the a non-scalar single key being passed via args (variadic mechanism).  The problem is that an extra set of curly braces ends up enclosing the key path when it finally gets passed to dict get (which errors).  A simple example is:
    set h [huddle create {a a} b]
    huddle get $h {a a}; # error thrown here

  I've seen this bug in huddle versions 0.1.3 through 0.1.5.

  A fix for this is attached along with some new tests, the files are modified versions of the huddle 0.1.5 source.


tkt_uuid: 3138526fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Wrong email server name gives unrelated error message
comment:
  If you pass the wrong server name to the smtp::sendmessage procedure, then the error message is:

  premature end-of-file from server

  This may be true, but it does not easily lead to the cause of the problem: the specified server does not exist.

  Please try to detect this type of error and return a message that is more to the point


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: 2359926fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: fileutil::tempdir on windows
comment:
  As the manual states, on windows, the following locations are checked in step 5 of the process in determining the location for temp files:
  "...C:\TEMP, C:\TMP, \TEMP, and \TMP are tried in that order..."
  I think, usually there are no such dirs on windows. If a process runs without a logged on user (in the system context), the directiory usually is %systemroot%\temp (which is c:\windows\temp or c:\winnt\temp, e.g.), otherwise, the temp dir is normally somewhere in the current user's profile path, to where the TMP-Var points. In generall, it's not 100% safe to rely on environment variables - I think it would be more foolproof to ask the system via API call about the right location... 


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: 410399ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Accepted
title: New module: html parser
comment:
  Another new module, a html parser based upon the core
  of Stephen Uhler's html_library + some utilities from
  my book scanning project.

  Anyone aware of tests for this parser ?


tkt_uuid: 1230737fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: No cleanup after failure in bwidget::init
comment:
  I think there is a bug in Widget::init, line 66 (4th
  from below): set pathopt($option)
  [$Widget::_optiontype($type) $option $value [lindex
  $optdesc 3]].
  The command that gets executed can throw an exception
  for example if an invalid value for an Enum is passed.
  This exception should be caught to unset pathopt and
  pathmod. As it is now, I am tempted to call this a
  memory leak.

  Example run showing the bug:
  wish
  % package require BWidget
  1.7
  % LabelFrame .lblf -side foo
  bad side value "foo": must be left, right, top or bottom
  % namespace eval ::Widget::LabelFrame {puts stderr
  [lsort [info vars]]}
  .lblf:mod .lblf:opt argc argv argv0 auto_index
  auto_oldpath auto_path env errorCode errorInfo map
  map.f map.l map:cmd opt optionClass optionExports sync
  tcl_interactive tcl_libPath tcl_library tcl_patchLevel
  tcl_pkgPath tcl_platform tcl_rcFileName tcl_version
  tk_library tk_patchLevel tk_strictMotif tk_version

  Solution:
  if [catch {$Widget::_optiontype($type) $option $value
  [lindex $optdesc 3]} msg] {
          if { [info exists pathopt] } {
              unset pathopt
          }
          unset pathmod
          return -code error "$msg"
  } else {
          set pathopt($option) "$msg"
  }


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: 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: 1854983fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 5 Medium
foundin: None
resolution: Duplicate
title: assign-4.4 test case failure
comment:
  Using the latest cvs head, and tcl cvs head,

  ==== assign-4.4 assign method FAILED
  ==== Contents of test case:

      catch {assign {foo bar}} msg ; set msg

  ---- Result was:
  wrong # args: should be "::struct::list::Lassign list varName ?varName ...?"
  ---- Result should have been (exact matching):
  wrong # args: should be "lassign list varName ?varName ...?"
  ==== assign-4.4 FAILED


tkt_uuid: 992481ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
resolution: Duplicate
title: typo in logger::services proc
comment:
  The logger::services always returns "services", see below:

  godel:678> tclsh
  % package provide ActiveTcl
  8.4.6.0
  % package require logger
  0.3
  % logger::init foo
  ::logger::tree::foo
  % logger::init bar
  ::logger::tree::bar
  % logger::services
  services
  % exit
  godel:679> 

  This is because there is a typo in the services proc.
  The variable name is not accessed using $. See below:

  proc ::logger::services {} {
      variable services
      return services     <---- should be "return $services"
  }


tkt_uuid: 3609843fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: sha1
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: sha256 output is wrong on 32bit Linux
comment:
  I am using ActiveState Tcl for 32bit and 64bit Linux. 
  The command is:
  sha2::sha256 -hex tk

  The output is:
  32bit Linux:
  0b9422c2ca451b24fea81114412fb2c61e2ced68889466119b72d36c4ec3c337

  64bit Linux:
  1ec22d56dbbc91e849b00643bc4f10eb764441c93bde5c6090fe81db55cf6932

  When using any web based sha256 generators the output is:
  1ec22d56dbbc91e849b00643bc4f10eb764441c93bde5c6090fe81db55cf6932

  Therefore, 32bit sha256 output seems to be incorrect.

  NOTE: A ticket  ID: 3609575 was open for this issue under Tcl tracker:
  http://sourceforge.net/tracker/?func=detail&aid=3609575&group_id=10894&atid=110894

  I am closing that ticket and moving it to tcllib since it has been determined that the problem is with the accelerated code in tcllibc (when forced to use plain Tcl, the code behaves correctly).  


tkt_uuid: 2022905fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: Build System & Testing
priority: 2
foundin: None
resolution: Not Applicable Here
title: 74 test failures with Tcl HEAD (wrong # args)
comment:
  Many of tcllib's tests depend on the precise form of error messages emmitted by Tcl. Tcl makes no guarantee about that.

  Recently there was a reform of Tcl's "wrong # args" messages, and tcllib shows 74 test failures. I have not verified all of them, but those I did happen to be of this kind.

  Testing for error messages should be as lax as possible.


tkt_uuid: 2690366fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Tk GUI for dtplite
comment:
  Extend dtplite with a Tk GUI which is invoked when the app is run without arguments => Windows, double-click, becomes meaningful.
  No real ideas yet  about how this GUI should look like. Maybe follow the use cases we have for the command line and make it wizard-style.


tkt_uuid: 688965ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Accepted
title: better -? help for fileutil::touch
comment:
  the cmdline::getoptions help is a bit bull-headed about
  displaying argv0.  This isn't great for using
  getoptions internally for procs.

  Nevertheless, the fileutil::touch proc could be
  modified to look better

  Now, it looks like:
  $ echo 'package req fileutil; fileutil::touch
  -help'|tclsh
  tclsh options:
   -a                   set the atime only
  ...

  ("tclsh options:"??)

  The attached diff provides:
  $ echo 'package req fileutil; fileutil::touch
  -help'|tclsh
  tclsh : fileutil::touch [options] filename ...
  options:
   -a                   set the atime only
  ...


tkt_uuid: 2605849fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: tkchat: use tk appname for use in windowmaker dock
comment:
  The windowmaker dock uses the WM_CLASS of the main window to check if the application is launched and to allow minimize to dock.
  When running tkchat from a starpack, the window class is not specific enough to allow reliable docking of the app without picking up other wish application.

  It would be nice if a distinctive [tk appname] is declared for the application.


tkt_uuid: 1572463fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: math :: geometry
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: areaPolygon incorrect
comment:
  I think the algorithm used by areaPolygon is incorrect.
   For example:

  package require math::geometry
  set polygon [list -10 -10 10 -10 10 10 -10 10]
  ::math::geometry::areaPolygon $polygon

  returns 200.0, when the correct result for this 20x20
  rectangle should be 400.0, as noted in the comments for
  the proc.

  See Kevin Kenny's proc parea at
  http://wiki.tcl.tk/12081 for an alternate implementation.


tkt_uuid: 2787933fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: md5
priority: 8
foundin: None
resolution: Fixed
title: Leak: md5 or trf?
comment:
  The following script leaks when Trf is loaded (run it under nice: tight busy loop!):

  package require md5 2
  set digits {0 1 2 3 4 5 6 7 8 9 A B C D E F}

  # any init will do
  set hx [::md5::md5 -hex {}]

  while {$hx ne [::md5::md5 -hex $hx]} {
      # bernoulli-like shift with random last hex
      set idx [expr {int(floor(16*rand()))}]
      set hx [string range $hx 1 end][lindex $digits $idx]
  }

  puts "Found it! It is '$hx'"


tkt_uuid: 3025582fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: inifile
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: comments lost, positions changing
comment:
  - when updating an ini file, comments, which are placed at the very top of the inifile are eventually placed elsewhere after update.
  - a comment immediately following the last keyword in a section is dropped, regardless if it begins in column 1.
  - The order of sections changes and there is no way to determine the original order.
  - comments, which not begin in column one are entirely lost. I think in windows, leading blanks are ignored for comments (I'm not 100% sure, though).

  INI files are human readable material, in which especially comments (and there position!) are very importand, as so does the order of entries in general.
  There is a small chance that only my code is wrong. I would be very sorry if this is the case...
  The code is the first try of a tool that updates an existing ini (old.ini) with new entries (specified in man.ini), and writes the result to new.ini.


tkt_uuid: 3106443fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tklib :: tooltip
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: invalid option processing in tooltip::tooltip
comment:
  tooltip::tooltip try to process argument starting with "-" as option

  Example:

  tooltip::tooltip .e "-10.0 .. 10.0"

  generate error

  unknown option "-10.0 .. 10.0": should be -index, -items or -tag
      while executing
  "register .e {-10.0 .. 10.0}"
      (in namespace inscope "::tooltip" script line 1)
      invoked from within
  "::namespace inscope ::tooltip {register .e {-10.0 .. 10.0}}"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 [namespace code "register [list $w] $args"]"
      (procedure "tooltip::tooltip" line 35)
      invoked from within
  "tooltip::tooltip .e [msgcat::mc "$minPosition .. $maxPosition"]"
      (procedure "::widget::form1::Snit_constructor" line 115)
      invoked from within

  Alse tooltip::tooltip have no "--" parameter, to specify end of options.


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

  * units 2.1
  test name 'units-4.6' re-used; prior use in
  /local/src/tcllib/modules/units/units.test
  test name 'units-9.1' re-used; prior use in
  /local/src/tcllib/modules/units/units.test
  test name 'units-9.1' re-used; prior use in
  /local/src/tcllib/modules/units/units.test
  test name 'units-9.1' re-used; prior use in
  /local/src/tcllib/modules/units/units.test
  test name 'units-9.1' re-used; prior use in
  /local/src/tcllib/modules/units/units.test


tkt_uuid: 1800599fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Generate html redirect pages to sub-commands
comment:
  If more than one command is documented in a single page, and you want to link to the HTML output from an external source, you need to know which top-level page the command appears in.

  For each command on a page which does not share it's name with the page itself, I would like dtplite to emit a stub HTML page, named after the command.

  It should have a link to the correct page, including the correct fragment within the page. e.g.

    <a href="ns_log.html#ns_logctl">ns_logctl</a>

  In the html header, it should contain the following meta tags:

  <meta http-equiv="Refresh" content="1;url=ns_log.html#ns_logctl">

  <meta name="ROBOTS" content="NOINDEX">


  The first one to automatically redirect the user to the correct page. The second one to discourage google from indexing.

  The stub pages do not need to be linked from the TOC or keyword index.


tkt_uuid: 3002617fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: des , des-mode parameter and key padding
comment:
  At the moment , the des module defines which DES mode to use based on the key length (64 bit for DES and 192 bit for 3DES) , so you have to provide a key with a right length. 
  I think it'd be easier to have a parameter that let's the developer indicates which mode to use. Then if the key is to short, it should be padded with nulls to meet the required length.  Something like :
  ::DES::des ?  -des-mode [DES|3DES] ? -mode [ecb|cbc|cfb|ofb] ? ? -dir [encrypt|decrypt] ? -key keydata ? -iv vector ? ? -hex ? ? -weak ? ? -out channel ? ? -chunksize size ? [ -in channel | data ]
  It's a method used in some other language like php , .net probably others.

  The documentation is not really clear on how to use DES or 3DES, there should be something that explain that the DES mode used is based on the key length.

  Gaetan

   


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: 1800617fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: doctools module toc: name vs. titledesc
comment:
  dtplite can crate a two level TOC: one for each module and an overview.

  Here's an example (only two modules):

    http://naviserver.sourceforge.net/n/toc.html
    http://naviserver.sourceforge.net/n/naviserver/toc.html

  The first is a superset of the second, which is not very useful.


  What would be great is if the second TOC in the example above (the per-module TOC) could use the 'titledesc' as a heading, and list each command in the page.

  So, instead of this (current):

    ns_accesslog  Query and control access log parameters
    ns_atsignal   Server callbacks
    ns_cache      Cache manipulation
    ...

  It would look like this:

    Query and control log parameters
    ns_accesslog

    Server callbacks
    ns_atprestartup, ns_atstartup, ns_atsignal, ns_atshutdown, ns_atexit

    Cache manipulation
    ns_cache_create, ns_cache_names, ns_cache_keys, ns_cache_eval, ns_cache_incr, ns_cache_append, ns_cache_lappend, ns_cache_flush, ns_cache_stats

    ...

  Each 'titledesc' becomes an h2 heading. The commands are just a paragraph of words separated by commas, each a hyperlink to the command def (including fragment).


  With this scheme, the per-module TOC falls somewhere in between the top level TOC and the keyword index in terms of information density.


tkt_uuid: 3087955fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Label has extra x packing space
comment:
  BWidget 1.9.2, TCL 8.5.9, Windows
  "Label .l -borderwidth 1 -relief raised" has extra x space of 5 outside the border under unknown conditions


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: 526094ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Unix console command
comment:
  It would be useful to have hooked into Tk the ability
  to invoke something like
  http://purl.org/tcl/wiki/ConsoleForUnix so that code
  could work cross-platform better.  If this can't go
  into Tk, it would be lovely to go into some package
  that is also going to be common.


tkt_uuid: 1061207fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: Tcl 8.5a2 breaks test suite
comment:
  the syntax of the "wrong # args"
  error message recently changed
  in Tcl, and as a consequence,
  `make test` for tcllib has
  56 failing tests.


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

  Module: grammar_fa
  modules/grammar_fa/dacceptor.test
  - tcllib::testutils 1.0
  - snit 1.1
  - struct::set 2.1
  - struct::list 1.5
  - grammar::fa 0.1.1
  - grammar::fa::op 0.1.1
  * grammar::fa::dacceptor 0.1.1
  modules/grammar_fa/dexec.test
  - tcllib::testutils 1.0
  - snit 1.1
  - struct::set 2.1
  - struct::list 1.5
  - grammar::fa 0.1.1
  - grammar::fa::op 0.1.1
  * grammar::fa::dexec 0.1.1
  modules/grammar_fa/fa.test
  - tcllib::testutils 1.0
  - snit 1.1
  - struct::set 2.1
  - struct::list 1.5
  * grammar::fa 0.1.1
  test name 'fa-symbols-1.0' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/fa_symbol.test
  test name 'fa-symbols-1.1' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/fa_symbol.test
  test name 'fa-symbols-2.0' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/fa_symbol.test
  test name 'fa-symbols-2.1' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/fa_symbol.test
  test name 'fa-symbols-1.0' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/fa_symbols.test
  test name 'fa-symbols-1.1' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/fa_symbols.test
  test name 'fa-symbols-1.2' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/fa_symbol.test
  test name 'fa-symbols-1.3' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/fa_symbol.test
  test name 'fa-symbols-1.4' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/fa_symbol.test
  test name 'fa-symbols-1.5' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/fa_symbol.test
  test name 'fa-symbols-1.6' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/fa_symbol.test
  modules/grammar_fa/faop.test
  - tcllib::testutils 1.0
  - snit 1.1
  - struct::set 2.1
  - struct::list 1.5
  - grammar::fa 0.1.1
  * grammar::fa::op 0.1.1
  test name 'faop-remove-eps-3.00.x' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.01.x-' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.02.xe' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.03.xy' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.04.xy-' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.05.xye' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.06.xyee' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.07.xye-' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.08.xy--' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.09.xy-=' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.10.xyz/ee' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.11.xyz/e-' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.12.xyz/--' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.13.xyz/-=' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.14.xyz|ee' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.15.xyz|e-' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.16.xyz|--' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.17.xyz|-=' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.18.xyz+eee' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.19.xyz+ee-' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.20.xyz+e--' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.21.xyz+e-=' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.22.xyz+---' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.23.xyz+--=' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.24.xyz+-=_' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.25.xyz&eee' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.26.xyz&ee-' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.27.xyz&e--' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.28.xyz&e-=' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.29.xyz&---' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.30.xyz&--=' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.31.xyz&-=_' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.32.xyz!ee' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.33.xyz!e-' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.34.xyz!--' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.35.xyz!-=' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.36.xyz!-e' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-reverse-3.00.x' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.01.x-' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.02.xe' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.03.xy' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.04.xy-' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.05.xye' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.06.xyee' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.07.xyz/ee' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.08.xyz/-=' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.09.xyz|ee' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.10.xyz|-=' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.11.xyz+eee' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.12.xyz+-=_' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.13.xyz&eee' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.14.xyz&-=_' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.15.xyz!ee' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.16.xyz!-=' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test


tkt_uuid: 1927092fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
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: 3441173fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: pki
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Implement OpenPGP/GPG
comment:
  From mail:

  Andreas,

      Yes.  Most of it is already there.  All that is need is the functions to read the public and private (Could be the same format as OpenSSL -- I tend to use X.509/PKCS#1 rather than GPG) keys and implements some GPG-specific things like "web of trust".

  You could open a feature request so I don't forget, or I'll try to remember to open one later.

  Thanks,
      Roy Keene


  On Tue, 22 Nov 2011, Andreas Kupries wrote:

  >
  > http://developers.slashdot.org/story/11/11/22/0422223/openpgp-implemented-in-javascript
  >
  > (Long-term idea)


tkt_uuid: 880692ffffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ncgi - = in cgi value breaks parsing of variable/value pairs
comment:
  the regular expression in proc nvlist was changed from 
  (.*)=(.*) to {([^=]*)=(.*)}


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

              # Any whitespace at the beginning or end of 
  urlencoded data is not
              # considered to be part of that data, so we 
  trim it off.  One special
              # case in which post data is preceded by a \n 
  occurs when posting
              # with HTTPS in Netscape.

              foreach {x} [split [string trim $query] &] {
                  # Turns out you might not get an = sign,
                  # especially with <isindex> forms.
  #### start: RE in line below changed:
                  if {![regexp -- {([^=]*)=(.*)} $x dummy 
  varname val]} {
  #### end
                      set varname anonymous
                      set val $x
                  }
                  lappend result [decode $varname] [decode 
  $val]
              }
              return $result
          }
          multipart/* {
              return [multipart $type $query]
          }
          default {
              return -code error "Unknown Content-Type: 
  $type"
          }
      }
  }


tkt_uuid: 2796712fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: None
title: new animated emoticons are damaged
comment:
  Hi Pat,

  tkchat-1.470.kit with a ActiveTcl 8.5.7 shows the new animated :drunk: and :headbang: icons with pixel salad. The static versions seem to be ok.

  kind regards
  -- Matthias Kraft


tkt_uuid: 1416749fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: html
priority: 5 Medium
foundin: None
resolution: Fixed
title: html: test suite bugs
comment:
  with -debug 1:
  * html 1.3
  test name 'html-2.1' re-used; prior use in
  /local/src/tcllib/modules/html/html.test
  test name 'html-24.1' re-used; prior use in
  /local/src/tcllib/modules/html/html.test
  test name 'html-24.1' re-used; prior use in
  /local/src/tcllib/modules/html/html.test
  test name 'html-25.3' re-used; prior use in
  /local/src/tcllib/modules/html/html.test
  test name 'html-26.2' re-used; prior use in
  /local/src/tcllib/modules/html/html.test


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: 2861189fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: decode and encode: inconsistent handling of line breaks
comment:
  ncgi::encode (and http::formatQuery, for that matter) encodes "\n" as "%0d%0a". ncgi::decode decodes this sequence into "\r\n".

  The result is that if a multi-line string is passed from a program to a CGI script that uses ncgi for dealing with the parameters, the CGI script doesn't see the same string the program intended to send it.

  If implemented correctly, ncgi::encode and ncgi::decode should therefore be inverse operations, and the one to be adapted seems to be ncgi::decode.


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: 1021240fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: bwidget table of contents in doctools format
comment:
  I took a stab at converting the first of the bwidget
  files to doctools format.
  I don't have a lot of time - I would love to see all
  the bwidget pages reformatted.  


tkt_uuid: 948063ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: MenuFrame: no 'getmenustate' method
comment:
  Apparently, there is not way, to query the state of a
  menu tag.

  The state of menu tags could be set with:

  $mainframe setmenustate tag state

  I would be very handy, to be able to query the state of
  a tag. Something like a getmenustate method with syntax
  like

  $mainframe getmenustate tag

  returning the state. Or enhanced setmenustate syntax

  $mainframe setmenustate tag ?state?

  If the optional new state is omitted, then the current
  state of the tag is returned. (And emtpy string for not
  knows tags? Or error? Curently,  setmenustate simply
  ignores unknown tags - which shuld be mentioned in the
  documentation.)

  The current setmenustate implementation in
  mainframe.tcl still includes the old tag state
  mechanism commented out. I agree, that the current
  state system is better. Shouldn't this code be removed?

  The documentation should mention at one place, that
  only state "disabled" disables the tag and that every
  other state enables it.


tkt_uuid: 1743868fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
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: 1018934fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: dns
priority: 5 Medium
foundin: None
resolution: Accepted
title: dns.tcl incorrectly detecting query as a reverse lookup
comment:
  I was trying to use the dns module to resolve an
  address similar to "127.0.0.1.example.org", but it was
  failing as this query was being incorrectly detected as
  an IP.

  I changed the line (in dns.tcl):
  if {[regexp {(?:\d{0,3}\.){3}\d{0,3}} $state(query)]} {

  to:
  if {[regexp {^(?:\d{0,3}\.){3}\d{0,3}$} $state(query)]} {

  and now everything seems to be working fine.


tkt_uuid: 1720331fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 5 Medium
foundin: None
resolution: Fixed
title: lcsInvertMerge gives incorrect result
comment:
  The simple example:

  % set lcs [struct::list longestCommonSubsequence {a b c d e} {a f c g e}]
  {0 2 4} {0 2 4}
  % struct::list lcsInvertMerge $lcs 5 5
  {unchanged {-1 0} {-1 0}} {changed {1 1} {1 1}} {changed {3 3} {3 3}}

  yields an incorrect result.  The content of $lcs is correct; {0 2 4} in both lists is the common subsequence.  But the expected output would have been

  {unchanged {0 0} {0 0}} 
  {changed {1 1} {1 1}} 
  {unchanged {2 2} {2 2}} 
  {changed {3 3} {3 3}}
  {unchanged {4 4} {4 4}}


tkt_uuid: 1710637fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Development Tools
priority: 5 Medium
foundin: None
resolution: Invalid
title: use of deprecated syntax
comment:
  I assume this is the category
  for "sak".

  The files sak/registry/registry.tcl
  and sak/util/registry.tcl make use
  of the {expand} syntax which is no
  longer approved.


tkt_uuid: 2801587fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: jpeg
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::jpeg::getThumbnail help example code
comment:
  In ::jpeg::getThumbnail  help :
  If you open the file as given in the example : 
       set fh [open thumbnail.jpg w+]
  You get a corrupted thumbnail. In order to get a valid one, open it in binary mode :
       set fh [open thumbnail.jpg wb+]


tkt_uuid: 697183ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: latest chat logout menu selection broken
comment:
  tkchat 1.80 logout feature produces this output using
  Tcl/Tk 8.4.2:

  invalid command name "logonScreen"
      while executing
  "logonScreen"
      invoked from within
  ".#mbar.#mbar#file invoke active"
      ("uplevel" body line 1)
      invoked from within
  "uplevel #0 [list $w invoke active]"
      (procedure "tk::MenuInvoke" line 47)
      invoked from within
  "tk::MenuInvoke .#mbar.#mbar#file 1"
      (command bound to event)


  To fix it, I changed all the invocations of logonScreen
  to ::tkchat::logonScreen and it seems to work.


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: 1931567fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: pregistry version problem
comment:
  Recently I encountered a problem with pregistry:

   $ /vol/tclsrcsol/ActiveTcl/bin/tclsh8.5
  % package require pregistry
  conflicting versions provided for package "pregistry": 1.0, then 0.1


  What is the expected output? What do you see instead?
  I expected to see the pregistry version number, but instead see the error.

  It has been removed from activetcl's teapot repository, but AK recommended I report the version problem here so that could be fixed.


tkt_uuid: 2974624fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: amazon-s3
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: man page for xsxp package incorrect
comment:
  In the manpage for the xsxp package the example is given : 

  xsxp::fetch $pxml {html body p#4 b} %PCDATA

  This should be corrected to: 

  xsxp::fetch $pxml {body p#4 b} %PCDATA

  fetch does not use the root node ( i.e. html ) by name and the fetch function purposely steps over it. In fact the only way to return any information about the root node is to specify {} as your path.  
  Having looked at the code one could also update the manpage to say that xsxp::fetch accepts paths in both list and '/' delimited format  (e.g { body p#4 b }  and /body/p#4/b )


tkt_uuid: 1709334fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Missing trailing newline hangs sendmessage
comment:
  I'm not sure if this is a mime problem or an smtp problem, but...

  If you use the MIME package to create a text/plain without a newline on the end, then use smtp::sendmessage to send it, it appears to hang after sending the message in the DATA command. I suspect the "close the data" period is winding up at the end of the final line instead of at the start of a line by itself.

  Sample code:
  # The first message goes
  # The second message hangs.

  package require mime
  package require smtp

  proc sendmail {from to bcc subject body {queue 1}} {
    set mail [mime::initialize -canonical text/plain -string $body]
    smtp::sendmessage $mail \
      -debug 1 \
      -header [list From $from] \
      -header [list To $to] \
      -header [list BCC $bcc] \
      -header [list Subject $subject] 
    mime::finalize $mail
  }

  puts "Testing with newline..."
  sendmail "dnew@example.com" "dnew@example.com"  "" \
    "Subject One" "Test body\nNewline present\n"
  puts "Message one sent...\n"
  after 10000
  puts "Testing without newline..."
  sendmail "dnew@example.com" "dnew@example.com"  "" \
    "Subject two" "Test body\nNewline absent"
  puts "Message two sent..."


tkt_uuid: 564071ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: doctools - multi-release SYNOPSIS convention
comment:
  When looking for documentation on Unix, one types

  man package

  and that turns into a search for a file named
  "package.n" on the MANPATH, and a formatting and
  display of its contents.

  When a new release of package is installed, say
  version 1.1, where a prior version, say 1.0, is
  already installed, the two versions get installed
  side by side, but the man page for 1.1 overwrites
  the one for 1.0.

  For this reason it would be a good convention for
  man pages to include documentation for earlier
  compatible versions, as well as the latest changes.
  I recommended a SYNOPSIS convention like this:

  package require foo 1.0
  foo::bar x
  foo::baz
  package require foo 1.1
  foo::grok a b c
  package require foo 1.2
  foo::snafu
  foo::bar x ?y z?

  Here it is clear what minor release introduced
  each (variation of) each command.

  If the doctools cannot format such a SYNOPSIS 
  convention, I request the new feature that they
  be enhanced so they can.


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: 2370853fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: None
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Wrong path added to auto_path
comment:
  If tcllib.kit (the one from http://www.equi4.com/pub/om/sdarchive/) is sourced after twapi-1.1.5.kit, a wrong path gets added to auto_path and "package require tcllib" fails.  If tcllib.kit is sourced alone, or before twapi-1.1.5.kit, it adds two entries to auto_path:

  (ORmaint) 1 % set auto_path
  <several paths>
  (ORmaint) 2 % source tcllib.kit
  (ORmaint) 3 % set auto_path
  <same paths plus> <path to>/tcllib.kit/lib <path to>/tcllib.kit/tcllib

  This is with an 8.5.2 tclkit for Windows. But if sourced after twapi-1.1.5.kit, the second entry gets twapi's name instead of tcllib's:

  (ORmaint) 1 % set auto_path
  <several paths>
  (ORmaint) 2 % source twapi-1.1.5.kit
  (ORmaint) 3 % set auto_path
  <same paths plus> <path to>/twapi-1.1.5.kit/lib
  (ORmaint) 4 % source tcllib.kit
  (ORmaint) 5 % set auto_path
  <same paths plus> <path to>/twapi-1.1.5.kit/lib <path to>/tcllib.kit/lib <path to>/twapi-1.1.5.kit/tcllib

  When I asked about this on c.l.t, Michael Schlenker suggested that it might be a bug in the tcllib kit packaging and asked me to file this bug report.


tkt_uuid: 1614860fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
title: Add a -client switch
comment:
  I would like to see a -client switch added to the SMTP library. Currently the SMTP library uses [info hostname] which can come back with a short name for the sending system and some MTA's might queue it and silently drop it.

  The -client switch would allow the programmer to set that to his desired client name to pass through.


tkt_uuid: 1570938fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: tkchat - main window pops up for msgs in 1-1 chat window
comment:
  I recently updated to v 1.349 of the tkchat.
  Now that I started to use the 'chat' feature for 1-1
  talks I noticed that when messages arrive in the
  subordinate chat window tkchat blinks and pops up the
  main window. The only way to see that it was the chat
  window which has the message is the '*' which is added
  to its title.


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: 1680877fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: asn
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: procedures to get/set ber encoded data independ of tag
comment:
  On occasions it is very useful to either extract a TLV structure or create a TLV structure independend of the tag (not in the least in the asn lib itself).
  This is also very useful in handeling sequences of implicit types.

  I therefore would find it useful if two procedures are added:

  proc ::asn::asnGetTLV { data_var tlv_var } {
   # gets a tag/length/value structure from the start of the data.
   # return false if data exhausted, true if data left
   upvar $data_var data $tlv_var tlv
   asnGetByte data tag
   asnGetLength data length
   asnGetBytes data $length temp
   set tlv [asnTLV $tag $temp]
    if {[string length $data] > 0} {
      return true
    } {
      return false
    }
  }

  proc ::asn::asnTLV {tag value} {
    set len [string length $value]
    return [binary format H2a*a$len [format %02X $tag] [asnLength $len] $value]
  } 


tkt_uuid: 1470818fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Duplicate
title: Wrong monthname returned by mime::parsedatetime.
comment:
  In file mime.tcl the name of the month is looked up in
  a list by an index which one gets from a "[clock format
  $clock -format %e]" (three times). In my old version of
  tcl the %e returns the number of the day in the month
  and not the month number. A solution like [expr [string
  trimleft [clock format $clock -format %m] 0] - 1] seems
  more appropriate.

  m.d.nauta@hetnet.nl


tkt_uuid: 732597ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
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: 1416784fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pop3d
priority: 5 Medium
foundin: None
resolution: Fixed
title: pop3d: test suite bugs
comment:
  with -debug 1:

  * pop3d 1.1.0
  - comm 4.3
  WARNING: cleanupTests deleting
  /local/src/tcllib/coserv.sub...
  WARNING: cleanupTests deleting
  /local/src/tcllib/__dbox__...
  modules/pop3d/pop3d_dbox.test
  - tcllib::testutils 1.0
  - md5 2.0.4
  - mime 1.4.1
  * pop3d::dbox 1.0.2
  WARNING: cleanupTests deleting
  /local/src/tcllib/__dbox__...
  WARNING: cleanupTests deleting /local/src/tcllib/__bar__...
  modules/pop3d/pop3d_udb.test
  - tcllib::testutils 1.0
  * pop3d::udb 1.1
  test name 'pop3-udb-3.0' re-used; prior use in
  /local/src/tcllib/modules/pop3d/pop3d_udb.test
  test name 'pop3-udb-3.1' re-used; prior use in
  /local/src/tcllib/modules/pop3d/pop3d_udb.test
  test name 'pop3-udb-3.2' re-used; prior use in
  /local/src/tcllib/modules/pop3d/pop3d_udb.test
  WARNING: cleanupTests deleting /local/src/tcllib/__UDB__...
  WARNING: cleanupTests deleting
  /local/src/tcllib/__UDB__.old...


tkt_uuid: 1681568fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: doctools - add facility to hyperlink between documents
comment:
  Right now, doctools linking facility links between words to an index file. However, it would be useful to also support linux between points within a document, or points between documents ... for example, between a word and its definition in a glossary document, or pointing from a man page to a specific section of another man page.


tkt_uuid: 1280529fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: inifile
priority: 5 Medium
foundin: None
resolution: Fixed
title: Bug in Tcl
comment:
  % package require inifile
  0.1
  % set ::data 45
  45
  % set ini [::ini::open file.ini]
  can't array set "data": variable isn't array


  Why? See:
  http://sourceforge.net/tracker/index.php?func=detail&aid=1280497&group_id=10894&atid=110894

  It should be :
  namespace eval ::ini:${...} {
    variable data
    variable ....
    ....
  }

  a-tcl@freakmail.de


tkt_uuid: 991452ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ftp::Quote should join arguments
comment:
  in ::ftp::Quote arguments are simply reached to the server,
  but this is a tcl list. If list values contain spaces
  or special
  characters, tcl wraps list elements in braces and these get
  handed over to the ftp-server.

  I suggest the following mini-patch, which joins the
  args by spaces:

  --- ftp.tcl.orig        Thu Jul 15 10:42:53 2004
  +++ ftp.tcl     Thu Jul 15 10:38:18 2004
  @@ -2201,7 +2201,7 @@
           return 0
       }
   
  -    set ftp(Cmd) $args
  +    set ftp(Cmd) [join $args " "]
       set ftp(Quote) {}
   
       set ftp(State) quote


tkt_uuid: 817351ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Fixed
title: error for new comm channels
comment:
  The documentation example shows following usage to
  create a new comm channel:

  ::comm::comm new ::comm::comm -port 0 -local 1 ...

  However, when I try to specify ::comm::p2 as the
  channel name, it fails to create the internal variables
  correctly. If I specify p1 without full namespace, it
  works properly. See the following interactive session:

  hlavana-u5:64> tclsh
  % package require comm
  4.1
  % ::comm::comm new p1 -port 0 -local 1 -listen 1
  % p1 self
  invalid command name "p1"
  % ::comm::p1 self
  40695
  % ::comm::comm new ::comm::p2 -port 0 -local 1 -listen 1
  % ::comm::p2 self
  can't read "comm(p2,port)": no such element in array
  %  ::comm::comm channels
  ::comm::comm p1 ::comm::p2

  This looks like a bug to me.

  Hemang.


tkt_uuid: 3151099fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: fail to send when addr is like foobar.@example.com
comment:
  smtp::sendmail fails to send email that
  looks like foobar.@example.com.

  As far as I know having an email address with a dot (".") as the 
  last char before @ should be RFC compliant. 

  I checked email address using this regexp:

  regexp {^[a-z0-9\.\-\_]+\@[a-z0-9]([a-z0-9\-\_]+\.)+[a-z0-9\-\_]+$} $mail

  I'm using tcllib 1.12 (ubuntu 10.10).

  This  the actual error message: 

  Sending to foobar.@example.com: prova.pdf
  error in To: expecting colon to terminate route (found end-of-input)
      while executing
  "error "error in $who: $aprops(error)""
      (procedure "smtp::sendmessage" line 260)
      invoked from within
  "smtp::sendmessage $multiT -servers yoursmtpserver.com -header [list From "me@mydomain.com"]  -header [list To $rcpt]  -header [list Subject "this is the subject..."
      ("foreach" body line 13)
      invoked from within
  "foreach rcpt $recipients {

         set this_image $file
         # create an image and text
         set imageT [mime::initialize -canonical \
             ..."


tkt_uuid: 882154ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: dns
priority: 5 Medium
foundin: None
resolution: Fixed
title: No support for reverse lookups in dns
comment:
  The dns package provides no assistance in doing reverse
  lookups.
  Try
  set tok [dns::resolve d.c.b.a.in-addr.arpa -type PTR]
  lindex [dns::Decode $tok] 3
  and get the rdata for the name.

  This can be auto detected by regexp {[\d.]+} $query


tkt_uuid: 1346295fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tklib :: plotchart
priority: 2
foundin: None
resolution: Not Applicable Here
title: plotchart files in release have wrong unix permissions
comment:
  In the tar files created for release too many files in
  the plotchart module carry an x (executable) bit. It
  should only be there for executable files, not for
  documentation etc.


tkt_uuid: 3612359fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: lexnormalize ignore leading ../
comment:
  % package require fileutil
  1.14.5
  % fileutil::lexnormalize ../toto
  toto
  % fileutil::lexnormalize ../../toto
  toto
  % 

  Seems wrong to me... I made a correction:
  % fileutil_lexnormalize ../toto
  ../toto
  % fileutil_lexnormalize ../../toto
  ../../toto
  % fileutil_lexnormalize .././.././toto
  ../../toto
  % 


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: 1695120fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: doctools - add diagram support
comment:
  Consider an extension of the markup for the setting of diagrams, see Arjen's diagram package in Tklib for ideas.
  Not general image support, but at least vector graphics would be possible.


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: 966696ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
title: Add introspection for methods
comment:
  Today I had a need to introspect a snit object, to find
  which methods it would understand. Found the 'info'
  method, but it had no way to ask for methods. Just
  variables, typevars, options, ...

  So I am asking for a 'info methods', 'info typemethods'.


tkt_uuid: 1373937fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: bench
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: bench package does not work as TM
comment:
  The packages as is cannot work as a Tcl Module (i.e.
  wrapped) because of a direct reference to libbench.tcl
  used for [exec]ution. The code has to change, we need
  detection of the filesystem type and copy libbench.tcl
  out of the wrapped archive into a native location.


tkt_uuid: 2762361fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: ComboBox Backround error "ambiguous state"
comment:
  A backround error was invoked using a BWidget combo box:

  > ambiguous state "": must be active, disabled, or normal
  >     (processing "-state" option)
  >     invoked from within
  > "$path configure $realopt $value"
  >     (procedure "Widget::_test_tkresource" line 7)
  >     invoked from within
  > "$_optiontype($type) $option $value [lindex $optdesc 3]"
  >     (procedure "Widget::configure" line 31)
  >     invoked from within
  > "Widget::configure $path $args"
  >     (procedure "configure" line 2)
  >     invoked from within
  > "configure $path -state $_grab(oldstate)"
  >     (procedure "ArrowButton::_leave" line 6)
  >     invoked from within
  > "ArrowButton::_leave .wizard.layoutFrame.advanced.clientArea.c1.a.c"
  >     (command bound to event)

  This indicates, that the leave event may be invoked without a former enter event.

  To fortify the widget against this situation, the following two patches may be used:

  arrow.tcl Line 73:
  Old contents:
      array set _grab {current "" pressed "" oldstate "" oldrelief ""}
  New contents:
      array set _grab {current "" pressed "" oldstate "normal" oldrelief ""}

  Alternate patch:
  (Line 436)
  proc ArrowButton::_leave { path } {
  ...
  configure $path -state $_grab(oldstate)
  ...
  The configure line may be protected to empty string contents by:
  if {0 == [string length $_grab(oldstate)]} {
      configure $path -state $_grab(oldstate)
  }

  Version information:
  BWidget 1.8.0
  TCL8.4.16
  Windows XP (not shure)


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: 223325ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
priority: 7 High
resolution: Fixed
title: No config directory
comment:
  Configuration of the package fails because htere is a missing config directory, which used to be in the Scriptics CVS server.


tkt_uuid: 1968777fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Locale problems
comment:
  When validating a man page I'm writing, I kept getting error messages such as:

  /Library/Tcl/bin/dtplite: Doctools Error in macro at line 51, column 4:
  [call [cmd format_bytes]  [arg ...]
  --> (FmtError) Manpage error (deflist), "call  " : unknown error code "deflist" (for locale sv_se).

  (The error turned out to be that [call] cannot be used in a "commands" list, which strikes me as somewhat illogical, but that's a separate matter.) This report is about the fact that I don't get an error message -- only the msgcat code for the message, if I understand it right.

  Msgcat isn't a package I'm familiar with (locales generally seem to be a neverending source of trouble, so I try to stay clear of having code depend on them), but it appears there is something wrong with the way Doctools is using them here, since the message is missing.

  One possible solution, that occurs to me after reading the msgcat manpage, is to declare messages for the root locale (empty string). Possibly the C locale messages should be moved there?

  Otherwise you'd have to do something clever using [mcunknown].


tkt_uuid: 1114498fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Change 'find' API to allow an error handler
comment:
  Change the API of filutil::find so that a user can set
  an error handler, to be called for all directories
  which are inacessible, or other problems.


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: 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: 1695122fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: doctools - Use pluginmgr to handle backends
comment:
  The backends are currently handled through explicitly created safe interpreters, which are not very good are loading packages or other code.

  Rework the doctools internals to use Tcllib's pluginmgr package to handle checker layer and backends.

  Backends and common supporting code can become proper packages (Tcl Modules even), much easier to manage.

  Note: Message catalogs can get a package interface too. Load package, adds path to look at for the catalogs. alternate: Load package, gets the catalog.


tkt_uuid: 733407ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
title: Please extend tcllib ::csv for multi-line records
comment:
  From comp.lang.tcl, the following interaction occurred.

  > According to Andreas Kupries  <akupries@shaw.ca>:
  > : The
  > :higher level routines (split2*, read2* from a
  channel) however
  > :unfortunately do assume that one record == one line
  and thus bust it.
  > 
  > Is there a way that these could either be extended,
  or that parallel
  > commands able to deal with multiple lines could be
  developed?

  Maybe. Well, at least parallel commands should be
  possible, but 
  they
  will need some sort of extended parser, i.e. read the
  whole channel,
  then parse the whole string into records and split
  records, without
  regarding to lines. I am currently unsure if the
  low-level split will
  return an error if it sees an incomplete record or if
  it will do a
  best-effort of generating something.


  The point is this - the lower level csv commands , with
  appropriate settings (which may need documenting) can
  read and process multiline records.

  However, the higher level read2matrix, etc. procs
  appear to have some built in limitations with respect
  to newline terminated records.


tkt_uuid: 1924065fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
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: 1377453fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: Key bindings problems on Windows
comment:
  On Windows XP the Num-Lock key appears as MOD1, the key
  binding to bring up the popup menu causes the private
  chat not to popup.


tkt_uuid: 1011096fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: counter
priority: 2
foundin: None
resolution: Not Applicable Here
title: secret undocumented switches to counter::get
comment:
  counter::get has several switches that are not
  documented, but sound useful -maxPerMinute,
  -maxPerHour, -maxPerDay

  Those throw an error for non time based counter types:
  (bin) 70 % counter::init foo -hist 20
  (bin) 71 % counter::get foo -maxPerMinute
  can't read "counter(maxPerMinute)": no such element in
  array

  if they get exposed, throw a more helpful error message


tkt_uuid: 1011094fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: counter
priority: 2
foundin: None
resolution: Not Applicable Here
title: Restrictions for counter names not documented
comment:
  The counter names are not arbitrary strings, strings
  containing namespace qualifiers are simply not working:

  (bin) 69 % counter::init ::foo -hist 20
  can't access "counter::T-::foo": parent namespace
  doesn't exist

  Possible solutions:
  a) document this limitation
  b) rework most of the internals, probably slowing down
  counter 

  Just documenting it might be enough.


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: 1416743fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil :: magic
priority: 5 Medium
foundin: None
resolution: Fixed
title: fumagic: test suite bugs
comment:
  with -debug 1:

  Module: fumagic
  modules/fumagic/filetypes.test
  - tcllib::testutils 1.0
  - fileutil::magic::rt 1.0
  * fileutil::magic::filetype 1.0
  WARNING: removeDirectory removing
  "/local/src/tcllib/fileTypeTest":
    not created by makeDirectory
  WARNING: removeDirectory removing
  "/local/src/tcllib/fileTypeTest":
    not a directory
  WARNING: cleanupTests deleting
  /local/src/tcllib/fileTypeTest...
  modules/fumagic/mimetypes.test
  - tcllib::testutils 1.0
  - fileutil::magic::rt 1.0
  * fileutil::magic::mimetype 1.0
  WARNING: removeDirectory removing
  "/local/src/tcllib/fileTypeTest":
    not a directory
  WARNING: cleanupTests deleting
  /local/src/tcllib/fileTypeTest/binaryFile...
  WARNING: cleanupTests deleting
  /local/src/tcllib/fileTypeTest/elfFile...
  WARNING: cleanupTests deleting
  /local/src/tcllib/fileTypeTest/bzipFile...
  WARNING: cleanupTests deleting
  /local/src/tcllib/fileTypeTest/gzipFile...
  WARNING: cleanupTests deleting
  /local/src/tcllib/fileTypeTest/jpegFile...
  WARNING: cleanupTests deleting
  /local/src/tcllib/fileTypeTest/gifFile...
  WARNING: cleanupTests deleting
  /local/src/tcllib/fileTypeTest/pngFile...
  WARNING: cleanupTests deleting
  /local/src/tcllib/fileTypeTest/tiffFile...
  WARNING: cleanupTests deleting
  /local/src/tcllib/fileTypeTest/psFile...
  WARNING: cleanupTests deleting
  /local/src/tcllib/fileTypeTest/pdfFile...
  WARNING: cleanupTests deleting
  /local/src/tcllib/fileTypeTest/epsFile...
  WARNING: cleanupTests deleting
  /local/src/tcllib/fileTypeTest/igwdFile...
  WARNING: cleanupTests deleting
  /local/src/tcllib/fileTypeTest/textFile...
  WARNING: cleanupTests deleting
  /local/src/tcllib/fileTypeTest/scriptFile...
  WARNING: cleanupTests deleting
  /local/src/tcllib/fileTypeTest/htmlFile...
  WARNING: cleanupTests deleting
  /local/src/tcllib/fileTypeTest/xmlFile...
  WARNING: cleanupTests deleting
  /local/src/tcllib/fileTypeTest/xmlWithDTDFile...
  WARNING: cleanupTests deleting
  /local/src/tcllib/fileTypeTest/pgpFile...
  WARNING: cleanupTests deleting
  /local/src/tcllib/fileTypeTest...


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: 2414880fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: Build System & Testing
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: fix installer.tcl to look for and handle tcllibc
comment:
  If one uses critcl to build the C accelerators for tcllib, make install / installer.tcl doesn't install the tcllibc module.

  aku requested in #tcl that I file a bug on this.


tkt_uuid: 1508656fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: default fsCmd fails to store.
comment:
  The default fsCmd cannot STORE when a new file must be
  created. 

  Problem is on line 262 of ftpd.tcl version 1.8, in proc
  ::ftpd::fileAuth:

    if {[Fs exists [file dirname $path]]} {

  By the definition of "fsCmd exists" (... returns a 1 if
  the path specified exists and the path is not a
  directory) this is always false.
  As a consequence, the test on line 268 fails, and
  "return 0" on line 275 gets executed!

  The test intends to assure write perms on the directory
  if the file must be created.


tkt_uuid: 2526633fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: spf
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: SPF package fails with hosts with IPv6 specifications
comment:
  The SPF package (v1.1.1) fails to handle SPF records with IPv6 ("ip6") entries:

  % package require spf
  1.1.1
  % ::spf::spf 1.2.3.4 kvanals.org bob@kvanals.org
  error in "ip6": type mismatch: cannot compare different address types
  % ::spf::spf fe80::1 kvanals.org bob@kvanals.org
  error in "ip4": type mismatch: cannot compare different address types
  % ::spf::SPF kvanals.org
  v=spf1 ip4:207.201.218.70 ip4:207.201.218.71 ip4:66.102.165.0/24 ip6:2001:480:fa0d::/48 ip6:2001:480:f001::55 -all


tkt_uuid: 3567463fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tklib :: ctext
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ctext sends <<Modified>> too often
comment:
  The Tk text widget sends the <<Modified>> virtual event when the state of the [$w edit modified] flag changes.  The ctext widget sends <<Modified>> on every change, whether the [$w edit modified] flag has actually changed or not.  The ctext widget's interface should mimic the text widget's interface here; if there are actions you want to do when the editor's content has just become unsaved, you don't want to repeat them every time they add another character.


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: 1669897fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: dns
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: get mx error
comment:
  I have problem to resolv mx record for friko6.onet.pl
  example:

  % dns::resolve "dns:friko6.onet.pl;type=MX"
  ::dns::2
  % dns::status ::dns::2
  ok
  % foreach a [dns::name ::dns::2] {puts $a}
  friko6.onet.pl
  2 mx.poczta.onet.pl

  There is no MX preference in first line answer



  j.lewandowski@dominet.pl


tkt_uuid: 551127ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
title: csvdiff demo app option for line number
comment:
  I would like to request an option for csvdiff that
  results in the output having a line number associated
  with the output.  Just like diff defaults to telling me
  where the old or new line is located in the file, it
  would be useful for csvdiff to do likewise.  Otherwise,
  one can have a series of lines of output that are
  similar or identical within a file and not be able to
  locate where the difference lies.


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: 1695145fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 2
foundin: None
resolution: Not Applicable Here
title: doctools - General tree representation as backend API
comment:
  This is 'way out there'-RFE.

  Currently the generic layer of the low-level doctools engine uses textutil::expander to parse the input in general, a checker layer to check that the commands are in the correct order, and then calls the appropriate formatting function in the backend. Sort of like a SAX API for XML processing. The backend gets various events and has to make sense of them, although it can be sure that it will not get events in a bad order.

  Consider to rework the generic layer to create a tree structure representing the document. This tree is then given to the backend for conversion into the output format. Instead of each backend having to pull out the document structure out of the series of events this is done in the generic layer, and the backend's responsibility shrinks to only doing the actual conversion into output.

  There is a drawback. There are backends which are much better served by the event stream, because they do not care about the structure, or at least not very much. Examples of these are:

      Existing:    null, list
      Proposed:    wordlist, semantic

  So, best might be to try and accomodate both, i.e. load the backend, query it for its mode of operation, event stream or document tree, then setup the remainder of the processing pipe.

  Note: This tree-based API is very similar to the general API used in PAGE, i.e. backends based on it could be used by this general text processing tool, and the processing pipe for creating the tree might make a suitable reader plugin for PAGE too.


tkt_uuid: 837818ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Quoting module
comment:
  It'd be very nice if we could have a module to help
  with those trickier quoting tasks that newbies get
  slightly wrong.  Here's some example code adapted from
  a discussion on the chat...

  proc makeMap {} {
     set chars {{[\"$#; ]}}
     append chars \t
     set map [list \n \\n]
     foreach c [split $chars {}] {lappend map $c \\$c}
     return $map
  }

  variable addBackslashMap [makeMap]
  proc backslashQuote {string} {
     variable addBackslashMap
     string map $addBackslashMap $string
  }
  proc braceQuote {string} {
     list $string
  }

  There's probably other things that could be added too.


tkt_uuid: 858218ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: errors thrown with no explanation
comment:
  This new code:


              # get return code, check for multi-line text
              
              if {[regexp -- "^-?(^[0-9]+)( |-)?(.*)$"
  $bufline all rc multi_line msgtext]} {
  set errmsg "C: Internal Error @ line 255.
  Regex pattern not matching the input "$bufline""
  if {$VERBOSE} {
      DisplayMsg $s $errmsg control
  }
      } else {
  set buffer $bufline

  # multi-line format detected ("-"), get all the lines

  is throwing errors on both ftp servers I commonly use
  (ftp.santafe.edu and ftp.ucsd.edu).  Can the error
  message be made more information ('regex pattern didn't
  match' isn't very helpful -- what is it expecting? how
  did the observed string differ from that?).


tkt_uuid: 1076403fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: html
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: html: suggestion for a convenience "tag wrapping" proc
comment:
  In the current version of html, wrapping text with html 
  tags is a bit cumbersome in a lot of cases:

  Example:

  puts "[::html::openTag p]"
  puts "This is my paragraph"
  puts "[::html::closeTag]"

  As a convenience for wrapping text or other data inside 
  of tags, I would like to suggest the addition of a 
  general ::html::wrapTag command that would work as 
  follows:

  puts [::hml::wrapTag p "This is my paragraph"]

  which would output the following:

  <p>This is my paragraph</p>

  puts [::html::wrapTag p "foo=bar" "This is my 
  paragraph"]

  would output:

  <p foo=bar>This is my paragraph</p>

  and so on.

  There are some specialized commands for wrapping 
  specific tags around data, such as ::html::cell 
  or ::html:row, but the above is a suggestion for a more 
  general command that would wrap data in with a 
  specified arbitrary tag.


tkt_uuid: 3610482fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: json
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Symmetrical json conversion
comment:
  I propose the following enhancement:

  proc json::dict2json {dictVal {keys {}}} {
      set json ""
      dict for {key val} $dictVal {
  # key must always be a string, val may be a number, string or
  # bare word (true|false|null) or a dict if provided in keys

          ## check if we can resolve the value to a dictionary
          if {($key in $keys) && ![catch {dict keys $val}]} {
              set val [json::dict2json $val $keys]
          } elseif {![string is double -strict $val]
              && ![regexp {^(?:true|false|null)$} $val]} {
              set val "\"$val\""
          }
          if {$json ne ""} {append json ","}
          append json "\"$key\":$val"
      }
      return "\{${json}\}"
  }


  Normally one knows the keys in a dictionary, how else would you be able to access them? Thus you could also pass a list of all possible keys allowing for symmetric conversion:

  > json::json2dict {{"user1":{"maint":"yes"},"user2":{"maint":"no","home":{"town":"Vienna","state":"Austria"}}}}
  user1 {maint yes} user2 {maint no home {town Vienna state Austria}}

  > json::dict2json {user1 {maint yes} user2 {maint no home {town Vienna state Austria}}} {user1 user2 home}
  {"user1":{"maint":"yes"},"user2":{"maint":"no","home":{"town":"Vienna","state":"Austria"}}}


tkt_uuid: 2662968fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: struct :: graph
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Have lappend method accept multiple values
comment:
  I.e. make it consistent with the core built command.
  Look at nodes, arcs, the graph itself, and struct::tree as well.


tkt_uuid: 1427906fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: option for server timeout on initialize
comment:
  In ::smtp::initialize, you can pass a list of mail 
  servers to try, but the timeout to failover and try 
  the "next" server is hard-coded to 600 seconds.  It 
  would be better to have an option one could pass, 
  e.g. -servertimeout, to set this to something 
  different.

  In my installation I needed much faster failover, so 
  I took lazy approach and tweaked the 600 down to 10 
  for the "hear" statement below.

      ...
          if {[set code [catch { hear $token 600 } 
  result]]} {
              array set response [list code 400 
  diagnostic $result]
          } else {
              array set response $result
          }
      ...


tkt_uuid: 483623ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: struct :: graph
priority: 2
foundin: None
resolution: Not Applicable Here
title: Use cmdline where applicable
comment:
  The methods 'arcs' and 'nodes' of "graph" should use 
  the "cmdline" package to simplify their argument 
  processing.


tkt_uuid: 527710ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: None
title: backslashes aren't always handled well
comment:
  In my man page I have something like this:

  [example {
     example 1:
     foo bar \
        baz

     example 1:
     foo bar \\
        baz
  }]

  When I convert that to html, example1 has baz on the 
  same line as "foo bar", and example2 shows the double 
  backslashes. That seems inconsistent, and makes it 
  impossible to get a single backslash.

  When I convert to nroff and run it through man, the 
  first example has baz on the same line as "foo bar", 
  and the second has a single backslash, pretty much as 
  I would expect.

  So, there's a bug there somewhere. My guess is, the 
  html converter is broken.


tkt_uuid: 3603260fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: profiler
priority: 5 Medium
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: 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: 1005377fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: struct :: stack
priority: 9 Immediate
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: 3613725fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: A Category Is Missing
priority: 5 Medium
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: 2346118fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tklib
priority: 7 High
foundin: None
resolution: Not Applicable Here
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: 3439702fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
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: 1695128fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
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: 1176295fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
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: 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: 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: 664392ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
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: 3493711fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: amazon-s3
priority: 5 Medium
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 {


