# ticket

tkt_uuid: 1890987fffffffffffffffffffffffffffffffff
type: Patch
status: Open
resolution: None
subsystem: app: tkchat
priority: 5 Medium
foundin: None
title: Encoded chars in rss feeds
cmimetype: text/plain
submitter: decosterjos
assignee: patthoyts
comment:
  Hi,

  Html-encoded chars (e.g. <) are not decoded before showing the rss info. This piece of code to be added to proc ::tkchat::rss::ShowRssInfo (tkchat_rss.tcl line 152) fixes this problem:

              if {![info exists a(title)] || [string length $a(title)] < 1} {
                  set a(title) "(no title)"
              } else {
  set a(title) [::htmlparse::mapEscapes $a(title)]
      }
      if {[info exists a(description)]} {
  set a(description) [::htmlparse::mapEscapes $a(description)]
      }


  Kind regards,

  Jos.


tkt_uuid: 1891251fffffffffffffffffffffffffffffffff
type: Patch
status: Open
resolution: None
subsystem: tklib: plotchart
priority: 5 Medium
foundin: None
title: Support of long ylabels in horizontal bar charts
cmimetype: text/plain
submitter: relaxmike
assignee: arjenmarkus
comment:
  Hi,
  The goal of this patch is to take into account for long y labels in an horizontal plotchart.
  I have allread discussed that problem on comp.lang.tcl where the solution has been suggested by other Tclers :
  http://groups.google.com/group/comp.lang.tcl/browse_thread/thread/ab5ee289991f81f/6821b6d40899d276?lnk=gst&q=plotchart#6821b6d40899d276
  The problem is that, when long labels are to be displayed, some are hidden because there is no space left on the canvas.
  The patch is fixing the problem by computing the longest y label to display : this allows to set the view accordingly.
  The problem is located in the file plotchart.tcl, in the proc "::Plotchart::createHorizontalBarchart".
  The following code takes into account for the size of the current default font used in the barchart and is not perfect because Plotchart does not take into account the fonts yet.

     label .invisibleLabel
     set fontname [.invisibleLabel cget -font]
     destroy .invisibleLabel
     
     set xspacemax 0
     foreach ylab $ylabels {
         set xspace [font measure $fontname $ylab]
         if {$xspace> $xspacemax} then {
             set xspacemax $xspace
         }
     }
     set text_width [expr {int ( $xspacemax / 10.) + 1}]

     foreach {pxmin pymin pxmax pymax} [MarginsRectangle $w $notext $text_width] {break}

  Best regards,

  Michaël


tkt_uuid: 1891275fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: math :: bignum :: float
priority: 5 Medium
foundin: None
title: ::math::bigfloat::tostr should be able return non-sci notat
cmimetype: text/plain
submitter: rkeene
assignee: sarnold75
closer: sf-robot
closedate: 2008-03-17T02:20:31
comment:
  ::math::bigfloat::tostr [::math::bigfloat::div [::math::bigfloat::fromstr 15637289764914.0 10] [::math::bigfloat::fromstr 2.0 10]]  yeilds 7.818644882e+12

  It would be useful for me to have the ability to tell "tostr" to never return something in scientific notation (i.e., I want "7818644882000.0" instead of "7.818644882e+12")


tkt_uuid: 1892687fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: Build System & Testing
priority: 5 Medium
foundin: None
title: sak.tcl test shell add fails
cmimetype: text/plain
submitter: mic42
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-02-28T05:17:17
comment:
  I tried to add a shell for testing to sak.tcl but get a not so informative stack trace:
  (this is inside msys/mingw, using AS Tcl shells)

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


tkt_uuid: 1896363fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: irc
priority: 5 Medium
foundin: None
title: irc::destroy mentioned in man page doesn't exist
cmimetype: text/plain
submitter: mpc_janssen
assignee: afaupell
closer: afaupell
closedate: 2009-10-15T19:18:56
comment:
  The manual page refers to ::irc::destroy to cleanup a connection. That command doesn't exist, it is [$conn destroy] instead


tkt_uuid: 1897839fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: stringprep
priority: 5 Medium
foundin: None
title: stringprep test 2.3 fails
cmimetype: text/plain
submitter: nobody
assignee: patthoyts
closer: patthoyts
closedate: 2009-11-02T00:29:51
comment:
  sparc solaris 9, Sun C compiler, latest cvs head for tcl and tcllib.

  ---- stringprep-2.3 start

  ==== stringprep-2.3 stringprep: prohibited bidi FAILED
  ==== Contents of test case:

      catch {::stringprep::stringprep nameprep "\u0627\u0031"} result
      set result

  ---- Result was:
  can't read "first_ral": no such variable
  ---- Result should have been (exact matching):
  invalid_bidi
  ==== stringprep-2.3 FAILED


tkt_uuid: 1897841fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: stringprep
priority: 5 Medium
foundin: None
title: nameprep test 5 fails
cmimetype: text/plain
submitter: lvirden
assignee: patthoyts
comment:
  sparc solaris 9 , sun c compiler, cvs head for tcl 8.5 and tcllib:

  ---- nameprep-5 start

  ==== nameprep-5 Case folding U+2121 U+33C6 U+1D7BB FAILED
  ==== Contents of test case:

          list [catch {::stringprep::stringprep nameprep  [encoding convertfrom ut
  f-8 $input]} res] $res
      
  ---- Result was:
  1 prohibited_character
  ---- Result should have been (exact matching):
  0 telc?kg?
  ==== nameprep-5 FAILED


tkt_uuid: 1897843fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: stringprep
priority: 5 Medium
foundin: None
title: saslprep test 1.7 fails
cmimetype: text/plain
submitter: lvirden
assignee: patthoyts
closer: patthoyts
closedate: 2009-11-02T00:38:22
comment:
  sparc solaris 9, sun c compiler, cvs head for tcl and tcllib.

  ++++ saslprep-1.6 PASSED
  ---- saslprep-1.7 start

  ==== saslprep-1.7 Error - bidirectional check FAILED
  ==== Contents of test case:

          list [catch {::stringprep::stringprep saslprep $input} res] $res
      
  ---- Result was:
  1 {can't read "first_ral": no such variable}
  ---- Result should have been (exact matching):
  1 invalid_bidi
  ==== saslprep-1.7 FAILED


tkt_uuid: 1897846fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct :: list
priority: 7 High
foundin: None
title: assign test 4.4 fails
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-02-28T06:57:06
comment:
  sparc solaris 9 sun c compiler, cvs head for tcl and tcllib.

  ---- assign-4.4 start

  ==== 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: 1897848fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct :: list
priority: 5 Medium
foundin: None
title: repeat test suite failures
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-02-28T06:56:52
comment:
  sparc solaris 9 sun c compiler cvs head for tcl and tcllib.

  ---- repeat-4.1 start

  ==== repeat-4.1 repeat command FAILED
  ==== Contents of test case:

      catch {repeat} msg
      set msg

  ---- Result was:
  wrong # args: should be "::struct::list::Lrepeat positiveCount value ?value ...?
  "
  ---- Result should have been (exact matching):
  wrong # args: should be "lrepeat positiveCount value ?value ...?"
  ==== repeat-4.1 FAILED

  ---- repeat-4.2 start

  ==== repeat-4.2 repeat command FAILED
  ==== Contents of test case:

      catch {repeat a} msg
      set msg

  ---- Result was:
  wrong # args: should be "::struct::list::Lrepeat positiveCount value ?value ...?
  "
  ---- Result should have been (exact matching):
  wrong # args: should be "lrepeat positiveCount value ?value ...?"
  ==== repeat-4.2 FAILED


tkt_uuid: 1897850fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tie
priority: 5 Medium
foundin: None
title: tie test suite failures
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-02-28T05:18:38
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: 1898189fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: math :: special
priority: 5 Medium
foundin: None
title: Unbalanced parenthesis in elliptic.tcl
cmimetype: text/plain
submitter: relaxmike
assignee: arjenmarkus
closer: arjenmarkus
closedate: 2008-02-21T07:35:07
comment:
  Hi,
  The line #209 of the file elliptic.tcl
  contains the evaluation of an expression containing an unbalanced parenthesis :

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

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

  Best regards,

  Michaël


tkt_uuid: 1904210fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: math :: linearalgebra
priority: 5 Medium
foundin: None
title: eigenvector-1.0 fails
cmimetype: text/plain
submitter: andreas_kupries
assignee: arjenmarkus
closer: arjenmarkus
closedate: 2009-11-18T07:27:55
comment:
  ---- Result was:
  {{0.70710678118654757 -0.70710678118654735} {0.70710678118654746 0.70710678118654768}} {3.0 1.0}
  ---- Result should have been (numbers matching):
  {{0.707107 -0.707107} {0.707107 0.707107}} {3.0 1.0}
  ==== eigenvectors-1.0 FAILED

  Something in matchNumbers seems to go wrong.
  It compares to 6 decimals, and according to that the actual result should match IMHO.


tkt_uuid: 1906274fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: pop3
priority: 7 High
foundin: None
title: pop3 module doesn't support pop3s
cmimetype: text/plain
submitter: egavilan
assignee: andreas_kupries
comment:
  The pop3 module doesn't support pop over ssl (pop3s).
  This patch adds support for a "-tls" option (must be boolean). The tls package should be present or it throws an error (I think this is the correct behaviour).
  Being there, also corrects a mispelled error message ("Too" instead of "To")


tkt_uuid: 1908098fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct :: set
priority: 7 High
foundin: None
title: ::struct::set include errors for non-existing dst variable
cmimetype: text/plain
submitter: sjeanjean
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-03-09T04:26:49
comment:
  %puts $tcl_version
  8.5
  % package require struct::set
  2.2.2
  % ::struct::set include myset A      <- non initialized set but there is no constructor!
  can't read "myset": no such variable
  % ::struct::set include myset A      <- second try it's ok ?
  % ::struct::set include myset B
  % ::struct::set include myset C
  % ::struct::set size myset   
  1                                    <- must be 3
  % puts $myset
  A B C
  % ::struct::set exclude myset A
  % ::struct::set exclude myset B
  % ::struct::set exclude myset C
  % puts $myset

  % ::struct::set size myset  
  1                                    <- must be 0
  % ::struct::set empty myset 
  0                                    <- must be true(1)


tkt_uuid: 1908510fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: fileutil
priority: 5 Medium
foundin: None
title: Submission: fileutil::globfind
cmimetype: text/plain
submitter: blacksqr
assignee: nobody
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: 1909367fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: Development Tools
priority: 5 Medium
foundin: None
title: No info about syntax errors in the summary
cmimetype: text/plain
submitter: arjenmarkus
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-03-08T04:33:06
comment:
  As discussed, if you make a syntactical mistake in the code for a test, this is not reported in the summary:

  sak.tcl test run <module>

  will indicate no error for that test case.


tkt_uuid: 1909681fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Works For Me
subsystem: md5crypt
priority: 5 Medium
foundin: None
title: Tcl version of md5crypt::aprcrypt error for some values
cmimetype: text/plain
submitter: juliannoble
assignee: patthoyts
closer: patthoyts
closedate: 2008-04-08T00:35:30
comment:
  Tested with 
    tcl8.5a4 & tcllib 1.8.01 
    &
    tcl8.5.2b1 & tcllib 1.10

  If tcllib is installed without the tcllibc module,
  certain values cause md5crypt::aprcrypt to fail with an error as shown below.

  % package require md5crypt
  1.1.0
  % md5crypt::aprcrypt a c
  can't use empty string as operand of "|"

  % set ::errorInfo
  can't use empty string as operand of "|"
      while executing
  "expr {([lindex $V 3] << 16) | ([lindex $V  9] << 8) | [lindex $V 15]}"
      (procedure "::md5crypt::md5crypt_tcl" line 71)
      invoked from within
  "md5crypt::aprcrypt a c"


  When tcllibc is present the error doesn't occur.


tkt_uuid: 1911513fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: struct :: tree
priority: 5 Medium
foundin: None
title: deserialise into a branch of a tree
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
comment:
  The 'serialise' action for a tree allows you to serialise a portion of a tree for... well, for whyever you want. The 'deserialise' action, however, overwrites the entire tree with whatever is being deserialised. This Request is to enable to deserialise into a selected node, to make it fully complementary with serialise.


tkt_uuid: 1913502fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: log
priority: 5 Medium
foundin: None
title: Suppression level Enhancement
cmimetype: text/plain
submitter: mocallins
assignee: mic42
comment:
  I've worked as a scripter the last couple of years doing network testing with TCL. And 1 thing that has come up in at least the last 2 places that I've had work, is the use of the tcllib's log package.

  The enhancement I'd like to see would be levels of suppression for any of the current levels defined.

  What we've all really wanted is levels of debug logging, but after thinking about it some why not just make the change for all of the different levels.

  We can still maintain the use of the idea of suppression but extend it some so that we can have additional levels of suppression for each logLevel (which for sake of discussion would be more appropriately defined as a category).

  Currently we have suppression defined as 0|1, on or off for any particular "category"  info,debug,alert....

  What I would like to see is say have a maximum suppression level of say 5.

  Which I would leave to your capable hands of determining if we change the definition of suppression or just learn what a suppresion level means.

  So we'd have suppression levels of say 0-5 with 0 meaning no suppression and everything less than the level number passed would be suppressed, or the other way around that everything less than the suppression level is suppressed and everything greater is logged.

  The major change to the package would be that the log::log command would require this additional parameter to be passed in. So now we'd have "log::log logLevel suppLevel msg"

  Currently you can just use the different logLevels but the name that gets tagged on the message tends to be misleading. I still only want certain info messages to be displayed at say production run time, but when I'm debugging or developing I'd want addtional "info" messages and not have to use another level like "alert". I'd like the logLevel to still be indicative of the severity of what I am logging.

  So like I said I think a lot of testers would really like levels of debug logging, but if were going to enhance then just lets just have levels of logging for all the current logLevels.


tkt_uuid: 1917035fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: inifile
priority: 6
foundin: None
title: inifile - Global procedure 'commentchar' ok?
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-05-11T00:54:32
comment:
  The package inifile defines a global procedure called 'commentchar' (line 175ff).

  I am wondering if that should be '::ini::commentchar'.
  The documentation certainly uses the latter.
  In this mismatch I believe the documentation is right.


tkt_uuid: 1923685fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct :: graph
priority: 9 Immediate
foundin: None
title: Crash in tcllibc with struct::graph...
cmimetype: text/plain
submitter: petasis
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-03-23T19:09:20
comment:
  I have observed a crash with tcllibc and the struct::graph package. Under ActiveTcl 8.5.1, the attached script crashes. Using teacup to uninstall tcllibc, the script runs fine. Please note that both attached files must be in the same directory to get the attached script to run.


tkt_uuid: 1924065fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: tiff
priority: 5 Medium
foundin: None
title: tiff - addEntry doesn't overwrite
cmimetype: text/plain
submitter: andreas_kupries
assignee: afaupell
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: 1927092fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: ncgi
priority: 1 Zero
foundin: None
title: ncgi documentation - confusing use of term 'session'
cmimetype: text/plain
submitter: juliannoble
assignee: welch
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: 1928856fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: ftpd
priority: 5 Medium
foundin: None
title: fsCmd list - no socket as parameter?
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
comment:
  When the fsCmd-proc is called with "list" or "nlist" as command, the third parameter should be the socket for the answer. But when i print the args-var the values are only:

  / {list {}}

  there's no socket for the Answer!


tkt_uuid: 1931567fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
title: pregistry version problem
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
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: 1935658fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: app: tkchat
priority: 5 Medium
foundin: None
title: Minor issue on a change the font settings
cmimetype: text/plain
submitter: nobody
assignee: patthoyts
closer: patthoyts
closedate: 2008-04-07T15:03:20
comment:
  Hello,

  When I did try to change default font for tkchat window, using Preferences->Fonts dialog, I noticed that some controls (a few buttons and labels) change itself too (become to use the same font face). Tested platform is Linux.

  Look, please, on the font faces: Preferences->Colors, Preferences->Options dialogs, and a clock plugin then.

  I found that those widgets have an extra font settings. It seems, it's enough just to remove the font setting in a few places to get an expectected output.

  BUT, I don't know how the same widgets look on other platforms (Windows or MAC) when the default font is changed, so, perhaps, my tweaks are unneeded at all.

  The path was tested on the current tkchat revision: 1.422. It works for _me_.

  Thanks.

  Sergei Gavrikov


tkt_uuid: 1942472fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: doctools
priority: 5 Medium
foundin: None
title: doctools test hardcode author <aku>
cmimetype: text/plain
submitter: mic42
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-04-16T16:30:24
comment:
  Some of the doctools tests fail for latex output because the authorname is hardcoded to aku.

  Seen this for the doctools tests 13.x 


tkt_uuid: 1944037fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: tklib :: ico
priority: 5 Medium
foundin: None
title: written icons have a doubled height
cmimetype: text/plain
submitter: martinlemburg
assignee: afaupell
closer: afaupell
closedate: 2008-04-21T22:27:18
comment:
  To build the starpack icon file "tclkit.ico" I wanted to add several single icons to a new one (tclkit.ico), but the tclkit wrapper didn't recognized this new tclkit.ico file, because all added icons have the right width, but an invalid height.

  To get into details:

  1. I have 6 icon files with the needed widths of
         48, 32, and 16 pixels
     and the needed color depths of
         8bpp and 4bpp

  2. I load the tklib package ico
  3. I add each icon file with ico::writeIcon
  4. I test the result with ico::iconMembers

  Each added icon has the doubled height of its source icon, so something must be wrong.

  The result output of the attached test script is:

      Loaded the tklib package ico v1.0.2

      building icon:
          adding "48_8.ico" - name "0" (48x48) with 8bpp
          adding "48_4.ico" - name "0" (48x48) with 4bpp
          adding "32_8.ico" - name "0" (32x32) with 8bpp
          adding "32_4.ico" - name "0" (32x32) with 4bpp
          adding "16_8.ico" - name "0" (16x16) with 8bpp
          adding "16_4.ico" - name "0" (16x16) with 4bpp

      new icon "tclkit.ico":
          name "0" (48x96) with 8bpp
          name "1" (48x96) with 4bpp
          name "2" (32x64) with 8bpp
          name "3" (32x64) with 4bpp
          name "4" (16x32) with 8bpp
          name "5" (16x32) with 4bpp


tkt_uuid: 1948953fffffffffffffffffffffffffffffffff
type: Patch
status: Open
resolution: None
subsystem: ncgi
priority: 5 Medium
foundin: None
title: ncgi: incomplete url encoding/decoding
cmimetype: text/plain
submitter: nobody
assignee: welch
comment:
  Se attachment for a reimplementation of encode/decode that supports non ASCII chars.

  Hope this helps


tkt_uuid: 1949752fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
resolution: Fixed
subsystem: ncgi
priority: 5 Medium
foundin: None
title: Documentation - misprint
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-04-23T16:29:35
comment:
  http://tcllib.sourceforge.net/doc/ncgi.html:
  ...
  ::ncgi::exists name
      Returns 1 if the CGI variable name is not present.
  ...

  In fact, it will return 1 if variable IS present and will return 0 if it's NOT. Obvious misprint in the documentation.


tkt_uuid: 1950457fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: snit
priority: 5 Medium
foundin: None
title: hierarchical methods are not delegated
cmimetype: text/plain
submitter: matzek
assignee: duquette
closer: duquette
closedate: 2008-04-26T01:29:25
comment:
  Hi,

  I was stumbling over an unusual behavior of the hierarchical methods. The attached script will deliver the following output:

  Tcl version: 8.4.18
  snit version 1.3.1
  [::.gf is foo] := This is gFoo 1!
  [::.gf isFoo] := This is gFoo 2!
  [::.gf is bar] := "::.gf is bar" is not defined
  [::.gf isBar] := This is gBar 2!

  Tcl version: 8.5.2
  snit version 2.2.1
  [::.gf is foo] := This is gFoo 1!
  [::.gf isFoo] := This is gFoo 2!
  [::.gf is bar] := unknown subcommand "bar": must be foo
  [::.gf isBar] := This is gBar 2!

  The method "isBar" of type gBar is correctly delegated and available to an object .gf of type gFoo, while the method "is bar" is not.

  Is this a bug, or did I miss the respective chapter in the docs?

  kind regards
  -- Matthias Kraft


tkt_uuid: 1951544fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 6
foundin: None
title: YAML module add
cmimetype: text/plain
submitter: kanryu6
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-05-22T19:08:23
comment:
  I impremented a load/dump library for YAML.

  Now, the library name is YAPT.(YAml Parser for Tcl)
  But according to the naming convention of tcllib, this library name might be 'yaml'?

  Although whichever of two names is satisfactory for me, I want to continue development by the determined name.

  Comments?


tkt_uuid: 1954483fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: dns
priority: 5 Medium
foundin: None
title: Package 'resolv' has no documentation
cmimetype: text/plain
submitter: andreas_kupries
assignee: patthoyts
closer: andreas_kupries
closedate: 2008-04-29T21:40:16
comment:
  The packages 'resolv' and 'spf' in the module 'dns' are not documented at all. 'resolv' has no testsuite either.


tkt_uuid: 1954771fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: nameserv (aka nns)
priority: 5 Medium
foundin: None
title: Missing "variable comm" in nns.tcl
cmimetype: text/plain
submitter: vonbane
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-04-30T15:57:22
comment:
  In ::nameserv::configure there is a missing "variable comm".  This results in undefined variable from line 253 ( if { $comm ne ""} { ).


tkt_uuid: 1960369fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: math :: bignum :: float
priority: 5 Medium
foundin: None
title: todouble returns 0.0 when it should not
cmimetype: text/plain
submitter: billposer
assignee: sarnold75
closer: sarnold75
closedate: 2008-05-14T07:26:15
comment:
  There appears to be a bug in math::bigfloat::todouble, which returns 0.0 when it should not. This is illustrated by the following.

  package require math::bigfloat
  namespace import ::math::bigfloat::*
  set foo [fromstr 317.22 4]

  In 8.4.1.4 the following prints 317.220, but in 8.5 it prints 0.000.

  set sr [todouble $foo]
  puts [format "%6.2f" $sr]

  If I convert the bigfloat to a string, then convert the string back to
  a float using scan, as below, the result is 317.220 in 8.5 as well as
  8.4.14.

  set str [tostr $foo]
  scan $str "%f" sr
  puts [format "%6.2f" $sr] 


tkt_uuid: 1961881fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: mime
priority: 6
foundin: None
title: mime - termination string missing error
cmimetype: text/plain
submitter: ejunkermann
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-05-21T19:42:47
comment:
  See bug 631314 for some past history of this.

  The error termination is annoying me, and the pre-631314 code would avoid it, except that in some cases it causes an infinite loop.

  This seems to be because the older code changes the value of line, without changing the value stored for its length (in the meaningfully-named variable x). the following patch seems to deal with this, avoiding both the error and the infinite loop:

  *** 832,839 ****
        while {$moreP} {
            if {$fileP} {
                if {$pos > $last} {
  !                  error "termination string missing in $state(content)"
                     set line "--$boundary--"
                } else {
                  if {[set x [gets $state(fd) line]] < 0} {
                      error "end-of-file encountered while parsing $state(content)"
  --- 832,840 ----
        while {$moreP} {
            if {$fileP} {
                if {$pos > $last} {
  !                  # error "termination string missing in $state(content)"
                     set line "--$boundary--"
  +                set x [string length line]
                } else {
                  if {[set x [gets $state(fd) line]] < 0} {
                      error "end-of-file encountered while parsing $state(content)"


tkt_uuid: 1963364fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: math :: roman
priority: 5 Medium
foundin: None
title: Namespace is math::roman
cmimetype: text/plain
submitter: lars_h
assignee: arjenmarkus
closer: arjenmarkus
closedate: 2008-05-20T07:57:39
comment:
  The manpage calls the commands of this package ::roman::toroman, ::roman::tointeger, etc., when in fact they live in the math::roman namespace, and should thus be specified as math::roman::toroman (or ::math::roman::toroman).

  The manpage should probably also mention that the tointeger and toroman commands are exported by the package.


tkt_uuid: 1966608fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 5 Medium
foundin: None
title: ncgi example has 2 bugs
cmimetype: text/plain
submitter: nobody
assignee: afaupell
closer: afaupell
closedate: 2009-05-13T21:49:32
comment:
  To make the example on the ncgi page working:

  The following two lines are required at the beginning:
  package require ncgi
  ::ncgi::header

  Two lines later it should read:
  set filedata [::ncgi::value filedata]


tkt_uuid: 1968596fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: aes
priority: 5 Medium
foundin: None
title: add -padding to aes package
cmimetype: text/plain
submitter: yahalom
assignee: patthoyts
comment:
  it will be good if you can change the default padding of the string you encrypt by givving the padding algorithm you want to use like PKCS#7 or other popolur padding techniques. this will make it clear that padding is done and can be changed.
  also adding -hexkey will be nice as hex keys are commonly used. if the -hexkey will not be added then better examplesin the documentation of using hex keys will be good.


tkt_uuid: 1968777fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: doctools
priority: 5 Medium
foundin: None
title: Locale problems
cmimetype: text/plain
submitter: lars_h
assignee: andreas_kupries
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: 1969042fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: doctools
priority: 5 Medium
foundin: None
title: Typewriter/fixed-width font
cmimetype: text/plain
submitter: lars_h
assignee: andreas_kupries
comment:
  Doctools has a command [emph] for empasizing text. Another font variation, which is very common in documentation, is that of "typewriter" or fixed-width fonts, to underline that something is exact text as typed by a user or the computer. In LaTeX this is marked up using the \texttt command, in WubWikit it is marked up using backquotes (`tt`), and so on.

  The [example] and [example_begin]...[example_end] commands in doctools already use such a font where available, but always put the text on separate lines. In this, they are rather like the verbatim and alltt environments of LaTeX, but this RFE is for something like \texttt.

  For output formats where this font variation is not possible, the command need not have any effect. I find it rather annoying not to have this style variation for HTML pages or LaTeX, however.


tkt_uuid: 1969078fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: base64
priority: 9 Immediate
foundin: None
title: Base64 speedup
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-05-23T15:45:56
comment:
  The current implementation of base64 in tcllib is very slow, even
  (or especially) when Trf is used. Funny enough,
  the problem is not the base64 encoding itself, but the
  reflow to a different width. The reflow is written in Tcl
  but a seldom example of inefficient code.

  Below is a patch to tcllib 1.10 with a much faster reflow
  code, and an omission of reflowing when not needed.

  Here are a few results comparing the speed of old and new
  reflow code

  string length  time old  time new  factor
   792800          792800     16638     419
  1585600        34025025     33064    1029
  3171200       149875843     66856    2241

  In other words, for a 3MB file , the improvement is
  more than a factor of 2000. It should not take
  more than 2minutes on a recent processor to reflow
  the encoding of a 3MB file. Note, that the factor
  of improvement grows linearly with the size of the
  import.

  The base64 part of tcllib is used often in OpenACS
  for mailing files of the content repository, it is a shame
  to see that the server comes more or less to a halt
  when base64 encoding is performed.

  Please, if possible, apply the following patch
  to tcllib for the next release.

  Attached is a small program to show the speed
  differences leading to the table above.

  all the best
  -gustaf


tkt_uuid: 1969144fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: doctools
priority: 5 Medium
foundin: None
title: Alternatives, repetition, and list structure
cmimetype: text/plain
submitter: lars_h
assignee: andreas_kupries
comment:
  Doctools has a command [opt] to mark something (often a command argument) as being optional. Two siblings of that piece of markup which I often find useful, but have been unable to apply consistently in .man pages, is alternatives and repetition.

  Suitable syntax for alternatives would be

    [alt {first alt.} {second alt.} {third alt.} ...]

  e.g.

    [alt [arg boolean] [const auto]]

  to say that something is a boolean value or the constant "auto". A naive implementation of such an alt command could be

    proc alt {args} {return "([join $args { | }])"}

  since I've seen this formatting with parentheses and vertical bars in e.g. the documentation of the ftp package.

  In line with that, repetition could have the syntax

    [rep {word} ...]

  and be naively implemented as

    proc rep {args} {return "([join $args])*"}

  i.e., a regexp-style rendering (as is also that of [alt] above), with * denoting zero or more repetitions of the arguments of [rep]. A more traditional  rendering might however be

    proc rep {args} {return "?[join $args] ...?"}

  I want [rep] (name is not important, though) because I often find myself wanting to write

    [call [cmd myCmd] [arg mandatory] [rep [arg option] [arg value]]]

  for the option-value part of a command that could be

    myCmd $mandatory
  or
    myCmd $mandatory -option $value
  or
    myCmd $mandatory -option $value -otherOption $otherValue
  etc.


  Also, the way I write packages and documentation, I often find I need to document the structure of various lists, just like one conventionally documents command syntaxes, and I don't see any good way to do that in doctools markup. For the special case of a list constructed as a command callback, it just occurred to me that I could write a dummy list with only a [call] heading, like so:

      A command prefix used to format the values while taking the 
      key names into account. It is called as
      [list_begin definitions]
        [call \{*\}[arg choicecmd] [arg key] [arg value]]
      [list_end]
      Specifying a [option -choicecmd] overrides the 
      [option -entrycmd], if any.

  but this is only a partial solution (and in the HTML rendering it seems to leave an awful lot of vertical space between the "It is called as" and "{*}choicecmd key value" lines).

  In LaTeX, I'd write the above as

      A command prefix used to format the values while taking the 
      key names into account. It is called as
      \begin{quote}
        \meta{choicecmd} \word{key} \word{value}
      \end{quote}
      Specifying a |-choicecmd| overrides the |-entrycmd|, 
      if any.

  which to some extent (\meta, \word, and \verb shorthand `|') relies on particular packages, but what I'm after right now is something that can be used like the `quote' environment in this example.

  As a concrete example, here is a passage of documentation in LaTeX, which documents the structures of two lists. The environment is my own `displaysyntax' rather than `quote', but the idea is the same:

  The \word{msg-id} is used to provide a measure of reliability by 
  providing acknowledgements of message delivery. If an |envelope| 
  with nonempty \word{msg-id} arrives at its destination then a reply 
  message with \word{payload}
  \begin{displaysyntax}
    delivery ack \word{msg-id} \word{time}
  \end{displaysyntax}
  is sent to the \word{from} address. If an |envelope| with nonempty 
  \word{msg-id} could not be sent to the next connection in \word{to} 
  then a reply message with \word{payload}
  \begin{displaysyntax}
    delivery nack \word{msg-id} \word{remaining to} \word{reason}
  \end{displaysyntax}
  is sent to the \word{from} address. These |ack| and |nack| messages 
  have empty \word{msg-id}s.


tkt_uuid: 1969151fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: doctools
priority: 3 Low
foundin: None
title: "Macro" definitions
cmimetype: text/plain
submitter: lars_h
assignee: andreas_kupries
comment:
  In request#1969144, I've described two markup commands [alt] and [rep] that in principle are just combinations of other markup commands with some fixed text arguments, not unlike a macro in e.g. TeX.

  Had there been a facility through which manpage writers could define new command on a per-page basis, like LaTeX authors often do in the preambles of documents, then I could just have defined these commands and went ahead and used them, not having to wait for Doctools to be updated with them.

  The advantage of defining new "macro" commands for repeated elements, rather than just writing out their expansions in full, is that it provides greater consistency in formatting. It also makes it easy to switch from one notation to another, simply by changing the definition of the custom command which generates that definition.


tkt_uuid: 1969847fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: yaml
priority: 5 Medium
foundin: None
title: Testsuite failures
cmimetype: text/plain
submitter: andreas_kupries
assignee: kanryu6
closer: kanryu6
closedate: 2008-10-10T05:01:40
comment:
  Attached a quick run of the testsuite.

  It seems that a 'switch' command in yaml is not protected against the occurrence of '-' in its input, leading to misinterpretation as option.

  I.e. the code contains

      switch $ch

  and it should better be

     switch -- $ch


tkt_uuid: 1970893fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: Serialize Helper
cmimetype: text/plain
submitter: kanryu6
assignee: nobody
closer: kanryu6
closedate: 2008-06-06T13:17:31
comment:
  This library holds the data of complicated structure more strictly, and offers the means to write out.
  In Tcl, the internal expression of "space separated string"s, "list"s, and "dictionary(dict)"s are the same, and is not mutually distinguished so that it may know.
  It is simplicity peculiar to Tcl.
  However, there is a fault that it is undistinguishable what the node is in the library side to write out the data of the two or more floor layer to XML, JSON, YAML, etc. as a fault.
  Then, it stores once what each node is in the "tree" specified clearly, and was made to change into the target form from there.
  It seems that it is moving well although the code which changes the data of five classes into a trial at JSON form was described.
  But I feel [ that are a wonderful talk and I have not found the library and its usage ] only for such a fundamental thing not being offered as a library.
  This library is whether to be required and ? (should be recorded on tcllib?).
  And, what kind of library name should it be?

  # -----------------
  # working sample
  % set bb [huddle create a b c d] ; # create as a dict
  HUDDLE {d {a b c d}}
  % set cc [huddle create e f g h]
  HUDDLE {d {e f g h}}
  % set bbcc [huddle create bb $bb cc $cc]
  HUDDLE {D {bb {d {a b c d}} cc {d {e f g h}}}}
  % set folding [huddle list $bbcc p [huddle list q r] s] ; # create as a list
  HUDDLE {L {{D {bb {d {a b c d}} cc {d {e f g h}}}} {s p} {l {q r}} {s s}}}
  % huddle strip $folding ; # normal Tcl's notation
  {bb {a b c d} cc {e f g h}} p {q r} s
  % huddle jsondump $folding ; # dump as a JSON stream
  [
    {
      "bb": {
        "a": "b",
        "c": "d"
      },
      "cc": {
        "e": "f",
        "g": "h"
      }
    },
    "p",
    [
      "q",
      "r"
    ],
    "s"
  ]


tkt_uuid: 1985214fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
title: Typos in Quick Help and command parser
cmimetype: text/plain
submitter: matzek
assignee: nobody
closer: patthoyts
closedate: 2008-06-05T11:14:45
comment:
  Hi Pat

  I found two typos in revision 1.432: 1. the explanation of /whisper is wrong and 2. /back does currently not accept a status, due to a wrong regexp.

  Patch attached.

  kind regards
  -- Matthias Kraft


tkt_uuid: 1998628fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: math
priority: 5 Medium
foundin: None
title: Tcl lib and safe interpreter
cmimetype: text/plain
submitter: nicolascastagne
assignee: arjenmarkus
closer: andreas_kupries
closedate: 2009-12-04T17:38:24
comment:
  I am working on Linux, with active tcl 852, and tcllib installed through teacup. 
   
  ************ 
   First question 
   ************ 
   I tried executing the following: 
           > /opt/ActiveTcl-8.5/bin/tclsh8.5 
           % ::safe::interpCreate 
           interp0 
           % interp eval interp0 "package require math" 
           script error 
   
  Indeed, as discussed on this comp.lang.tcl thread :
  http://groups.google.com/group/comp.lang.tcl/browse_thread/thread/3e15e20b001e6ecf#

  If you set a log command for the safe package then you can see the problem: 
   
    % proc debug args { puts "LOG: $args" } 
     % safe::setLogCmd debug 
     debug 
     % $i eval { package require math } 
     LOG: {ERROR for slave interp0 : invalid command name "pwd"} 
   
  It seems the math package tries to use [pwd] for some reason, which is not available in a safe slave.

  I don't see any true reason that would forbid requiring the math package in a safe interp ?
  If 
   you set a log command for the safe package then you can see the problem: 
   
    % proc debug args { puts "LOG: $args" } 
     % safe::setLogCmd debug 
     debug 
     % $i eval { package require math } 
     LOG: {ERROR for slave interp0 : invalid command name "pwd"} 
   It seems the math package tries to use [pwd] for some reason, which is not available in a safe slave.

  Perhaps there are, but I don't see any true reason that would forbid requiring the math package in a safe interp.

  More generally, I guess most tcllib packages, which are a-priori "safe" should load into a safe slave.


tkt_uuid: 2001539fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: math :: calculus
priority: 5 Medium
foundin: None
title: calculus::solveTriDiagonal bug
cmimetype: text/plain
submitter: nicolascastagne
assignee: arjenmarkus
closer: arjenmarkus
closedate: 2008-08-13T07:47:39
comment:
  The execution of :math::calculus::solveTriDiagonal on a 3x3 matrix, such as  :
     set X [::math::calculus::solveTriDiagonal {3 3} {1 1 1} {2 2} {1 0 0}]
  returns a liste of length 2 :
     { 1 0 }

  It should return a list of length 3 (the size of the matrix).



  The bug may be either on line 527 or 536 or 557 in calculs.tcl version 0.7, revision 1,13.


  The for loop should pbly go one step further.


tkt_uuid: 2002489fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: treeql
priority: 1 Zero
foundin: None
title: tree-tcl test 4.4.17 in test suite - error msg difference
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
comment:
  I'm using the latest activestate cvs head snapshots of tcl 8.6 and tcllib on Solaris 2.8 SPARC. The test suite message is:
  ---- tree-tcl-4.4.17 start

  ==== tree-tcl-4.4.17 error in walk FAILED
  ==== Contents of test case:

      set t [list ]
      proc foo {} {
          global t
          tree mytree
          mytree insert root end 0 1 2 3
          mytree insert 0 end a b c
          lappend t ==
          mytree walk root {a n} {
              if {[string equal $n "b"]} {
                  lappend t .
                  error fubar
              }
              lappend t $a $n
          }
          lappend t ==
          return bad-return
      }
      catch {lappend t [foo]} result
      mytree destroy
      list $t $result $::errorInfo

  ---- Result was:
  {== enter root enter 0 enter a .} fubar {fubar
      while executing
  "error fubar"
      ("WalkCall" body line 4)
      invoked from within
  "WalkCall $avar $nvar $name $node "enter" $script"
      (procedure "::struct::tree::_walk" line 88)
      invoked from within
  "::struct::tree::_walk ::mytree root {a n} {
              if {[string equal $n "b"]} {
                  lappend t .
                  error fubar
              }
              lappend t $a $n
          }"
      ("_walk" body line 1)
      invoked from within
  "mytree walk root {a n} {
              if {[string equal $n "b"]} {
                  lappend t .
                  error fubar
              }
              lappend t $a $n
          }"
      (procedure "foo" line 7)
      invoked from within
  "foo"}
  ---- Result should have been (exact matching):
  {== enter root enter 0 enter a .} fubar {fubar
      while executing
  "error fubar"
      invoked from within
  "if {[string equal $n "b"]} {
                  lappend t .
                  error fubar
              }"
      ("WalkCall" body line 2)
      invoked from within
  "WalkCall $avar $nvar $name $node "enter" $script"
      (procedure "::struct::tree::_walk" line 88)
      invoked from within
  "::struct::tree::_walk ::mytree root {a n} {
              if {[string equal $n "b"]} {
                  lappend t .
                  error fubar
              }
              lappend t $a $n
          }"
      ("_walk" body line 1)
      invoked from within
  "mytree walk root {a n} {
              if {[string equal $n "b"]} {
                  lappend t .
                  error fubar
              }
              lappend t $a $n
          }"
      (procedure "foo" line 7)
      invoked from within
  "foo"}
  ==== tree-tcl-4.4.17 FAILED


tkt_uuid: 2010798fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: md5
priority: 5 Medium
foundin: None
title: variable pollution on package require md5
cmimetype: text/plain
submitter: juliannoble
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-07-04T18:28:20
comment:
  The final 'namespace eval' in md5x.tcl seems to have a 'creative writing' problem regarding the variable e.

  e.g

  % set e myvalue
  myvalue
  % package require md5
  2.0.5
  %set e
  critcl


  Looking in cvs - it seems an 'unset e' has been added, but this isn't enough, as the original e is still the variable being written to.

  Looks like it just needs an extra line:
  variable e 


tkt_uuid: 2013082fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: general request
priority: 5 Medium
foundin: None
title: Submission: Amazon S3 access in pure Tcl
cmimetype: text/plain
submitter: dnew
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-07-08T22:32:41
comment:
  Attached is a zip file containing code that talks to Amazon's Simple Storage Service (S3) in pure Tcl. Included is documentation (in dtp man form) and tests (in tcltest form). The license is (or at least should be) the same as the rest of TclLib. 

  I'm not sure if something needs to be done to make it TEA-compatible, but I offer it as the 1.0 version for general use.

  In any case, I would be pleased to have this in TclLib.


tkt_uuid: 2014172fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: tklib :: tooltip
priority: 5 Medium
foundin: None
title: Unkown option "-highlightthickness" when using ttk
cmimetype: text/plain
submitter: neilhampton
assignee: hobbs
closer: hobbs
closedate: 2008-11-18T00:17:25
comment:
  The tklib::tooltip library reports the following error when run within a tile/ttk application:

  unknown option "-highlightthickness"
    while executing
  "label $b.label -highlightthickness 0 -relief solid -bd 1 -background lightyellow -fg black"
    (procedure "tooltip::tooltip" line 50)
    invoked from within
  "tooltip::tooltip $tb.1.b1 "Re-load the test definitions""


  The following code demonstrates the problem:


  package require tile
  namespace import -force ttk::*
  package require tooltip

  button .b -text Hello
  tooltip::tooltip .b "Tip"


tkt_uuid: 2014325fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: cmdline
priority: 5 Medium
foundin: None
title: couldn't set variable "dummy"
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-07-09T18:04:24
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: 2015992fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tklib :: tooltip
priority: 5 Medium
foundin: None
title: Too many events in canvas
cmimetype: text/plain
submitter: ramsan
assignee: hobbs
closer: hobbs
closedate: 2008-07-14T23:06:27
comment:
  Function tooltip::enableCanvas is called for every tooltip assigned to every item.

  It does:

  $w bind all <Enter> +[namespace code [list itemTip $w]]
  .....

  So it adds a command to the binding for every item. It is not correct. The solution is to check if the canvas has already been enabled:

  proc ::tooltip::enableCanvas {w args} {
      
      if { [string first itemTip [$w bind all <Enter>]] != -1 } { return }
      $w bind all <Enter> +[namespace code [list itemTip $w]]
      $w bind all <Leave>        +[namespace code [list hide 1]] ; # fade ok
      $w bind all <Any-KeyPress> +[namespace code hide]
      $w bind all <Any-Button> +[namespace code hide]
  }


tkt_uuid: 2018141fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: ldap
priority: 5 Medium
foundin: None
title: Reimpl. of search filter strings parsing/encoding
cmimetype: text/plain
submitter: flatworm
assignee: loewerj
closer: mic42
closedate: 2008-07-20T19:52:43
comment:
  This patch reimplements parsing and encoding of search filter strings, namely:
  * Implemented proper syntax parsing using regexps only when really applicable. The parser appears to be enough robust for errors in filter specifications.
  * Options in attribute descriptions are now permitted (but not used, see below).
  * Implemented full support for extensible match rules.

  Test suite with pretty complete coverage for this code is also provided.

  Other changes include:
  * Removed artifical restriction of permitted types of search result PDUs: this removes module misbehaving when presented with a PDU tagged with apptype 19 (search continuation).
  * Fixed RFC number in leading commend in ldap.tcl.
  * Added Vim modelines to ldap.tcl and ldap.test to force braindamaged indentation mode used in these files.

  This patch should fix bugs 1751871 and 1852718.

  The ldap module with this patch applied works for me against Windows Server 2003 LDAP directory.

  Note on options: while LDAP RFCs mention one standard attribute description option "binary" which requires special encoding when transmitting associated attribute values, I failed to understand both its applicability to client requests and whether its usage has any sense in search representation of filter strings. So the proposed implementation parses it, but does nothing besides this.


tkt_uuid: 2022905fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: Build System & Testing
priority: 2
foundin: None
title: 74 test failures with Tcl HEAD (wrong # args)
cmimetype: text/plain
submitter: msofer
assignee: andreas_kupries
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: 2024843fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: math :: special
priority: 5 Medium
foundin: None
title: erf is not accurate
cmimetype: text/plain
submitter: nobody
assignee: arjenmarkus
closer: arjenmarkus
closedate: 2008-08-13T07:47:02
comment:
  Problem description
  ====================

  For erf(1)
  Tcl gives 0.842638529766, while gcc 0.84270079294971

  Reproduction
  ============

  > package require math
  1.2.2
  > package require math::special
  0.1
  > ::math::special::erf 1
  0.842638529766
  ===========================================
  gcc --version
  gcc (GCC) 3.4.2
  Copyright (C) 2004 Free Software Foundation, Inc.
  This is free software; see the source for copying conditions.  There is NO
  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

  >cat <<EOF >erf.c
  ? #include <stdio.h>
  ? #include <stdlib.h>
  ? #include <math.h>
  ? int main(int argc, char**argv) {
  ?    printf("%16.14lf\n", erf(atof(argv[1])));
  ?    return 0;
  ? }
  ? EOF
  >gcc -o erf erf.c -lm ; erf 1
  0.84270079294971


tkt_uuid: 2025485fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: uevent
priority: 5 Medium
foundin: None
title: uevent::unbind typo in variable name
cmimetype: text/plain
submitter: pmmartin
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-07-23T16:19:18
comment:
  Missing category for tcllib: uev or uevent

  package: uevent 0.1.2
  file: uevent.tcl
  proc: uevent::unbind

  line 12 of uevent::unbind:
    set te [lrange $tex 0 1]
  should probably be:
    set te [lrange $tec 0 1]


tkt_uuid: 2028993fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: htmlparse
priority: 5 Medium
foundin: None
title: ::htmlparse::mapEscapes doesn't handle the &apos; entity
cmimetype: text/plain
submitter: skiidoo
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-07-28T22:22:53
comment:
  &apos; is not a valid HTML entity [1] but it is valid in XML [2].

  XHTML is supposed to be valid XML, W3C says [3]:
  > The named character reference &apos; (the apostrophe,
  > U+0027) was introduced in XML 1.0 but does not appear
  > in HTML. Authors should therefore use &#39; instead of
  > &apos; to work as expected in HTML 4 user agents.

  The point here is &apos; might be used in XHTML pages (not everybody follows W3C advices, this is real world), and anyway ::htmlparse::mapEscapes might be used on XML trees, so I think it should handle &apos; as well.

  How to reproduce:
  Use ::htmlparse::mapEscapes on a string containing '&apos;'.

  Actual result:
    % package require htmlparse
    1.1.2
    %  ::htmlparse::mapEscapes { J.D.&nbsp;&apos;Boss&apos;&nbsp;Hogg }
     J.D. &apos;Boss&apos; Hogg

  Expected result:
  Map the &apos; entity to an apostrophe:
    %  ::htmlparse::mapEscapes { J.D.&nbsp;&apos;Boss&apos;&nbsp;Hogg }
     J.D. 'Boss' Hogg

  [1] http://www.w3.org/TR/html4/sgml/entities.html
  [2] http://www.w3.org/TR/REC-xml/
  [3] http://www.w3.org/TR/xhtml1/#C_16


tkt_uuid: 2031231fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Out of Date
subsystem: app: tkchat
priority: 5 Medium
foundin: None
title: webchain integration
cmimetype: text/plain
submitter: decosterjos
assignee: patthoyts
closer: patthoyts
closedate: 2010-01-12T21:27:45
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: 2034464fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tklib :: tablelist
priority: 5 Medium
foundin: None
title: columnconfigure -bg isn't respected for -state disabled
cmimetype: text/plain
submitter: pointsman
assignee: nemethi
closer: nemethi
closedate: 2008-08-22T20:21:07
comment:
  A tablelist with -state disable doesn't respect columnconfigure -background settings unter a lot of circumstances. If the -state is disabled, the -background color of the widget itself is used as background color. Though, even that isn't always the case. Sometimes, even with -state disabled, the column -background setting is respected. 

  The script below illustrates this. The tablelist widgets .tl1 and .tl2 differ only in the -state -- .tl2 is disabled.

  With a click on the button you change the 3. tablelist. Its content change and it is switched to -state disabled, but the colum -background settings are respected.

  If you hit a second time at the button, the column -background settings are forgotten.

  package require tablelist

  proc changetl3 {} {
      global tl3
      set tl3 [list]
      lappend tl3 [list "" ""]
      .tl3 configure -state disabled
  }

  set cols {
      0 "Column 1" left
      0 "Column 2" left
  }

  lappend tl1 [list foo bar]
  lappend tl2 [list foo bar]
  lappend tl3 [list foo bar]
  for {set i 1} {$i < 4} {incr i} {
      tablelist::tablelist .tl$i \
          -height 4 \
          -columns $cols \
          -background green \
          -listvariable tl$i
  }

  foreach tl {.tl1 .tl2 .tl3} {
      $tl columnconfigure 0 -background white
      $tl columnconfigure 1 -background red
  }
  .tl1 configure -state disabled

  button .b -text "Disable tl3" -command changetl3

  pack .tl1 .tl2 .tl3 .b


tkt_uuid: 2037560fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: inifile
priority: 5 Medium
foundin: None
title: support keys with no = sign
cmimetype: text/plain
submitter: nobody
assignee: afaupell
comment:
  imagine a ini file where you might have 
  [section]
  key

  missing the "= value" part or simply "=" to specify no value for that key

  support for this could be quite useful at times, and also not to hard to implement


tkt_uuid: 2038217fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: irc
priority: 5 Medium
foundin: None
title: the irc package is misusing namespace variables
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-08-05T20:40:37
comment:
  The irc package neglects to use [variable] within the namespace eval to get the right scope in proc ::irc::connection.

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

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

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


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

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

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

  There may be more problems lurking in the irc package.


tkt_uuid: 2038279fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ftp
priority: 5 Medium
foundin: None
title: The ftp package is misusing namespace variables
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-08-05T20:35:02
comment:
  $ tclsh8.5 
  % set serial global; set VERBOSE global; set DEBUG global;
  global
  % source ./ftp.tcl
  % set serial
  0
  % set VERBOSE
  0
  % ...

  It would probably help to audit tcllib's usage of namespace eval with set, so that we can fix these missing [variable] problems that result in globals being overwritten.

  See also:
  http://wiki.tcl.tk/1030


tkt_uuid: 2054498fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: ftp
priority: 5 Medium
foundin: None
title: Race condition in ftp::Get -variable
cmimetype: text/plain
submitter: sbron
assignee: andreas_kupries
comment:
  While using the METAR package by Jos Decoster (http://wiki.tcl.tk/19635) I frequently get an error from the ftp package:

  can't read "ftp(GetData)": no such element in array
      while executing
  "set returnData $ftp(GetData)"
      (procedure "::ftp::StateHandler" line 778)
      invoked from within
  "::ftp::StateHandler 0 sock19"
  Error in plug-in weather:
  can't read "ftp(GetData)": no such element in array
      while executing
  "set returnData $ftp(GetData)"
      (procedure "::ftp::StateHandler" line 778)
      invoked from within
  "::ftp::StateHandler 0 sock19"

  Investigation shows that this appears to be caused by a race condition between the data and control socket. The error shows up when the control event handler sees the "226 File send OK" report before the event handler on the data socket fires and processes the incoming file contents.

  Here's the log with VERBOSE and DEBUG on:

  debug      | Starting new connection with: 
  debug      |   no option
  debug     control | C: Connection from 140.90.128.71:21
  debug      | -> rc="220"
  -> msgtext="220 Authorized users only. All activity may be monitored and reported."
  -> state="user"
  debug      | ---> USER anonymous
  debug     control | C: 220 Authorized users only. All activity may be monitored and reported.
  debug      | -> rc="331"
  -> msgtext="331 Please specify the password."
  -> state="passwd"
  debug      | ---> PASS anonymous
  debug     control | C: 331 Please specify the password.
  debug      | -> rc="230"
  -> msgtext="230 Login successful."
  -> state="connect"
  debug     control | C: 230 Login successful.
  debug      | -> rc="   "
  -> msgtext=""
  -> state="type"
  debug      | ---> TYPE I
  debug      | -> rc="200"
  -> msgtext="200 Switching to Binary mode."
  -> state="type_sent"
  debug     control | C: 200 Switching to Binary mode.
  debug      | -> rc="   "
  -> msgtext=""
  -> state="cd"
  debug      | ---> CWD data/observations/metar/stations
  debug      | -> rc="250"
  -> msgtext="250 Directory successfully changed."
  -> state="cd_sent"
  debug     control | C: 250 Directory successfully changed.
  debug      | -> rc="   "
  -> msgtext=""
  -> state="get_active"
  debug     data | D: Port is 33870
  debug      | ---> PORT 192,168,1,2,132,78
  debug      | -> rc="200"
  -> msgtext="200 PORT command successful. Consider using PASV."
  -> state="get_open"
  debug      | ---> RETR EHAM.TXT
  debug     control | C: 200 PORT command successful. Consider using PASV.
  debug      | -> rc="150"
  -> msgtext="150 Opening BINARY mode data connection for EHAM.TXT (62 bytes)."
  -> state="get_sent"
  debug     control | C: 150 Opening BINARY mode data connection for EHAM.TXT (62 bytes).
  debug      | -> rc="226"
  -> msgtext="226 File send OK."
  -> state="get_close"
  debug     data | D: Connection from 140.90.128.71:20
  debug     data | D: Port closed

  I guess the error will only show up for small files. On larger files I can imagine that the last part of the file may be missing, but I haven't actually seen that happen.

  I haven't yet come up with a solution for this problem. I fear it's not going to be straight forward. Temporarily removing the fileevent from the control socket may be a possibility.


tkt_uuid: 2055837fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: jpeg
priority: 5 Medium
foundin: None
title: Bad InteropIFD directory causes crash
cmimetype: text/plain
submitter: nobody
assignee: afaupell
comment:
  Some of my images crash the GetExif function with the following error:

  ---------------------------
  Error in startup script
  ---------------------------
  expected integer but got ""
      while executing
  "format %u $value"
      ("4" arm line 3)
      invoked from within
  "switch -exact -- $type {
          1 { _scan $end $value c value }
          2 { set value [string trimright $value \x00] }
          3 {
              _scan ..."
      (procedure "_format" line 11)
      invoked from within
  "_format $end [string range $value [expr {$len * $i}] [expr {($len * $i) + $len - 1}]] $type 1"
      (procedure "_format" line 7)
      invoked from within
  "_format $byteOrder $value $format $components"
      (procedure "_exif" line 35)
      invoked from within
  "_exif $fh $byteOrder $offset"
      (procedure "_exif" line 19)
      invoked from within
  "_exif $fh $byteOrder $offset"
      (procedure "_exif" line 19)
      invoked from within
  "_exif $fh $byteOrder $start"
      (procedure "::jpeg::getExif" line 28)
      invoked from within
  "::jpeg::getExif "CIMG0049.JPG" "
      invoked from within
  "set t [ ::jpeg::getExif "CIMG0049.JPG" ]"
       ...
  ---------------------------
  OK   
  ---------------------------

  The camera is
  Make : CASIO COMPUTER CO.,LTD 
  Model : QV-R41 
  Software : 1.00                 

  exiftool 7.30 reports a warning "Bad InteropIFD directory".

  I added a length check as a hot fix:

               seek $fh $pos start
           }
  +        if { $size > [ string length $value ] } continue
           lappend return $tag [_format $byteOrder $value $format $components]
       }
       return $return

  The actual problem is a bad pointer to the InteropIFD directory. Therefore,
  a more general solution would be something like black list checking.

  Are there any plans in this direction? I am going to implement one as
  a work around for my own but may also post it as a proposal.


tkt_uuid: 2059415fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: None
priority: 5 Medium
foundin: None
title: ctext error when widget destroyed
cmimetype: text/plain
submitter: relaxmike
assignee: georgeps
closer: georgeps
closedate: 2008-08-19T21:19:58
comment:
  Hi,

  The following error message appears :

  invalid command name ".t._t"
  invalid command name ".t._t"
      while executing
  "$twin search -count length -regexp -- {([^\s\(\{\[\}\]\)\.\t\n\r;\"'\|,]+)} $si $end"
      (procedure "ctext::highlight" line 25)
      invoked from within
  "ctext::highlight .t 1.0 1.19"
      ("after" script)

  This error is reported in background.

  The reason for that bug is that "after" scripts are not cleaned after the destruction of the ctext widget.
  Looking at the ctext::highlight command, it is triggered by the following after sequence :

  after idle [list ctext::highlight $self $lineStart $lineEnd]

  in ctext::instanceCmd command.
  Other "after" script are associated with the command "ctext::comments" as well.

  A solution is to keep track of all after script generated, and to clean them when the widget is destroyed.
  For example, one can add a variable to keep track of the last after script associated with the highlight command :

  namespace eval ctext {
      variable lastafterscript ""
  }

  One can store the after ID with :

  set ::ctext::lastafterscript [after idle [list ctext::highlight $self $lineStart $lineEnd]]

  The Destroy method may contain :

  proc ctext::event:Destroy {win dWin} {
    after cancel $ctext::lastafterscript

  That solves the problem for one ctext only, and only for the last "after" highlight command.
  The real fix needs to store all after scripts, for the current ctext widget only.

  The bug can be reproduced with the unit test script in attachment.

  Regards,

  Michaël


tkt_uuid: 2063144fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: snit
priority: 5 Medium
foundin: None
title: Snit method name collision
cmimetype: text/plain
submitter: duquette
assignee: duquette
comment:
  The following code creates two distinct typemethods
  with but a single body between them:

  snit::type foobar {
      typemethod {a_b c} {} { return 1 }
      typemethod {a b_c} {} { return 2 }
  }

  The command "foobar a_b c" will return 2, rather than
  1; the second typemethod overwrites the first 
  typemethod's proc.  The problem is that the name
  mangling for hierarchical typemethods assumes that
  it can use "_" as a token separator.

  Methods have the same problem, naturally.

  At a minimum, Snit should detect this case and
  throw an error; ideally, the two typemethods should
  have distinct bodies.


tkt_uuid: 2064326fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: app: tkchat
priority: 5 Medium
foundin: None
title: updated de.msg
cmimetype: text/plain
submitter: matzek
assignee: patthoyts
closer: patthoyts
closedate: 2008-08-21T09:36:35
comment:
  Hi Pat,

  I translated and corrected some more entries in de.msg. See attached patch.

  -- Matthias Kraft


tkt_uuid: 2082457fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tklib :: cursor
priority: 5 Medium
foundin: None
title: Cursor is not restored with mega-widgets
cmimetype: text/plain
submitter: relaxmike
assignee: hobbs
closer: hobbs
closedate: 2009-04-24T22:04:17
comment:
  Hi,

  Suppose that you want to manage the cursor of the megawidget ctext. The cursor is not correctly
  restored, because of the delegation of the
  configure on the sub-widgets.
  The fix consists in updating the tree of
  widgets, begining by the bottom,
  instead of begining by the top, as in the
  current implementation.
  A modified implementation is suggested,
  so that the previous versions are maintained.

  In the given test case, you first propagate the watch cursor over the
  widget tree, then restore back the original cursor.

      set mytext [ctext .mytext]
      set result {}
      lappend result [.mytext cget -cursor]
      ::cursor::propagate . watch
      lappend result [.mytext cget -cursor]
      ::cursor::restore .
      lappend result [.mytext cget -cursor]
      destroy $mytext
      set result $result

  The expected result would be "xterm watch xterm".
  The computed result is "xterm watch watch",
  that is, the cursor is not correctly restored
  on the ctext widget. The reason is the
  following.

  The widget .mytext cursor is backed up
  into the CURSOR variable, and the configure
  method is used to update the cursor :

  set CURSOR(.mytext) xterm
  .mytext config -cursor watch

  At that point the instance command in the
  ctext mega-widget delegates to the underlying
  text widget :

  .mytext._t configure -cursor watch

  The cursor package then propagates the configure
  down to the children widgets, begining
  by the linemap :

  set CURSOR(.mytext.l) xterm
  .mytext.l config -cursor watch

  When it comes to the underlying text, the
  backup variable is set to the wrong cursor value,
  because it has allready been updated to the
  "watch" state :

  set CURSOR(.mytext.t) watch
  .mytext.t config -cursor watch
  .mytext._t configure -cursor watch

  When the restore command is called, the
  widget .mytext is correctly updated :

  ::cursor::restore .mytext
  .mytext config -cursor xterm

  By delegation, it triggers the configure
  method on the .mytext._t sub-widget :

  .mytext._t configure -cursor xterm

  Instead, when it comes to the sub-widget directly,
  the watch cursor is configured :

  ::cursor::restore .mytext.t
  .mytext.t config -cursor watch
  .mytext._t configure -cursor watch

  The fix simply consists in restoring children first.
  This is done by implementing unpositionnal
  arguments and maintaining the previous interface
  with a special processing of options.

  See in the attachment for a test-case and
  a suggested modified version of cursor.tcl.

  Regards,

  Michaël


tkt_uuid: 2103920fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Works For Me
subsystem: tklib :: ico
priority: 5 Medium
foundin: None
title: Problems with package ico
cmimetype: text/plain
submitter: nobody
assignee: afaupell
closer: afaupell
closedate: 2009-02-20T03:47:12
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: 2113728fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: snit
priority: 5 Medium
foundin: None
title: "$type info instances" corrupted after object-creation error
cmimetype: text/plain
submitter: aldobu
assignee: duquette
comment:
  = VERSION and PLATFORM
   snit 2.2.1
   tclkit 8.5.2  - Windows XP


  = HOW TO REPRODUCE ERROR

  Let's take the simplest snit-widget:

    snit::widget myWidget {
    }

  and let's create a myWidget instance named ".x" :

    myWidget .x
    myWidget info instances
      # OK  --> .x

  Now, if I (wrongly) try to create a new myWidget named ".x" ( or named like any existing widget ),
  then I (correctly) get an error message 

    myWidget .x
      # OK -->   window name "x" already exists in parent

  BUT, hereafter, I am no more able to query for "myWidget info instances"

    myWidget info instances
      # WRONG! -->   can't read "instance": no such variable

  NOTES:
   * no problem with snit::type
   * no problem with snit::widgetadaptor


tkt_uuid: 2123233fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: yaml
priority: 5 Medium
foundin: None
title: bad [string first|last] syntax?
cmimetype: text/plain
submitter: dgp
assignee: kanryu6
closer: kanryu6
closedate: 2008-09-26T17:33:49
comment:
  This code in [::yaml::_getFoldedString]
  looks suspcious:

   if {[string first $token "\n"] >= 0} { ; # multi-line
       set data(current) [expr {$len - [string last $token "\n"]}]


  I suspect the arguments have their
  order incorrect.  They should follow
  the pattern:

   string first $needle $haystack

  Searching for $token in the string "\n"
  doesn't look right.  If it is right, a
  comment of explanation would help.


tkt_uuid: 2123397fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: ip
priority: 5 Medium
foundin: None
title: bad [string first] in [::ip::version]
cmimetype: text/plain
submitter: dgp
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-04-13T20:33:51
comment:
  In the proc ::ip::version, I see:

      if {[string first $addr :] < 0 && [IPv4? $addr]} {
          set version 4

  where the arguments to [string first]
  appear to be out of order.


tkt_uuid: 2123513fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: csv
priority: 5 Medium
foundin: None
title: missing protections from empty $sepChar
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-10-02T22:28:02
comment:
  % package require csv
  0.7
  % package require struct
  2.1
  % csv::split2matrix [struct::matrix] fubar {}
  couldn't compile regular expression pattern: invalid escape \ sequence
  % csv::split2queue [struct::queue] fubar {}
  couldn't compile regular expression pattern: invalid escape \ sequence

  Likewise for the read2* variants.

  Deep inner parts cannot tolerate an
  empty string value for $sepChar, but not
  all wrappers protect against it.


tkt_uuid: 2124508fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: textutil
priority: 5 Medium
foundin: None
title: textutil::string man page overwrites tcl's string man page
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-10-10T19:14:29
comment:
  When I install tcllib, the textutil::string man page overwrites the string man page from the tcl core. I suspect the textutil::split does the same thing - I reinstalled tcl's doc now so I can't say for certain.


tkt_uuid: 2124523fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ldap
priority: 5 Medium
foundin: None
title: ldapx.man warning from sak
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-10-02T22:35:10
comment:
  When I run sak.tcl nroff, the following warning is produced:

  Gen (nroff): ../../modules/ldap/ldapx.man
  DocTools Warning (missingsect): In macro at line 297, column 42:
  DocTools Warning (missingsect): Refered (Sub)Section "Data" is not known.

  This is from the latest CVS head of tcllib.


tkt_uuid: 2144802fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: snit
priority: 5 Medium
foundin: None
title: snit's from command underdocumented, and possible flaw
cmimetype: text/plain
submitter: andreas_kupries
assignee: duquette
comment:
  It is not documented that 'from argvName option ?default?' only finds the first occurence of the option.
  It is not documented that no attempt is made to resolve how to handle multiple occurences of the same option.

  The flaw: from is able to find an option name, even if it was actually the value for a different option and thus not really an option.

  set argv {-foo -bar -snarf 0}
  from argv -bar x
  => returns -snarf as value
  and argv changes to {-foo 0}

  Should have returned x, as -bar is not present as option, only as value to option -foo.


tkt_uuid: 2155034fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: aes
priority: 8
foundin: None
title: Sign overflow in AddRoundKey
cmimetype: text/plain
submitter: twylite
assignee: patthoyts
closer: twylite
closedate: 2013-01-10T08:10:06
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: 2159700fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Rejected
subsystem: tklib :: tablelist
priority: 5 Medium
foundin: None
title: Bug in tablelist when interacting with gridplus
cmimetype: text/plain
submitter: hgiese
assignee: nemethi
closer: nemethi
closedate: 2008-10-31T20:05:03
comment:
  Hello,
  I noticed an intriguing bug when gridplus and tablelist interact. See the following suite of commands.

  D:\tmp>tclsh85
  % package require gridplus
  2.3
  % package present tablelist_tile
  4.9.2
  % pack [tablelist::tablelist .tbl1 -columns {0 col1 0 col2}]
  % source example2.tcl
  invalid command name ".__helpLabel"
  % pack [tablelist::tablelist .tbl2 -columns {0 col1 0 col2}]
  invalid command name ".__helpLabel"
  % info patchlevel
  8.5.3

  - After loading gridplus (which also loads tablelist_tile) I can create a table. 
  - Trying to [source example2.tcl] (an example from the gridplus distro which also wants to create a table) leads to an error. This error occurs inside of tablelist's code.
  - Now a command like the first one fails, too.

  Conclusion: 
  - gridplus interacts with tablelist in a way which provokes an error.
  - Once this error occurred it seems to be "persistent".

  One more detail: This depends on the version of tablelist: Loading example2.tcl from the gridplus starkit works - but this starkit contains tablelist 4.9.1.
  Best regards
  Helmut Giese


tkt_uuid: 2168846fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: tklib :: plotchart
priority: 5 Medium
foundin: None
title: tklib test suite for plotchart generates core
cmimetype: text/plain
submitter: lvirden
assignee: arjenmarkus
comment:
  platform: sparc solaris 8 displaying back to windows xp exceed
  tcl/tk: 8.5.4 release
  When I run the test suite for tklib, many of the modules generate the msg "No test files remain".

  However, plotchart generates this:
  Module: plotchart
  modules/plotchart/plotchart.test
  Plotchart 1.5.1
  modules/plotchart/plotcontour.test
  classes (cont) : 20.0 40.0 60.0 80.0 100.0 120.0
  modules/plotchart/plothist.test
  couldn't read file "plotchart.tcl": no such file or directory
      while executing
  "source plotchart.tcl"
      (file "/vol/tclsrcsol/tcl85/tklib/modules/plotchart/plothist.test" line 1)
      invoked from within
  "source [pSet file]"

  and, when I look in the directory, I see a core file.
  The core file is for tclsh8.5 and this is the stack trace I see:

   $ dbx /usr/tcl85/bin/tclsh8.5 core
  For information about new features see `help changes'
  To remove this message, put `dbxenv suppress_startup_message 7.0' in your .dbxrc
  Reading tclsh8.5
  core file header read successfully
  Reading ld.so.1
  Reading libtcl8.5.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.5.so
  Reading libX11.so.4
  Reading libXext.so.0
  program terminated by signal ABRT (Abort)
  0xfef9fe08: _libc_kill+0x0008:  bgeu    _libc_kill+0x30
  Current function is Tcl_PanicVA
    103           abort();
  (dbx 1) where                                                         
    [1] _libc_kill(0x0, 0x6, 0x0, 0xffffffff, 0xfefc03bc, 0xfef35940), at 0xfef9fe08
    [2] abort(0xfefbc000, 0xfefc3a44, 0x0, 0x0, 0x4, 0x1), at 0xfef35a24
  =>[3] Tcl_PanicVA(format = 0xfee7ead0 "TkpGetFontFromAttributes: cannot get any font", argList = 0xffbe6400), line 103 in "tclPanic.c"
    [4] Tcl_Panic(format = 0xfee7ead0 "TkpGetFontFromAttributes: cannot get any font", ...), line 132 in "tclPanic.c"
    [5] GetSystemFont(display = 0x15ee70), line 2812 in "tkUnixFont.c"
    [6] CreateClosestFont(tkwin = 0x2c5e98, faPtr = 0x1c80b8, xaPtr = 0xffbe6568), line 1511 in "tkUnixFont.c"
    [7] TkpGetFontFromAttributes(tkFontPtr = (nil), tkwin = 0x2c5e98, faPtr = 0x1c80b8), line 776 in "tkUnixFont.c"
    [8] Tk_AllocFontFromObj(interp = 0x1960b0, tkwin = 0x2c5e98, objPtr = 0x2c9740), line 1169 in "tkFont.c"
    [9] Tk_GetFont(interp = 0x1960b0, tkwin = 0x2c5e98, string = 0x2c8258 "TkDefaultFont"), line 1069 in "tkFont.c"
    [10] DoConfig(interp = 0x1960b0, tkwin = 0x2c5e98, specPtr = 0x2d3f68, value = 0x2c8258 "TkDefaultFont", valueIsUid = 1, widgRec = 0x2d3de8 ""), line 420 in "tkOldConfig.c"
    [11] Tk_ConfigureWidget(interp = 0x1960b0, tkwin = 0x2c5e98, specs = 0x2d3ea8, argc = 0, argv = 0x1812b0, widgRec = 0x2d3de8 "", flags = 128), line 203 in "tkOldConfig.c"
    [12] ConfigureText(interp = 0x1960b0, canvas = 0x2c9e60, itemPtr = 0x2d3de8, objc = 2, objv = 0x1812a8, flags = 0), line 408 in "tkCanvText.c"
    [13] CreateText(interp = 0x1960b0, canvas = 0x2c9e60, itemPtr = 0x2d3de8, objc = 4, objv = 0x1812a0), line 292 in "tkCanvText.c"
    [14] CanvasWidgetCmd(clientData = 0x2c9e60, interp = 0x1960b0, objc = 7, objv = 0x181294), line 978 in "tkCanvas.c"
    [15] TclEvalObjvInternal(interp = 0x1960b0, objc = 7, objv = 0x181294, command = 0xffffffff "", length = -1, flags = 0), line 3690 in "tclBasic.c"
    [16] TclExecuteByteCode(interp = 0x1960b0, codePtr = 0x2c9838), line 2341 in "tclExecute.c"
    [17] TclCompEvalObj(interp = 0x1960b0, objPtr = 0x2beed0, invoker = 0x1810f8, word = 3), line 1474 in "tclExecute.c"
    [18] TclEvalObjEx(interp = 0x1960b0, objPtr = 0x2beed0, flags = 0, invoker = 0x1810f8, word = 3), line 5095 in "tclBasic.c"
    [19] NamespaceEvalCmd(dummy = (nil), interp = 0x1960b0, objc = 4, objv = 0x181128), line 3290 in "tclNamesp.c"
    [20] Tcl_NamespaceObjCmd(clientData = (nil), interp = 0x1960b0, objc = 4, objv = 0x181128), line 2821 in "tclNamesp.c"
    [21] TclEvalObjvInternal(interp = 0x1960b0, objc = 4, objv = 0x181128, command = 0x2c1ffc "namespace eval ::Plotchart {\n    variable config\n\n    set config(charttypes) {xyplot xlogyplot piechart polarplot\n                            h
  istogram horizbars vertbars ganttchart\n                            timechart stripchart isometric 3dplot 3dbars\n                            radialchart txplot 3dribbon}\n\n    set config(xyplot,components)      {title margin text legend leftaxis rightaxis bottomaxis background}\n    set config(xlogyplot,components)   {title margin text legend leftaxis bottomaxis backgro" ..., length = 3763, flags = 0), line 3690 in "tclBasic.c"
    [22] TclEvalEx(interp = 0x1960b0, script = 0x2c1fa0 "# plotconfig.tcl --\n#     Facilities for configuring the various procedures of Plotchart\n#\n\nnamespace eval ::Plotchart {\n    variable config\n\n    set config(charttypes) {xyplot xlogyplot piechart polarplot\n                            histogram horizbars vertbars ganttchart\n                            timechart stripchart isometric 3dplot 3dbars\n                            radialchart txplot 3dribbon}\n\n    set config(xyplot,components)      {title margin text legend leftaxis rightaxis bottomaxis background}\n" ..., numBytes = 6711, flags = 0, line = 5), line 4339 in "tclBasic.c"
    [23] Tcl_EvalEx(interp = 0x1960b0, script = 0x2c1fa0 "# plotconfig.tcl --\n#     Facilities for configuring the various procedures of Plotchart\n#\n\nnamespace eval ::Plotchart {\n    variable config\n\n    set config(charttypes) {xyplot xlogyplot piechart polarplot\n                            histogram horizbars vertbars ganttchart\n                            timechart stripchart isometric 3dplot 3dbars\n                            radialchart txplot 3dribbon}\n\n    set config(xyplot,components)      {title margin text legend leftaxis rightaxis bottomaxis background}\n" ..., numBytes = 6711, flags = 0), line 4043 in "tclBasic.c"
    [24] Tcl_FSEvalFileEx(interp = 0x1960b0, pathPtr = 0x2bee88, encodingName = (nil)), line 1820 in "tclIOUtil.c"
    [25] Tcl_SourceObjCmd(dummy = (nil), interp = 0x1960b0, objc = 2, objv = 0x180e70), line 955 in "tclCmdMZ.c"
    [26] TclEvalObjvInternal(interp = 0x1960b0, objc = 2, objv = 0x180e70, command = 0x267f27 "source [file join [file dirname [info script]] "plotconfig.tcl"]\nsource [file join [file dirname [info script]] "plotpack.tcl"]\n#source [file join [file dirname [info script]] "plotbind.tcl"]\n\n# Announce our presence\n#\npackage provide Plotchart 1.5.1\n", length = 65, flags = 0), line 3690 in "tclBasic.c"
    [27] TclEvalEx(interp = 0x1960b0, script = 0x25c610 "# plotchart.tcl --\n#    Facilities to draw simple plots in a dedicated canvas\n#\n# Note:\n#    This source file contains the public functions.\n#    The others are contained in "plotpriv.tcl"\n#\npackage require Tcl 8.4\npackage require Tk\n\n# Plotchart --\n#    Namespace to hold the procedures and the private data\n#\nnamespace eval ::Plot
    [27] TclEvalEx(interp = 0x1960b0, script = 0x25c610 "# plotchart.tcl --\n#    Facilities to draw simple plots in a dedicated canvas\n#\n# Note:\n#    This source file contains the public functions.\n#    The others are contained in "plotpriv.tcl"\n#\npackage require Tcl 8.4\npackage require Tk\n\n# Plotchart --\n#    Namespace to hold the procedures and the private data\n#\nnamespace eval ::Plotchart {\n   variable settings\n   variable legend\n   variable scaling\n   variable methodProc\n   variable data_series\n\n   namespace export worldCoordinates viewPort coordsToPixel \\n  " ..., numBytes = 47634, flags = 0, line = 1434), line 4339 in "tclBasic.c"
    [28] Tcl_EvalEx(interp = 0x1960b0, script = 0x25c610 "# plotchart.tcl --\n#    Facilities to draw simple plots in a dedicated canvas\n#\n# Note:\n#    This source file contains the public functions.\n#    The others are contained in "plotpriv.tcl"\n#\npackage require Tcl 8.4\npackage require Tk\n\n# Plotchart --\n#    Namespace to hold the procedures and the private data\n#\nnamespace eval ::Plotchart {\n   variable settings\n   variable legend\n   variable scaling\n   variable methodProc\n   variable data_series\n\n   namespace export worldCoordinates viewPort coordsToPixel \\n  " ..., numBytes = 47634, flags = 0), line 4043 in "tclBasic.c"
    [29] Tcl_FSEvalFileEx(interp = 0x1960b0, pathPtr = 0x226880, encodingName = (nil)), line 1820 in "tclIOUtil.c"
    [30] Tcl_SourceObjCmd(dummy = (nil), interp = 0x1960b0, objc = 2, objv = 0x180bb8), line 955 in "tclCmdMZ.c"
    [31] TclEvalObjvInternal(interp = 0x1960b0, objc = 2, objv = 0x180bb8, command = 0x2589e6 "source [file join [file dirname [info script]] plotchart.tcl]\n\nputs "Plotchart [package present Plotchart]"\n\n# -------------------------------------------------------------------------\n\n#\n# Note:\n# The tests are formulated such that the resulting numbers\n# are exact. There is no need for a tolerance in the comparison\n#\nproc matchNumbers {expected actual} {\n    set match 1\n    foreach a $actual e $expected {\n^Iif {$a != $e} {\n^I    set match 0\n^I    break\n^I}\n    }\n    return $match\n}\n\nproc checkCanvasItems {w t" ..., length = 62, flags = 0), line 3690 in "tclBasic.c"
    [32] TclEvalEx(interp = 0x1960b0, script = 0x258600 "# -*- tcl -*-\n# Test cases of the Plotchart package\n#\n# Note:\n# Most tests concentrate on the coordinate transformations,\n# as these do not require graphics\n#\n# TODO:\n# - Error handling tests\n# - checks for setZoomPan (changes of coordinates)\n#\n\nif {![package vsatisfies [package provide Tcl] 8.3]} {\n    puts "    Aborting tests for plotchart."\n    puts "    Requiring Tcl 8.3, have [package present Tcl]"\n    return\n}\n\n# -------------------------------------------------------------------------\n#\n# Note:\n#    " ..., numBytes = 16129, flags = 0, line = 41), line 4339 in "tclBasic.c"
    [33] Tcl_EvalEx(interp = 0x1960b0, script = 0x258600 "# -*- tcl -*-\n# Test cases of the Plotchart package\n#\n# Note:\n# Most tests concentrate on the coordinate transformations,\n# as these do not require graphics\n#\n# TODO:\n# - Error handling tests\n# - checks for setZoomPan (changes of coordinates)\n#\n\nif {![package vsatisfies [package provide Tcl] 8.3]} {\n    puts "    Aborting tests for plotchart."\n    puts "    Requiring Tcl 8.3, have [package present Tcl]"\n    return\n}\n\n# -------------------------------------------------------------------------\n#\n# Note:\n#    " ..., numBytes = 16129, flags = 0), line 4043 in "tclBasic.c"
    [34] Tcl_FSEvalFileEx(interp = 0x1960b0, pathPtr = 0x1efe70, encodingName = (nil)), line 1820 in "tclIOUtil.c"
    [35] Tcl_SourceObjCmd(dummy = (nil), interp = 0x1960b0, objc = 2, objv = 0x1809f8), line 955 in "tclCmdMZ.c"
    [36] TclEvalObjvInternal(interp = 0x1960b0, objc = 2, objv = 0x1809f8, command = 0xffffffff "", length = -1, flags = 0), line 3690 in "tclBasic.c"
    [37] TclExecuteByteCode(interp = 0x1960b0, codePtr = 0x2083a8), line 2341 in "tclExecute.c"
    [38] TclCompEvalObj(interp = 0x1960b0, objPtr = 0x285270, invoker = 0x180998, word = 1), line 1474 in "tclExecute.c"
    [39] TclEvalObjEx(interp = 0x1960b0, objPtr = 0x285270, flags = 0, invoker = 0x180998, word = 1), line 5095 in "tclBasic.c"
    [40] Tcl_CatchObjCmd(dummy = (nil), interp = 0x1960b0, objc = 3, objv = 0x1809c0), line 253 in "tclCmdAH.c"
    [41] TclEvalObjvInternal(interp = 0x1960b0, objc = 3, objv = 0x1809c0, command = 0xffffffff "", length = -1, flags = 0), line 3690 in "tclBasic.c"
    [42] TclExecuteByteCode(interp = 0x1960b0, codePtr = 0x2082e8), line 2341 in "tclExecute.c"
    [43] TclCompEvalObj(interp = 0x1960b0, objPtr = 0x1efe28, invoker = 0x2bce8, word = 2), line 1474 in "tclExecute.c"
    [44] TclEvalObjEx(interp = 0x1960b0, objPtr = 0x1efe28, flags = 0, invoker = 0x2bce8, word = 2), line 5095 in "tclBasic.c"
    [45] SlaveEval(interp = 0x2b3d0, slaveInterp = 0x1960b0, objc = 1, objv = 0x2bd18), line 2483 in "tclInterp.c"
    [46] SlaveObjCmd(clientData = 0x1960b0, interp = 0x2b3d0, objc = 3, objv = 0x2bd10), line 2288 in "tclInterp.c"
    [47] TclEvalObjvInternal(interp = 0x2b3d0, objc = 3, objv = 0x2bd10, command = 0xffffffff "", length = -1, flags = 0), line 3690 in "tclBasic.c"
    [48] TclExecuteByteCode(interp = 0x2b3d0, codePtr = 0x208158), line 2341 in "tclExecute.c"
    [49] TclCompEvalObj(interp = 0x2b3d0, objPtr = 0x14ba88, invoker = 0x2bc78, word = 3), line 1474 in "tclExecute.c"
    [50] TclEvalObjEx(interp = 0x2b3d0, objPtr = 0x14ba88, flags = 0, invoker = 0x2bc78, word = 3), line 5095 in "tclBasic.c"
    [51] Tcl_ForeachObjCmd(dummy = (nil), interp = 0x2b3d0, objc = 4, objv = 0x2bca0), line 1818 in "tclCmdAH.c"
    [52] TclEvalObjvInternal(interp = 0x2b3d0, objc = 4, objv = 0x2bca0, command = 0xffffffff "", length = -1, flags = 0), line 3690 in "tclBasic.c"
    [53] TclExecuteByteCode(interp = 0x2b3d0, codePtr = 0x1103c8), line 2341 in "tclExecute.c"
    [54] TclCompEvalObj(interp = 0x2b3d0, objPtr = 0x40b48, invoker = 0x2bb10, word = 3), line 1474 in "tclExecute.c"
    [55] TclEvalObjEx(interp = 0x2b3d0, objPtr = 0x40b48, flags = 0, invoker = 0x2bb10, word = 3), line 5095 in "tclBasic.c"
    [56] Tcl_ForeachObjCmd(dummy = (nil), interp = 0x2b3d0, objc = 4, objv = 0x2bb40), line 1818 in "tclCmdAH.c"
    [57] TclEvalObjvInternal(interp = 0x2b3d0, objc = 4, objv = 0x2bb40, command = 0x47a34 "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 = 3391, flags = 0), line 3690 in "tclBasic.c"
    [58] TclEvalEx(interp = 0x2b3d0, script = 0x46bc8 "# 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.3 2004/04/16 05:21:55 andreas_kupries Exp $\n\nset old_auto_path $auto_path\n\nif {[lsearch [namespace children] ::tcltest] == -1} {\n    namespace eval ::tcltest {}\n    proc :" ..., numBytes = 7191, flags = 0, line = 128), line 4339 in "tclBasic.c"
    [59] Tcl_EvalEx(interp = 0x2b3d0, script = 0x46bc8 "# 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.3 2004/04/16 05:21:55 andreas_kupries Exp $\n\nset old_auto_path $auto_path\n\nif {[lsearch [namespace children] ::tcltest] == -1} {\n    namespace eval ::tcltest {}\n    proc :" ..., numBytes = 7191, flags = 0), line 4043 in "tclBasic.c"
    [60] Tcl_FSEvalFileEx(interp = 0x2b3d0, pathPtr = 0x3cfe0, encodingName = (nil)), line 1820 in "tclIOUtil.c"
    [61] Tcl_Main(argc = -1, argv = 0xffbee4a4, appInitProc = 0x11318 = &Tcl_AppInit(Tcl_Interp *interp)), line 441 in "tclMain.c"
    [62] main(argc = 4, argv = 0xffbee494), line 87 in "tclAppInit.c"
  (dbx 2) 


tkt_uuid: 2169167fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: json
priority: 5 Medium
foundin: None
title: test failures
cmimetype: text/plain
submitter: dgp
assignee: hobbs
closer: kanryu6
closedate: 2009-04-17T23:41:56
comment:
  Running Tcl 8.4.19 with the
  package "dict 8.5.1", I see
  these test failures:

  ---- json-1.1 start

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

  ---- json-1.2 start

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

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

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


tkt_uuid: 2182378fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: nameserv (aka nns)
priority: 5 Medium
foundin: None
title: Running nameserv::search results in no such variable error.
cmimetype: text/plain
submitter: vonbane
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-10-21T17:04:58
comment:
  Running nameserv::search with no arguments results in no such variable error.  The "0" condition of the switch in ::nameserv::search-parseargs does not set oneshot.

  nameserv::search
  can't read "oneshot": no such variable
      while executing
  "list oneshot $oneshot continuous $continuous pattern $pattern"
      (procedure "search-parseargs" line 46)
      invoked from within
  "search-parseargs $args"
      (procedure "nameserv::search" line 9)
      invoked from within
  "nameserv::search"
      (file "client.tcl" line 9)


tkt_uuid: 2192812fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Out of Date
subsystem: inifile
priority: 5 Medium
foundin: None
title: commentchar function not defined in ini namespace
cmimetype: text/plain
submitter: nobody
assignee: afaupell
closer: andreas_kupries
closedate: 2008-10-24T22:01:49
comment:
  man page for inifile has the commentchar function as 

  ini::commentchar ?char? 

  but code has 

  proc commentchar { {new {} } } { ..

  need to change the above line to : 


  proc ::ini::commentchar { {new {}} } {

  in inifile.tcl


tkt_uuid: 2220156fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: snit
priority: 5 Medium
foundin: None
title: Several questions about Snit objects
cmimetype: text/plain
submitter: arjenmarkus
assignee: duquette
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: 2220159fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: snit
priority: 5 Medium
foundin: None
title: Missing in snitfaq: limitiation on names for options
cmimetype: text/plain
submitter: arjenmarkus
assignee: duquette
comment:
  The snitfaq documentation is lacking documentation on
  the allowed names of options. I found out that there 
  are such limitations when I tried to use 
  "transformBefore" as the name.


tkt_uuid: 2225148fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: struct :: list
priority: 3 Low
foundin: None
title: struct::list test suite problems against tcl 8.6 cvs head
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
comment:
  I understand there is no use trying to keep tcllib up to date with a moving target. I just wanted to bring this up so that someone could be thinking about it.

  Tcl 8.6 cvs head (as of yesterday)
  tcllib cvs head 

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

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

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

  ==== repeat-4.2 repeat command FAILED
  ==== Contents of test case:

      catch {repeat a} msg
      set msg

  ---- Result was:
  expected integer but got "a"
  ---- Result should have been (exact matching):
  wrong # args: should be "::struct::list::Lrepeat positiveCount value ?value ...?
  "
  ==== repeat-4.2 FAILED
  ==== repeat-4.4 repeat command FAILED
  ==== Contents of test case:

      catch {repeat 0 b} msg
      set msg

  ---- Result was:

  ---- Result should have been (exact matching):
  must have a count of at least 1
  ==== repeat-4.4 FAILED

  ---- repeat-4.5 start

  ==== repeat-4.5 repeat command FAILED
  ==== Contents of test case:

      catch {repeat -1 b} msg
      set msg

  ---- Result was:
  bad count "-1": must be integer >= 0
  ---- Result should have been (exact matching):
  must have a count of at least 1
  ==== repeat-4.5 FAILED


tkt_uuid: 222664ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ftpd
priority: 8
title: ftpd package does not handle binary files correctly
cmimetype: text/plain
submitter: tellcare
assignee: ericm
closer: ericm
closedate: 2000-11-22T17:27:38
comment:
  Software:
  ---------
  I am using TCL 3.3.2 and installed the latest tcllib0.8.
  Contained in this library is a new package "ftpd" whose current version
  is 1.1.

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

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

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

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

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

  2)
  ::ftpd::fsFile::fs

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

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

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


tkt_uuid: 223325ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
priority: 7 High
title: No config directory
cmimetype: text/plain
submitter: nobody
assignee: ericm
closer: ericm
closedate: 2000-11-29T22:16:25
comment:
  Configuration of the package fails because htere is a missing config directory, which used to be in the Scriptics CVS server.


tkt_uuid: 224476ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
priority: 5 Medium
title: BWidget - MainFrame::setmenustate broken
cmimetype: text/plain
submitter: jenglish
assignee: jenglish
closer: andreas_kupries
closedate: 2001-06-20T15:01:49
comment:
  The following script works with BWidget 1.2.1, but raises an error in 1.3.0:

  --
  package require BWidget
  MainFrame .mf -menu {
          &File {fileTag} file 0 { }
  }
  pack .mf -side top -expand true -fill both
  .mf setmenustate fileTag disabled;# <== here's the problem
  --
  The error message is:
  --
  Error in startup script: syntax error in expression "1 && disabled"
      while executing
  "expr $expression"
      (procedure "MainFrame::setmenustate" line 25)
      invoked from within
  "MainFrame::setmenustate .mf fileTag disabled"
      ("eval" body line 1)
      invoked from within
  "eval MainFrame::$cmd .mf $args"
      (procedure ".mf" line 1)
      invoked from within
  ".mf setmenustate fileTag disabled"
  --

  It looks like this was introduced in mainframe.tcl revision 1.2.

  Suggested fix: revert to the old implementation.


tkt_uuid: 224477ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: pop3
priority: 5 Medium
title: pop3::list and pop3::top can hang
cmimetype: text/plain
submitter: jenglish
assignee: redman
closer: redman
closedate: 2001-05-02T15:06:33
comment:
  Depending on the POP3 server, [pop3::list] and [pop3::top] can hang
  forever.  I've tracked this down to the termination condition in the while loop
  (duplicated in both routines):

          while {1} {
              set line [gets $chan]
              # End of the message is a line with just "."
              if {$line == "."} {;# <== here's the problem
                  break
              } elseif { ... }

  When the POP3 server uses CR+LF as the line terminator (which IIRC
  is what it's supposed to do) and $chan uses -translation binary (which
  pop3::open sets), then '$line' ends up containing ".\r", not ".".

  Suggested fix:

  replace 
  if {$line == "."} { ... }
  with
  if {[string equal [string trimright $line] "."]}  { ... }

  This seems to fix the problem for me.


tkt_uuid: 2250870fffffffffffffffffffffffffffffffff
type: Patch
status: Open
resolution: None
subsystem: fileutil
priority: 5 Medium
foundin: None
title: improvements for fileutil::traverse
cmimetype: text/plain
submitter: glehner
assignee: andreas_kupries
comment:
  This patch improves the fileutil::traverse package in
  several ways.  The changes are documented in the
  man page traverse.man and in the Changelog.  The version
  number of the traverse package has been bumped to 0.5,
  which is also reflected in pkgIndex.

  IMO the -notroot True functionality should be the default
  however the patch is backwards compatible to version 0.4.

  There are no additional test in traverse.test,  I will
  be glad to provide some for the new functionality, if
  the patch is deemed worthy for inclusion.

  Motivation for the patch is to make it suitable for a
  archival/backup system I'm writing.


tkt_uuid: 225308ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
priority: 5 Medium
title: BWidget: tk8.4 breaks Entry widget state option
cmimetype: text/plain
submitter: stevel
assignee: jenglish
closer: jenglish
closedate: 2001-06-29T23:17:20
comment:
  Tk8.4 introduced the -state normal/disabled options for the entry widget. These conflict with the implementation of -state in the BWidget Entry widget. The workaround is to
  create the BWidget Entry widget and configure the state using a separate command. A better solution would be to modify BWidget to recognise Tk 8.4 or later and use the new entry widget features.


tkt_uuid: 2255355fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tklib :: crosshair
priority: 5 Medium
foundin: None
title: documentation error in crosshairs module causes install fail
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-11-10T17:28:05
comment:
  In trying to build the tklib cvs head from 2008 Nov 04 against Tcl 8.6 cvs head, I get this error:

  Generating /projects/sprs_lwv/tcl86/man/mann/crosshair.n
  Doctools Error in reading macro at line 14, column 4:
  []
  --> Unexpected EOF in macro:
  [package crosshair[ package provides com...

      while executing
  "::doctools::_format dt {[comment {-*- tcl -*- doctools manpage}]
  [manpage_begin crosshair n 1.0]
  [copyright {2003 Kevin Kenny}]
  [copyright {2008 (docs..."
      ("eval" body line 1)
      invoked from within
  "eval [list ::doctools::_$cmd $name] $args"
      (procedure "::doctools::DoctoolsProc" line 15)
      invoked from within


  This looks, to me, like someone coded 
  [package crosshair[
  instead of
  [package crosshair]

  When I fix that error, and try again, I then get this error:

  Generating /projects/sprs_lwv/tcl86/man/mann/crosshair.n
  Doctools Error in macro at line 69, column 66:
  [arg
  cmdprefix]
  --> wrong # args: should be "arg text"
      while executing
  "::doctools::_format dt {[comment {-*- tcl -*- doctools manpage}]
  [manpage_begin crosshair n 1.0]
  [copyright {2003 Kevin Kenny}]
  [copyright {2008 (docs..."
      ("eval" body line 1)
      invoked from within
  "eval [list ::doctools::_$cmd $name] $args"
      (procedure "::doctools::DoctoolsProc" line 15)
      invoked from within
  "dt format [get_input $f]"
      (procedure "_man" line 17)
      invoked from within
  "_man crosshair nroff n /projects/sprs_lwv/tcl86/man/mann"
      ("eval" body line 1)
      invoked from within
  "eval $guide($m,$type) $m $args"
      (procedure "xinstall" line 4)
      invoked from within
  "xinstall doc nroff n    $config(doc,nroff,path)"
      (procedure "doinstall" line 18)
      invoked from within
  "doinstall"
      (procedure "main" line 11)
      invoked from within
  "main"
      (file "../installer.tcl" line 485)
  gmake: *** [install] Error 1


  At line 69 and 70, it appears that the formatting line was split in the middle rather than appear on one line.

  After fixing that, the next error to appear was on line 73, where this is the error:
  Generating /projects/sprs_lwv/tcl86/man/mann/crosshair.n
  Doctools Error in macro at line 73, column 0:
  [list_begin]
  --> wrong # args: should be "list_begin what ?hint?"
      while executing
  "::doctools::_format dt {[comment {-*- tcl -*- doctools manpage}]
  [manpage_begin crosshair n 1.0]
  [copyright {2003 Kevin Kenny}]
  [copyright {2008 (docs..."
      ("eval" body line 1)
      invoked from within
  "eval [list ::doctools::_$cmd $name] $args"
      (procedure "::doctools::DoctoolsProc" line 15)
      invoked from within
  "dt format [get_input $f]"
      (procedure "_man" line 17)
      invoked from within
  "_man crosshair nroff n /projects/sprs_lwv/tcl86/man/mann"
      ("eval" body line 1)
      invoked from within
  "eval $guide($m,$type) $m $args"
      (procedure "xinstall" line 4)
      invoked from within
  "xinstall doc nroff n    $config(doc,nroff,path)"
      (procedure "doinstall" line 18)
      invoked from within
  "doinstall"
      (procedure "main" line 11)
      invoked from within
  "main"
      (file "../installer.tcl" line 485)
  gmake: *** [install] Error 1

  I don't know what kind of an argument is needed for list_begin, so that's as far as I got in debugging the problem.


tkt_uuid: 232017ffffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
priority: 5 Medium
title: "string" subcommands require at least Tcl8.1
cmimetype: text/plain
submitter: glennjnn
assignee: andreas_kupries
comment:
  Usage of "string" subcommands: is, equal, map, repeat, replace, totitle
  are not implemented in tcl 8.0.

  tcllib modules should either "package require Tcl 8.1", or be made
  backwards compatible to tcl 8.0.

  The following tcllib source files are affected:
      base64.tcl, compare.tcl, typedCmdline.tcl, ftp.tcl, ftpd.tcl,
      html.tcl, mime.tcl, ncgi.tcl, pop3.tcl, profiler.tcl, graph.tcl,
      queue.tcl, stack.tcl, tree.tcl, uri.tcl


tkt_uuid: 2340320fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Entry invoke is not reachable
cmimetype: text/plain
submitter: relaxmike
assignee: damonc
closer: oehhar
closedate: 2009-06-10T08:19:22
comment:
  Hi (very) Dear Tcl maintainers !

  The _path_command of the Entry widget 
  does not take into account for the 
  invoke command.

  () 49 % package require BWidget
  1.8
  () 50 % Entry .myentry
  .myentry
  () 52 % catch {.myentry invoke} errmsg
  1
  () 53 % puts $errorInfo
  bad option "invoke": must be bbox, cget, configure, delete, get, icursor, index, insert, scan, selection, validate, or xview
      while executing
  ".myentry:cmd invoke"
      ("eval" body line 1)
      invoked from within
  "eval [linsert $larg 0 $path:cmd $cmd]"
      (procedure "Entry::_path_command" line 5)
      invoked from within
  "Entry::_path_command .myentry $cmd $args"
      (procedure ".myentry" line 1)
      invoked from within
  ".myentry invoke"


  The _path_command should be updated to

  proc Entry::_path_command { path cmd larg } {
      if {\
           [string equal $cmd "configure"] || \
           [string equal $cmd "cget"] || \
           [string equal $cmd "invoke"] \
           } {
          return [eval [linsert $larg 0 Entry::$cmd $path]]
      } else {
          return [eval [linsert $larg 0 $path:cmd $cmd]]
      }
  }

  Best regards,

  Michaël


tkt_uuid: 2346118fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: tklib
priority: 7 High
foundin: None
title: canvas::sqmap limitations
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
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: 2359926fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: fileutil
priority: 5 Medium
foundin: None
title: fileutil::tempdir on windows
cmimetype: text/plain
submitter: nobody
assignee: nobody
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: 2370853fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: None
priority: 5 Medium
foundin: None
title: Wrong path added to auto_path
cmimetype: text/plain
submitter: johnseal
assignee: nobody
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: 2376321fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: fileutil
priority: 5 Medium
foundin: None
title: bug in fileutil::TempDir
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-12-02T17:29:38
comment:
  I believe I spotted a bug in fileutil::TempDir for $tcl_platform(platform) eq macintosh. Here is the excerpt:

  macintosh {
      set tmpdir $env(TRASH_FOLDER)  ;# a better place?
  }

  But the variable tmpdir is nowhere used. Probably it should be:

  macintosh {
      lappend attempdirs $env(TRASH_FOLDER)
  }


tkt_uuid: 2381524fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
title: RFE: [logger] print all arguments passed to logger API
cmimetype: text/plain
submitter: hemanglavana
assignee: mic42
closer: mic42
closedate: 2008-12-17T21:52:25
comment:
  The logger package currently prints only the last argument passed to the logger API call. See below:

  rtp-lds-016:437> tclsh
  % package require logger
  0.8
  % namespace eval foo {}
  % logger::initNamespace ::foo
  % foo::log::warn none
  [Wed Dec 03 01:49:23 AM EST 2008] [foo] [warn] 'none'
  % foo::log::warn two errors
  [Wed Dec 03 01:49:37 AM EST 2008] [two] [warn] 'errors'
  %                  

  It would be nice if the last line above had printed 'two errors' instead of just 'errors'. I suspect there could be some backwards compatibility issues, so it would be fine with me to introduce an API to enable this behavior.


tkt_uuid: 2390890fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: exif
priority: 5 Medium
foundin: None
title: Unrecognized EXIF tags should not generate errors
cmimetype: text/plain
submitter: karll
assignee: nobody
closer: afaupell
closedate: 2009-02-19T05:39:03
comment:
  I don't know if the EXIF tags are out of date or what, but I'm getting Unrecognized EXIF tag on every EXIF standard and EXIF standard 2.2 JPEG image I've tried.  Such as:

  Unrecognized EXIF Tag: 34850 (0x8822)

  I don't think unrecognized EXIF tags should be treated as an error.


tkt_uuid: 2414880fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: Build System & Testing
priority: 5 Medium
foundin: None
title: fix installer.tcl to look for and handle tcllibc
cmimetype: text/plain
submitter: karll
assignee: andreas_kupries
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: 2418580fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: log
priority: 5 Medium
foundin: None
title: log debug level is suppressed by default
cmimetype: text/plain
submitter: jxmercog
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-12-12T02:57:53
comment:
  If you do a "package require log" then "log::lvIsSuppressed debug" the command returns a 1.  All the other levels return 0.  I placed a puts statement in the eval portion of log.tcl after the suppressed array is created and debug is set to 0 but once the package finished initializing it is a one. 
  I was able to duplicate this in tcl version 8.3 on HP-UX and with activestates windows install of 8.5.2.

  I found this while trying to turn on the verbose switch in the ftp package.  I ended up having to execute "::log::lvSuppress debug 0" before executing any ftp command to get the ftp package to print anything out.

  Thanks,

  John Mercogliano


tkt_uuid: 2420330fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
title: Problem in Post-order dfs walk of the graph
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2008-12-13T03:58:35
comment:
  While walking the graph , in post-order depth-first search, currently only the last entry (node) in the list , will be deleted, if it has already been visited. Please find the code snippet below: (/struct/graph_tcl.tcl)


  elseif { [string equal $order "post"] } {
              # Post-order Depth-first search

              while { [llength $st] > 0 } {
                  set node [lindex $st end]

                  if {[info exists visited($node)]} {
                      # Second time we are here, pop it,
                      # then evaluate the command.

                      ldelete st end
                       ...
                        ...
                         ... <rest of the code follows>
           


  If there are multiple entries of the same node in the list (st), (this is possible because a single node NODE3 can be a neighbouring node for both NODE1 and NODE2)then this will result in duplicate entries being added in the final sorted list, which is not the right thing.

  To fix this, not just the last entry of the list(for eg: NODE3), but all the entries of that node "NODE3" needs to be removed from the list.

  The fix we have to solve the above problem:
   elseif { [string equal $order "post"] } {
              # Post-order Depth-first search

              while { [llength $st] > 0 } {
                  set node [lindex $st end]

               if {[info exists visited($node)]} {
                   # Second time we are here, pop it,
                   # then evaluate the command.
    while {[set index [lsearch -exact $st node]] != -1} {
             set st [lreplace $st $index $index]
          }
                       ...
                        ...
                         ... <rest of the code follows>

          
  We have noticed this problem only in tcllib, but not in the "critcl version of tcllib". We currently need this working on HP-Itanium platform. But unfortunately, we could not get a critcl version of tcllib available for Hp-Itanium, so looking for this fix in tcllib.

  Thanks in advance.


tkt_uuid: 2426988fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: struct :: matrix
priority: 5 Medium
foundin: None
title: linking to array variable problem
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
comment:
  version: 2.0.1 . 
  Platform windows. 
  ActiveTcl distribution .
  linking to array variable issue.

   Any delete of row of matrix is not reflected in the linked array variable.

  I am using this function in the context of updating Tktable. So it is a big problem

  Regards
  valli
  valli@ezorder.in


tkt_uuid: 2431506fffffffffffffffffffffffffffffffff
type: Patch
status: Open
resolution: None
subsystem: nntp
priority: 5 Medium
foundin: None
title: Event based nntp, plus cleanups
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
comment:
  FYI ...

  -------- Original Message --------
  Subject: Modification of tcllib1.11 package nntp 0.2.1
  Date: Sat, 13 Dec 2008 23:40:19 +0300
  From: Igor Gilyazov <igor.gilyazov@gmail.com>
  To: jeffh@activestate.com



  Hello Jeff,

  I have modified tcllib1.11 package nntp 0.2.1.
  Now it uses [fileevent] model, which allows async connection, timeout
  and other features.
  Also I have made various cleanups.
  My version supports only RFC 977 commands, but I can easily extend it
  with non-standard commands.

  The idea is to make the same modification to all tcllib modules like
  pop, ftp, smtp and etc.
  Also I can try to modify each of these packages to be full compatible
  with RFC.

  I attach Gzip archive with my version of nntp.
  I am not tcl expert, so if you have any suggestions to improve my code,
  you are welcome.
  If my code is useful to you, you can include this package to tcllib as
  nntp 0.2.2 or whatever.

  Regards,

  Igor


tkt_uuid: 2433410fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tklib :: plotchart
priority: 5 Medium
foundin: None
title: tklib build process reports plotchart doc problem
cmimetype: text/plain
submitter: lvirden
assignee: arjenmarkus
closer: arjenmarkus
closedate: 2009-12-10T10:22:45
comment:
  Generating /projects/sprs_lwv/tcl86/man/mann/plotchart.n
  DocTools Warning (sectambig): In macro at line 2332, column 0:
  DocTools Warning (sectambig): (Sub)Section title "RESIZING" causes ambiguous section references.


tkt_uuid: 2440373fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: ncgi
priority: 5 Medium
foundin: None
title: broken compatibility for cookie with Safari + OS X.5.6
cmimetype: text/plain
submitter: dzolli
assignee: welch
comment:
  If one use Safari 3 under Mac OS X.5.6 and you want to set a cookie with ::ncgi::setCookie, you won't be able to get data back because it will add trailing spaces at the end of each cookie value.

  If you have a look at ~/Library/Cookies/Cookies.plist it looks like this:

  <dict>
  <key>Created</key>
  <real>251193654.78859401</real>
  <key>Domain</key>
  <string>localhost</string>
  <key>Expires</key>
  <date>2009-12-18T08:00:54Z</date>
  <key>Name</key>
  <string>SID </string>
  <key>Path</key>
  <string>/ </string>
  <key>Value</key>
  <string>foo </string>
  </dict>

  The quick way to make it works again is to remove each space between variable and semi-colon in ::ncgi::setCookie :

  proc ::ncgi::setCookie {args} {
      variable cookieOutput
      array set opt $args
      set line "$opt(-name)=$opt(-value);"
      foreach extra {path domain} {
          if {[info exists opt(-$extra)]} {
              append line " $extra=$opt(-$extra);"
          }
      }
      if {[info exists opt(-expires)]} {
          switch -glob -- $opt(-expires) {
              *GMT {
                  set expires $opt(-expires)
              }
              default {
                  set expires [clock format [clock scan $opt(-expires)] \
                      -format "%A, %d-%b-%Y %H:%M:%S GMT" -gmt 1]
              }
          }
          append line " expires=$expires;"
      }
      if {[info exists opt(-secure)]} {
          append line " secure "
      }
      lappend cookieOutput $line
  }

  I'm unable to say if it's a ncgi bug, but as far as I can see, it works again with Safari and OS X.5.6 and it doesn't break anything for others browsers / Oses.


tkt_uuid: 2444762fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: ncgi
priority: 5 Medium
foundin: None
title: Mozilla 3.x breaks ncgi::nvlist
cmimetype: text/plain
submitter: nobody
assignee: welch
comment:
  Somewhere in the 3.x release Mozilla appends a character set on GET requests, which in turn breaks the parsing of env(CONTENT_TYPE), which in turns makes tclhttpd return "dont know how to handle "application/x-www-form-urlencoded; charset=XXX""

  This hack bypasses it, but maybe there's a better way to do it...

  proc ::ncgi::nvlist {} {
      set query [query]
      set type  [type]
      #Quick hack by nikos to overcome Mozilla 3.x which appends charset=xxx to env(CONTENT_TYPE)
      # returning a list, e.g. application/x-www-form-urlencoded; charset=UTF-8
       if {[string match "*;"  [lindex $query 0]]} {
  # set type "application/x-www-form-urlencoded"
  set type "[lindex $query 0]"
  set type "[lindex [split $type ";"] 0]"
  } else {
  }
      #end nikos
      switch -glob -- $type {
  "" -
  text/xml* -
  application/x-www-form-urlencoded* -
  application/x-www-urlencoded* {
      set result {}
          ...........
          ..........  


tkt_uuid: 2459470fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: ftp
priority: 5 Medium
foundin: None
title: Debug and Verbose do not generate output
cmimetype: text/plain
submitter: jxmercog
assignee: andreas_kupries
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: 2499603fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: fileutil
priority: 5 Medium
foundin: None
title: fileutil::jail returns wrong results in repeated execution
cmimetype: text/plain
submitter: apnadkarni
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-09-24T22:29:33
comment:
  See console output below:

  (woof) 48 % package require fileutil
  1.13.5
  (woof) 49 % ::fileutil::jail /temp /a
  /temp/a
  (woof) 50 % ::fileutil::jail /temp /a
  /a
  (woof) 51 % ::fileutil::jail /temp /b
  /temp/b
  (woof) 52 % ::fileutil::jail /temp /b
  /b

  I see this as pretty serious given the intent of jail is to provide some level of security.

  Platform is Tcl 8.6b1 on XP

  /Ashok


tkt_uuid: 2499641fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: fileutil
priority: 5 Medium
foundin: None
title: stripPath does not correctly handle mixed case paths
cmimetype: text/plain
submitter: apnadkarni
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-02-05T23:40:43
comment:
  stripPath does not correctly handle mixed case paths on Windows. See console session below

  (woof) 65 % ::fileutil::stripPath /temp /temp/foo
  foo
  (woof) 66 % ::fileutil::stripPath /temp /Temp/foo
  /Temp/foo

  On windows, it should recognize that /temp and /Temp are in fact the same.

  Platform: fileutil 1.13.5 under Tcl 8.6b1 on Windows XP SP2

  /Ashok


tkt_uuid: 2499978fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: tklib
priority: 5 Medium
foundin: None
title: Infinite bug on widget::scrolledwindow
cmimetype: text/plain
submitter: ofv
assignee: hobbs
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: 2512528fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: crc
priority: 5 Medium
foundin: None
title: crc32 wrong with -seed option
cmimetype: text/plain
submitter: wowbagger
assignee: patthoyts
closer: patthoyts
closedate: 2009-03-04T00:55:23
comment:
  Generating crc32 of the strings '?' and 'Hello' generates the correct values as tested agains other code and online crc generators.

  Using the command crc::crc32 -seed [crc::crc32 ?] Hello produces the crc 0x4cc062a6 other tools generate the crc of 0xC2A6E6F2. Trf and critcl not used.


tkt_uuid: 2526629fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: spf
priority: 5 Medium
foundin: None
title: SPF package is apparently dysfunctional
cmimetype: text/plain
submitter: rkeene
assignee: patthoyts
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: 2526633fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: spf
priority: 5 Medium
foundin: None
title: SPF package fails with hosts with IPv6 specifications
cmimetype: text/plain
submitter: rkeene
assignee: patthoyts
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: 2538424fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: base64
priority: 5 Medium
foundin: None
title: unset in namespace has global side effects
cmimetype: text/plain
submitter: mtsmith
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-01-29T04:31:10
comment:
  revision 1.29 of base64.tcl (latest revision) has an unset in the namespace eval base64 call when Trf isn't present. The specific line is:

  199: unset base64_tmp i char len val

  It also uses base64_tmp, i, char, len, and val earlier within the namespace eval. Since they're never declared with a "variable" call, they're resolved to global namespace. So the following example results in unappreciated behavior:

  set i 0
  package require base64
  puts $i

  The variable i is unset by base64. This should really be fixed by removing the "unset" call in namespace eval, and instead declaring these temporary variables in namespace scope with calls to variable.


  Fix:
  add after line 161: variable base64_tmp; variable i; variable char; variable len; variable val
  remove line 199: unset base64_tmp i char len val


tkt_uuid: 2557046fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct :: list
priority: 5 Medium
foundin: None
title: struct::list test suite case assign-4.4 fails w/Tcl 8.6
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-09-24T22:27:40
comment:
  Tcl 8.6 cvs head, and tcllib cvs head from activestate ftp site snapshot.

  sparc solaris 8, Sun C compiler

  After building and installing tcl, I configured the tcllib and ran the test suite.

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

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

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

  is different from most of the test case failures. It appears not to be related to changing error message syntax, but instead, something working that wasn't expected to work.


tkt_uuid: 2557107fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: doctools
priority: 5 Medium
foundin: None
title: dtplite seems to insist on presence of keywords
cmimetype: text/plain
submitter: apnadkarni
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-02-10T22:59:18
comment:
  I have a simple test file as follows:
  ----
  [manpage_begin "test" "n" "0.0"]
  [copyright {2009 "Ashok"}]
  [moddesc "sample"]
  [description]

  [manpage_end]
  ----

  If I place it in a directory, say doc, and run the command

  tclsh86 C:\bin\Tcl86\bin\dtplite.tcl -o doc html doc

  the following error is spit out:
  C:\bin\Tcl86\bin\dtplite.tcl: Docidx Error in macro at line 2, column 0:
  [index_end]
  --> (FmtError) IDX error (idx/endcmd), "index_end" : Command not allowed here..

  Adding a [keywords foo] to the above file fixes the error.

  Keywords should be always required. Note that running the command
  tclsh86 C:\bin\Tcl86\bin\dtplite.tcl -o test.html html test.man
  (where test.man is the above file) works fine.

  /Ashok


tkt_uuid: 2593520fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: json
priority: 5 Medium
foundin: None
title: json one-line fix for number parsing
cmimetype: text/plain
submitter: zvr
assignee: hobbs
closer: hobbs
closedate: 2009-04-24T21:35:55
comment:
  in json::_json2dict, when parsing a number value
  (line 192ff.), the code essentially does:
  string is double -failindex last $txt
  set num [string range $txt 0 [expr {$last - 1}]]

  WHAT: this code works fine for cases like
  attr: 123,
  but not for cases with whitespace after the number,
  e.g. if it's the last attribute of an object
  attr: 123
          }

  WHY: due to "last" being set to failindex
  (the character that fails the "is double" test),
  the resulting "num" also contains all whitespace
  after the number and before the failing char.

  FIX: add a "string trimright" to the num definition.


tkt_uuid: 2595296fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: grammar_fa
priority: 5 Medium
foundin: None
title: state rename bugs then state has transition to itself
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-02-13T23:18:41
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: 2597454fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: math
priority: 5 Medium
foundin: None
title: Warnings in documentation
cmimetype: text/plain
submitter: andreas_kupries
assignee: arjenmarkus
closer: arjenmarkus
closedate: 2009-02-23T15:24:39
comment:
  andreask@gila:~/lsf/tcllib> ./sak.tcl doc validate modules/math
  Validate  : ./modules/math/bignum.man
  Validate  : ./modules/math/combinatorics.man
  Validate  : ./modules/math/fourier.man
  Validate  : ./modules/math/linalg.man
  Validate  : ./modules/math/romberg.man
  Validate  : ./modules/math/optimize.man
  Validate  : ./modules/math/bigfloat.man
  Validate  : ./modules/math/calculus.man
  Validate  : ./modules/math/machineparameters.man
  DocTools Warning (depr_strong): In macro at line 11, column 4:
  DocTools Warning (depr_strong): Deprecated command "[strong]".
  DocTools Warning (depr_strong):         Please consider appropriate semantic markup or [emph] instead.
  DocTools Warning (depr_ltype): In macro at line 23, column 0:
  DocTools Warning (depr_ltype): Deprecated list type "bullet".
  DocTools Warning (depr_ltype):  Please use "itemized" instead.
  DocTools Warning (depr_bullet): In macro at line 24, column 0:
  DocTools Warning (depr_bullet): Deprecated command "[bullet]".
  DocTools Warning (depr_bullet):         Please use [item] instead.
  DocTools Warning (depr_bullet): In macro at line 25, column 0:
  DocTools Warning (depr_bullet): Deprecated command "[bullet]".
  DocTools Warning (depr_bullet):         Please use [item] instead.
  DocTools Warning (depr_ltype): In macro at line 106, column 0:
  DocTools Warning (depr_ltype): Deprecated list type "bullet".
  DocTools Warning (depr_ltype):  Please use "itemized" instead.
  DocTools Warning (depr_bullet): In macro at line 107, column 0:
  DocTools Warning (depr_bullet): Deprecated command "[bullet]".
  DocTools Warning (depr_bullet):         Please use [item] instead.
  DocTools Warning (depr_bullet): In macro at line 108, column 0:
  DocTools Warning (depr_bullet): Deprecated command "[bullet]".
  DocTools Warning (depr_bullet):         Please use [item] instead.
  DocTools Warning (depr_ltype): In macro at line 158, column 0:
  DocTools Warning (depr_ltype): Deprecated list type "bullet".
  DocTools Warning (depr_ltype):  Please use "itemized" instead.
  DocTools Warning (depr_bullet): In macro at line 159, column 0:
  DocTools Warning (depr_bullet): Deprecated command "[bullet]".
  DocTools Warning (depr_bullet):         Please use [item] instead.
  DocTools Warning (depr_bullet): In macro at line 160, column 0:
  DocTools Warning (depr_bullet): Deprecated command "[bullet]".
  DocTools Warning (depr_bullet):         Please use [item] instead.
  DocTools Warning (depr_bullet): In macro at line 167, column 0:
  DocTools Warning (depr_bullet): Deprecated command "[bullet]".
  DocTools Warning (depr_bullet):         Please use [item] instead.
  DocTools Warning (depr_bullet): In macro at line 170, column 0:
  DocTools Warning (depr_bullet): Deprecated command "[bullet]".
  DocTools Warning (depr_bullet):         Please use [item] instead.
  DocTools Warning (depr_bullet): In macro at line 171, column 0:
  DocTools Warning (depr_bullet): Deprecated command "[bullet]".
  DocTools Warning (depr_bullet):         Please use [item] instead.
  DocTools Warning (depr_bullet): In macro at line 172, column 0:
  DocTools Warning (depr_bullet): Deprecated command "[bullet]".
  DocTools Warning (depr_bullet):         Please use [item] instead.
  DocTools Warning (depr_bullet): In macro at line 173, column 0:
  DocTools Warning (depr_bullet): Deprecated command "[bullet]".
  DocTools Warning (depr_bullet):         Please use [item] instead.
  DocTools Warning (depr_bullet): In macro at line 174, column 0:
  DocTools Warning (depr_bullet): Deprecated command "[bullet]".
  DocTools Warning (depr_bullet):         Please use [item] instead.
  Validate  : ./modules/math/polynomials.man
  Validate  : ./modules/math/statistics.man
  Validate  : ./modules/math/rational_funcs.man
  Validate  : ./modules/math/roman.man
  Validate  : ./modules/math/fuzzy.man
  Validate  : ./modules/math/constants.man
  Validate  : ./modules/math/special.man
  Validate  : ./modules/math/geometry.man
  Validate  : ./modules/math/math.man
  Validate  : ./modules/math/interpolate.man
  Validate  : ./modules/math/qcomplex.man
  andreask@gila:~/lsf/tcllib>


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
cmimetype: text/plain
submitter: mpc_janssen
assignee: patthoyts
closer: patthoyts
closedate: 2009-03-04T00:28:49
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: 2646568fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: jpeg
priority: 5 Medium
foundin: None
title: jpeg::imageInfo opens files with r+
cmimetype: text/plain
submitter: kot
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-03-02T18:39:03
comment:
  The procedure never needs to write the file -- and really ought not to, of course.

  So, it is wrong for it to open the file with mode r+ -- doing so requires increased permissions (a program is unable to gather imageInfo on a file, that it is not allowed to overwrite), and is otherwise wrong.

  The simple patch is attached -- it will soon be part of FreeBSD's devel/tcllib port.

  Thanks.


tkt_uuid: 2662968fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: struct :: graph
priority: 5 Medium
foundin: None
title: Have lappend method accept multiple values
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
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: 2680202fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: md5
priority: 5 Medium
foundin: None
title: memory leak
cmimetype: text/plain
submitter: mstrhh
assignee: patthoyts
comment:
  the problem is observed by repeatedly calculating the md5 sum on the files of a (preferrably well filled) directory in an interactive tcl shell and watching the mem size of the process:

  foreach n [glob DOWNLOAD/*] {md5::md5 -hex -file $n}

  Tested on openSuse 11.0, tcl 8.5.5 md5 2.0.7 (TEA version).

  Current workaround: exec md5sum works well so far.

  Test session:
  strobel@s11:~> tclsh
  % package require md5
  2.0.7
  %  exec ps -p [pid] v
    PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND
   5935 pts/1    Sl+    0:00      0     3 24260  3716  0.0 tclsh
  %  foreach n [glob DOWNLOAD/*] {md5::md5 -hex -file $n}
  %  exec ps -p [pid] v
    PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND
   5935 pts/1    Sl+    0:04      0     3 30104  9656  0.2 tclsh
  % foreach n [glob DOWNLOAD/*] {md5::md5 -hex -file $n}
  % exec ps -p [pid] v
    PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND
   5935 pts/1    Rl+    0:08      0     3 36060 15632  0.3 tclsh
  %  foreach n [glob DOWNLOAD/*] {md5::md5 -hex -file $n}
  %  exec ps -p [pid] v
    PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND
   5935 pts/1    Sl+    0:12      0     3 42136 21592  0.5 tclsh
  %


tkt_uuid: 2683544fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
resolution: Not Applicable Here
subsystem: tklib :: plotchart
priority: 5 Medium
severity: Minor
foundin: None
title: clipped x-labels due to font size
cmimetype: text/plain
submitter: vera_soft
assignee: arjenmarkus
closer: aku
closedate: 2456444.39531815
comment:
  I use in my application a bigger font with "font configure TkDefaultFont -size 11 -weight bold" and PlotChart 1.6.1. 
  In xy-plots the x-label is clipped, since there is a fixed size for the labels and tics (pymax), not a font-dependent size.


tkt_uuid: 2686560fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: crc
priority: 8
foundin: None
title: memleak in crc::cksum
cmimetype: text/plain
submitter: pedietz
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-04-21T20:08:25
comment:
  calling crc::cksum over and over causes a huge memleak.

  while { 1 } {
          set a [crc::cksum helloworld]
  }

  doing the same with crc::crc32 doesnt.


tkt_uuid: 2690366fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: doctools
priority: 5 Medium
foundin: None
title: Tk GUI for dtplite
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
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: 2691870fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tklib :: plotchart
priority: 5 Medium
foundin: None
title: determineScale with close numbers
cmimetype: text/plain
submitter: relaxmike
assignee: arjenmarkus
closer: arjenmarkus
closedate: 2009-03-20T18:19:51
comment:
  Hi,
  With Plotchart 1.6.1, used in Tcl 8.4.

  % package require Plotchart
  1.6.1
  % Plotchart::determineScale 0.99999999999999911  1.0000000000000007
  integer value too large to represent

  The cause is in the computation of nicemin :

  set nicemin [expr {$step*$factor*int($xmin/$factor/$step)}]

  Here the value of the factor is very low :

  dx = 1.55431223448e-015
  expon = -14
  factor = 1e-014
  step = 0.2
  xmin = 0.99999999999999911

  so that the value $xmin/$factor/$step is not representable as a 32 bit integer, used in Tcl 8.4.
  In fact, the relative shift between the 
  two numbers is 1.e-15, very close to the 
  precision of double precision floating 
  point numbers.

  A possible fix is to compute the relative shift,
  and to modify the inputs so that at least 8 significant digits are different.
  The modified version gives the result :

  % catch {Plotchart::determineScale 0.99999999999999911  1.0000000000000007 0 8} errmsg ; set errmsg
  expon = -8
  factor = 1e-008
  step = 0.2
  xmin = 0.999999995
  0.999999994 1.000000006 2e-009

  The patched version is in attachment of the bug report.

  Best regards,

  Michael


tkt_uuid: 2694992fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Wont Fix
subsystem: exif
priority: 5 Medium
foundin: None
title: exif reports "Unrecognized EXIF Tag"
cmimetype: text/plain
submitter: stwitt
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-03-19T20:20:44
comment:
  Hi!

  My e-mail is
  mailto:stefan@witt-netz.de

  I am currently using your EXIF package to scan fotos for creation dates. In some fotos obviously originating from some Olympus camera, the EXIF package reports an error.
  See command sequence below:

  % set f [lindex $fl 17]
  p4190019.jpg
  % package require exif
  1.1.2
  % exif::analyzeFile $f
  Unrecognized EXIF Tag: 34850 (0x8822)
  % set h [open $f r]
  file5
  % exif::analyze -sadads $h
  can not find channel named "-sadads"
  % exif::analyze $h
  Unrecognized EXIF Tag: 34850 (0x8822)

  Target system is a laptop running Fedora 9,
  tcl_version 8.5, wish as executable & the latest yum-available tcllib.

  In my opinion, you might either want to
   - silently ignore unkonwn tags and just return the   known ones with associated values

  -introduce a -nocomplain flag upon which exif::analyze shows the a.m. behavior


  If you wouldn't mind sharing your thoughts with me - great! I might even spare some time in the near future to help you look into the source & find a fix.

  SourceForge bounced this request in the first place when I tried to include the foto causing the trouble (for size reasons, sure). Well, I'd e-mail the foto to you if you'd just drop me a mail.

  Best regards,

  Stefan Witt


tkt_uuid: 2695513fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: math :: linearalgebra
priority: 5 Medium
foundin: None
title: MkBorder may be wrong
cmimetype: text/plain
submitter: relaxmike
assignee: arjenmarkus
closer: arjenmarkus
closedate: 2009-03-20T17:57:45
comment:
  Hi,

  According to the definition given in Nash "Compact
  method", the diagonal of the Border matrix is 
  equal to 1.

  But one can check that this is not true with 
  tcllib :

  % package require math::linearalgebra
  1.0.3
  % ::math::linearalgebra::mkBorder 5
  {1.0 0.0 0.0 0.0 1.0} {0.0 1.0 0.0 0.0 0.5} {0.0 0.0 1.0 0.0 0.25} {0.0 0.0 0.0 1.0 0.125} {1.0 0.5 0.25 0.125 0.0}

  Notice that the last value is 0 instead of 1.

  See in the following page, and look 
  at the "BORDERBAND" routine with the sample 
  Border matrix of size 5 :
  http://orion.math.iastate.edu/burkardt/f_src/testmat/testmat.f90

  The following version of MkBorder tries to fix the bug :

  proc mkBorder { size } {
      set result {}
      for { set j 0 } { $j < $size } { incr j } {
          set row {}
          for { set i 0 } { $i < $size } { incr i } {
              set entry 0.0
              if { $i == $j } {
                  set entry 1.0
              } elseif { $j!=$size-1 && $i == $size-1 } {
                  set entry [expr {pow(2.0,-$j)}]
              } elseif { $i!=$size-1 && $j == $size-1 } {
                  set entry [expr {pow(2.0,-$i)}]
              } else {
                 set entry 0.0
              }
              lappend row $entry
          }
          lappend result $row
      }
      return $result
  }

  Best regards,

  Michaël


tkt_uuid: 2695564fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: math :: linearalgebra
priority: 8
foundin: None
title: mkWilkinson+ may be wrong
cmimetype: text/plain
submitter: relaxmike
assignee: arjenmarkus
closer: arjenmarkus
closedate: 2009-03-20T18:01:09
comment:
  Hi,

  Try 

  math::linearalgebra::show [math::linearalgebra::mkWilkinsonW+ 7]

  and see :

  3.0000 1.0000 0.0000 0.0000 0.0000 0.0000 0.0000 
  1.0000 2.0000 1.0000 0.0000 0.0000 0.0000 0.0000 
  0.0000 1.0000 1.0000 1.0000 0.0000 0.0000 0.0000 
  0.0000 0.0000 1.0000 0.0000 1.0000 0.0000 0.0000 
  0.0000 0.0000 0.0000 1.0000 -1.0000 1.0000 0.0000 
  0.0000 0.0000 0.0000 0.0000 1.0000 2.0000 1.0000 
  0.0000 0.0000 0.0000 0.0000 0.0000 1.0000 3.0000 

  but the diagonal must contain only positive 
  terms, as shown in :

  http://www.uni-kassel.de/hrz/server/UNIX+SW-Infos/graphics/MatLab-5.3/help/techdoc/ref/wilkinson.html

  The following fixes the problem :

  proc mkWilkinsonW+ { size } {
      set result {}
      for { set j 0 } { $j < $size } { incr j } {
          set row {}
          for { set i 0 } { $i < $size } { incr i } {
              if { $i == $j } {
              # int(n/2)+1-min(i, n- i+1)
                set min [expr {(($i+1)>$size-($i+1)+1? $size-($i+1)+1 : ($i+1))}]
                set entry [expr {int($size/2) + 1 - $min}]
              } elseif { $i == $j+1 || $i+1 == $j } {
                  set entry 1
              } else {
                  set entry 0
              }
              lappend row $entry
          }
          lappend result $row
      }
      return $result
  }

  math::linearalgebra::show [mkWilkinsonW+ 7]

  The problem was to correctly manage the 
  move for the mathematical formula (where i
  starts from 1) to Tcl (where i starts 
  from 0).

  Best regards,

  Michaël


tkt_uuid: 2695618fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: math :: linearalgebra
priority: 8
foundin: None
title: MkWilkinson- is also false...
cmimetype: text/plain
submitter: relaxmike
assignee: arjenmarkus
closer: arjenmarkus
closedate: 2009-03-20T18:00:47
comment:
  Compute the Wilkinson - matrix of size 5 :

  math::linearalgebra::show [math::linearalgebra::mkWilkinsonW- 5]
  2.0000 1.0000 0.0000 0.0000 0.0000 
  1.0000 3.0000 1.0000 0.0000 0.0000 
  0.0000 1.0000 4.0000 1.0000 0.0000 
  0.0000 0.0000 1.0000 5.0000 1.0000 
  0.0000 0.0000 0.0000 1.0000 6.0000

  Notice that the diagonal terms are increasing.
  But the formula gives 
  Aii= [n/2]+1-i
  so that the diagonal terms must decrease.

  The following is a fix :

  proc mkWilkinsonW- { size } {
      set result {}
      for { set j 0 } { $j < $size } { incr j } {
          set row {}
          for { set i 0 } { $i < $size } { incr i } {
              if { $i == $j } {
                  set entry [expr {int($size/2) + 1 - ($i+1)}]
              } elseif { $i == $j+1 || $i+1 == $j } {
                  set entry 1
              } else {
                  set entry 0
              }
              lappend row $entry
          }
          lappend result $row
      }
      return $result
  }

  math::linearalgebra::show [mkWilkinsonW- 5]

  2.0000 1.0000 0.0000 0.0000 0.0000 
  1.0000 1.0000 1.0000 0.0000 0.0000 
  0.0000 1.0000 0.0000 1.0000 0.0000 
  0.0000 0.0000 1.0000 -1.0000 1.0000 
  0.0000 0.0000 0.0000 1.0000 -2.0000 


tkt_uuid: 2695827fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: math :: fourier
priority: 5 Medium
foundin: None
title: Emphasise DFT vs. FFT choice up front.
cmimetype: text/plain
submitter: venksi
assignee: lars_h
comment:
  The first line says this: "The math::fourier package implements two versions of discrete Fourier transforms, the ordinary transform and the fast Fourier transform.".  That implies that both versions are available for use.  

  Reading top to bottom it sounds like there are only commands for dft (and none for fft), which is not true.

  "The math::fourier package uses the fast Fourier transform, if applicable, or the ordinary transform to implement the
  discrete fourier transform." might be more appropriate.    


tkt_uuid: 2762361fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ComboBox Backround error "ambiguous state"
cmimetype: text/plain
submitter: oehhar
assignee: damonc
closer: oehhar
closedate: 2009-06-10T08:07:52
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: 2767679fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tar
priority: 5 Medium
foundin: None
title: tar: uninitialized return value
cmimetype: text/plain
submitter: exgerhardr
assignee: afaupell
closer: afaupell
closedate: 2009-05-13T21:27:53
comment:
  In some error situations the return value of tar::* functions are not initialized which leads to a runtime error when returning "return $ret".


tkt_uuid: 2768634fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: json
priority: 5 Medium
foundin: None
title: cannot get last integer correctly
cmimetype: text/plain
submitter: kanryu6
assignee: hobbs
closer: kanryu6
closedate: 2009-04-17T23:22:35
comment:
  the following, it is not correctly.

  % json::json2dict {{"k" : 1.0
    }}
  k {1
    }
  %

  that should be
  % json::json2dict {{"k" : 1.0
    }}
  k 1
  %


tkt_uuid: 2769242fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: struct
priority: 5 Medium
foundin: None
title: Persistence for various data structures
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
comment:
  The following url describe a stack class (perl) whose instances are persistent.
  http://search.cpan.org/~kesteb/Stack-Persistent-0.04/lib/Stack/Persistent.pm
  There is also a php class doing the same using sqlite as store.


tkt_uuid: 2779581fffffffffffffffffffffffffffffffff
type: Patch
status: Open
resolution: None
subsystem: ldap
priority: 5 Medium
foundin: None
title: sid2SDDL function
cmimetype: text/plain
submitter: psidhu
assignee: mic42
comment:
  For converting sids to their text SDDL representations for further use in searches and/or saving to databases etc.


tkt_uuid: 2782256fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: doctools
priority: 5 Medium
foundin: None
title: two potential package bugs found
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-04-29T02:13:54
comment:
  When using the version of doctools provided by teapot, I see the following two errors:

  package require doctools::nroff::man.macros
  can't find package doctools::nroff::man.macros

  even though the file doctools/nroff/man.macros-0.1.tm appears to have been installed by teacup.

  Also, I am seeing

  package require doctools::paths
  conflicting versions provided for package "doctools::paths": 0.1, then 0


tkt_uuid: 2783019fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: scrollwindow bug - flickering scrollbar
cmimetype: text/plain
submitter: nobody
assignee: damonc
closer: oehhar
closedate: 2009-06-29T13:06:44
comment:
  The attached example shows a problem with scrolledwindow in bwidget. The scrolledwindow gets into an infinite loop between xscroll and yscroll when we zoom in out on this example.

  Tcl/tk version : 8.5.3
  BWidget version : 1.8


  package require Tcldot
  package require BWidget

  set graphstring {digraph graph5 {
          node [label="\N"];
          graph [bb="0,0,370,250"];
          "x" [label="AAA\n.Dl", fontsize=12, fontname=zzzfont, style=filled, fillcolor=white, shape=diamond, pos="150,214", width="2.69", height="1.00"];
          z [label=Hs, fontsize=12, fontname=zzzfont, style=filled, fillcolor=white, shape=rectangle, pos="53,64", width="1.47", height="0.50"];
          "y" [label="dl", fontsize=12, fontname=zzzfont, style=filled, fillcolor=white, shape=diamond, pos="247,64", width="3.42", height="1.78"];
          "x" -> z [fontsize=12, fontname=zzzfont, color=black, arrowsize="0.7", label=hs, pos="e,65,82 131,185 113,156 86,115 69,88", lp="152,153"];
          "x" -> "y" [fontsize=12, fontname=zzzfont, color=black, arrowsize="0.7", label=hs, pos="e,220,115 173,186 179,178 187,169 193,160 201,148 209,134 216,121", lp="236,153"];
  }}

  set g [dotstring $graphstring]

  toplevel .t
  set sw [ScrolledWindow .t.sw]
  set cvs [canvas .t.sw.cvs]
  $sw setwidget $cvs
  pack $sw -side top -fill both -expand yes
  bind $cvs <Button-4>  "zoom $cvs 1.1"
  bind $cvs <Button-5>  "zoom $cvs 0.9"
  eval [$g render $cvs dot]
  $cvs configure -scrollregion [$cvs bbox all]

  proc zoom {cvs factor} {
    $cvs scale all 0 0 $factor $factor
    $cvs configure -scrollregion [$cvs bbox all]
  }


tkt_uuid: 2783215fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: ldap
priority: 5 Medium
foundin: None
title: search result is incorrect with multibyte characters
cmimetype: text/plain
submitter: zhangweiwu
assignee: mic42
closer: zhangweiwu
closedate: 2009-04-30T03:38:23
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: 2787849fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: comm
priority: 5 Medium
foundin: None
title: Can comm use Iocpsock under Windows
cmimetype: text/plain
submitter: dunkfan
assignee: andreas_kupries
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: 2787872fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: comm
priority: 5 Medium
foundin: None
title: default standard channel should not be created implicitely
cmimetype: text/plain
submitter: aldobu
assignee: andreas_kupries
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: 2787933fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: md5
priority: 8
foundin: None
title: Leak: md5 or trf?
cmimetype: text/plain
submitter: msofer
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-05-07T05:33:06
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: 2790985fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tar
priority: 5 Medium
foundin: None
title: fail to extract tar created by mks tools
cmimetype: text/plain
submitter: royterry
assignee: afaupell
closer: afaupell
closedate: 2009-05-13T21:23:29
comment:
  The 3rd call to readHearder blows up attempting to tar::untar this file made by windows tar.exe from MKS. Single file tar test case attached.
  FWIW, bsdtar windows exe running on same machine with same file) can extract the file fine. There is apparently confusion over the seek for preceding read as it seems not to return a proper header block. But bsdtar isn't affected. Thanks for any help.. Roy

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


tkt_uuid: 2794454fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: cmdline
priority: 5 Medium
foundin: None
title: error in info command
cmimetype: text/plain
submitter: malfunction54
assignee: andreas_kupries
closer: malfunction54
closedate: 2009-05-20T18:24:52
comment:
  line 196 of the source code reads: "if {[info exist result(?)] || [info exists result(help)]} {"

  I believe that first "exist" should read "exists"


tkt_uuid: 2795699fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: yaml
priority: 5 Medium
foundin: None
title: does not work on TCL 8.4?
cmimetype: text/plain
submitter: al_chou
assignee: kanryu6
closer: kanryu6
closedate: 2009-05-24T03:28:43
comment:
  I tried copying the tcllib 1.11.1 yaml package into my ActiveTcl 8.4.19 lib and got "can't read data(current)" when I ran ::yaml::yaml2dict.  Looking at the yaml code, it looks like it relies on TCL 8.5 array behavior where "incr a(1)" is legal even if a(1) doesn't exist yet.  That wasn't legal in TCL 8.4, so despite the fact that dict was backported to 8.4 and yaml package requires dict if running on a TCL version < 8.5, it doesn't actually work in 8.4.

  I haven't gone through the code changing the incr calls on uninitialized data(current) because I was afraid there might be other TCL 8.4 incompatibilities beyond just those, but I may do that in the near future after my current project ships (until then I can't really justify a lot of yak shaving).


tkt_uuid: 2796712fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
resolution: Not Applicable Here
subsystem: tclapps :: tkchat
priority: 5 Medium
severity: Minor
foundin: None
title: new animated emoticons are damaged
cmimetype: text/plain
submitter: matzek
assignee: afaupell
closer: aku
closedate: 2456444.39514108
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: 2798448fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: uri
priority: 5 Medium
foundin: None
title: uri::split makes host to path without scheme
cmimetype: text/plain
submitter: martinlemburg
assignee: andreas_kupries
comment:
  Hello,

  following code shows the bug in tcllib 1.11.1:

      % info patchlevel
      8.5.7
      % package require uri
      1.2.1
      % uri::split host.td
      port {} path host.td scheme http host {} query {}
      % uri::split http://host.td
      port {} path {} scheme http host host.td query {} pwd {} user {}
      % uri::split host.td ftp
      port {} path host.td scheme ftp host {} type {} user {} pwd {}
      % uri::split ftp://host.td
      port {} path {} scheme ftp host host.td type {} user {} pwd {}

  Best regards,

  Martin Lemburg


tkt_uuid: 2798450fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: uri
priority: 5 Medium
foundin: None
title: uri::split provides no user and pwd without (default) scheme
cmimetype: text/plain
submitter: martinlemburg
assignee: nobody
comment:
  Hello,

  following code shows the bug:

      % info patchlevel
      8.5.7
      % package require uri
      1.2.1
      % uri::split host.td
      port {} path host.td scheme http host {} query {}
      % uri::split host.td http
      port {} path host.td scheme http host {} query {}
      % uri::split http://host.td
      port {} path {} scheme http host host.td query {} pwd {} user {}
      % uri::split host.td ftp
      port {} path host.td scheme ftp host {} type {} user {} pwd {}
      % uri::split ftp://host.td
      port {} path {} scheme ftp host host.td type {} user {} pwd {}

  So, the more common summary must be narrowed a bit, that a missing "http" scheme in the url with or without the default scheme "http" causes "uri::split" to do not return a user and pwd result list element.

  Best regards,

  Martin Lemburg


tkt_uuid: 2800387fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
title: struct::graph:op::{kruskal,prim}
cmimetype: text/plain
submitter: lars_h
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-09-24T16:50:33
comment:
  The documentation for these commands should state their complexities, as that is the primary factor for choosing one or the other.

  I would also prefer it if the phrase "minimum spanning tree" was replaced by "minimum weight spanning tree", as that better highlights the dependence on this factor. The abbreviation MST is fine, however.

  Finally, it should be pointed out that returning only the arcs means all 1-vertex components are missing from the forest computed. This is not so likely to be an issue in real life, but the documentation is making a claim which is false in that situation.


tkt_uuid: 2800400fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: struct :: graph
priority: 5 Medium
foundin: None
title: struct::graph:op::toAdjacencyMatrix issues
cmimetype: text/plain
submitter: lars_h
assignee: andreas_kupries
comment:
  Things that strike me as wrong with [struct::graph:op::toAdjacencyMatrix], just from reading the documentation:

  1. The return value is a matrix which mixes two element interpretations: node name and arc existence. Better would be to return a pair where the first element is the pure adjacency matrix and the second is the list of node names. Also, it is often useful to force an order of nodes, rather than work with what one is given; there should be an option which takes a list of node names as value which has the effect that it will be a prefix of the returned list of all node names.

  2. Matrix elements are documented as being "True" or "False". The canonical boolean string representations 1 or 0 would be more useful.

  3. The command ignores arc direction and multiplicity. This should rather be controlled through options, as several important applications of the adjacency matrix (e.g. counting walks of given length) requires that one takes them into account.

  4. Indeed, as there are many ways of combinig parallel arcs, one could even consider an option which takes as value a command prefix for this. A suitable syntax for this command prefix could be

    {*}$prefix $graph $arclist

  where the $arclist is the list of names of arcs that are to be combined, and the return value will be the adjacency matrix element. The multiplicity-counting prefix could then be

    {::apply {{G arclist} (llength $arclist}}}

  whereas one that calculates the combined capacities could be

    {::apply {{attr G arclist} (
       set res 0
       foreach arc $arclist {
          set res [expr {$res + [$G arc get $arc $attr]}]
       }
       return $res
    }}} capacity

  All in all, this is so much that maybe it is better to make a completely new adjacency matrix command.


tkt_uuid: 2801587fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: jpeg
priority: 5 Medium
foundin: None
title: ::jpeg::getThumbnail help example code
cmimetype: text/plain
submitter: didierprovost
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-06-05T19:38:22
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: 2801896fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: jpeg
priority: 5 Medium
foundin: None
title: jpeg package: adds support for GPS Exif tags
cmimetype: text/plain
submitter: mdplumlee
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-06-05T20:01:50
comment:
  I needed something to interpret GPS tags in Exif headers, so I found the jpeg package and added it.  Nice job whoever wrote the _exif routine--it was very easy to extend.  I haven't done a patch before, so I'm probably doing it all wrong--I'm attaching the whole file I updated, and just put comments in the vicinity of my changes (I didn't comment the place where I added an optional argument...)--look for "mdp".


tkt_uuid: 2804961fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: bwidget
priority: 3 Low
foundin: None
title: combobox syntactic nit
cmimetype: text/plain
submitter: andreas_kupries
assignee: oehhar
closer: oehhar
closedate: 2009-06-12T07:44:01
comment:
  bwidget/combobox.tcl:28 (warnContinuation) possibly bad continuation line, blank line after backslash
          initialize {-relief sunken -borderwidth 2} \
                                                     ^


tkt_uuid: 2807147fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: bwidget
priority: 5 Medium
foundin: None
title: buttonbox -homogeneous widths
cmimetype: text/plain
submitter: danckaert
assignee: hobbs
closer: oehhar
closedate: 2009-06-24T12:09:28
comment:
  In buttonbox.tcl, the code which is used to ensure homogeneous button widths is bad. It can't accomodate buttons of which the width changes after they are initially drawn. This can be solved by using grid's -uniform option instead of -minsize, as in the attached patch. The code is much cleaner too.


tkt_uuid: 2807160fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ComboBox should use unmanaged scrollwindow
cmimetype: text/plain
submitter: danckaert
assignee: hobbs
closer: oehhar
closedate: 2009-06-16T15:39:49
comment:
  When one of the values of a combobox contains a long string, not only the horizontal, but also the vertical scrollbar appears (even when there are only a few entries). It seems the window height is always [nr of entries]-1 in that case.

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

  The attached patch solves this.


tkt_uuid: 2807227fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ScrollableFrame issues
cmimetype: text/plain
submitter: danckaert
assignee: hobbs
closer: oehhar
closedate: 2009-06-24T11:35:45
comment:
  There are some problems with ScrollableFrame. The following code demonstrates them:

  pack [panedwindow .pw -orient vertical] -fill both -expand 1
  .pw add [set f [frame .pw.f -relief sunken -bd 1]] -minsize 30
  .pw add [set d [frame .pw.d -relief sunken -bd 1]] -minsize 30

  grid\
      [ScrollableFrame $f.sf -height 300 -yscrollcommand [list $f.yscroll set]]\
      [scrollbar $f.yscroll -orient vertical -command [list $f.sf yview]]\
      -sticky news
  grid rowconfigure $f 0 -weight 1
  grid columnconfigure $f 0 -weight 1

  set g [$f.sf getframe]

  update

  pack\
      [button $g.a -text A -command [list destroy $g.a]]\
      [button $g.b -text B -command [list destroy $g.a $g.b]]\
      [button $g.c -text C -command [list destroy $g.a $g.b $g.c]]\
      [button $g.d -text D -command [list destroy $g.a $g.b $g.c $g.d]]\
      [button $g.e -text E -command [list destroy $g.a $g.b $g.c $g.d $g.e]]\
      [button $g.f -text F -command [list destroy $g.a $g.b $g.c $g.d $g.e $g.f]]

  Now resize the panes of the panedwindow with the mouse (just a little bit). You will see that the scrollbar becomes active even though there is no reason (yet) for it.

  A second issue can be triggered by resizing the upper pane until just 2 or 3 of the buttons are still visible. Next, move the scrollbar down such that the last buttons (E and F) are visible. Now click the E button. You will see that the ScrollableFrame misbehaves.

  The attached patch solves these issues.


tkt_uuid: 2807256fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Combobox sets X-selection
cmimetype: text/plain
submitter: eriklns
assignee: oehhar
closer: oehhar
closedate: 2009-07-07T17:32:01
comment:
  When selecting an item in a Combobox, the X-selection is also set. Personally, I find this "feature" annoying. (I'm not sure about standards compliance, though.)

  The purpose of a combobox is to select an item from a list, not to select characters from a text for copy/paste actions.
  In case there is doubt about the usefulness of this feature, it could be made an option to the Combobox command.

  The attached patch against BWidget 1.8.0 turns this behaviour off.


tkt_uuid: 2811747fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
title: Tests for graph(ops) - Don't import struct::graph into ::
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-11-03T17:39:43
comment:
  Get rid of
     namespace import -force struct::graph
  in modules/struct/graph/tests/Xsetup.

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

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


tkt_uuid: 2812832fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: math :: statistics
priority: 5 Medium
foundin: None
title: unstable calculation of variance
cmimetype: text/plain
submitter: anyeli
assignee: arjenmarkus
closer: arjenmarkus
closedate: 2009-07-14T11:12:22
comment:
  Variance is calculated in an unstable manner.

  Example (courtesy of Wikipedia):
  % ::math::statistics::var {4 7 13 16}
  30.0
  % ::math::statistics::var {1000000004 1000000007 1000000013 1000000016}
  0.0

  At the very least you should subtract off the mean before squaring to avoid losing significance.  For serious use you might also want to use compensated summation.


tkt_uuid: 2814050fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: bwidget
priority: 5 Medium
foundin: None
title: fix [notebook itemconfigure -helptext]
cmimetype: text/plain
submitter: danckaert
assignee: hobbs
closer: oehhar
closedate: 2009-07-01T14:34:12
comment:
  This is a small fix for notebooks. When calling [itemconfigure -helptext] on a notebook tab, the helptext is currently not updated.
  The _set_help proc already contains code for checking whether the helptext has changed, but it is not called from itemconfigure.


tkt_uuid: 2814771fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
title: TkChat - Color Settings dialog bug
cmimetype: text/plain
submitter: tomk
assignee: eee
closer: eee
closedate: 2009-08-13T00:57:50
comment:
  TkChat v1.470 Using Tcl/Tk 8.5.6 - The "Color Settings" dialog resizes the button box instead of the dialog body when stretched vertially.


tkt_uuid: 2815302fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
title: Wrong usages of struct::set substract
cmimetype: text/plain
submitter: mantoniewski
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-07-10T16:27:06
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: 2818958fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: math :: linearalgebra
priority: 5 Medium
foundin: None
title: sizing of vectors
cmimetype: text/plain
submitter: dkf
assignee: arjenmarkus
closer: arjenmarkus
closedate: 2009-07-20T10:47:25
comment:
  I was working (on http://rosettacode.org/wiki/Multiple_Regression#Tcl) with a collection of vectors which were both row-vectors and column-vectors (one being a transposition of the other) and I was trying to multiply them together to get a matrix. This was causing errors; apparently the 'shape' command from this package goes completely to pieces when faced with a list of length 1 (making everything else in the package fail miserably too).

  A scalar must be a 1x1 matrix. A vector must be a 1xN or Nx1 matrix. If these aren't true, many innocent algorithms die in a fire (and Carl Friedrich Gauss kills a kitten).


tkt_uuid: 2819151fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: Development Tools
priority: 5 Medium
foundin: None
title: Link to SF webdav file upload form for releases
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-07-10T16:33:55
comment:
  The SF webdav file upload form for release archives is at.
  https://frs.sourceforge.net/webupload

  Save the info in the developer/release mgr docs.


tkt_uuid: 2820727fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
resolution: Not Applicable Here
subsystem: tclapps :: tkchat
priority: 5 Medium
severity: Minor
foundin: None
title: Linux standalone executable not working on x86_64
cmimetype: text/plain
submitter: christianrapp
assignee: afaupell
closer: aku
closedate: 2456444.39492297
comment:
  Using archlinux x86_64, just downloaded tkchat 1.465 standalone executable for linux. When i try to run it in a terminal i get:

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

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

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

  Regards


tkt_uuid: 2820851fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: bwidget
priority: 5 Medium
foundin: None
title: fix dynamichelp issues
cmimetype: text/plain
submitter: danckaert
assignee: nobody
closer: oehhar
closedate: 2009-07-14T09:23:14
comment:
  This patch fixes some issues with dynamic help. One of the issues is that help for a menu sometimes stays visible when the menu is unmapped (on Unix). This is an example script:

  pack [frame .f -width 200 -height 200]
  pack [label .l -textvariable statusvar]
  . configure -menu [menu .m -tearoff 0]
  .m add cascade -label "File" -menu [menu .m.f -tearoff 0]
  .m.f add command -label "New"
  DynamicHelp::add .m.f -type menu -variable statusvar
  DynamicHelp::add .m.f -type menu -index 0 -text "help for New"

  Now click on "File", and then move the mouse cursor upwards (out of the window), and click again. The menu is unmapped, but on Unix, the help stays visible. The patch should fix this.

  Other issues addressed in this patch are:
  - Make "-helpcmd" available also when dynamichelp is included in another widget.
  - Make sure that -helpcmd is always called at global scope (with uplevel #0).
  - Sometimes a <Leave> event may be called twice. Protect against this.
  - When _unset_help is called, the _top widget should only be destroyed when it is a balloon.


tkt_uuid: 2821416fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: smtp
priority: 5 Medium
foundin: None
title: smtp should not use [vwait]
cmimetype: text/plain
submitter: coldstore
assignee: mrose
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: 2822970fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ScrollableFrame background
cmimetype: text/plain
submitter: danckaert
assignee: hobbs
closer: oehhar
closedate: 2009-07-17T15:27:10
comment:
  Here's another small patch for ScrollableFrame.
  When the frame does not take up the whole canvas space, the canvas background shows through. This is more apparent when using ttk, because the canvas is not themed. However, here's an example without ttk:

  option add *Canvas.background yellow
  grid\
      [ScrollableFrame .sf -yscrollcommand [list .yscroll set]]\
      [scrollbar .yscroll -orient vertical -command [list .sf yview]]\
      -sticky news
  grid rowconfigure . 0 -weight 1
  grid columnconfigure . 0 -weight 1
  set g [.sf getframe]
  grid [label $g.a -text AAAAAA] [label $g.b -text BBBBBBB]
  grid [label $g.c -text CCCCCC]


tkt_uuid: 2824771fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: doctools
priority: 5 Medium
foundin: None
title: doctools test case 50.0.1 fails
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
comment:
  CVS head of tcllib and tcl 8.6, built on sparc solaris 8 using sun's c compiler.

  The following is one of several similar errors that occurred yesterday when I tried running the tcllib test suite against tcl 8.6 cvs head.

  ---- doctools-idx-50.0.1 start

  ==== doctools-idx-50.0.1 doctools::idx deserialize = docidx, nokeys, ok FAILED
  ==== Contents of test case:

              I deserialize = $data docidx
              doctools::idx::structure print [I serialize]
          
  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: Unable to locate or load plugin "docidx" (ERROR for slave interp
  1 : can not find channel named "stdout")
      while executing
  "::pluginmgr::Snit_methodload ::pluginmgr ::pluginmgr::Snit_inst1 ::doctools::id
  x::import::Snit_inst1::fmt-docidx ::doctools::idx::import::Snit_inst1::..."
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "$plugin load $format"
      (procedure "::doctools::idx::import::Snit_methodGetPlugin" line 12)
      invoked from within
  "::doctools::idx::import::Snit_methodGetPlugin ::doctools::idx::import ::doctool
  s::idx::import::Snit_inst1 ::IN ::IN docidx"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "$self GetPlugin $format"
      (procedure "::doctools::idx::import::Snit_hmethodimport_text" line 7)
      invoked from within
  "::doctools::idx::import::Snit_hmethodimport_text ::doctools::idx::import ::doct
  ools::idx::import::Snit_inst1 ::IN ::IN {[index_begin KWIC INDEX]
  [inde..."
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "$myimporter import text $data $format"
      (procedure "::doctools::idx::Snit_methodImport" line 17)
      invoked from within
  "::doctools::idx::Snit_methodImport ::doctools::idx ::doctools::idx::Snit_inst90
   ::I ::I docidx {[index_begin KWIC INDEX]
  [index_end]
  }"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "$self Import $format $data"
      (procedure "::doctools::idx::Snit_hmethoddeserialize_=" line 19)
      invoked from within
  "::doctools::idx::Snit_hmethoddeserialize_= ::doctools::idx ::doctools::idx::Sni
  t_inst90 ::I ::I {[index_begin KWIC INDEX]
  [index_end]
  } docidx"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "I deserialize = $data docidx"
      ("uplevel" body line 2)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== doctools-idx-50.0.1 FAILED


tkt_uuid: 2825354fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Tree node -helpcmd option
cmimetype: text/plain
submitter: danckaert
assignee: hobbs
closer: oehhar
closedate: 2009-07-23T08:01:08
comment:
  This patch ensures that the DynamicHelp -helpcmd option can be used in a Tree. Example:

  pack [Tree .t -padx 2]
  proc helpfor {n} {return "Help for $n"}
  .t insert end root node1 -text "Node 1" -helpcmd {helpfor node1}
  .t insert end root node2 -text "Node 2" -helpcmd {helpfor node2}
  .t insert end root node3 -text "Node 3" -helpcmd {helpfor node3}

  The patch also contains a slight visual adjustment of initial node of the tree. This is in fact a reversal of a patch which was introduced in version 1.49. I did not understand why this was changed back then. It made the tree appear more like a "fork" than a tree, which is also apparent in the example above.


tkt_uuid: 2828086fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Add <<TreeSelect>> event for keyboard navigation
cmimetype: text/plain
submitter: wordtech
assignee: hobbs
closer: oehhar
closedate: 2009-08-04T16:35:34
comment:
  The attached patch updates tree.tcl to support the <<TreeSelect>> virtual event for KeyPress-Up and KeyPress-Down. Many users use the keyboard to navigate tree widgets and this brings the BWidget tree in line with current UI best practices. 


tkt_uuid: 2829049fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
resolution: Not Applicable Here
subsystem: tklib
priority: 5 Medium
severity: Minor
foundin: None
title: "failure" or missing feature in "getstring"
cmimetype: text/plain
submitter: martinlemburg
assignee: afaupell
closer: aku
closedate: 2456444.39473669
comment:
  Hello,

  I would really like to see the attached changes in the package "getstring".

  Just because the current implementation has one bug and one annoyance:
  1. "wm withdraw" is called after the "UI" is already built, instead of right after creating the toplevel
  2. a given variable to contain the result of "getstring" is simply overwritten, instead of using its contents inside the entry and changing it at the end

  Best regards,

  Martin


tkt_uuid: 2831785fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: bwidget
priority: 5 Medium
foundin: None
title: NoteBook page delete with destroyframe 0 has problems
cmimetype: text/plain
submitter: kjnash
assignee: damonc
closer: oehhar
closedate: 2009-08-04T06:58:09
comment:
  Using BWidget v1.8 via ActiveState teapot
  data($page,realized) should not be deleted if $destroyframe is 0

   # ---------------------------------------------------------------------------
   #  notebook.tcl
   #  This file is part of Unifix BWidget Toolkit
  -#  $Id: notebook.tcl,v 1.23 2005/01/26 01:01:26 hobbs Exp $
  +#  $Id: notebook.tcl,v 1.25 2009/07/01 14:41:30 oehhar Exp $
   # ---------------------------------------------------------------------------
   #  Index of commands:
   #     - NoteBook::create
  @@ -304,6 +304,7 @@
           destroy $path.f$page
       }
       _redraw $path
  +    unset data($page,width) data($page,realized)
   }


tkt_uuid: 2835712fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: math :: statistics
priority: 5 Medium
foundin: None
title: interval-mean-stdev Seems to have a hard-coded variable n
cmimetype: text/plain
submitter: ericnelson101
assignee: arjenmarkus
closer: arjenmarkus
closedate: 2009-08-12T18:25:08
comment:
  set erf1    0.682689492137
  set scaled1StdDev  [::math::statistics::interval-mean-stdev $data $erf1]
  can't read "student_t_table": no such variable

  The student_t_table variable is hard-coded somewhere in this function.


tkt_uuid: 2835744fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Wont Fix
subsystem: tklib :: widget
priority: 5 Medium
foundin: None
title: widget:dialog button handling bug?
cmimetype: text/plain
submitter: andreas_kupries
assignee: hobbs
closer: hobbs
closedate: 2009-08-20T20:42:26
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: 2840147fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: tar
priority: 5 Medium
foundin: None
title: Add prefix to name of file added to tarball
cmimetype: text/plain
submitter: lars_h
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-12-03T20:06:47
comment:
  The git-archive utility has an option --prefix described as:

    --prefix=<prefix>/
        Prepend <prefix>/ to each filename in the archive.

  I found this useful in the case that the the parent directory of what I'm wrapping up as a tarball isn't named the way I'd like root directory within the tarball to be named. However, I also needed to add a few files to the tarball, and my command-line tar didn't have a corresponding option. Therefore I turned to adding a -prefix option to the tcllib [tar::add] command.

  The main change needed to implement this was to split [tar::createHeader] into two commands [tar::statFile] and [tar::formatHeader], as [tar::createHeader] hardwired the in-archive name of a file to be the same as the name in the normal file system. I think this is a good change, as it also opens up for adding items to a tarball that don't first have to exist within the normal filesystem (a kind of [tar::put], if you will).

  Another change required was that [tar::writefile] takes another argument: the name to use in the archive. [tar::add] and [tar::create] have been modified accordingly.

  While testing this, I also discovered a bug in the current [tar::add]: one cannot in general assume that the end of an archive occurs 1024 bytes before the end of the file. The catch is that tarballs are written with a specific "blocksize" (often 20 records, i.e., 10Kb), and are supposed to consist of an integral number of complete blocks. Therefore there may be extra padding after the 1024 end-of-archive nulls, and it is then impossible to tell if an all-null record at the end of a tarball is nulls at the end of a file, end-of-archive nulls, or padding until the end of a block. The only safe way to find the end is to read the tarball from the beginning.

  I added a third option -quick to [tar::add] which selects the old seek-from-end method of finding where to put the header for the first new file, but made the default be to read the tarball from start.

  Being a tcllib developer, I can probably check this into CVS myself, but I think you should have a chance to look at it first.


tkt_uuid: 2845453fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: ldap
priority: 5 Medium
foundin: None
title: MessageReceiver fails to read sequence byte on empty socket
cmimetype: text/plain
submitter: kai-infopark
assignee: mic42
comment:
  A simple LDAP/SSL search query (objectclass filter, returning around 20 results) failed with the following message:
    Protocol error: Error reading SEQUENCE response for handle

  Debugging showed, that this occured when ldap::MessageReceiver tried to read the sequence byte. The reason was, that line 728
    728         foreach {code type} [ReceiveBytes $conn(sock) 1] {break}
  in combination with the following "default" branch of the switch statement expects the connection to return the byte immediately.

  This expectation was not met. I surrounded the above line with a loop which continues on "partial" results for some tries and limited time. The error disappeared this way. The byte could be read from the socket almost at the same millisecond, after 20-30 loops.

  More general, it is not wise to expect a non-blocking read to always return at least one byte.

  As a solution, either partial "No byte available" responses are dealt with in place, or a more sophisticated "Collect the given number of bytes (for some time)" method is called.

  The same query returned without an error when the non-secured ldap port (389) of the server was asked.


tkt_uuid: 2847341fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: md5
priority: 8
foundin: None
title: leak in md5 (critcl)
cmimetype: text/plain
submitter: msofer
assignee: patthoyts
comment:
  I confirmed the leak reported by echm [http://groups.google.com/group/comp.lang.tcl/browse_thread/thread/a873bbc1ee78d776/b5ca31cdab5af4d6?lnk=gst&q=md5#b5ca31cdab5af4d6]

  The following script consumes ever increasing amounts of memory:

  % package require md5
  2.0.7
  % parray md5::accel
  md5::accel(critcl)   = 1
  md5::accel(cryptkit) = 0
  md5::accel(trf)      = 0
  % while 1 {md5::md5 testdata}

  % info patch
  8.5.7
  % parray tcl_platform
  tcl_platform(byteOrder)   = littleEndian
  tcl_platform(machine)     = x86_64
  tcl_platform(os)          = Linux
  tcl_platform(osVersion)   = 2.6.24-24-generic
  tcl_platform(platform)    = unix
  tcl_platform(pointerSize) = 8
  tcl_platform(threaded)    = 1
  tcl_platform(wordSize)    = 8


tkt_uuid: 2848168fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: crc
priority: 9 Immediate
foundin: None
title: signmask incorrect in ::crc::Crc and ::crc::Crc32_tcl
cmimetype: text/plain
submitter: kchansen
assignee: patthoyts
comment:
  Both crc16.tcl and crc32.tcl use a variable named "signmask", that is constructed from another variable named "signbit".

  For 32-bit data, signbit is 0x8000000.

  For 32-bit CRCs, the signmask appears to be designed to mask off the high-byte, i.e. it should end up 0x00ffffff.  Signmask is computed as follows:

  set signmask [expr {~$signbit>>7}]

  Unfortunately when you paste this code into Tcl, (V8.4.14, V8.5.*, V8.6.*) you don't get 0x00FFFFFF, you get 0xFEFFFFFF.

  Now, this is *probably* a bug in EXPR or in the >> operator, but the code does not work the way it is currently written....


tkt_uuid: 2850031fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Tk hangs when creating MessageDlg with very long message
cmimetype: text/plain
submitter: grt
assignee: oehhar
closer: oehhar
closedate: 2009-09-03T17:34:57
comment:
  On my ActiveTcl 8.4.19 Windows Machine the following code freezes wish:

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

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


tkt_uuid: 2853152fffffffffffffffffffffffffffffffff
type: Patch
status: Open
resolution: None
subsystem: dns
priority: 5 Medium
foundin: None
title: fix async dns behaviour
cmimetype: text/plain
submitter: mezis
assignee: patthoyts
comment:
  In some cases, dns::resolve may end up closing its socket "twice". Since the socket name might have been re-allocated in the meantime, thi causes someone elese's socket to get closed.
  This patch fixes this by setting the socket name to "nil" just after closing it.


tkt_uuid: 2855302fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
title: LexNormalize should be a public routine
cmimetype: text/plain
submitter: apnadkarni
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-09-14T17:11:24
comment:
  It is often useful to be able to lexically normalize a path (removing . and ..) without going to the disk and without resolving links. fileutil already has a routine LexNormalize that does this but it is internal and not documented. This is a request to make the command an "official" part of the interface and document it.

  /Ashok


tkt_uuid: 2860843fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: csv
priority: 5 Medium
foundin: None
title: csv.man typos
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-09-17T20:30:57
comment:
  There are two minor typos in the csv.man file - the string "spcified" should be "specified" and the string "an representatation" should be "a representation".

  I am attaching a patch to this report that fixes these two nits.


tkt_uuid: 2861189fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: ncgi
priority: 5 Medium
foundin: None
title: decode and encode: inconsistent handling of line breaks
cmimetype: text/plain
submitter: thomasmaeder
assignee: welch
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: 2866540fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tklib :: widget
priority: 5 Medium
foundin: None
title: calendar widget -textvariable does not work both ways
cmimetype: text/plain
submitter: lvirden
assignee: hobbs
closer: haertel
closedate: 2009-09-26T12:46:18
comment:
  I tried the following example, based on information from the man page:
   tclsh8.6
  % package require widget::calendar
  0.91
  % set t [widget::calendar -textvariable ::a .t]
  unknown subcommand "-textvariable": namespace ::widget::calendar does not export any commands
  % set t [widget::calendar .t -textvariable ::a]
  .t
  % pack .t
  % set ::a 9/25/2009
  9/25/2009
  % puts $::a
  09/21/2009
  % puts $::a
  09/26/2009
  % set ::a 10/10/2010
  10/10/2010
  % 
  When I clicked on different days on the widget, $::a changed value. HOWEVER, when I change the text variable, the widget's display does not change to reflect the difference.


tkt_uuid: 2872536fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: fileutil
priority: 5 Medium
foundin: None
title: stripPath checks partial path components
cmimetype: text/plain
submitter: apnadkarni
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-10-27T19:18:44
comment:
  Example:
  (woof) 51 % fileutil::stripPath c:/temp c:/tempx/foo/bar
  foo/bar

  Should return c:/tempx/foo/bar

  My guess is it does a prefix string comparison without checking if next char is a dir seprator or not.


tkt_uuid: 2881739fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: math :: interpolate
priority: 5 Medium
foundin: None
title: Cubic spline interpolation is wrong
cmimetype: text/plain
submitter: jmsanche1977
assignee: arjenmarkus
closer: arjenmarkus
closedate: 2009-10-22T18:24:32
comment:
  Hi,

  I have discovered that the cubic splines interpolation in math::interpolate returns wrong results.

  Check this little example of a cuadratic function (from the tests):

      set xcoord {1 2 3 4 5}
      set ycoord {1 4 9 16 25}
      set coeffs [::math::interpolate::prepare-cubic-splines $xcoord $ycoord]

  I see a strange behaviour when evaluating the function close to one of the interpolated points:
  ::math::interpolate::interp-cubic-splines $coeffs 2.0 -> Result: 4.0
  ::math::interpolate::interp-cubic-splines $coeffs 1.96 -> Result:3.847744 (Seems ok)
  ::math::interpolate::interp-cubic-splines $coeffs 2.04 -> Result:4.19061942857 (Seems slightly inaccurate...)

  ::math::interpolate::interp-cubic-splines $coeffs 2.96 -> Result:9.58423771429 (Fully wrong! It is even much higher than 3^2)
  ::math::interpolate::interp-cubic-splines $coeffs 3.0  -> Result: 9.0
  ::math::interpolate::interp-cubic-splines $coeffs 3.04 -> Result:9.26423771429

  From this results it also looks like there is a discontinuity at x=3.0, which can not be.
  ::math::interpolate::interp-cubic-splines $coeffs 2.9999 -> Result: 9.85645715143
  ::math::interpolate::interp-cubic-splines $coeffs 3.0001 -> Result: 9.00065715143

  I suggest that somebody should check the algorithm implementation.

  As a comparison and additional help, here are the results I get when I use a cubic spline interpolation algorithm coded in Fortran (also assuming zero second derivative at the extremes of the interpolated interval):
       1.9600000000000    3.8477440000000
       2.0000000000000    4.0000000000000
       2.0400000000000    4.1563337142857
  ...
       3.9600000000000    15.676333714286
       4.0000000000000    16.000000000000
       4.0400000000000    16.327744000000

  Best regards,
  JM


tkt_uuid: 2886893fffffffffffffffffffffffffffffffff
type: Patch
status: Open
resolution: None
subsystem: ldap
priority: 5 Medium
foundin: None
title: fix documentation for ldapx's ldap class
cmimetype: text/plain
submitter: cmay
assignee: mic42
comment:
  ldapx's ldap class documentation contains two errors showing "::ldapx::ldap create" when it should be "::ldapx::entry create".  Patch attached.


tkt_uuid: 2890065fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: stringprep
priority: 5 Medium
foundin: None
title: Stringprep fixes (bidi and folding)
cmimetype: text/plain
submitter: teopetuk
assignee: patthoyts
closer: patthoyts
closedate: 2009-11-02T00:18:53
comment:
  Hi!

  I'd like to propose three fixes for the stringprep module:

  1) There was a bug in prohibited_bidi procedure (variable $first_bidi was never assigned and $have_l calculated incorrectly - it should cumulatively set to 1 if there are left-to-right characters in a string).
  2) The script tools/gen_stringprep_data.tcl failed to process one folding case (for character U+33C6) in table B.2 because it couldn't process mapping to 4 symbols (only up to 3).
  3) (trivial bug) In register procedure -prohibit is a number but it was initialized as an empty string.

  The attached patch fixes these bugs and contains diff  for regenerated stringprep_data.tcl

  The patch also includes fixes to three failed tests (bugs 1897839, 1897841, 1897843): tests for failed bidi are passed now if their results are changed from invalid_bidi to prohibited_bidi (as in stringprep::stringprep). Test for nameprep can't be fixed because it contains symbol U+1D7BB which can't be represented in Tcl, so I left this test as is (with knownBug status) and added another one without U+1D7BB.


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


tkt_uuid: 2895994fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
resolution: Not Applicable Here
subsystem: tklib :: tooltip
priority: 8
severity: Minor
foundin: None
title: extend tooltip to the treeview widget
cmimetype: text/plain
submitter: keithv
assignee: hobbs
closer: aku
closedate: 2456444.39445008
comment:
  Using the same logic as listbox, extend tklib tooltip to work with ttk::treeview.

  Don't know how to update the doc, but here's some demo code
  pack [::ttk::treeview .tree -height 15 -show tree]
  foreach txt {first second third} {
      set id [.tree insert {} end -text "$txt item" -open 1]
      ::tooltip::tooltip .tree -item $id "tooltip for $txt item"
      for {set i 0} {$i < 3} {incr i} {
          set child [.tree insert $id end -text "child $i"]
          ::tooltip::tooltip .tree -item $child "tooltip for child $i"
      }
  }


tkt_uuid: 2897419fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: math :: statistics
priority: 8
foundin: None
title: beta-distribution-1.0 test failure (sol 2.8, sparc, 8.4.19)
cmimetype: text/plain
submitter: andreas_kupries
assignee: arjenmarkus
closer: arjenmarkus
closedate: 2009-11-18T08:00:15
comment:
  Enclosed a test failure on a solaris 2.8 / sparc machine. Tcl 8.4.19/HEAD.

  ==== beta-distribution-1.0 Test pdf-beta FAILED
  ==== Contents of test case:

      set x [list  [::math::statistics::pdf-beta 1.3 2.4 0.2]  [::math::statistics::pdf-beta 1 1 0.5]  [::math::statistics::pdf-beta 3.7 0.9 0.0]  [::math::statistics::pdf-beta 1.8 4.2 1.0]  [::math::statistics::pdf-beta 320 400 0.4]  [::math::statistics::pdf-beta 500   1 0.2]  [::math::statistics::pdf-beta 1000 1000 0.50]]

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: floating-point value too small to represent
      while executing
  "expr {exp($term1 + $term2)}"
      (procedure "::math::statistics::pdf-beta" line 24)
      invoked from within
  "::math::statistics::pdf-beta 500   1 0.2"
      invoked from within
  "list  [::math::statistics::pdf-beta 1.3 2.4 0.2]  [::math::statistics::pdf-beta 1 1 0.5]  [::math::statistics::pdf-beta 3.7 0.9 0.0]  [::math::statist..."
      invoked from within
  "set x [list  [::math::statistics::pdf-beta 1.3 2.4 0.2]  [::math::statistics::pdf-beta 1 1 0.5]  [::math::statistics::pdf-beta 3.7 0.9 0.0]  [::math::..."
      ("uplevel" body line 2)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: ARITH UNDERFLOW {floating-point value too small to represent}
  ==== beta-distribution-1.0 FAILED

  Any ideas where I should look in code or test for the problem ?


tkt_uuid: 2898640fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: snit
priority: 5 Medium
foundin: None
title: "info instances" method fails
cmimetype: text/plain
submitter: duquette
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-11-16T23:54:05
comment:
  If a snit::type or snit::widget's type namespace has a child namespace other than the instance namespaces, then the call "$type info instances" will fail with the following error:

      can't read "instance": no such variable

  The error is in the routine ::snit::RT.typemethod.info.instances, which loops over [namespace children $type], thereby presuming that all child namespaces are instance namespaces.  This need not be the case.  The call to [namespace children] should use a pattern that matches "${type}::Snit_inst*".

  The same idiom also exists in ::snit::RT.typemethod.destroy, which implements the "$type destroy" command.


tkt_uuid: 2903927fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: Development Tools
priority: 5 Medium
foundin: None
title: tklib test suite failure on CVS head
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-11-25T20:02:18
comment:
  I configure and install tklib, then I type:

  $ gmake test
  /projects/sprs_lwv/tcl86/bin/tclsh8.6 `echo ../sak.tcl` test
  Command missing

      test -- Execute testsuites

      sak test run ?-s|--shell PATH? ?-l|--log STEM? ?-g|--valgrind? ?-v? ?MODULE ...?

          Run the testsuites of the specified modules, using the shell
          running SAK for the testsuites as well. If no modules are
          specified the testsuites of all modules are run.

  :
  and more stuff
  :
  gmake: *** [test] Error 1


tkt_uuid: 2906306fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: md5
priority: 5 Medium
foundin: None
title: md5::md5 -file option error on close
cmimetype: text/plain
submitter: coldstore
assignee: patthoyts
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: 2906751fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tklib :: plotchart
priority: 5 Medium
foundin: None
title: right and left axes confused
cmimetype: text/plain
submitter: kennykb
assignee: arjenmarkus
closer: arjenmarkus
closedate: 2009-12-10T09:53:19
comment:
  If I create an XYplot with a right axis, the data are displayed in the correct locations, but the left axis's ticks show the scale of the right axis.  The right axis's ticks show the correct scale, but there doesn't seem to be any way to set their format.

  The attached script demonstrates the problem.


tkt_uuid: 2907556fffffffffffffffffffffffffffffffff
type: Patch
status: Open
resolution: None
subsystem: ncgi
priority: 5 Medium
foundin: None
title: importFile fails, if the client filename contains a ;
cmimetype: text/plain
submitter: fridolin
assignee: welch
comment:
  The problem is in parseMimeValue. It's to simple to split by ;

  I attach parseMimeValue.tcl. It simply contains the modified proc parseMimeValue.


tkt_uuid: 2909184fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tklib: request for new module
priority: 5 Medium
foundin: None
title: new menubar command
cmimetype: text/plain
submitter: tomk
assignee: andreas_kupries
closer: tomk
closedate: 2009-12-18T01:57:20
comment:
  I have written a menubar command that I think could be a candidate for include in tklib at some point in the future. I have attached the code (tar.gz) for you to try out and give me your thought and suggestions. The code is pure tcl/tk but makes use of TclOO so will need 8.6. The tarball contains a man page (created with doctools) which explains the new command. The tarball also contains a vfs directory which has the menubar code (in lib) and demo application code that you can take a look at to see how the commands can be used on an application. 

  To get a feel for what the new menubar command can do create multiple toplevels (using New). Tearoff menus for each of the toplevels and then play with the check buttons and radio buttons. Next do File->Show Macro Menu in one of the toplevel windows then tearoff the marco menus and play with them.

  Tom Krehbiel


tkt_uuid: 2909962fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: json
priority: 5 Medium
foundin: None
title: Faster, more readable implementation of json parser
cmimetype: text/plain
submitter: thomasmaeder
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-12-10T17:51:14
comment:
  When parsing documents of some nontrivial size (i.e. >100kB), I have found the json parser package 1.0 to be far too slow.

  Here is a considerably faster implementation (I have measured speed gains of a factor of 30). The main difference is that a regular expression is used for tokenizing the json text.

  This means that the parsing process restrict itself to a sequence of recognized tokens; it is blind to non-whitespace text between recognized tokens. I have therefore added a proc json::validate which can be used to test the validity of the entire text.

  I have not touched the *2json procs.

  The code is commented according to our internal guidelines; adaptations to the tcllib guidelines may thus have to be made if it is to be published in a future tcllib release.

  I haven't changed the package version number, and my CVS has tampered with the CVS mark in the header.


tkt_uuid: 2910682fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: Fixed
subsystem: yaml
priority: 5 Medium
foundin: None
title: yaml's dict package needs
cmimetype: text/plain
submitter: dgp
assignee: kanryu6
comment:
  Testing tcllib-1.12 with Tcl 8.4.19, I see:

  [*   ]  [8.4.19]  yaml                  Error in huddle.tcl: bad subcommand "with": must be append, create, ...

  The [dict with] command is not part of Tcl 8.4, and
  the [package require dict] is apparently getting a
  version of the dict package not recent enough to
  have the required subcommand.  Adding a version
  requirement should help guard against this.

  Also, the stanza,

  if {$::tcl_version < 8.5} {
      package require dict
  }

  is buggy.  Use [package vcompare]
  instead of trying to treat version numbers
  as if they were real decimal numbers.


tkt_uuid: 2912295fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: Documentation
priority: 5 Medium
foundin: None
title: random(n) manpage needs to be renamed
cmimetype: text/plain
submitter: bharder
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2009-12-11T18:23:24
comment:
  simulation::random has a manpage random(n) which has a naming collision w/ the memchan projects random(n) manpage. As discussed in #tcl with Andreas, error is in tcllib.


tkt_uuid: 2913700fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Rejected
subsystem: mime
priority: 5 Medium
foundin: None
title: extra character in range [!..~]
cmimetype: text/plain
submitter: jeremy_c
assignee: eee
closer: eee
closedate: 2013-01-11T03:59:53
comment:
  When parsing email messages, I ran across 1 message of thousands that mime would not parse. It's a spam message, none the less, it should parse? The error is:

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


tkt_uuid: 2915921fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
title: Add commands for extended punctuation (em-dash, en-dash)
cmimetype: text/plain
submitter: flatworm
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-07-06T18:49:44
comment:
  It would be convenient to have a set of markup commands which would produce special punctuation signs on output.
  Of most interest are "wide dashes", namely, em-dash and en-dash.
  Such commands could be named as [mdash] and [ndash] respectively, and produce:
  [mdash]: &mdash; in HTML and \(em in nroff;
  [ndash]: &ndash; in HTML and \(en in nroff.

  Ideally, it would be nice to have a generic framework for defining special markup commands which would generate assigned Unicode characters on output, but I think this can't play together with nroff as it's not yet really Unicode-aware (while it's being developed to finally become UTF-8 compliant).
  So the two commands I proposed above could facilitate creation of a bit more beautiful manpages while being portable.


tkt_uuid: 2926387fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: csv
priority: 5 Medium
foundin: None
title: csv::read2queue mishandles embedded newlines
cmimetype: text/plain
submitter: dvrsn
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-01-19T20:22:49
comment:
  Just a typo.  read2queue correctly buffers incomplete lines, but then calls split on the last line read rather than on the buffered multiline data.  


tkt_uuid: 2928355fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: ftpd
priority: 5 Medium
foundin: None
title: ftp::Rename causes ftpd to crash
cmimetype: text/plain
submitter: martinao
assignee: andreas_kupries
comment:
  Calling ftp::Rename as client causes the ftp-daemon into which I logged in to crash in proc ::ftpd::command::RNTO, because the variable sock is unknown. Including "upvar #0 ::ftpd::$sock data" - as used in the other procs - resolves the application error.


tkt_uuid: 2933130fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: math :: fuzzy
priority: 5 Medium
foundin: None
title: math::fuzzy::tlt returns incorrect value
cmimetype: text/plain
submitter: scottbutcher
assignee: arjenmarkus
closer: arjenmarkus
closedate: 2010-01-18T10:32:05
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: 2935339fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ftpd
priority: 5 Medium
foundin: None
title: ::ftpd::config not idempotent
cmimetype: text/plain
submitter: keithv
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-01-20T18:16:25
comment:
  Calling ::ftpd::config a subsequent time with a different option resets all previously set options. The problem is is that it uses cmdline::getoptions but supplies the application defaults for unspecified options instead of current values.

  Example:
   ::ftpd::config -authUsrCmd myAuthUsrCmd
   ::ftpd::config -logCmd myLogCmd 
  ==> the authUsrCmd has been reset


tkt_uuid: 2935347fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: None
priority: 5 Medium
foundin: None
title: bug 2935339 (::ftpd::config)
cmimetype: text/plain
submitter: keithv
assignee: nobody
closer: andreas_kupries
closedate: 2010-01-20T18:15:59
comment:
  Here's a fix for bug 2935339 which is where calling ::ftpd::config a second time resets previously set values.The problem is that it uses cmdline::getoptions but supplies the application default values instead of the current values.


tkt_uuid: 2941841fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: htmlparse
priority: 5 Medium
foundin: None
title: htmlparse crashes on really badly formed html
cmimetype: text/plain
submitter: dvrsn
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-08-02T22:22:48
comment:
  % htmlparse::parse  "<a<a/>>" 
  extra characters after close-brace

  The string being parsed here is nonsense.  I'm not sure what a sane way to parse it would be.  Perhaps as a singleton tag named "a<a" followed by a naked ">".

  Erroring out is undesirable, because it doesn't attempt to do any partial parsing.


tkt_uuid: 2943788fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: ntp
priority: 5 Medium
foundin: None
title: couldn't open socket: connection refused
cmimetype: text/plain
submitter: hm2k
assignee: patthoyts
closer: patthoyts
closedate: 2010-02-01T13:20:53
comment:
  proc tz:gettime { server } {
    package require time;
    set time "";
    while {$time == ""} {
      set tok [::time::gettime $server];
      set time [::time::unixtime $tok];
    }
    return $time;
  }

  puts [tz:gettime "pool.ntp.org"];

  Tcl error [tz:gettime]: couldn't open socket: connection refused

  How to I get around this error so it tries another server...


tkt_uuid: 2947213fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
resolution: Not Applicable Here
subsystem: tclapps :: tkchat
priority: 7 High
severity: Minor
foundin: None
title: Repeated short history
cmimetype: text/plain
submitter: ferrieux
assignee: afaupell
closer: aku
closedate: 2456444.39416794
comment:
  When history loading is the default "ask', if I answer a non-zero number of days to the dialog that pops up on startup, the requested amount of history is properly loaded, but the last pageful of history is repeated after the line "++++ End Of History ++++", with their timestamps.

  When reloading history afterwards through the Debug menu, the effect disappears.
  I suspect the startup-time loading of recent history is not disabled by the dialog, and fires after the loading itself.

  This is 1.477 on both Windows and Linux, and has been present for several Tkchat versions.


tkt_uuid: 2962077fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
resolution: Not Applicable Here
subsystem: tklib :: ipentry
priority: 5 Medium
severity: Minor
foundin: None
title: error if an array element is used as -textvariable
cmimetype: text/plain
submitter: wtschueller
assignee: afaupell
closer: aku
closedate: 2456444.39381481
comment:
  Steps to reproduce:

  puts [ info patchlevel ]
  puts [ package require -exact ipentry 0.2 ]
  set foo(bar) 1.1.1.1
  ::ipentry::ipentry .ip -textvariable foo(bar)
  catch { set foo(bar) 1.1.1.2 } msg
  puts $msg
  exit

  output for version 0.2:
  8.4.19
  0.2
  1.1.1.2

  output for version 0.3
  8.4.19
  0.3
  can't set "foo(bar)": can't read "var": variable is array

  Expected:
  no error in both cases

  I saw a big rework in ipentry.tcl from 1.13 to 1.14 that changed
  ::ipentry::traceVar to ::ipentry::traceFired and eliminated the
  test if { $key != "" }

  Is this a bug or a feature?


tkt_uuid: 2967134fffffffffffffffffffffffffffffffff
type: RFE
status: Open
resolution: None
subsystem: json
priority: 5 Medium
severity: Minor
foundin: None
title: json2dict improvements index json arrays in dict
cmimetype: text/plain
submitter: cwjolly
assignee: hobbs
closer: nobody
comment:
  I modified the json 1.0 package with code (attached) that adds a option switch to add an index to json arrays when converted to dict format and all values remain quoted. See example below.  After looking in the tracker I see that json.tcl has changed dramatically but I still want the new features.  see attached driver code also 
  Input json snippet :

  ..."link":["rel","alternate","type","text html","href"],...

  is converted to this dict snippet 

  .... link { rel alternate type {text html} href } ....

  there is no way to tell the resulting dict is key,value or a list. You would  have to know this before
  hand. So if your input changes so does your code. Since javascript would access the results of the
  as link[0] == "rel"  why not auto index when converting to dict. I changed my json2dict function
  to accept the -indexlists option to do just that so now for the example above the following results. 

  .... link { 0 rel 1 alternate 2 type 3 {text html} 4 href } ....

  Thats pretty good but then the next problem cropped up notice the { text html } ? Is it text or
  another dict ( i.e key value } ?  If you did not know what to expect (and you won't) this is bad news. I changed the json2dict script to maintain the quotes about the values and now the json above is converted to:

  .... link { 0 "rel" 1 "alternate" 2 "type" 3 {"text html"} 4 "href" } ....


tkt_uuid: 2970577fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
resolution: Not Applicable Here
subsystem: tklib :: tooltip
priority: 5 Medium
severity: Minor
foundin: None
title: add tooltip image support
cmimetype: text/plain
submitter: r_zaumseil
assignee: hobbs
closer: aku
closedate: 2456444.39398832
comment:
  Tooltip can only display text. With the following code in tooltip::show we can also display images and bitmaps.
  The user has to provide a valid image/bitmap instead of the message argument.

      # Use late-binding msgcat (lazy translation) to support programs
      # that allow on-the-fly l10n changes
      if {[catch {set type [image type $msg]}]} {
        $b.label configure -text [::msgcat::mc $msg] -justify left
      } elseif {$type eq {bitmap}} {
        $b.label configure -bitmap $msg -justify left
      } else {
        $b.label configure -image $msg -justify left
      }


tkt_uuid: 2972571fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: comm
priority: 5 Medium
foundin: None
title: comm send fails when the command ends in a backslash
cmimetype: text/plain
submitter: tomkiti
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-09-15T19:50:04
comment:
  The "comm::comm send" command fails when the sent command ends in a backslash character. This can happen when the last argument to a command is a binary string that ends in 0x5C (the backslash character). In this case, the "send" command blocks indefinitely. This can easily be replicated by sending the command {puts \\}.

  It looks like the problem is in the ::comm::Word0 function, which returns the error "no complete word found/1". This problem only exists in comm-4.6.1. It does not exist in comm-4.6.


tkt_uuid: 2976290fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: base64
priority: 5 Medium
foundin: None
title: decode fails
cmimetype: text/plain
submitter: daapp
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-07-06T19:16:46
comment:
  This code:

  ::base64::decode s=GQMRAk5WXhsABh0NEx4RXBocBVgBHQMXHRgEFltMQENQXEFOExJVQ0RAQERUQ0dAEhYEExVIRRVVFENWKxMKABsPGBI6LRoYLhsEFhsXGFkXEwZXGQMIHg==

  produce an error:
  can't use empty string as operand of "&"
      while executing
  "expr {($v << 2) | (($w & 0x30) >> 4)}"
      (procedure "::base64::decode" line 27)
      invoked from within
  "::base64::decode s=GQMRAk5WXhsABh0NEx4RXBocBVgBHQMXHRgEFltMQENQXEFOExJVQ0RAQERUQ0dAEhYEExVIRRVVFENWKxMKABsPGBI6LRoYLhsEFhsXGFkXEwZXGQMIHg=="
      ("uplevel" body line 1)
      invoked from within
  "uplevel #0 {::base64::decode s=GQMRAk5WXhsABh0NEx4RXBocBVgBHQMXHRgEFltMQENQXEFOExJVQ0RAQERUQ0dAEhYEExVIRRVVFENWKxMKABsPGBI6LRoYLhsEFhsXGFkXEwZXGQMIHg=..."

  The source string may be invalid, but the code should not fail like this.


tkt_uuid: 2979481fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: bibtex
priority: 5 Medium
foundin: None
title: string macro parsing is buggy
cmimetype: text/plain
submitter: jokerozen
assignee: tallniel
comment:
  the bibtex parser return a -stringcommand if string "string" is found in an entry, not only in case of @string{ key = "str str str"}
  a regexp seems faulty :
  in bibtex.tcl, line 366 : 

   } elseif {[regexp -nocase {\s*string[^\{]*\{(.*)\}[^\}]*} \
                  $block -> rest]} {

  must be replaced to  :

    } elseif {[regexp -nocase {\s*string\{(.*)\}} \
                  $block -> rest]} {


tkt_uuid: 2986744fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: sha1
priority: 5 Medium
foundin: None
title: issue with tcllib sha256 on 64bit systems
cmimetype: text/plain
submitter: zdia
assignee: andreas_kupries
closer: sf-robot
closedate: 2010-07-22T02:20:09
comment:
  Having compiled Tcltk on a 64bit system I could not open databases which were encrypted with the sha256 algorithm. Before I used only 32bit versions of ActiveState binaries. Debugging the sha256.tcl file I found the reason:

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

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

  Now everything works fine. 

  Zbigniew Diaczyszyn


tkt_uuid: 2988486fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: cmdline
priority: 5 Medium
foundin: None
title: cmdline with ::argv does not update ::argc
cmimetype: text/plain
submitter: glennjnn
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-05-27T19:09:32
comment:
  I realize this is not strictly a cmdline bug because it can work on any list of arguments.  However, I realized that if the ::argv global varname is passed then ::argc will not be updated, even though $::argv changes.

  I can see two ways to address this:
  1. simply note it in the documentation.
  2. add a special case, if the argvVar is "::argv", then "set ::argc [llength $argv]"


tkt_uuid: 2993029fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: aes
priority: 5 Medium
foundin: None
title: aes procedure gives an error _just_ with a given vector
cmimetype: text/plain
submitter: jmarro
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-07-06T19:41:09
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: 2993200fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: base64
priority: 7 High
foundin: None
title: ascii85 encode/decode implementation in pure tcl
cmimetype: text/plain
submitter: egavilan
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-05-03T21:48:51
comment:
  When working with postscript files sometimes the need arises to work with ascii85 encoded strings as described in the Postscript Language Reference Manual.
  Here is an implementation on pure Tcl for inclusion on tcllib.


tkt_uuid: 2995969fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ListBox: No multiple drag
cmimetype: text/plain
submitter: oehhar
assignee: oehhar
closer: oehhar
closedate: 2010-05-05T06:56:48
comment:
  A BWidget listbox with multiple selection may not do multiple drag and drop.

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

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

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

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


tkt_uuid: 2999022fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: map
priority: 5 Medium
foundin: None
title: map::slippy Losing floating point in a few methods
cmimetype: text/plain
submitter: mmoria01
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-05-27T18:50:27
comment:
  map::slippy tile 2geo tile  and  map::slippy point 2geo point  have there first/inter most computations returning integers instead of floating points. 
  Code from  map::slippy tile 2geo tile:
    set lat   [expr {$radtodeg * (atan(sinh($pi * (1 - 2 * $row / $tiles))))}]   <--  $row/$tiles  should be between 0-1 but always computes to 0.
    set lon   [expr {$col / $tiles * 360.0 - 180.0}]   <---  Same with $col/$tiles.

  Evample:
  (LBA_OSM_NEW) 5 % ::map::slippy tile 2geo [list 11 504 775]
  11 85.05112877983284 -180.0
  (LBA_OSM_NEW) 6 % ::map::slippy tile 2geo [list 11 775 504]
  11 85.05112877983284 -180.0


  Easy fix by casting with a 1.0*$row ...   By the way, great package.

  Thanks,

  -Matt


tkt_uuid: 2999764fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 2
foundin: None
title: ListBox: icon out of view on keybord select
cmimetype: text/plain
submitter: oehhar
assignee: oehhar
closer: oehhar
closedate: 2010-05-11T07:22:47
comment:
  Test script:
  ListBox::create .l -multicolumn 0 -selectmode single -width 5 -redraw 1
  pack .l
  .l insert end list:#auto -text 1 -image [Bitmap::get file]
  .l insert end list:#auto -text 2 -image [Bitmap::get file]
  .l insert end list:#auto -text 1234567890 -image [Bitmap::get file]
  .l insert end list:#auto -text 4 -image [Bitmap::get file]

  Good behaviour: when selecting the entry with the long text with the mouse, the icon is still visible and the text is clipped on the right
  Issue: when selecting this item by keyboard (up/down), the listbox scrolls right and puts the icons out of view.


tkt_uuid: 2999846fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: tklib :: plotchart
priority: 5 Medium
foundin: None
title: createHorizontalBarchart: wrong order of args
cmimetype: text/plain
submitter: obienert
assignee: arjenmarkus
closer: arjenmarkus
closedate: 2010-05-11T12:39:25
comment:
  Call of createHorizontalBarchart:
  Help file says:
  ::Plotchart::createHorizontalBarchart w ylabels xaxis noseries
  However, the proc demands a different order:
  proc ::Plotchart::createHorizontalBarchart { w xscale ylabels noseries }

  Oliver


tkt_uuid: 3000165fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: htmlparse
priority: 5 Medium
foundin: None
title: include an attribute parser
cmimetype: text/plain
submitter: dvrsn
assignee: andreas_kupries
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: 3000293fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ListBox bindText <Button-1> stops selection
cmimetype: text/plain
submitter: oehhar
assignee: oehhar
closer: oehhar
closedate: 2010-05-12T07:17:47
comment:
  Given a Listbox with the patch of bug 2995969 (which uses ButtonRelease events instead Button for selection) and the following script:
  pack [ListBox .l -selectmode single]
  .l insert end list:#auto -text 111
  .l insert end list:#auto -text 222
  .l insert end list:#auto -text 333
  .t.l configure -width 10
  proc p {args} {puts "p $args"}
  ListBox::bindTag .t.l <Button-1> p
  ---
  After the bindTag command, selection will not work any more.


tkt_uuid: 3002617fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
title: des , des-mode parameter and key padding
cmimetype: text/plain
submitter: griou
assignee: andreas_kupries
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: 3007168fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: tklib: ico
priority: 5 Medium
foundin: None
title: correct alignment for 24x24 icons
cmimetype: text/plain
submitter: a_kovalenko
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-07-07T20:41:06
comment:
  When tklib::ico reads and writes *.ico, *.dll, *.exe files, it uses the code like ($w*$h+$h*($w%32)) in a number of places, to calculate extra padding required for AND mask. It turned out that the result for 24x24 icons is incorrent; when used with this size, tklib::ico may corrupt executable files and generate incorrect *.ico files (still accepted by some software, but e.g. icotool warns about the incorrect size and about garbage skipped).

  If we regard $w==24 as a special case, ($w==24? 8 : $w % 32) is a correct replacement for the expression above. I'm attaching the patch fixing all places where the incorrect method was used.

  Wish.ico has 24x24 members, and patched ico.tcl works fine with wish-based executables.


tkt_uuid: 3007956fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: doctools
priority: 7 High
foundin: None
title: problem loading msgcat
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-09-07T19:31:18
comment:
  platform: sparc solaris 8, sun c compiler
  tcl 8.6 cvs head
  tcllib cvs head

  I decided on a whim to run the tcllib test suite today against tcl 8.6 cvs head. So far, I've encountered about 4 dozen test failures that look something like this:

  ---- doctools-idx-51.27 start

  ==== doctools-idx-51.27 doctools::idx deserialize = docidx, incbadcmd, error mes
  sage FAILED
  ==== Contents of test case:

          I deserialize = $data docidx
      
  ---- Result was:
  Unable to locate or load plugin "docidx" (ERROR for slave interp45 : can't find 
  package msgcat)
  ---- Result should have been (exact matching):
  "/vol/tclsrcsol/tcl86/tcllib/modules/doctools2idx/tests/data/bad_command" error 
  on line 1.4: Wrong#args for "key", need at least 1
  ==== doctools-idx-51.27 FAILED


  If I start up a tclsh8.6 directly, and type in package require msgcat, it is found.


tkt_uuid: 3011581fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: smtp
priority: 5 Medium
foundin: None
title: Doc bug w/ -header option
cmimetype: text/plain
submitter: rich123
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-07-06T19:49:22
comment:
  The current man page for the smtp command documents the "-header" parameter like so:

  -header
      A list of keywords and their values (may occur zero or more times). 

  From the phrasing of the statement (list of keywords (plural) and their values (plural)) and the position of the parenthetical, the docs appear to state that a single "-header" option can accept a list of plural headers and plural values.  I.e.: "-header [ list To a@example.com From b@example.com Subject Hi ]".

  However, this is not the case, looking at the code in smtp, each individual "-header" parameter takes a list of exactly two elements, nothing more, nothing less.

  While I think that allowing a single "-header" option to accept a list of plural headers and values is a superior fix, for now I simply propose that the documentation be edited to more accurately reflect the current implimentation.  Something like so:

  -header
      A list containing two elements, an smtp header and its associated value (the -header option may occur zero or more times). 


tkt_uuid: 3012669fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: Documentation
priority: 5 Medium
foundin: None
title: msgcat man page conflicts with the Tcl core
cmimetype: text/plain
submitter: rmax
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-06-08T18:22:34
comment:
  The msgcat man page of tcllib's doctools module conflicts with the identically named man page from the Tcl core when installing both at the same time.


tkt_uuid: 3012802fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: nntp
priority: 5 Medium
foundin: None
title: add timeout feature for nntp
cmimetype: text/plain
submitter: davidlallen
assignee: nobody
comment:
  Some packages such as http support a timeout.  For unreliable links this is very helpful.  However, nntp simply uses "gets".  See ::nntp::fetch.  Please add a similar timeout feature for nntp.  Using http as an approximate model, I have added this capability, using fileevent and vwait.  Please see attachment; you can diff ::nntp::fetch, and please see additional functions ::nntp::getline and ::nntp::timeout.  Unfortunately nntp also does not support convenient configuration of options, so I have used a hardcoded timeout of 60 seconds.  This is probably not appropriate.


tkt_uuid: 3025582fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: inifile
priority: 5 Medium
foundin: None
title: comments lost, positions changing
cmimetype: text/plain
submitter: m_hoffmann
assignee: afaupell
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: 3027371fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: Build System & Testing
priority: 5 Medium
foundin: None
title: incorrect module name added to modules.tcl
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-07-09T15:19:50
comment:
  When I attempted to install the cvs head of tcllib today, obtained from the cvs ftp site at activestate, the attempt failed. The problem was that the support/installation/modules.tcl file had the following line added to it:
  Module  imap        _tcl  _man  _null

  The correct line should have been

  Module  imap4        _tcl  _man  _null


tkt_uuid: 3035014fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Wont Fix
subsystem: uuid
priority: 5 Medium
foundin: None
title: "uuid::generate" returns binary data
cmimetype: text/plain
submitter: rkeene
assignee: patthoyts
closer: patthoyts
closedate: 2010-07-27T08:22:09
comment:
  UUID 1.0.1 returns binary data and not a string representation of the UUID:
          % package require uuid
          1.0.1
          % uuid::generate
          ß4:GjK@QÐ2E`Á

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


tkt_uuid: 3036841fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: docstrip
priority: 5 Medium
foundin: None
title: Bad links
cmimetype: text/plain
submitter: dgatwood
assignee: lars_h
closer: lars_h
closedate: 2010-08-11T21:28:27
comment:
  There are three bad links to tug.org in the man page.  Not sure where these are currently located since I don't know what was there before.  The links are listed below:


    [1]    The tclldoc package and class, http://tug.org/tex-archive/macros/latex/contrib/tclldoc/.

         [2]    The DocStrip utility, http://tug.org/tex-archive/macros/latex/base/docstrip.dtx.

         [3]    The doc and shortvrb Packages, http://tug.org/tex-archive/macros/latex/base/doc.dtx.


tkt_uuid: 3039090fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: asn
priority: 5 Medium
foundin: None
title: asn::asnGetBigInteger returns incorrect value
cmimetype: text/plain
submitter: rkeene
assignee: mic42
closer: mic42
closedate: 2011-01-05T22:36:02
comment:
  % package require asn
  0.8.3
  % set data "\x02\x03\x01\x00\x01"; asn::asnGetBigInteger data val; puts [::math::bignum::tostr $val]
  -65535
  % set data "\x02\x03\x81\x00\x01"; asn::asnGetBigInteger data val; puts [::math::bignum::tostr $val]
  -8323071


  Correct values of those ASN.1 sequences are 65537 and -8323071.  I suspect this is an issue with misinterpreting X.690:
          8.3.3      The contents octets shall be a two's complement binary number equal to the integer value, and consisting of
          bits 8 to 1 of the first octet, followed by bits 8 to 1 of the second octet, followed by bits 8 to 1 of each octet in turn up to
          and including the last octet of the contents octets.
              NOTE ­ The value of a two's complement binary number is derived by numbering the bits in the contents octets, starting with bit
              1 of the last octet as bit zero and ending the numbering with bit 8 of the first octet. Each bit is assigned a numerical value of 2N,
              where N is its position in the above numbering sequence. The value of the two's complement binary number is obtained by
              summing the numerical values assigned to each bit for those bits which are set to one, excluding bit 8 of the first octet, and then
              reducing this value by the numerical value assigned to bit 8 of the first octet if that bit is set to one.


  A working implementation:

  proc ::asn::asnGetBigInteger {data_var bignum_var} {
      # require math::bignum only if it is used
      package require math::bignum

      # Tag is 0x02. We expect that the length of the integer is coded with
      # maximal efficiency, i.e. without a prefix 0x81 prefix. If a prefix
      # is used this decoder will fail.

      upvar $data_var data $bignum_var bignum

      asnGetByte   data tag

      if {$tag != 0x02} {
          return -code error \
              [format "Expected Integer (0x02), but got %02x" $tag]
      }

      asnGetLength data len
      asnGetBytes  data $len integerBytes

      binary scan [string index $integerBytes 0] H* hex_head
      set head [expr 0x$hex_head]
      set replacement_head [expr $head & 0x7f]
      set integerBytes [string replace $integerBytes 0 0 [format %c $replacement_head]]

      binary scan $integerBytes H* hex

      set bignum [math::bignum::fromstr $hex 16]

      if {($head >> 7) && 1} {
          set bigsub [math::bignum::pow [::math::bignum::fromstr 2] [::math::bignum::fromstr [expr ($len * 8) - 1]]]
          set bignum [math::bignum::sub $bignum $bigsub]
      }

      return $bignum
  }


  Tests of new implementation:
  % package require asn
  % set data "\x02\x03\x01\x00\x01"; asn::asnGetBigInteger data val; puts [::math::bignum::tostr $val]
  65537
  % set data "\x02\x03\x81\x00\x01"; asn::asnGetBigInteger data val; puts [::math::bignum::tostr $val]
  -8323071
  % 


  Comparison with another ASN.1 Parser:

  $ echo -ne '\x02\x03\x01\x00\x01' > a
  $ echo -ne '\x02\x03\x81\x00\x01' > b
  $ openssl asn1parse -in a -inform der
      0:d=0  hl=2 l=   3 prim: INTEGER           :010001
  $ openssl asn1parse -in b -inform der
      0:d=0  hl=2 l=   3 prim: INTEGER           :-7EFFFF
  $ tclsh
  % expr 0x010001
  65537
  % expr -0x7EFFFF
  -8323071


tkt_uuid: 3041989fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: cmdline
priority: 7 High
foundin: None
title: Enhance documentation and help message
cmimetype: text/plain
submitter: oehhar
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-09-08T20:25:24
comment:
  The procedure "getoptions" aparently always understands "--" as "end of flags".

  IMHO
  - this should be stated in the documentation
  - this should be stated in the generated help message. The "-? /-help" automatically takes two output rows so another automatic would not harm.

  Other issue:
  - the format of the return value of the function is not explained in the help: alternating list of index value. The example shows it.

  Thank you,
  Harald


tkt_uuid: 3053446fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Works For Me
subsystem: multiplexer
priority: 7 High
foundin: None
title: multiplexer fails self-test, tcllib 1.11 and TCL 8.5.8
cmimetype: text/plain
submitter: chasba
assignee: davidw
closer: andreas_kupries
closedate: 2013-02-08T19:26:25
comment:
  Hi,

  I'm trying to build tcllib 1.11 with TCL 8.5.8 (not threaded) from FreeBSD ports. When running self-tests, 
  this stands out:

  [    ]  [8.5.8] multiplexer ~~ FAILS T     9 P     8 S     0 F     1

  The other self-tests run just fine. Followed by:
  ----
  ...
  *** Error code 1

  Stop in /usr/ports/devel/tcllib/work/tcllib-1.11.
  *** Error code 1

  Stop in /usr/ports/devel/tcllib/work/tcllib-1.11.
  ==== multiplexer-5.2 add access filter which denies access FAILED
  ==== Contents of test case:

      set ::forever {}
      set mp [multiplexer::create]
      ${mp}::Init 37465
      ${mp}::AddAccessFilter DenyAccessFilter
      set sk1 [socket localhost 37465]
      set sk2 [socket localhost 37465]
      update
      fconfigure $sk1 -buffering none
      if { [catch {
          puts $sk1 "boom"
      } err] } {
          set result "socket blocked"
      } else {
          set result "socket not blocked"
      }
      ${mp}::destroy
      set result

  ---- Result was:
  socket not blocked
  ---- Result should have been (exact matching):
  socket blocked
  ==== multiplexer-5.2 FAILED


  @@ End 1282808621
  all.tcl:        Total   9       Passed  8       Skipped 0       Failed  1
  Sourced 1 Test Files.
  Files with failing tests: multiplexer/multiplexer.test
  ============================================================

  @@ Host monthu.*
  @@ Platform FreeBSD-8.1-RELEASE-i386
  @@ CWD /usr/ports/devel/tcllib/work/tcllib-1.11
  @@ Shell /usr/local/bin/tclsh8.5
  @@ Tcl 8.5.8
  @@ MatchTests *
  @@ SkipFiles l.*.test
  @@ MatchFiles *.test
  @@ Start 1282808621
  @@ Module ncgi
  @@ Testsuite modules/ncgi/ncgi.test
  - tcllib::testutils 1.2
  * ncgi 1.3.2
   [8.5.8] multiplexer ~~ FAILS T     9 P     8 S     0 F     1
  FreeBSD monthu.* 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Mon Aug  2 00:03:54 CEST 2010     root@monthu.*:/usr/obj/usr/src/sys/MONTHU  i386
  Please, analyze and report the test failures
  Be sure to use the latest available microversion
  of TCL-8.5, however.
  ----

  Is there some way to fix this? If so, how?

  Thanks!


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

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


tkt_uuid: 3061815fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: csv
priority: 3 Low
foundin: None
title: Docs: Example mixes up alternate
cmimetype: text/plain
submitter: oehhar
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-09-08T20:02:44
comment:
  CSV Dokumentation section "Examples".
  The result boxes are exchanged. The alternate format should result in the empty string for d).


tkt_uuid: 3062782fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: struct :: graph
priority: 5 Medium
foundin: None
title: graphops.test fail
cmimetype: text/plain
submitter: dgp
assignee: andreas_kupries
closer: sf-robot
closedate: 2010-09-29T19:33:10
comment:
  ==== modules/struct/graphops.test graphop-ttcl-gtcl-stcl-sttcl-qtcl-bipartite-3.2 FAILED =========
  ==== Contents of test case:

      SETUP_D
      set result [struct::graph::op::isBipartite? mygraph]
      mygraph destroy
      set result

  ---- Result was:
  ---- Return code should have been one of: 0 2
  ---- errorInfo: can't read "qret": no such variable
      while executing
  "llength $qret"
      (class "::struct::queue::queue_oo" method "size" line 3)
      invoked from within
  "$pending size"
      (procedure "struct::graph::op::isBipartite?" line 49)
      invoked from within
  "struct::graph::op::isBipartite? mygraph"
      ("uplevel" body line 3)
      invoked from within
  "uplevel 1 $script"
  ---- Result should have been:

  ==== modules/struct/graphops.test graphop-ttcl-gtcl-stcl-sttcl-qtcl-bipartite-3.2 ====


  Then most (all?) the rest of the tests in graphops.test
  also fail because the tests are not independent.  The
  failure of one test to properly cleanup causes later
  tests to fail.

  Actual bug appears to be in queue_oo.tcl ?


tkt_uuid: 3064747fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: pt (parsetools)
priority: 5 Medium
foundin: None
title: Failure to match { and } in parser tools
cmimetype: text/plain
submitter: dargosch
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-09-13T18:00:38
comment:
  I'm trying to match everything, the entire Unicode charset (including special chars like {} () and such) up to a specific sequence of chars.
  With the supplied PEG grammar, I am able to parse unicode strings ok, but grouping chars is still a problem, it seems.

  I am using this test snipplet:


  ------------- BEGIN ---------------
  proc putss {p in } {
  global currparsing
  set currparsing $in
  set inast [$p parset $in ]
  puts $inast
  puts [pt::ast print $inast ]
  }
    
  puts "Simple case"
  putss $p {Structure=adasd} 
  puts "Simple case, wierd chars"
  putss $p {Structure='ƈɠħç§'}  
  puts "Simple case, escaped special grouping chars"
  putss $p {Structure='\}'}  
  ------------- END ---------------

  and what I get is:

  ------------- BEGIN ---------------
  Simple case
  expression 0 14 {labeltypeexpression 0 14 {labeltype 0 8} {stringcompareoperator 9 9} {labelsequence 10 14 {label 10 14 {asciistring 10 14}}}}
  <expression> :: 0 14
      <labeltypeexpression> :: 0 14
          <labeltype> :: 0 8
          <stringcompareoperator> :: 9 9
          <labelsequence> :: 10 14
              <label> :: 10 14
                  <asciistring> :: 10 14
  Simple case, wierd chars
  expression 0 16 {labeltypeexpression 0 16 {labeltype 0 8} {stringcompareoperator 9 9} {labelsequence 10 16 {label 10 16 {unicodestring 11 11} {unicodestring 12 12} {unicodestring 13 13} {unicodestring 14 14} {unicodestring 15 15}}}}
  <expression> :: 0 16
      <labeltypeexpression> :: 0 16
          <labeltype> :: 0 8
          <stringcompareoperator> :: 9 9
          <labelsequence> :: 10 16
              <label> :: 10 16
                  <unicodestring> :: 11 11
                  <unicodestring> :: 12 12
                  <unicodestring> :: 13 13
                  <unicodestring> :: 14 14
                  <unicodestring> :: 15 15
  Simple case, escaped special grouping chars
  pt::rde 10 {{n WHITESPACE} {n labelsequence}}
      while executing
  "$myparser complete"
      (procedure "::emuql_parser::Snit_methodparset" line 9)
      invoked from within
  "$p parset $in "
      (procedure "putss" line 4)
      invoked from within
  "putss $p {Structure='\}'}  "
      (file "Test_emuql_parser.tcl" line 145)
  ------------- END ---------------


  This is on a Mac Show Leopard and Tcl 8.6.

  /Fredrik


tkt_uuid: 3065746fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: log
priority: 3 Low
foundin: None
title: formatted log::log for performence
cmimetype: text/plain
submitter: oehhar
assignee: andreas_kupries
comment:
  Propose to add a command:
  log::logf Level Formatpattern ?arg1? ?arg2? ?arg3?
  which is equal in functionality to:
  log::log Level [format Formatpattern ?arg1? ?arg2? ?arg3?]
  for performence reasons.
  Example:
  Current solution to log a variable contents:
  (1) log::log debug "Variable V=$V"
  Proposed solution:
  (2) log:logf debug "Variable V=%s" $V
  If log level "debug" is activated, there is little difference.
  If log level "debug" is not activated, (1) will still compose the log string, (2) will not.
  For complex cases, this might be a considerable performence difference.


tkt_uuid: 3066026fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: Development Tools
priority: 5 Medium
foundin: None
title: testutilities.tcl presumes tcltest loaded
cmimetype: text/plain
submitter: lars_h
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-09-15T20:05:07
comment:
  From the definition and description of [testsNeedTcltest] in testutilities.tcl, it is clear that we want to allow for the case that the tcltest package has not yet been loaded; this procedure has a branch that does the necessary [package require].

  However, on line 145 one finds the command

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

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

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

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

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


tkt_uuid: 3066872fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: comm
priority: 5 Medium
foundin: None
title: comm server blocks indefinitely
cmimetype: text/plain
submitter: apnadkarni
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-09-15T19:52:02
comment:
  Bug reported by skipper600 on the wiki (http://wiki.tcl.tk/2507)

  "the listening interpreter stalls once it receives a tcp connection (not issued by another comm connection). Simply telnet such a comm::comm server, and it is locked until you either violate the protocol or terminate the connection."

  I verified his finding with comm 4.6.1, Tcl 8.6 on Windows. This would comprise a simple DoS attack on any application using the package.

  /Ashok


tkt_uuid: 3071973fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
title: add Kruskal-Wallis test to math::statistics
cmimetype: text/plain
submitter: treincke
assignee: arjenmarkus
closer: arjenmarkus
closedate: 2010-09-22T07:08:06
comment:
  I have done an implementation of the Kruskal-Wallis test. Feel free to adapt this and tweak it for the needs of math::statistics. Personally, I would make two commands from this code (the names can be something else more descriptive of course):

  ::math::statistics::test-Kruskal-Wallis ?data ...?
  ::math::statistics::rank ?data ...?

  Find the implementation here: http://wiki.tcl.tk/27149


tkt_uuid: 3076576fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: math
priority: 5 Medium
foundin: None
title: Wrong number of arguments in test isprime-2.0 of numtheory
cmimetype: text/plain
submitter: arjenmarkus
assignee: lars_h
closer: lars_h
closedate: 2010-09-27T15:44:07
comment:
  Test isprime-2.0 uses a mock-up Miller-Rabin test procedure, but the number of arguments is 3, instead of 4.

  Here is the report:

  ==== modules/math/numtheory.test isprime-2.0 FAILED =========
  ==== Contents of test case:

     ::math::numtheory::Miller--Rabin 127 -randommr 500

  ---- Result was:
  ---- Return code should have been one of: 0 2
  ---- errorInfo: wrong # args: should be "::math::numtheory::Miller--Rabin n s d a"
      while executing
  "::math::numtheory::Miller--Rabin 127 -randommr 500"
      ("uplevel" body line 2)
      invoked from within
  "uplevel 1 $script"
  ---- Result should have been:

  ==== modules/math/numtheory.test isprime-2.0 ====


tkt_uuid: 3085417fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: Build System & Testing
priority: 5 Medium
foundin: None
title: nnsd not installed
cmimetype: text/plain
submitter: cwjolly
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-10-26T17:17:23
comment:
  The nano name service daemon is not installed. This appears to have happened between tcllib versions1.11 and 1.12 . Thhe support/installation/modules.tcl  does not list nnsd as an application. Adding the line :

  Application nnsd 

  fixes this bug. Corrected file attached.


tkt_uuid: 3087955fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Label has extra x packing space
cmimetype: text/plain
submitter: oehhar
assignee: oehhar
closer: oehhar
closedate: 2010-10-15T08:22:45
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: 3090738fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
title: Minor doc typo in graphops manpage
cmimetype: text/plain
submitter: rich123
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-10-26T17:22:53
comment:
  The graphops manpage contains a small typo in several places.  The attached diff patches tcllib 1.12  graphops manpage to remove the typo.


tkt_uuid: 3091244fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: htmlparse
priority: 5 Medium
foundin: None
title: parsing doesn't respect pre tag & trims trailing whitespaces
cmimetype: text/plain
submitter: martinlemburg
assignee: andreas_kupries
comment:
  tcllib 1.11.1 - htmlparse 1.1.3:
  ========================

  Parsing of preformatted text in HTML data enclosed by the HTML tag "pre" leads to the loss of trailing whitespaces.

  The procedure 2treeCallback must be fixed for example like this:

      set  tag  [string tolower $tag]
      if {$tag ne "pre"} {
          set  textBehindTheTag [string trim $textBehindTheTag]
      }

  Perhaps there are still other tags to think over a specialized handling.


tkt_uuid: 3094654fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: http :: autoproxy
priority: 3 Low
foundin: None
title: Autoproxy man page - before options
cmimetype: text/plain
submitter: oehhar
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-10-26T17:31:57
comment:
  On the man page, section "Options": some options have a "-" as first character, some dont.
  IMHO they all should have one (or none, as the - is given in the configure method description)


tkt_uuid: 3105412fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: csv
priority: 5 Medium
foundin: None
title: ::csv incorrect format implementation on LINE BREAK records
cmimetype: text/plain
submitter: cyril_roux
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-12-05T21:57:59
comment:
  Hi,

  Hope this post will allow you to fixe this annoying problem...

  Many thanks
  Cyril ROUX

  ===========
  According to "Network Working Group" (rfc4180 - October 2005) about CSV format :
  2.  Definition of the CSV Format
     6.  Fields containing line breaks (CRLF), double quotes, and commas
         should be enclosed in double-quotes.  For example:

         "aaa","b CRLF
         bb","ccc" CRLF
         zzz,yyy,xxx

  That is to say tcllib ::csv package have to take into account LINE BREAK the
  same way it manages separatorChar (,) and delimiterChar (")...

  ==========
  Especialy, bug can be fixed in "join" procedure by adding line break (\n) to
  match list of special characters (, and ") that generate quoting records :
  proc ::csv::join {values {sepChar ,} {delChar \"}} {
      set out ""
      set sep {}
      foreach val $values {
          if {[string match "*\[${delChar}$sepChar\n\]*" $val]} {
              append out $sep${delChar}[string map [list $delChar ${delChar}${delChar}] $val]${delChar}
          } else {
              append out $sep${val}
          }
          set sep $sepChar
      }
      return $out
  }

  ==========
  To reproduce this problem jus t create a matrix with records containing line break
  then dump it in a CSV file, then read CSV file back in TCL and consistency will be lost !

  lappend ::auto_path [file join  /sw/freetools/tcl/8.5.6/Linux/rh4/x86_64  lib]

  package require csv
  package require struct::matrix

  struct::matrix M
  M add columns 3
  M insert row 0 { "name" "code" "description" }
  M add row { "me" {if ( test == null ){
    var = false;
  } else {
    var = true;
  }
  } {code by:
  me in JAVA} }

  #display matrix
  M format 2string

  #then we can see consistency is preserved
  #-----+----------------------+------------
  #name | code                 | description
  #-----+----------------------+------------
  #me   | if ( test == null ){ | code by:   
  #     |   var = false;       | me in JAVA 
  #     | } else {             |           
  #     |   var = true;        |          
  #     | }                    |           
  #-----+----------------------+------------

  # dump matrix in CSV file
  set CSV [open /tmp/test.csv w]
  ::csv::writematrix ::M $CSV
  close $CSV

  #CSV file is without delimiters around
  #any values with LINE BREAK :
  #
  #name,code,description
  #me,if ( test == null ){
  #  var = false;
  #} else {
  #  var = true;
  #}
  #,code by:
  #me in JAVA

  # Recover CSV
  set CSV [open /tmp/test.csv r]
  ::csv::read2matrix $CSV Mread , auto
  close $CSV

  #display matrix
  Mread format 2string

  #then now we can see consistency is lost due to NO delimiters used when line breaks!!!
  #+--------------+--------------------+-----------+
  #|name          |code                |description|
  #|--------------+--------------------+------------
  #|me            |if ( test == null ){|           |
  #|--------------+--------------------+------------
  #|  var = false;|                    |           |
  #|--------------+--------------------+------------
  #|} else {      |                    |           |
  #|--------------+--------------------+------------
  #|  var = true; |                    |           |
  #|--------------+--------------------+------------
  #|}             |                    |           |
  #|--------------+--------------------+------------
  #|              |code by:            |           |
  #|--------------+--------------------+------------
  #|me in JAVA    |                    |           |
  #| -------------+--------------------+------------


tkt_uuid: 3105665fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget 1.x
priority: 5 Medium
foundin: None
title: bwidget menu white on white
cmimetype: text/plain
submitter: ssmedley
assignee: oehhar
closer: oehhar
closedate: 2010-11-09T16:01:53
comment:
  Using BWidget v1.8.0 or v1.9.2 on Mac OS X 10.6.4, menu item text is white, on a white background! & only visible when the mouse cursor highlights the menu item. Key accelerators are in black however, & therefore visible.


tkt_uuid: 3106208fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: tree itemconfigure mishandling of node names
cmimetype: text/plain
submitter: andreas_kupries
assignee: oehhar
closer: oehhar
closedate: 2010-11-10T08:00:25
comment:
  The original description, as submitted to ActiveState:
  ========================================
  I am currently using version 1.8 of the BWidget library. I have found an  error (or lack of documentation) in the Tree library. I am using the tree structure in my software to display connections between devices. Each node in  my tree is named using the unique ID of the device which the tree node represents (these are integer values). When doing an "itemconfigure" in my code I run into an error. The error is caused by using integer values for node names. The error is described below.

  In the code section (below) taken from Tree::itemconfigure there exists a case when a node name is the same value as a flag value (in my system I had a node named 16 and a flag value that turned out to be 16). When doing the lsearch to find the idx of the node, the search finds the index of the flag value 16 (and assumes this is the node). When it does the incr to get the corresponding flag value it is really picking up a node name. In my system I also have node names that are strings. In my case the code was picking up a node name that was a string and when trying to set the flag it was doing an "|" with a flag value and a string (which causes Tcl to crash).

   if { $data(upd,level) < 3 && $flag } {
        if { [set idx [lsearch -exact $data(upd,nodes) $node]] == -1 } {
           lappend data(upd,nodes) $node $flag
        } else {
           incr idx
           set flag [expr {[lindex $data(upd,nodes) $idx] | $flag}]
           set data(upd,nodes) [lreplace $data(upd,nodes) $idx $idx $flag]
        }

  I do not see any documentation stating that node names cannot be integer values. As a result, I deem this to be a bug that should be addressed.
  If you are not the people who deal with Tcl bug, please pass this on to the people who fix bugs. Thanks.
  ========================================

  My fix for the problem is attached.


tkt_uuid: 3106443fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
resolution: None
subsystem: tklib :: tooltip
priority: 5 Medium
severity: Minor
foundin: None
title: invalid option processing in tooltip::tooltip
cmimetype: text/plain
submitter: daapp
assignee: hobbs
closer: aku
closedate: 2456444.39361494
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: 3107937fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: http :: autoproxy
priority: 5 Medium
foundin: None
title: Manual/Modification: when is autoproxy hooked to http
cmimetype: text/plain
submitter: oehhar
assignee: patthoyts
comment:
  IMHO, the following fact is:
  - not very handy
  - not clearly expressed in the manual
  The autoproxy module only hooks into the http module by:
  http::config -proxyfilter [namespace origin filter]
  when:
  - autoproxy::init is called
  - and a proxy is found in the system or specified to the command

  A proxy specification by:
  autoproxy::configure -proxy_host ...
  does not hook autoproxy into http and thus just does nothing.
  A:
  autoproxy::configure -proxy_host ""
  does not unhook the autoproxy module (which is propably no issue but might be done too)

  Bug or feature ?

  I propose to:
  - change autoproxy::configure to hook autoproxy, if the option proxy_port is configured with a value
  - perhaps document the parameters of autoproxy::init
    Specially, I find the used format very handy for own configuration options:
      URL and comma-separated proxy exception list
  the attached patch works for me.

  See this clt-thread for the discussion:

  http://groups.google.com/group/comp.lang.tcl/browse_thread/thread/f04ff7683d61cc45/08150dfe8ce5b5d6#08150dfe8ce5b5d6

  Thanks to Alexandre to work this out !!!

  Harald


tkt_uuid: 3107991fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
resolution: Invalid
subsystem: mime
priority: 5 Medium
foundin: None
title: ref:1470818-Wrong monthname returned by mime::parsedatetime
cmimetype: text/plain
submitter: jxmercog
assignee: mrose
closer: jxmercog
closedate: 2010-11-17T15:43:47
comment:
  This is valid for all versions since 1.8.  I found a minor issue with the fix for this issue. "Clock format $clock -format $m " returns a value between 01 - 12 but MONTHS_SHORT expects a value from 0-11 so the date is still off by a month when no date header is provided when this patch is applied.  I've applied the following patch to mime.tcl to fix the issue in procedure mime::parsedatetime in every place that MONTHS_SHORT is accessed.
              set mon [lindex $MONTHS_SHORT [expr [scan [clock format $clock -format %m] %d] - 1]]


tkt_uuid: 3110860fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: Documentation
priority: 5 Medium
foundin: None
title: geometry man page conflicts with the Tcl core
cmimetype: text/plain
submitter: rmax
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-11-25T17:28:33
comment:
  For version 8.6, a manpage named geometry.n was added to the Tk core, which conflicts with tcllib's existing manpage for the math::geometry package.


tkt_uuid: 3117246fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: mime
priority: 5 Medium
foundin: None
title: Mime maildemo file is missing the tclsh startup bits
cmimetype: text/plain
submitter: stwo
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2010-11-25T17:20:50
comment:
  Here's the patch:

  --- examples/mime/maildemo.tcl.orig     Wed Feb  4 09:25:12 2009
  +++ examples/mime/maildemo.tcl  Wed Feb  4 09:26:45 2009
  @@ -1,3 +1,7 @@
  +#! /bin/sh
  +# the next line restarts with tclsh \
  +exec tclsh "$0" ${1+"$@"}
  +
   # maildemo.tcl - Copyright (C) 2005 Pat Thoyts <patthoyts@users.sf.net>
   # 
   # This program illustrates the steps required to compose a MIME message and 


tkt_uuid: 3122382fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: tklib :: tablelist
priority: 5 Medium
foundin: None
title: findTabs returns 0 and callers fail
cmimetype: text/plain
submitter: tombert
assignee: nemethi
closer: tombert
closedate: 2010-12-02T12:59:14
comment:
  The first loop from tablelist::findTabs is able to return 0 without providing data to idx1Name and idx2Name ... thus commands like tablelist::addActiveTag will crash with error "can't read tabIdx1: no such variable"

  seen in version tklib0.5

  thx


tkt_uuid: 3138526fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: smtp
priority: 5 Medium
foundin: None
title: Wrong email server name gives unrelated error message
cmimetype: text/plain
submitter: arjenmarkus
assignee: mrose
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: 3141163fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: None
priority: 5 Medium
foundin: None
title: Login at hosted accounts in Rest API gdocs API
cmimetype: text/plain
submitter: efrecon
assignee: nobody
comment:
  Posting this here since there isn't any category for the rest library candidate. The gdocs example API interface should include "accountType HOSTED_OR_GOOGLE" in the static_args list of the gdocs(auth) table in order to allow login at "regular" google docs accounts, but also at hosted accounts.


tkt_uuid: 3141568fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: fileutil
priority: 5 Medium
foundin: None
title: find errors out on broken directory soft links
cmimetype: text/plain
submitter: guardus
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-01-09T00:18:40
comment:
  fileutil::find errors out on broken directory soft links.  I am running ActiveTcl 8.5.9.1 on
  Windows XP and fileutil 1.14.4 from the Activestate Teapot.

  See attached error.tcl script.  Basically, the link1_test link points to a non-existent
  directory, and then "glob -nocomplain -directory link1_test -- *" errors out.  (One could
  argue that this should not error out because "glob -nocomplain -directory non_existent_dir -- *"
  does not error out, but that's not a tcllib issue.)

      [510] ./error.tcl
      first find results: ./.error.tcl.un~ ./error.tcl ./error.tcl+ ./.error.tcl.swp ./dir1_test ./link1_test
      couldn't read directory "C:/temp/tmp/link1_test/*": no such file or directory
          while executing
      "glob -nocomplain -directory $current -types f          -- *"
          (procedure "GLOBF" line 2)
          invoked from within
      "GLOBF $current"
          (procedure "find" line 48)
          invoked from within
      "find . {string match *}"
          invoked from within
      "set findResults2 [find . {string match *}]"
          (file "./error.tcl" line 19)

  I worked around this by adding a test at the beginning of GLOBF and GLOBD.

      proc ::fileutil::GLOBF {current} {
          if {([file type $current] eq {link}) && ![file exists [file readlink $current]]} {
              return {}
          }
          ...


tkt_uuid: 3141584fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: units
priority: 5 Medium
foundin: None
title: units::convert bug (when value is zero)
cmimetype: text/plain
submitter: yyamasak
assignee: techentin
closer: techentin
closedate: 2010-12-22T15:17:01
comment:
  tcllib version 1.1.2

  If 0 is specified as source value, units::convert regards it as (blank value + source units). As a result, it returns 1.0 * scale.

  For example,
  ::units::convert 0.0cm cm; #=> 0.0 (Correct!)
  ::units::convert 0cm cm; #=> 1.0 (Wrong! The same result as ::units::convert cm cm)
  ::units::convert 0cm mm; #=> 10.0 (Wrong! The same result as ::units::convert cm mm)


tkt_uuid: 3147481fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: fileutil
priority: 5 Medium
foundin: None
title: find error on hidden, unreadable directory in Windows
cmimetype: text/plain
submitter: guardus
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-01-09T00:18:32
comment:
  I am using ActiveTcl 8.5.9.1 on Windows XP SP3.

    fileutil::find $env(SYSTEMDRIVE)/ {string match *.pdf}
    couldn't read directory "C:/System Volume Information/*": permission denied
        while executing
    "glob -nocomplain -directory $current -types f          -- *"
        (procedure "GLOBF" line 8)
        invoked from within
    "GLOBF $current"
        (procedure "find" line 48)
        invoked from within
    "find $env(SYSTEMDRIVE)/ {string match *.pdf}"
        (file "./error.tcl" line 6)

  Maybe "glob -nocomplain" should not error out, but for now I added a check to
  make sure the directory is readable in GLOBF and GLOBD as a workaround.
  My workaround, along with my workaround for bug 3141568, looks like this:

      proc ::fileutil::GLOBF {current} {
          if {![file readable $current]} {
              return {}
          }
          if {([file type $current] eq {link}) && !([file exists [file readlink $current]] && [file readable [file readlink $current]])} {
              return {}
          }


tkt_uuid: 3151099fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: mime
priority: 5 Medium
foundin: None
title: fail to send when addr is like foobar.@example.com
cmimetype: text/plain
submitter: sickpig
assignee: mrose
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: 3160150fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tklib :: cursor
priority: 5 Medium
foundin: None
title: invalid command name "SpinBox::config"
cmimetype: text/plain
submitter: tombert
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-01-18T18:18:26
comment:
  Error when doing:

  package re BWidget
  SpinBox .sb -text test
  package re cursor
  cursor::propagate . watch

  thx


tkt_uuid: 3162548fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: tar
priority: 8
foundin: None
title: tar -- support existing/nonseekable channels
cmimetype: text/plain
submitter: ferrieux
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-01-20T19:46:14
comment:
  The attached patch adds a "-chan" option to [contents/stat/get/untar/create]  (but *not* [add/remove], foor good reasons), which interprets the first argument as a channel name instead of filename. This allows to pass already opened channels, seekable or not. One typical usage is the emulation of 'tar cf - | ...':

     ::tar::create  $pipe  $listoffiles -chan

  Which is typically useful for Wub, to serve content that is to be tarred on-the-fly, instead of (currently) using tempfiles.
  The same applies on input, where seek is emulated by repeated reads when the channel is not seekable; similarly a "tar tf -" can thus be done on any pipe or socket.

  Note that the responsibility for 'fconfigure -translation binary' is left to the caller; only raw IO are done on the provided channel, and it is left open on return. 

  I have not included the (needed) documentation update; I would appreciate a hand since I don't have the renderer handy ;-)


tkt_uuid: 3163541fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: grammar_peg
priority: 5 Medium
foundin: None
title: Possibly wrong call of ict_match_token
cmimetype: text/plain
submitter: igorstravinski
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-01-25T06:40:20
comment:
   in line 116 of grammar_peg/peg_interp.tcl:
              ict_match_token "Expected $ch"
  should read
              ict_match_token $ch "Expected $ch"

  See, e.g. <http://wiki.tcl.tk/15512> for more details


tkt_uuid: 3163579fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: None
priority: 5 Medium
foundin: None
title: Add a -compress config option for ::http::config
cmimetype: text/plain
submitter: karll
assignee: patthoyts
comment:
  Right now the http packages requests compressed results if the website offers it and the zlib package has been loaded (or Tcl 8.6 is being used).

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

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


tkt_uuid: 3164978fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: nmea
priority: 9 Immediate
foundin: None
title: missing procs or wrong man
cmimetype: text/plain
submitter: harmol
assignee: afaupell
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: 3167244fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: doctools
priority: 5 Medium
foundin: None
title: hook(n) man page renders incorrectly
cmimetype: text/plain
submitter: egavilan
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-02-23T18:14:28
comment:
  The hook man page renders incorrecty in the REFERENCE section. There is a staircase effect which sends output to the right.
  Attached is the result of "man n hook > hook.txt"
  Error messages on stderr are:
  $ man n hook > hook.txt
  <standard input>:385: warning: macro `CE:' not defined (probably missing space after `CE')
  <standard input>:424: warning: macro `CE,' not defined (probably missing space after `CE')
  <standard input>:437: warning: macro `CE,' not defined (probably missing space after `CE')
  <standard input>:449: warning: macro `CE.' not defined (probably missing space after `CE')
  <standard input>:543: warning: macro `CE,' not defined (probably missing space after `CE')


tkt_uuid: 3167248fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 5 Medium
foundin: None
title: Release file tcllib-1.13.tar.gz is corrupt
cmimetype: text/plain
submitter: egavilan
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-01-29T22:29:17
comment:
  The distribution file tcllib-1.13.tar.gz is corrupt. After downloading, trying to unpack yields
  $ tar zxf tcllib-1.13.tar.gz 

  gzip: stdin: unexpected end of file
  tar: Unexpected EOF in archive
  tar: Unexpected EOF in archive
  tar: Error is not recoverable: exiting now

  Same error with different mirrors (ufpr and switch)
  The file tcllib-1.13.tar.bz2 unpacks correctly.


tkt_uuid: 3168761fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Themed widgets cause Tcl errors
cmimetype: text/plain
submitter: zoro2
assignee: oehhar
closer: oehhar
closedate: 2011-02-14T16:57:44
comment:
  Multiple widgets - including Entry, LabelFrame and LabelEntry cause errors when used after [Widget::theme 1] was called.

  Included are fixes I made against 1.9.4 release.


tkt_uuid: 3182287fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Themed ComboBox failes due to themed entry widget
cmimetype: text/plain
submitter: oehhar
assignee: oehhar
closer: oehhar
closedate: 2011-02-15T14:28:58
comment:
  When using a BWidget Combobox when theming is activated, it fails on creation and on posting its list due to the use of the themed Entry widget, which does not support any more:
  -relief
  -highlightbackground
  -highlightforeground

  The attached patch at least removes the errors.
  Please use ttk::combobox instead.

  The attached patch will not be in the repository before Andreas reallows it.


tkt_uuid: 3183064fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: pt (parsetools)
priority: 5 Medium
foundin: None
title: package provide statement not correct.
cmimetype: text/plain
submitter: john-roll
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-02-16T21:55:55
comment:
  When generating a parser for snit or TclOO the final substitution of the parser package name is not correctly substituted into the package provide statement on the second to last line of the output.


tkt_uuid: 3183080fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tcl :: chan :: *
priority: 5 Medium
foundin: None
title: Allowance in tcl::chan::string
cmimetype: text/plain
submitter: john-roll
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-02-16T20:58:58
comment:
  Verification of "Allowance" in a string channel return error.

  Example:
  -----------------------------
  lappend auto_path /home/john/lib/tcllib1.13

  package require tcl::chan::events 1
  package require tcl::chan::string 1

  set string "a b c \n d e f"

  set chan [::tcl::chan::string $string]

  puts [gets $chan]
  -----------------------------------

  [john@vps0 excel]$ tclkit8.6 xxx
  can't read "allowed(read)": no such variable
      while executing
  "if {$allowed($event) == $enable} continue"
      (class "::tcl::chan::events" method "Allowance" line 5)
      invoked from within
  "my Allowance $args yes"
  .....


tkt_uuid: 3189786fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: cmdline
priority: 5 Medium
foundin: None
title: option processing default incorrect for .arg and .secret
cmimetype: text/plain
submitter: guardus
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-02-23T17:43:35
comment:
  It looks like a regexp is not escaped properly, so an option myarg creates a default m in the argument array.

  I think the code
      if {[regsub -- .arg$ $name {} name] == 1} {

  should be
      if {[regsub -- {\.arg$} $name {} name] == 1} {

  I think the change needs to be done in two procs, ::cmdline::GetOptionsDefaults and ::cmdline::usage, with .arg and .secret, for a total of 4 lines changed.

  Run the attached script "arg -h".


tkt_uuid: 3235340fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: uri
priority: 5 Medium
foundin: None
title: uri::split mishandles fragment
cmimetype: text/plain
submitter: duquette
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-03-23T04:41:59
comment:
  The uri::split command mishandles the "fragment" of http:// URIs in two ways:

  1. If the URI includes a query, e.g., http://myserver.com/foo?bar=baz#quux, the fragment is treated as part of the query.
  2. The "fragment" key is only included in the dictionary returned by uri::split if a fragment is found.  All of the other optional URI components are included with an empty value when the component is omitted.


tkt_uuid: 3247765fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: smtpd
priority: 5 Medium
foundin: None
title: Add a smtpd::configure -banner callback
cmimetype: text/plain
submitter: otterholm
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-04-11T21:53:45
comment:
  The first thought using the  smtpd package is that the first response the smtpd does to an accepted client connection is to put up a "banner" reply to the client shouldnt be hardcoded by the smtpd package.

  This line is hardcoded in the source as :  Puts $channel "220 $options(serveraddr) tcllib smtpd $version; [timestamp]" .
  Developping your own smtpd application using the smtpd package as of now leaves you having no way to set your own banner relevant to your own implementation.

  I suggest that there should be something like smtpd::configure  -banner callback


tkt_uuid: 3252952fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: coroutine
priority: 5 Medium
foundin: None
title: Coroutine package overwrites core ::coroutine command
cmimetype: text/plain
submitter: egavilan
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-04-18T20:26:09
comment:
  The coroutine package creates a new command (via [namespace ensemble create]) which clashes with the core ::coroutine command.
  Possible solutions:
  * Move the original ::coroutine command to the ::coroutine namespace first.
  * Use the -command option of [namespace ensemble create] to change the name of the created ensemble.
  * Rename the ::coroutine namespace altoghether.


tkt_uuid: 3281791fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: csv
priority: 5 Medium
foundin: None
title: CSV example documentation fix
cmimetype: text/plain
submitter: guardus
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-04-11T21:08:46
comment:
  I think the documentation fix for 3061815 is incomplete.  The last line in the Example section:

      As can be seen only item (d) is different, now a " instead of the empty string.

  should be: ... item (d) is different, now the empty string instead of a ".

  By the way, when does the html get updated?  http://tcllib.sourceforge.net/doc/csv.html
  does not have the 3061815 fix.


tkt_uuid: 3288793fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: ftp
priority: 5 Medium
foundin: None
title: ftp::List does not work inside tkcon
cmimetype: text/plain
submitter: proteco
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-04-18T19:27:59
comment:
  the proposed fix is to replace:
  proc ::ftp::__ftp_ls {args} {
          foreach i [eval ::ftp::List_org $args] {
              puts $i
          }
      }
  with:
      proc ::ftp::__ftp_ls {args} {
          set rc [eval ::ftp::List_org $args]
          foreach i $rc {
              puts $i
          }
          return $rc
      }

  in ftp.tcl file.


tkt_uuid: 3288977fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: ftp
priority: 5 Medium
foundin: None
title: client hangs on bad multi-line server responses
cmimetype: text/plain
submitter: szinck
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-04-18T19:27:41
comment:
  If the server doesn't speak strict RFC-959 when it comes to multi-line responses, it can cause the client to hang.

  For example, this was causing Tcllib ftp code to have an infinite loop  and eat 100% cpu.

      RETR blah
      150 Opening BINARY mode data connection for blah (180 bytes).
      226 Transfer complete.
      QUIT
      221-You have transferred 180 bytes in 1 files.

      ^^^ notice no "221 Goodbye."

  Most likely the network I was using was dropping the last couple of packets after the client said QUIT, that included the "221 Goodbye" response that the code was waiting for.

  This is the same issue described in the latter half of 2813069. I couldn't upload files to it, so I created a new bug and have attached a patch.


tkt_uuid: 3292977fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 3 Low
foundin: None
title: Error when Themed Label foreground changed
cmimetype: text/plain
submitter: oehhar
assignee: oehhar
closer: oehhar
closedate: 2011-04-26T08:16:55
comment:
  An error arises when foreground color of a themed label widget is changed.
  Use -foreground instead -fg for ttk::label.

  This was corrected on CSV.


tkt_uuid: 3304371fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: irc
priority: 5 Medium
foundin: None
title: Add secure IRC (TLS/994) support to pico IRC
cmimetype: text/plain
submitter: karll
assignee: davidw
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: 3308051fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: struct :: list
priority: 5 Medium
foundin: None
title: struct::list equal is not commutative in special case
cmimetype: text/plain
assignee: andreas_kupries
closer: mic42
closedate: 2011-09-17T14:36:42
comment:
  tclsh Session:
  % struct::list equal [list [list a]] {{a}}
  0
  % struct::list equal {{a}} [list [list a]]
  1

  Looks like a bug to me;)

  Proposed patch attachted.


tkt_uuid: 3308105fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: smtp
priority: 5 Medium
foundin: None
title: Traceback fingers unrelated catch output
cmimetype: text/plain
submitter: karll
assignee: mrose
comment:
  Hi,

  We had a problem today where we were getting a traceback from tcllib's smtp package while trying to queue a message.  The traceback pointed to "key message-id not in header", but this wasn't the problem.  The real problem was "451: 4.3.0 Error: queue file write error" because /var was out of space.

  Tracing stuff, we found this call, the last line of ::smtp::sendmessage:

      return -code 1 -errorinfo {key message-id not in header\n    while e...} -errorcode NONE {451: 4.3.0 Error: queue file write error}

  The errorinfo is incorrect -- it is from a catch of an innocent error 281 lines into the sendmessage proc, where it says...


      if {([lsearch -exact $lowerL ${message-idL}] < 0) \
              && ([catch { ::mime::getheader $part ${message-idL} }])} {

  This made it much harder to troubleshoot the actual error.

  Please fix the smtp package to finger the correct error -- I'm not sure where the bug is but whatever generated the error "451: 4.3.0 Error: queue file write error" did not get the errorinfo set properly.  I hope this is enough info.


tkt_uuid: 3312860fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: ftpd
priority: 5 Medium
foundin: None
title: Many FTP commands do not handle commands with absolute paths
cmimetype: text/plain
submitter: rkeene
assignee: andreas_kupries
comment:
  Many FTP commands such as "APPE", "STOR", and "RETR" do not handle pathname arguments that are absolute pathnames -- they instead get the current working directory appended to them as relative paths.

  This is due to the use of the following idiom:
            set path [file join $data(cwd) [string trimleft $filename /]]

  Suggested fix is to remove the [string trimleft] call, which will result in the "path" variable containing the correct absolute path when an absolute path is supplied and when a relative path is supplied.


tkt_uuid: 3312880fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ftpd
priority: 5 Medium
foundin: None
title: FTP command "RNFR" checks filesystem paths
cmimetype: text/plain
submitter: rkeene
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-08-09T20:39:54
comment:
  RNFR checks the native filesystem for the pathname specified.

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

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

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


tkt_uuid: 3312900fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ftpd
priority: 5 Medium
foundin: None
title: CWD operation does not perform basic checks
cmimetype: text/plain
submitter: rkeene
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-08-09T20:50:58
comment:
  CWD operation should check for existence of file (using the filesystem callback "exists" to prevent changing directories to a file)

  --- ftpd1.2.5/ftpd.tcl(revision 2177)
  +++ ftpd1.2.5/ftpd.tcl(working copy)
  @@ -824,7 +824,14 @@
   return
       }
   
  -    set data(cwd) [file join $data(cwd) $relativepath]
  +    set path [file join $data(cwd) $relativepath]
  +
  +    if {[::ftpd::Fs exists $path]} {
  +        puts $sock "550 not a directory"
  +        return
  +    }
  +
  +    set data(cwd) $path
       puts $sock "250 CWD command successful."
       return
   }


tkt_uuid: 3313923fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: http :: autoproxy
priority: 7 High
foundin: None
title: configure -authProc does not grab the correct argument
cmimetype: text/plain
submitter: fvogelnew1
assignee: patthoyts
closer: patthoyts
closedate: 2012-02-08T00:25:08
comment:
  package require autoproxy
  autoproxy::init
  autoproxy::configure  ; # show what was found
  autoproxy::configure -authProc defAuthProc
  autoproxy::configure  ; # see the BUG?
  autoproxy::cget -authProc  ; # see the BUG more clearly!

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

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


tkt_uuid: 3313947fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: http :: autoproxy
priority: 5 Medium
foundin: None
title: Bug 3094654 fixed, but man page update forgotten
cmimetype: text/plain
submitter: fvogelnew1
assignee: patthoyts
closer: oehhar
closedate: 2012-02-13T09:54:00
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: 3316478fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: simulation::random
priority: 7 High
foundin: None
title: prng_rectangle is overwritten by prng_block implementation
cmimetype: text/plain
submitter: andreas_kupries
assignee: arjenmarkus
closer: andreas_kupries
closedate: 2013-01-09T00:20:08
comment:
  he implementation of prng_Block is mis-named as prng_Rectangle, overwriting the prng_Rectangle procedure coming just before it.
  Making both Rectangle and Block unusable.


tkt_uuid: 3316505fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: simulation::random
priority: 7 High
foundin: None
title: chi-squared is wrong
cmimetype: text/plain
submitter: andreas_kupries
assignee: arjenmarkus
closer: arjenmarkus
closedate: 2011-06-15T07:06:07
comment:
  The variable y in the generation of chi-squared randon numbers is independent of loop counter or itself from previous iterations.
  I.e. after the loop we have only the last y of the last iteration.

  According to
  http://www.dsplog.com/2008/07/28/chi-square-random-variable/

  y should be a sum instead, i.e. instead of

      set y [expr {$r * $r}]

  it should be

      set y [expr {$y + $r * $r}]


tkt_uuid: 3317772fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ListBox does not allow scrolling to last line on Windows 7
cmimetype: text/plain
submitter: zoro2
assignee: oehhar
closer: oehhar
closedate: 2011-06-24T09:25:31
comment:
  Hi,

  Example below shows the issue:

  catch {destroy .x}
  toplevel .x
  ScrolledWindow .x.w
  pack .x.w -fill both -expand 1
  ListBox .x.w.l -deltay 25
  wm geometry .x 400x169
  for {set i 0} {$i < 10} {incr i} {
      .x.w.l insert end i$i -text TEST$i
  }
  .x.w setwidget .x.w.l

  When using scrollbar, you can't scroll down to see entire last entry. Works fine on Linux, not sure about other platforms.


tkt_uuid: 3324610fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ListBox bindImage is broken
cmimetype: text/plain
submitter: takatsuki
assignee: oehhar
closer: oehhar
closedate: 2011-06-23T08:30:58
comment:
  The node name of the item returned when triggering the event is incorrectly constructed. To reproduce it:

  # Taken from a snippet from FW in http://wiki.tcl.tk/1434,  
  proc generate_data {} {  
      set data [list]
      for {set x 0} {$x < 5} {incr x} {    
          set row [list]           
          for {set y 0} {$y < 5} {incr y} {
              lappend row [format "#%02x%02x%02x" [random_byte] [random_byte] [random_byte]] 
          }         
        lappend data $row  
      }  
     return $data       
  }    

  proc random_byte {} { 
      return [expr {int(rand() * 256)}]             
  }    

  set image [image create photo]                              
  $image put [generate_data]                                                
             
  pack [ListBox .l -selectmode single]                       
  .l insert end list:#auto -text 111 -image $image 
  .l insert end list:#auto -text 222 -image $image
  .l insert end list:#auto -text 333 -image $image
  .l configure -width 10

  proc printNode {args} {
     puts "Returned $args"
  } 

  .l bindText <Button-1> [list printNode Text]
  .l bindImage <Button-1> [list printNode Image] 
  vwait forever

  Clicking on the text returns:

  Returned Text list:0
  Returned Text list:1
  Returned Text list:2

  But on the image, the result is:

  Returned Image gbind
  Returned Image gbind
  Returned Image gbind

  The problem is the code in listbox.tcl returns as the node:
   [string range [lindex $t 1] 2 end]

  Where $t (the tags) are:

  img imgbind i:list:1 current

  I believe the bug was introduced in  Bug 3000293, adding the additional tag imgbind in the place where the code expects to find the node

  Attached is a possible patch 


tkt_uuid: 3325112fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: ftp
priority: 5 Medium
foundin: None
title: ftp -- too enthusiastic use of reverse DNS
cmimetype: text/plain
submitter: ferrieux
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-08-09T20:05:03
comment:
  The calls to [fconfigure -peer/sockname], which incur reverse DNS lookups, are not ideally placed in the code. This matters when the reverse DNS lookup is likely to fail slowly (with a timeout). TYpical are ill-configured resolvers. Especially the lookup on the client's own IP is likely to fail when it's NATted. See https://groups.google.com/group/comp.lang.tcl/browse_frm/thread/65b6637a503f4966?hl=fr# .

   (1) [fconfigure -peername] is called unconditionally, but uses the result only in the VERBOSE case (!)

   (2) [fconfigure -sockname] is called unconditionally for the data connection, though it is only useful in active mode.


tkt_uuid: 3325229fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ftpd
priority: 5 Medium
foundin: None
title: RNTO calls callback "rename" with wrong number of args
cmimetype: text/plain
submitter: rkeene
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-08-09T20:41:56
comment:
  According to the documentation for the "rename" callback, it takes 3 args:
          fsCmd rename path newpath channel

  However, RNTO actually only calls it with 2 args:
          if {![catch {::ftpd::Fs rename $data(renameFrom) $path} msg]} {


tkt_uuid: 3354014fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: mime
priority: 5 Medium
foundin: None
title: Documentation describes "mime::initialize .. -part" option
cmimetype: text/plain
submitter: rkeene
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-08-02T17:33:37
comment:
  Documentation describes "mime::initialize .. -part" option, but no such option exists.  It should be "-parts", apparently.


tkt_uuid: 3357765fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: ftpd
priority: 5 Medium
foundin: None
title: Many commands assume a socket is established, may not be so.
cmimetype: text/plain
submitter: rkeene
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-08-09T20:18:55
comment:
  When using PASV the client may not connect to the server until after the command that needs the data connection is issued.  Currently Fs commands are just given the sock handle of "" when this happens.

  The FTP RFC indicates that it is acceptable for the client not to have connected to the port described by the result of the PASV command until after a command that needs it is issued.


tkt_uuid: 3379585fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: comm
priority: 5 Medium
foundin: None
title: comm does not work in tclsh
cmimetype: text/plain
submitter: aboegge
assignee: andreas_kupries
closer: aboegge
closedate: 2011-07-27T09:12:02
comment:
  I tried to use ::comm as server in tclsh 8.5.9 and it does not work. sending a request works but i receive no answer. tclsh is not blocking.

  I used the following code to send a command using comm.

  package require comm
  ::comm::comm send 51439 set test 1


tkt_uuid: 3381002fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
title: Tkchat announces wrong hash in XEP-0115 Entity Capabilities
cmimetype: text/plain
submitter: quantifier
assignee: patthoyts
closer: patthoyts
closedate: 2012-01-23T20:35:38
comment:
  Patch that fixes missing "<" :

  Index: tkchat.tcl
  ===================================================================
  RCS file: /cvsroot/tcllib/tclapps/apps/tkchat/tkchat.tcl,v
  retrieving revision 1.486
  diff -u -r1.486 tkchat.tcl
  --- tkchat.tcl  17 May 2011 23:27:19 -0000      1.486
  +++ tkchat.tcl  28 Jul 2011 12:37:38 -0000
  @@ -8475,7 +8475,7 @@
       # extended feature processing as well (order counts)
       append S "urn:xmpp:dataforms:softwareinfo<"
       append S "os<$tcl_platform(os)<"
  -    append S "os_version<$tcl_platform(osVersion)"
  +    append S "os_version<$tcl_platform(osVersion)<"
       append S "software<tkchat<software_version<$tkchatver<"
       return [base64::encode -maxlen 0 [sha1::sha1 -bin $S]]
   }


tkt_uuid: 3383039fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: math
priority: 5 Medium
foundin: None
title: Error in decimal.n
cmimetype: text/plain
submitter: tombert
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-08-09T19:47:09
comment:
  Compiling under W7 and MinGW, version CVS HEAD results in an error:

  Generating d:/TCL8.5/release/man/mann/decimal.n
  Doctools Error in macro at line 70, column 0:
  [section "API"]
  --> (FmtError) Manpage error (bodycmd), "section API" : Command not allowed outside of the body of th
  e manpage.
      while executing
  "::doctools::_format dt {[comment {-*- tcl -*- doctools manpage}]
  [manpage_begin ::Decimal n 1.0.2]
  [copyright {2011 Mark Alston <mark at beernut dot c..."
      ("eval" body line 1)
      invoked from within
  "eval [list ::doctools::_$cmd $name] $args"
      (procedure "::doctools::DoctoolsProc" line 15)
      invoked from within
  "dt format [get_input $f]"
      (procedure "_man" line 26)
      invoked from within
  "_man math nroff n d:/TCL8.5/release/man/mann"
      ("eval" body line 1)
      invoked from within
  "eval $guide($m,$type) $m $args"
      (procedure "xinstall" line 4)
      invoked from within
  "xinstall doc nroff n    $config(doc,nroff,path)"
      (procedure "doinstall" line 19)
      invoked from within
  "doinstall"
      (procedure "main" line 11)
      invoked from within
  "main"
      (file "./installer.tcl" line 594)
  make: *** [install] Error 1
  `/d/TCL8.5/compile/tcllib/license.terms' -> `/d/TCL8.5/release/licenses/tcllib.license'


  it helps to delete the file, then it installs fine.

  thx


tkt_uuid: 3389655fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tcl :: chan :: *
priority: 5 Medium
foundin: None
title: memchan not working
cmimetype: text/plain
submitter: zzpdean
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-08-10T17:02:49
comment:
  testing in tkcon produces these responses (also tested with 8.5.10)

  ...(Tcl8.6b1.2 / Tk8.6b1.2)
  % package require TclOO
  0.6.2
  % package require tcl::chan::memchan
  1.0.1 

  % set fid [::tcl::chan::memchan]
  can't read "content": no such variable 

  % package require tcl::chan::variable
  1.0.1 

  % set fid [::tcl::chan::variable buffer]
  can't read "allowed(write)": no such variable 


tkt_uuid: 3396661fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: yaml
priority: 9 Immediate
foundin: None
title: Failure to parse valid YAML, the 2nd
cmimetype: text/plain
submitter: andreas_kupries
assignee: kanryu6
closer: kanryu6
closedate: 2011-08-23T13:09:07
comment:
  The inlined YAML

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  foo: []
  some: value
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  contains valid YAML, as per http://yamllint.com/

  The yaml package fails on this. For this one I managed to find a fix.
  The huddle package is actually at fault. The following code

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          strip {
              foreach {src nop} $args break
  **         foreach {val} $src {
                  lappend result [strip $val]
              }
              return $result
          }
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  is not initializing the 'result' variable. This is in the procedure "::huddle::_list_setting". It needs a

      set result {}

  to handle the possibility of an empty list in $src.


tkt_uuid: 3396787fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: json
priority: 5 Medium
foundin: None
title: strange if condition in json::write
cmimetype: text/plain
submitter: uring
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-08-24T20:10:27
comment:
  proc ::json::write::indented and proc ::json::write::aligned both start with the following test:

  if {[llength [info level]] > 2} { 

  this should never ever be true. possibly " ..[info level 0].." was meant, but if I try [::json::write::indented 1 1] for example,
  the interpreter would interupt execution, throwing an error itself, doesn't it.


tkt_uuid: 3419727fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: inifile
priority: 9 Immediate
foundin: None
title: global variable key is destroyed during file open procedure
cmimetype: text/plain
submitter: tclelch
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-12-02T22:24:23
comment:
  code snipset out of
  # RCS: @(#) $Id: ini.tcl,v 1.15 2008/05/11 00:53:58 andreas_kupries Exp $

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

  destroys the content of the global variable  "key". 


tkt_uuid: 3422990fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tepam
priority: 5 Medium
foundin: None
title: Some tepam tests require Tk without constraints.
cmimetype: text/plain
submitter: stwo
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-11-09T05:46:09
comment:
  The test files adbox_widgets.test, adbox_all.test and proc_interactive.test explicitly require Tk without using any constraints.
  This causes errors in the test run when Tk is not present.


tkt_uuid: 3423097fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: smtp
priority: 5 Medium
foundin: None
title: smtp lacks -timeout option
cmimetype: text/plain
submitter: zbigniew_b
assignee: mrose
comment:
  There's a need for such option, to assure reliability for scipts using smtp client package. I made a simple "experiment": while sending a few mails simply pulled ethernet plug out of the socket - the script went "frozen" for several minutes (didn't measure...), until I plugged it in again. IMHO there should be possibility to give up ("-timeout x", where "-timeout 0" could mean "keep trying unlimited time"), And perhaps it could be improved a bit: to keep the entire script responsible, even in the case of network problems, like loss of connectivity?


tkt_uuid: 3425269fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tepam
priority: 5 Medium
foundin: None
title: Errors in tepam demo when TkCon not present
cmimetype: text/plain
submitter: stwo
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-11-09T05:58:16
comment:
  The tepam demo will generate an error when TkCon isn't present, due to an uninitialized variable.
  Another error will be generated because the variable "tcl_platform" is not scoped properly.
  Attached patch also applies the same "prologue" as used in all the other examples.


tkt_uuid: 3425271fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: Installation
priority: 5 Medium
foundin: None
title: Template files not installed
cmimetype: text/plain
submitter: stwo
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-11-10T21:16:34
comment:
  The *.template files for "page" are not installed, needed by certain parser generators.
  Their lack causes the app "page" to err out by default.
  Patches to installer use "_trt" - suggested abbreviation, maybe not the best choice.
  Also included a patch to the "page" demo to add the installed "page" dir to the auto_path so that the plugins can be found; probably not the best solution, take as suggestion, reminder. :)


tkt_uuid: 3426178fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: json
priority: 5 Medium
foundin: None
title: extra "$" in json::list2json
cmimetype: text/plain
submitter: a11426
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-11-10T21:06:55
comment:
  perhaps I am misunderstanding the code, but it appears there is an extra "$" on line 315 of json.tcl in the function json::list2json. Currently creating a list and sending it to this functions produces what appears to be invalid json.

  Example 1:

  package require json
  set z [list {"first"} {"second"} {"third"}]
  json::list2json $z

  The output of the above code on my debian unstable system with tcl8.5 and tcllib-1.13 is:

  [$"first","second","third"]

  Note the extra $. I would expect the output to looks like this:

  ["first","second","third"]


tkt_uuid: 3427030fffffffffffffffffffffffffffffffff
type: Bug
status: Pending
resolution: Invalid
subsystem: md5crypt
priority: 5 Medium
foundin: None
title: Memory leak in md5crypt::aprcrypt in tcllib 1.13
cmimetype: text/plain
submitter: rich123
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-11-10T22:41:52
comment:
  There is a memory leak somewhere in the md5crypt::aprcrypt implementation in tcllib
  1.13.

  Steps to repeat:

  $ tclsh 
  % parray tcl_platform
  tcl_platform(byteOrder)   = littleEndian
  tcl_platform(machine)     = i686
  tcl_platform(os)          = Linux
  tcl_platform(osVersion)   = 2.6.33
  tcl_platform(platform)    = unix
  tcl_platform(pointerSize) = 4
  tcl_platform(user)        = work
  tcl_platform(wordSize)    = 4
  % puts $tcl_patchLevel
  8.5.5
  % package require md5crypt
  1.1.0
  % for {set i 0} {$i < 1000000} {incr i} { ::md5crypt::aprcrypt blah [ ::md5crypt::salt ] }

  Watch memory usage of tclsh in top or another monitor.  It will grow over time as the for loop iterates.


tkt_uuid: 3427858fffffffffffffffffffffffffffffffff
type: Patch
status: Open
resolution: None
subsystem: irc
priority: 5 Medium
foundin: None
title: Add secure IRC (TLS/994) support to pico IRC
cmimetype: text/plain
submitter: karll
assignee: davidw
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.

  All a user has to do to make use of secure irc, after this patch, is to specify ircs:// in the URL rather than irc://.

  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 requisite updates to the manual page.


tkt_uuid: 3428262fffffffffffffffffffffffffffffffff
type: Bug
status: Pending
resolution: Invalid
subsystem: json
priority: 5 Medium
foundin: None
title: JSON: Trailing spaces added to number value
cmimetype: text/plain
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-11-10T22:53:09
comment:
  When the source json is { "a" : 0 }, then the resulting dict is: { a {0 } } (not {a 0}). This may be significant when comparing json results coming from two different sources.

  To fix this problem, please change near this line:
  string is double -failindex last $txt
  the following line:
  set num [string range $txt 0 [expr {$last - 1}]]
  into:
  set num [string trim [string range $txt 0 [expr {$last - 1}]]]


tkt_uuid: 3433470fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: Development Tools
priority: 9 Immediate
foundin: None
title: Expired certificates
cmimetype: text/plain
submitter: stwo
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-01-22T01:50:12
comment:
  The certificates 'receiver.crt' and 'transmitter.crt' have expired, causing test failures in modules 'comm' and 'pop3' if 'tcltls' is installed at the time the test suite is run.
  Also, the README in the devtools directory mentions that only the 'pop3' tests use these files, which is not true, as noted above.
  Please regen these certs with much later expiry dates.


tkt_uuid: 3434579fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: yaml
priority: 8
foundin: None
title: Infinite loop
cmimetype: text/plain
submitter: andreas_kupries
assignee: kanryu6
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: 3437641fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: valtype
priority: 5 Medium
foundin: None
title: new valtype function
cmimetype: text/plain
submitter: maxjarek
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-11-16T19:10:08
comment:
  I prepare new valtype::iban file for validate Bank Identyficer Number. I think this is good add-ons for tcllib.


tkt_uuid: 3437761fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: keyboard traversal broken if spaces in widget pathnames
cmimetype: text/plain
submitter: jaspertheperson
assignee: oehhar
closer: oehhar
closedate: 2011-11-14T14:29:09
comment:
  If you have widgets whose pathnames contain spaces, you get errors when attempting to traverse focus between them with the Tab key. Example error log pasted below. 
  Annoyingly, this error affects all Tk widgets including ttk, once the BWidget package has been loaded.

  wrong # args: should be "ttk::takefocus w"
      while executing
  "ttk::takefocus .foo bar"
      ("uplevel" body line 1)
      invoked from within
  "uplevel \#0 $value $w"
      (procedure "focusOK" line 12)
      invoked from within
  "focusOK $cur"
      (procedure "Widget::focusNext" line 36)
      invoked from within
  "Widget::focusNext .foo\ foo"
      invoked from within
  "Widget::traverseTo [Widget::focusNext .foo\ foo] "
      (command bound to event)


tkt_uuid: 3439693fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Out of Date
subsystem: pki
priority: 5 Medium
foundin: None
title: ::pki::x509::parse_cert error
cmimetype: text/plain
assignee: rkeene
closer: nobody
closedate: 2011-11-18T23:40:46
comment:
  While parsing a cert, a bug comes when reviving strings on the issuer and subject objects.  The problem comes in proc ::pki::x509::_dn_to_list as some certs has UTF8String instead of PrintableString.  My solution was to replace

  ::asn::asnGetPrintableString curr_part value

   by:

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

  Hope that helps

  Regards

  -=Raul=-


tkt_uuid: 3440045fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: pki
priority: 5 Medium
foundin: None
title: ::pki::x509::_list_to_dn invalid char
cmimetype: text/plain
assignee: rkeene
closer: rkeene
closedate: 2012-02-19T02:04:23
comment:
  here is another fix, may be is already considered

  proc ::pki::x509::_list_to_dn {name} {
  set ret ""
  foreach {oid_name value} $name {
  if {![regexp {[^ A-Za-z0-9'()+,.:/?=-]} $value]} {
  set avalue [::asn::asnPrintableString $value]
  } else {
  set avalue [::asn::asnUTF8String $value]
  }
  append ret [::asn::asnSet \
  [::asn::asnSequence \
  [::asn::asnObjectIdentifier [::pki::_oid_name_to_number $oid_name]] \
  $avalue \
  ] \
  ] \
  }

  return $ret
  }


tkt_uuid: 3440058fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: pki
priority: 5 Medium
foundin: None
title: (pki) Key related stuff
cmimetype: text/plain
assignee: rkeene
closer: rkeene
closedate: 2013-01-07T05:19:02
comment:
  ::pki::rsa::generate and ::pki::pkcs::parse_key procs only handles the n,e,d vaules of a key, and calculates the size.  On file attached, there is the full info of the rsa key set.

  There is a new proc to converts the tcl stored key to pem, also with DES password encryption option, which is fully recognized by openssl.  (Not sure if it is named properly)

  However, there is a little bug i can not find yet after generating a rsa key, which sometimes makes crash the ::pki::pkcs::create_csr process, but it can be fix by generating a key then convert to pem then parse it back.

  btw, i get an "integer value too large to represent" error when generating a 4096bit length key on ::pki::_isprime, should i post it as a bug?

  Regards,

  -=Raul=-


tkt_uuid: 3440115fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: pki
priority: 5 Medium
foundin: None
title: Unknown hashing algorithm: unknown
cmimetype: text/plain
assignee: rkeene
closer: rkeene
closedate: 2012-02-19T02:04:15
comment:
  Using pki package contained in tcllit1.14RC0, there comes a problem (not always) after generating a rsa key pair (2048) when singing a request certificate, and it throws that error mentioned in the summary.  Same situation happen with 1.13.

  However, using the additions I posted in "Feature request" with id 3440058, which allows me to convert a generated key set to pem and write it in disk, I can generate a key, convert it to pem, and parse it again and the problem does not happen.

  I wrote a test case code fully explained attached in this report

  Regards,

  -=Raul=-


tkt_uuid: 3441173fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: pki
priority: 5 Medium
foundin: None
title: Implement OpenPGP/GPG
cmimetype: text/plain
submitter: andreas_kupries
assignee: rkeene
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: 3458158fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tklib :: widget
priority: 8
foundin: None
title: widget::calendar 1.0
cmimetype: text/plain
submitter: maxjarek
assignee: andreas_kupries
closer: haertel
closedate: 2011-12-13T21:29:10
comment:
  widget::dateentry use widget::calendar for select date. New version widget::calendar 1.0 has wrong bindings. Click on month/year close calendar frame. Version 0.98 calendar works fine.


tkt_uuid: 3463420fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: logger
priority: 5 Medium
foundin: None
title: level below currentloglevel is logged
cmimetype: text/plain
submitter: heinrichmartin
assignee: mic42
closer: mic42
closedate: 2011-12-21T21:29:43
comment:
  expect1.1> package require logger
  0.9
  expect1.2> logger::setlevel warn
  expect1.3> logger::init global
  ::logger::tree::global
  expect1.4> ::logger::tree::global::debug "Don't show!"
  [Wed Dec 21 16:46:38 CET 2011] [global] [debug] 'Don't show!'
  expect1.5> ::logger::tree::global::currentloglevel
  warn
  expect1.6> info tclversion
  8.5

  workaround1:
  use servicenames with :: separator (cannot reproduce the above with "glo::bal")

  workaround2:
  package require logger
  rename ::logger::init ::logger::init_redirect
  proc ::logger::init {service} {
  set log [uplevel [list ::logger::init_redirect $service]]
  ${log}::setlevel [${log}::currentloglevel]
  return $log
  }


tkt_uuid: 3469006fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: inifile
priority: 5 Medium
foundin: None
title: ini::commit fail
cmimetype: text/plain
submitter: jromier
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-01-05T21:05:44
comment:
  On the 1.16 revision of inifile package (Tcllib 1.14), I have an issue each time I save an ini file, on ini::commit procedure.

  Error is: 'file23dbf70 is not an open INI file'

  I fixed this bug by adding '::' before 'close' on '::ini::commit' procedure:

  - old:      close $channel
  - new:     ::close $channel


tkt_uuid: 3470437fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
resolution: Not Applicable Here
subsystem: tklib :: ico
priority: 5 Medium
severity: Minor
foundin: None
title: Padding on and mask rasters incorrect.
cmimetype: text/plain
submitter: rkroll
assignee: afaupell
closer: aku
closedate: 2456444.39269877
comment:
  in proc ::ico::getAndMaskFromColors {colors}

  Padding calculation might look better like this:

    append l [string repeat 0 [expr {(32 - ([string length $l] % 32))%32}]]


tkt_uuid: 3471182fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: Documentation
priority: 5 Medium
foundin: None
title: funny mistake in struct_tree manual
cmimetype: text/plain
submitter: mxmanghi
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-01-09T16:25:34
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: 3471474fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: pop3
priority: 5 Medium
foundin: None
title: pop3::open doesn't handle -socketcmd properly
cmimetype: text/plain
submitter: egavilan
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-01-10T20:07:15
comment:
  Documentation says -socketcmd option is a command prefix. However it doesn't handle it that way, but as a simple command.


tkt_uuid: 3475081fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: yaml
priority: 8
foundin: None
title: Parser accepts invalid YAML input, mistranslates others
cmimetype: text/plain
submitter: andreas_kupries
assignee: kanryu6
comment:
  The yaml parser v0.3.6 (tcllib cvs head) accepts the following invalid YAML text:

      list-no-comma: [ "a" "b" "c" ]

  It returns {list-no-comma {a b c}} whereas it should throw an error complaining about the lack of commas between the quoted list elements.
  Entering the above string into the online YAML validator/parser at

      http://yaml-online-parser.appspot.com/

  returns:

  ERROR:

  while parsing a flow sequence
    in "<unicode string>", line 1, column 16:
      list-no-comma: [ "a" "b" "c" ]
                     ^
  expected ',' or ']', but got '<scalar>'
    in "<unicode string>", line 1, column 22:
      list-no-comma: [ "a" "b" "c" ]
                           ^

  The second block in the error report is the important one.


tkt_uuid: 3477684fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: crc
priority: 5 Medium
foundin: None
title: CRC of binary string: bad parsing
cmimetype: text/plain
submitter: tmmenezes
assignee: patthoyts
closer: patthoyts
closedate: 2012-01-23T20:28:24
comment:
  Calculating the CRC of a binary string can break the library.
  This happens when the input binary string includes the ASCII code for text symbol '-'.
  The proc parsing the input data breaks the input binary string into options because of '-'
  See attached file with example.


tkt_uuid: 3483716fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: mime
priority: 5 Medium
foundin: None
title: transfer encoding ignored for message/*
cmimetype: text/plain
submitter: cnassau
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-02-23T17:37:05
comment:
  The handling of message/* types in ::mime::parsepart currently ignores the Content-Transfer-Encoding (tcllib 1.13 / mime 1.5.4) .

  Example

  Content-Type: message/delivery-status; name="deliverystatus.txt"
  Content-Disposition: attachment; filename="deliverystatus.txt"; size=138;
  creation-date="Thu, 02 Feb 2012 13:50:05 GMT";
  modification-date="Thu, 02 Feb 2012 13:50:05 GMT"
  Content-Description: deliverystatus.txt
  Content-Transfer-Encoding: base64

  T3JpZ2luYWwtUmVjaXBpZW50OiA8L2ZheD1ibHViYkBndW1taS5ib290PgpBY3Rpb246IGZhaWxl
  ZApEaWFnbm9zdGljLUNvZGU6IHNtdHA7IDU1MCAjNS4xLjAgQWRkcmVzcyByZWplY3RlZC4KUmVt
  b3RlLU1UQTogNTMuMjQuMjgyLjE1MA==


  The attached patch fixes this problem for base64 encoded messages.


tkt_uuid: 3487731fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: pki
priority: 5 Medium
foundin: None
title: parse_csr errors
cmimetype: text/plain
submitter: coldstore
assignee: rkeene
closer: rkeene
closedate: 2012-02-19T00:58:02
comment:
  Running:

  set csr [::pki::pkcs::create_csr $key [list C AU ST NSW L Sydney O imap OU bsd CN test]]
  set pcsr [::pki::pkcs::parse_csr $csr]

  result:

  Unknown hashing algorithm: unknown
      while executing
  "::pki::verify $signature $cert_req_info_saved $keylist"
      (procedure "::pki::pkcs::parse_csr" line 52)
      invoked from within
  "::pki::pkcs::parse_csr $csr"

  resulting from the caught error:

  Expected Sequence (0x30), but got 01
      while executing
  "::asn::asnGetSequence plaintext message"

  in ::pki::verify called by parse_csr


tkt_uuid: 3490008fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: grammar_peg
priority: 5 Medium
foundin: None
title: nonterminal delete does not work
cmimetype: text/plain
submitter: glastonbridge2
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-02-22T18:42:27
comment:
  When I try to do a [$grammar nonterminal delete SymbolName] I get the following error:

  can't read "nt": variable is array

  Looking at the code in CVS, this looks like the culprit.  I have not had time to test this theory:

  ...
  322method NtDelete {nts} {
  323 set references $re($nt)
  ...


tkt_uuid: 3495047fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: A Category Is Missing
priority: 1 Zero
foundin: None
title: Bug Database link broken on tcllib home page
cmimetype: text/plain
submitter: stwo
assignee: andreas_kupries
comment:
  If logged in, goes to 'add new bug report' page.
  When not logged in, gives error.
  I suppose it should go to the bug list like the 'patch' link goes to the patch list.
  Maybe also add a 'feature request' link?


tkt_uuid: 3495049fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: doctools
priority: 5 Medium
foundin: None
title: doctools-text-15.4 test failure
cmimetype: text/plain
submitter: stwo
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-02-28T03:15:07
comment:
  The only difference I see between 'expected' and 'result':
  Expected:
  |        Example Block  More Lines
  Result:
  | Example Block  More Lines


tkt_uuid: 3495830fffffffffffffffffffffffffffffffff
type: Patch
status: Open
resolution: None
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
title: First go at installing tcl modules
cmimetype: text/plain
submitter: stwo
assignee: andreas_kupries
comment:
  Attached patch gives the installer the ability to install (some) packages as tcl modules.
  Also adds -destdir option, similar to ${DESTDIR} in Tcl's Makefile.


tkt_uuid: 3497592fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ListBox problem (at least with V1.9.5)
cmimetype: text/plain
submitter: wkechel
assignee: oehhar
closer: oehhar
closedate: 2012-03-06T14:24:02
comment:
  The options selectfill and autofocus are read-only, This should be documented or modified to support write access after widget creation.


tkt_uuid: 3501392fffffffffffffffffffffffffffffffff
type: Patch
status: Open
resolution: None
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
title: New Module: socks5
cmimetype: text/plain
submitter: dongola7
assignee: andreas_kupries
comment:
  Patch to add a new module for establishing connections via SOCKS 5 proxies.  The patch was generated against the 1.14 release tarball.


tkt_uuid: 3504018fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: htmlparse
priority: 5 Medium
foundin: None
title: callback command gets called with varying arguments
cmimetype: text/plain
submitter: dvrsn
assignee: andreas_kupries
closer: dvrsn
closedate: 2012-03-14T16:47:27
comment:
  Another problem related to badly formed html, here I think the problem is an open tag inside an attribute value, combined with a xhtml-style null end tag.

  %  htmlparse::parse {<img src="x<y" /> <i></i>}
  ==> hmstart {} {} {}
  ==> img {} src=\"x
  ==> y\" {} {} {}
  ==> img / {} { <i} {}
  ==> i / {} {}
  ==> hmstart / {} {}

  The html is malformed, so parsing is a guessing game, but the parser should try to be as resilient as possible.  What happens in this case is that the callback command, documented as always being called with 4 arguments, is called with 3 and 5 arguments.  This causes an error if your callback command has formal arguments instead of "args".


tkt_uuid: 3506188fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: logger
priority: 5 Medium
foundin: None
title: level none cannot be inherited
cmimetype: text/plain
submitter: heinrichmartin
assignee: mic42
comment:
  minimal example (responsens with indentation for readability):

  expect:/tmp$ package require logger
      0.9
  expect:/tmp$ ::logger::init xy
      ::logger::tree::xy
  expect:/tmp$ foreach lvl [::logger::levels] {::logger::tree::xy::disable $lvl}
  expect:/tmp$ ::logger::tree::xy::currentloglevel
      none
  expect:/tmp$ ::logger::init xy::z
      Invalid level 'none' - levels are debug info notice warn error critical alert emergency
      while evaluating {::logger::init xy::z}
  expect:/tmp$ 


tkt_uuid: 3508577fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
resolution: Duplicate
subsystem: json
priority: 5 Medium
foundin: None
title: json: pretty-printing a dictionary
cmimetype: text/plain
submitter: aldobu
assignee: hobbs
closer: aldobu
closedate: 2012-03-19T11:49:53
comment:
  Based on json.tcl (1.1.2)
  I added a new proc named "json2prettydict"

  Aim of this proc is to return a "pretty-printed" tcl-dictionary.

  I think this proc could be useful for documentating complex nested dictionaries.

  - Internal Notes -
  "json2prettydict" is heavily based on existing json2dict and json::parseXXX procs.
  I slightly changed the internal code of all json::parseXXX procs, so that
  these procs, may be called in two ways: for getting a (traditional) tcl-dict
  or for getting a pretty-printed tcl-dict.

  [Source code is attached]

  -------------------------------------
  Here is a demo:

  set jsonStr { \
   { "photos": { "page": 1, "pages": "726", "perpage": 3, "total": "7257", 
      "photo": [
        { "id": "6974156079", "owner": "74957296@N08", "secret": "005d743f82", "server": "7197", "farm": 8, "title": "Kenya Watamu \"Deep Sea Fishing\" \"Indian Ocean\" \"Blue Marlin\"", "ispublic": 1, "isfriend": 0, "isfamily": 0 },
        { "id": "6822988100", "owner": "52857411@N08", "secret": "56630c18e8", "server": "7183", "farm": 8, "title": "Gedi Ruins, Local Guide", "ispublic": 1, "isfriend": 0, "isfamily": 0 },
        { "id": "6822909640", "owner": "52857411@N08", "secret": "f4e392ea36", "server": "7063", "farm": 8, "title": "Local Fisherman, Mida Creek", "ispublic": 1, "isfriend": 0, "isfamily": 0 }
      ] }, "stat": "ok" }
  }
  # First, just for comparision, call json2dict
  set d1 [json::json2dict $jsonStr]
   # result is the following
  if {0} {

  photos {page 1 pages 726 perpage 3 total 7257 photo {{id 6974156079 owner 74957296@N08 secret 005d743f82 server 7197 farm 8 title {Kenya Watamu "Deep Sea Fishing" "Indian Ocean" "Blue Marlin"} ispublic 1 isfriend 0 isfamily 0} {id 6822988100 owner 52857411@N08 secret 56630c18e8 server 7183 farm 8 title {Gedi Ruins, Local Guide} ispublic 1 isfriend 0 isfamily 0} {id 6822909640 owner 52857411@N08 secret f4e392ea36 server 7063 farm 8 title {Local Fisherman, Mida Creek} ispublic 1 isfriend 0 isfamily 0}}} stat ok

  }
   # Then create a pretty printed dictionary
  set d2 [json::json2prettydict $jsonStr]
   # result is the following
  if {0} {

  photos {
  page 1
  pages 726
  perpage 3
  total 7257
  photo {
  {
  id 6974156079
  owner 74957296@N08
  secret 005d743f82
  server 7197
  farm 8
  title {Kenya Watamu "Deep Sea Fishing" "Indian Ocean" "Blue Marlin"}
  ispublic 1
  isfriend 0
  isfamily 0
  }
  {
  id 6822988100
  owner 52857411@N08
  secret 56630c18e8
  server 7183
  farm 8
  title {Gedi Ruins, Local Guide}
  ispublic 1
  isfriend 0
  isfamily 0
  }
  {
  id 6822909640
  owner 52857411@N08
  secret f4e392ea36
  server 7063
  farm 8
  title {Local Fisherman, Mida Creek}
  ispublic 1
  isfriend 0
  isfamily 0
  }
  }

  }
  stat ok

  }

  # -- end


tkt_uuid: 3511938fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ScrolledWindow setwidget buggy
cmimetype: text/plain
submitter: wkechel
assignee: oehhar
closer: oehhar
closedate: 2012-03-27T15:45:17
comment:
  Calling ScrolledWindow::setwidget does not make the widget intended to be scrolled visible since ScrolledWindow::setwindow method lacks a raise:

  toplevel .t
  text .t.t -width 10 -height 4;
  .t.t insert end {z1
  z2
  z3
  z4
  z5
  z6
  z7
  z8
  z9
  z10}

  ScrolledWindow::create .t.s -auto none;
  pack .t.s -fill both -expand 1;
  .t.s setwidget .t.t

  does not show the text widget. Adding a raise command after gridding the widget into the scrolledwindow works fine:

      grid $widget -in $path -row 1 -column 1 -sticky news
      raise $widget;


  ATTENTION:
  - method getwidget would be fine
  - support to remove a widget from a scrolledwindow would be fine (setwidget "")


tkt_uuid: 3513149fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: Fixed
subsystem: ncgi
priority: 5 Medium
foundin: None
title: exra bracket in nvlist command causes corrupt return value
cmimetype: text/plain
submitter: blacksqr
assignee: andreas_kupries
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: 3513263fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ComboBox does not work themed
cmimetype: text/plain
submitter: wkechel
assignee: oehhar
closer: oehhar
closedate: 2012-04-02T09:55:50
comment:
  Tk 8.5.9 with bwidget 1.9.5 gives the following error:

  package require BWidget
  Widget::theme 1
  toplevel .t
  ComboBox .t.c -bwlistbox 1 -hottrack 1 -values {1 2 3 4 5 6 7 8 9 10 11 12 13 14}
  .t.c
  .t.c configure
  unknown option "-highlightbackground"


  I guess the problem is in ComboBox and Entry since they use some resources not present when theming is active.


tkt_uuid: 3517145fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: bwidget
priority: 5 Medium
foundin: None
title: listbox updates unnecessary when selection doersnot change,
cmimetype: text/plain
submitter: wkechel
assignee: oehhar
closer: oehhar
closedate: 2012-04-12T12:43:04
comment:
  Here is a tiny enhancement for the listbox (from V1.29.2.6 in bwidget 1.9.5) widget to avoid redrawing when selection does not change. This happens frequently when a listbox with hottrack enabled displays image and text and the cursor is moved in the area right to image and text where only the background is displayed. I also detected that the listbox sometimes jumps between two entries when the cursor is positioned just between the entries for this case, at least under Linux with Tk8.5.9

  proc ListBox::selection { path cmd args } {
      variable $path
      upvar 0  $path data

      set oldsel $data(selitems);
      switch -- $cmd {
          set {
              set data(selitems) {}
              foreach item $args {
                  if { [lsearch -exact $data(selitems) $item] == -1 } {
                      if { [lsearch -exact $data(items) $item] != -1 } {
                          lappend data(selitems) $item
                      }
                  }
              }
          }
          add {
              foreach item $args {
                  if { [lsearch -exact $data(selitems) $item] == -1 } {
                      if { [lsearch -exact $data(items) $item] != -1 } {
                          lappend data(selitems) $item
                      }
                  }
              }
          }
          remove {
              foreach item $args {
                  if { [set idx [lsearch -exact $data(selitems) $item]] != -1 } {
                      set data(selitems) [lreplace $data(selitems) $idx $idx]
                  }
              }
          }
          clear {
              set data(selitems) {}
          }
          get {
              return $data(selitems)
          }
          includes {
              return [expr {[lsearch -exact $data(selitems) $args] != -1}]
          }
          default {
              return
          }
      }
      if {[string compare $oldsel $data(selitems)]} {
  _redraw_idle $path 1
      }
      return;
  }


tkt_uuid: 3536133fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: Build System & Testing
priority: 5 Medium
foundin: None
title: Installation fails...
cmimetype: text/plain
submitter: petasis
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-06-21T18:16:28
comment:
  Installing tklib in a cross-compilation environment fails. The problem is in Makefile.in, where the option -app-path is not used.

  The following:
  install:
  $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/installer.tcl` \
  -no-examples -no-html \
  -pkg-path   $(DESTDIR)$(pkglibdir) \
  -nroff-path $(DESTDIR)$(mandir)/mann \
  -no-wait -no-gui

  Must be changed to:

  install:
  $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/installer.tcl` \
  -no-examples -no-html \
  -pkg-path   $(DESTDIR)$(pkglibdir) \
  -app-path   $(DESTDIR)$(bindir) \
  -nroff-path $(DESTDIR)$(mandir)/mann \
  -no-wait -no-gui


tkt_uuid: 3536709fffffffffffffffffffffffffffffffff
type: Patch
status: Open
resolution: None
subsystem: yaml
priority: 5 Medium
foundin: None
title: huddle get does not accept non-scalar dict keys
cmimetype: text/plain
submitter: ethanp
assignee: kanryu6
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: 3541628fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: logger
priority: 5 Medium
foundin: None
title: ::logger::init has side-effects
cmimetype: text/plain
submitter: heinrichmartin
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-07-10T03:36:01
comment:
  expect:/tmp$ package require logger
  0.9
  expect:/tmp$ set lvl "My private variable."
  My private variable.
  expect:/tmp$ ::logger::init foo
  ::logger::tree::foo
  expect:/tmp$ set lvl
  trace
  expect:/tmp$ 

  a trace on lvl shows a "foreach lvl" in "namespace eval tree::foo"...

  ==> http://wiki.tcl.tk/1030 gives a workaround; insert this line:
  logger.tcl:646: variable lvl ;# prevents foreach using global lvl if it exists


tkt_uuid: 3552226fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: mime
priority: 5 Medium
foundin: None
title: docs specify -part, but the option is -parts
cmimetype: text/plain
submitter: pooryorick
assignee: mrose
comment:
  in mime.man and mime.tcl, -part is specified as the option to ::mime::initialize, but the option is actually -parts


tkt_uuid: 3553350fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: htmlparse
priority: 5 Medium
foundin: None
title: htmlparse does't handle callback command containing "&"
cmimetype: text/plain
submitter: dvrsn
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-08-02T22:22:39
comment:
  If the callback command contains a "&" character, it is treated as part of the regular expression substitution string and ends up creating incorrect commands.   The same likely happens if the command contains \0 or similar sequences special to regsub.

  htmlparse should escape any special characters in the command before creating the substitution string.


tkt_uuid: 3555995fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
title: Latest version download link on sourceforge
cmimetype: text/plain
assignee: andreas_kupries
comment:
  The "Download latest version" link on sourceforge tcl-lib project actually downloads bwidget. Please correct the link to point to tcllib instead of bwidget.


tkt_uuid: 3556779fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Out of Date
subsystem: tklib :: widget
priority: 5 Medium
foundin: None
title: No calendar in August
cmimetype: text/plain
submitter: klu
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-08-14T16:45:00
comment:
  I use widget_calendar with this command:
  widget::calendar .z5fd.app.frdia.date -dateformat "%Y-%m-%d" -language de -textvariable zAr_uiDia(exposureDate)  -command z5ui_selectedDate

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

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

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

  well, i hope, you can help
  regards Bernd


tkt_uuid: 3565267fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: mime
priority: 5 Medium
foundin: None
title: errorCode : no such variable
cmimetype: text/plain
submitter: lucmoulinier
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-01-09T20:27:06
comment:
  in routine ::mime::buildmessage line 10, the global variable may be undefined when passed to eroor. Should add something like
  if {! [info exists errorCode]} {set errorCode ""}


tkt_uuid: 3567463fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
resolution: Not Applicable Here
subsystem: tklib :: ctext
priority: 5 Medium
severity: Minor
foundin: None
title: ctext sends <<Modified>> too often
cmimetype: text/plain
submitter: duquette
assignee: afaupell
closer: aku
closedate: 2456444.39196481
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: 3574004fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: aes
priority: 5 Medium
foundin: None
title: decrypt/encrypt fails for data beginning with '-'
cmimetype: text/plain
submitter: samoconnor
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-01-08T22:37:21
comment:
  % set data_block -[string repeat \\0 15]
  -\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
  % aes::aes -hex -mode cbc -dir encrypt -key $nil_block $data_block
  bad option "-\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0": must be one of -chunksize, -dir, -hex, -in, -iv, -key, -mode, -out

  The last item in the args list is always the data (or the in stream name).
  It is never a "-" option and should not be treated as one even if it starts with a "-".

  I have a server system that has been running for more than a year before happening to have some data beginning with a "-".
  Very hard to test for unless you already know what the problem is.

  Suggested fix: terminate argument processing when the args list length gets to 1...

  --- tcllib-1.14.orig/modules/aes/aes.tcl2012-07-25 10:53:21.000000000 +1000
  +++ tcllib-1.14/modules/aes/aes.tcl2012-10-03 12:19:44.000000000 +1000
  @@ -519,7 +519,7 @@
       set opts(-iv) [string repeat \0 16]
       set modes {ecb cbc}
       set dirs {encrypt decrypt}
  -    while {[string match -* [set option [lindex $args 0]]]} {
  +    while {[llength $args] > 1 && [string match -* [set option [lindex $args 0]]]} {
           switch -exact -- $option {
               -mode      { set opts(-mode) [SetOneOf $modes [Pop args 1]] }
               -dir       { set opts(-dir) [SetOneOf $dirs [Pop args 1]] }


tkt_uuid: 3575707fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: csv
priority: 5 Medium
foundin: None
title: add opt arg to csv::join to force insertion of delimiter
cmimetype: text/plain
submitter: gahr
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-01-08T22:18:07
comment:
  the proc ::csv::join currently surrounds values by the delimiter characters only when a value contains the delimiter. The patch attached adds an optional argument to ::csv::join, ::csv::joinlist, and ::csv:joinmatrix to make ::csv::join always surround fields by the delimiter character.


tkt_uuid: 3578420fffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: generator
priority: 5 Medium
foundin: None
title: [exists] and colorful generator names
cmimetype: text/plain
submitter: pooryorick
assignee: tallniel
comment:
  [exists] is currently defined like this:

  proc exists generator { expr {[llength [info commands $generator]] != 0} }

  this could fail if $generator contains interpreted [string match] characters.  Also, the following fix is more performant (thanks kbk):

  proc exists generator { expr {[namespace which $generator] ne {}} }


tkt_uuid: 3581373fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: base64
priority: 2
foundin: None
title: "::base64::encode -maxlen 0" not documented
cmimetype: text/plain
submitter: oehhar
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-01-08T22:47:43
comment:
  Documentation of tcllib command "::base64::encode"

  It should be explicitly documented, that a value of "0" of the parameter "-maxlen" would disable the insertion of wrap characters.


tkt_uuid: 3584574fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: cmdline
priority: 5 Medium
foundin: None
title: File/directory checking feature
cmimetype: text/plain
submitter: amitguptainn
assignee: nobody
comment:
  Hi,

  It would good to have a feature where typedGetopt supports the file/directory type argument values and return error if same does not exist or  match type.

  -Amit


tkt_uuid: 3584575fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: cmdline
priority: 5 Medium
foundin: None
title: Improved error messages
cmimetype: text/plain
submitter: amitguptainn
assignee: nobody
comment:
  Hi,

  At present, typedGetoptions does not mention which condition failed the argument processing and return the whole error message. It would be great to have   typedGetoptions return the condition which failed.

  -Amit


tkt_uuid: 3593146fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: Build System & Testing
priority: 5 Medium
foundin: None
title: Fails to build under windows with cygwin installed
cmimetype: text/plain
submitter: wkechel
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-01-09T00:29:13
comment:
  Here is an enhanced version of configure.in that makes tcllib build via configure/make under windows with cygwin installed but using native compiler with a non-cygwin tclsh. Please mind th eusage if CYGPATH to pass the arguments to the tclsh properly.
  Do not forget to rerun autoconf when using the new configure.in


tkt_uuid: 3593689fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct :: list
priority: 9 Immediate
foundin: None
title: Busyloop in [struct::list nextperm]
cmimetype: text/plain
submitter: dkf
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-12-07T20:35:32
comment:
  If you do:

     package require struct::list 1.8.1
     struct::list nextperm {1 10 9 8 7 6 5 4 3 2}

  You get a script that takes an excessively long time to respond (and that will eventually produce a weird error; might take a *long* time!). The problem is that there is a loop that has the wrong condition, using '>=' as an ordering relation directly on values (that happen to be numeric) rather than using [string compare] to do the comparison.

  Change:

      while { $aj >= [set al [lindex $perm $l]] } {

  to:

      while { [string compare $aj [set al [lindex $perm $l]]] >= 0 } {

  This will fix the problem by making string comparison be used throughout.


tkt_uuid: 3598183fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: irc
priority: 8
foundin: None
title: Missing default detection of EOF
cmimetype: text/plain
submitter: ferrieux
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-01-09T20:39:05
comment:
  The manpage says that only 3  kinds of events must be registered, and that 'defaultcmd' works as a catch-all.
  However, an EOF from the irc socket fails to trigger it, and there is no $dispatch(EOF) unless explicitly registered.
  As a consequence, a disconnection from the irc server is, by default, easily overlooked.
  (this happened to the KGB bot on core.tcl.tk when an IP change broke the connection)

  Maybe the proper fix is simply to document the fact, and promote EOF to the status of fourth mandatory callback.


tkt_uuid: 3598733fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: Build System & Testing
priority: 9 Immediate
foundin: None
title: Tcl 8.6.0 and tcllib 1.14 are not synced
cmimetype: text/plain
submitter: kyak
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-02-08T19:10:40
comment:
  $ echo "package require struct" | tclsh
  version conflict for package "TclOO": have 1.0, need 0.6.1

  tcllib 1.14 and tcl 8.6.0 (not beta) are not playing nice together
  this is fixed in tcllib already, but they never bumped updated release, so my distro didn't receive it

  if someone responsible for tcllib is here, please bump another release of tcllib, this way users will get synced tcl and tcllib.

  I initially put in into Tcl bug tracker (https://sourceforge.net/tracker/?func=detail&aid=3598711&group_id=10894&atid=110894), but i was advised to move it here.


tkt_uuid: 3599839fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: fileutil
priority: 5 Medium
foundin: None
title: fileutil::findByPattern dies when encountering link on Win 7
cmimetype: text/plain
submitter: cwjolly
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-01-09T00:09:37
comment:
  This has already been reported for Windows XP but since the defect is 3 yrs old and the fix is included in the prior defect report and I can find no way to update the comments section I am entering a new defect to "up" the visibility of this bug. 


tkt_uuid: 3599955fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: themed Entry: Error "unknown command" on keyboard focus
cmimetype: text/plain
submitter: oehhar
assignee: oehhar
closer: oehhar
closedate: 2013-01-08T16:39:07
comment:
  Error 'invalid command name ".#BWidget.#ttk::entry"' arises in themed mode when an Entry widget should get focus by the tab key.

  The temporary widget creation fails due to the "::" in the command name of ttk widgets.

  As a fix, any "::" is replaced by "__".

  The patch is attached, as the repository is not ready at the moment, due to fossil transition.


tkt_uuid: 3601313fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct :: stack
priority: 5 Medium
foundin: None
title: Simplify version requirement for TclOO
cmimetype: text/plain
submitter: egavilan
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-02-14T03:13:26
comment:
  Since tcloo is available only for 8.5+ and 8.5 already provides enhanced package version handling, the version requirement can be shortened to [package require TclOO 0.6.1 1] or [package require TclOO 0.6.1-] (to accept any newer version). Applies to both ::struct::queue and ::struct::stack.


tkt_uuid: 3601370fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: doctools
priority: 9 Immediate
foundin: None
title: Doctools nroff/groff output not supported by tcltk-man2html
cmimetype: text/plain
submitter: twylite
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-01-29T18:58:40
comment:
  This is related to Tcl bug 3600058 "Doctools nroff/groff output not supported by tcltk-man2html" (https://sourceforge.net/tracker/index.php?func=detail&aid=3600058&group_id=10894&atid=110894).  Most of the cases listed here are invalid input or invalid nroff.  Valid nroff not supported by the Tcl tool is being addressed in the Tcl bug.

  Required action: most of the issues below have proposed fixes, and those fixes have been implemented (or are being implemented) in a patch.  Mostly I need to get a YES/NO on each proposed fix (and for NO a suggested approach).

  Issue #1: Rendering of Copyright is inappropriate for files in the public domain

  c_get_copyright in doctools/mpformats/_common.tcl currently renders public domain as "Copyright (c) Public domain".  Suggested fix is to handle "public domain" as a special case that doesn't get a "Copyright (c)" prefix.

  Issue #2: Some Copyright statements include the word "copyright"

  Invalid input problem; examples are amazon-s3/S3.man and amazon-s3/xsxp.man.  Option A is to strip leading "copyring" and/or "(c)" from the copyright parameter.  Option B is to fix the .man pages, but I'm hesitant to do so as (i) this probably should require the copyright holder's approval; and (ii) if any authors maintain their own upstream repositories the change should be committed there.  Proposed fix is A (as a workaround), and to request authors to approve or make a change to the source.

  Issue #3: Doctools can generate nroff output where non-directive lines start with a period (invalid nroff)

  See for example snit/snitfaq.man, where [example] blocks may contain widget names like '.text'.  Suggested fix is that the nroff formatter (mpformats/_nroff.tcl) should quote leading "." on non-directive lines.

  Issue #4: Doctools can still generate nroff output where non-directive lines start with a period

  Parts of the nroff output are explicitly handled by mpformats/fmt.nroff, in particular the output of keywords.  If a keyword starts with a period (e.g. .dtx in docstrip/docstrip.man) it will be sorted to the front of the keyword list and result in invalid nroff output.  Suggested fix is to explicitly check for a quote a leading period in the keyword line (in fmt.nroff).

  Issue #5: Bad output from ldap/ldap.man

  This turns out to be a bad input problem - the .man file has "[call ::ldap::searchInit]" in the middle of a paragraph, instead of "[cmd ::ldap::searchInit]".

  Issue #6: Bad output from pop3/pop3.man

  This turns out to be a bad input problem - the .man file has a trailing period on the line "[opt_def -retr-mode ...].".

  Issue #7: Spaces in man page names

  struct/graph1.man, struct/matrix1.man, and struct/struct_tree1.man all have [manpage_begin] statements in which the name contains a space: {struct::graph v1} {struct::matrix v1} and {struct::tree v1} respectively.  Proposed fix is to use underscore (_) instead of space, giving struct::graph_v1, struct::matrix_v1, and struct::tree_v1.

  Issue #8: Inappropriate copyright statements

  A number of files contain copyright statements in formats that may not have appropriate legal effect.

    No date:
    expander: COPYRIGHT: merge-copyrights: unrecognised format: Copyright (c) William H. Duquette, http://www.wjduquette.com/expand
    smtpd: COPYRIGHT: merge-copyrights: unrecognised format: Copyright (c) Pat Thoyts <patthoyts@users.sourceforge.net>
    Invalid date:
    namespacex: COPYRIGHT: merge-copyrights: unrecognised format: Copyright (c) 200? Neil Madden (http://wiki.tcl.tk/12790)
    namespacex: COPYRIGHT: merge-copyrights: unrecognised format: Copyright (c) 200? Various (http://wiki.tcl.tk/1489)
    soundex: COPYRIGHT: merge-copyrights: unrecognised format: Copyright (c) ????, Algorithm: Donald E. Knuth
    Weird date:
    OpenTcp: CATEGORY: merge-copyrights: unrecognised date format: Copyright (c) 1996-7 Sun Microsystems, Inc.

  I'm really not sure how to handle these.  Best option may be to request the authors to fix their copyright statements.  The effect is that for now these authors won't (necessarily) be reflected in the summary of copyright holders that is added to the table of contents.

  Issue #9: Multiple definitions for coroutine, doctools::idx, interp, tie, try, 

  Tcllib packages define man pages with the same name as Tcl core commands coroutine, interp and try.  Proposed fix is to add a "tcllib" prefix to Tclllib pages, and fix up references.

  Within Tcllib there are multiple man pages providing definitions of doctools::idx and tie.  Proposed fix is to add a version suffix (as for graph/matrix/tree) and fix up references.

  Issue #10: Unvestigated

  Once the above issues are resolved there remain three more types of error when converting .man --(doctools)--> .n --(tcltk-man2html)--> .html:

  A. struct_list: make-manpage-section: ignoring .TP after .TP
  B. treeql: EXAMPLES: output-directive: unrecognized format directive: ... TODO ...
  C. calculus.n: reference error: Out of place end-quote: {<PRE>Dy'' + ky = 0
  x = 0: y = 1
  x = L: y = 0</PRE>}

  The causes have not yet been investigated.


