# ticket

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

  * snit 1.1
  test name 'htypemethod1.5' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'dtypemethod-1.3' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'dtypemethod-1.8' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'dtypemethod-4.7' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'creation-1.7' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'creation-1.8' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'creation-1.9' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'method-1.5' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'method-1.9' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'method-1.10' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'hmethod-1.5' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'dmethod-1.3' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'dmethod-1.8' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'dmethod-4.7' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'widgetadaptor-1.9' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'widgetadaptor-1.11' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'installhull-1.4' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'iinfo-1.1' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'tinfo-1.1' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'typevar_var-1.5' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'optionsyntax-2.2' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'optionsyntax-2.3' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'optionsyntax-2.4' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'cgetcache-1.3' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'configurecache-1.3' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'validatemethod-1.3' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'hastypeinfo-1.2' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'hastypedestroy-1.2' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'hasinstances-1.2' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'hasinstances-1.3' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test
  test name 'hasinfo-1.2' re-used; prior use in
  /local/src/tcllib/modules/snit/snit.test


tkt_uuid: 2512528fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: crc
priority: 5 Medium
foundin: None
resolution: Invalid
title: crc32 wrong with -seed option
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: 1035281fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: plotchart
priority: 5 Medium
foundin: None
resolution: None
title: Plotchart::determineScale return wrong values
comment:
  In this case Plotchart::determineScale returns wrong
  values:

  puts "-1.7 26.8: [determineScale -1.7 26.8]"

  >> -1.7 26.8: -1.0 21.0 10.0 <<

  Version Plotchart 0.9


tkt_uuid: 429388ffffffffffffffffffffffffffffffffff
type: Patch
status: Open
subsystem: control
priority: 5 Medium
foundin: None
resolution: None
title: execCmd procedure: improved exec (UNIX)
comment:
  Attached procedure for execution of external commands on UNIX systems. This routine provides 
  much more flexibility and doesnt have a lot of the caveats that catch{exec} has. Refer to the 
  description and instructions in the file.


tkt_uuid: 2898640fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Fixed
title: "info instances" method fails
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: 443124ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: bwidget
priority: 7 High
foundin: None
title: add 'Color' to list of bwidget option types
comment:
  It's not unusual to add an option to a megawidget that 
  represents a color, but there's no option type 
  for "Color".  For example, I would like to be able to 
  do this:

  Widget::declare BWXentry {
    {-errorcolor    Color     red    0}
  }

  This would require a couple of fairly simple changes 
  in widget.tcl. First, Color would have to be added to 
  the list of types in the _optiontype array. Second, a 
  proc named Widget::_test_color would need to be 
  defined.

  Unfortunately, there is no [string is color] command. 
  However, one could use [winfo color] to check whether 
  a color is valid or not. Unfortunately, [winfo color] 
  requires a window path, and the window path isn't 
  available to the _test procedures. 

  A quick hack would be to use "." with the winfo 
  command, though a better solution would be to use the 
  actual megawidget path. Unfortunately, this value 
  isn't made available to the _test routines. A simple 
  fix would be to add this to the set of parameters 
  given to the _test routines. 


tkt_uuid: 781973ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: textutil
priority: 8
foundin: None
resolution: Fixed
title: ::textutil::expander mishandles unterminated macros
comment:
  ::textutil::expander has an error mode setting that governs 
  how errors are handled when an error is found while 
  expanding a string.  For example, the error can be thrown 
  normally, the error message can be inserted into the output 
  in place of the macro, or the macro text can be left in the 
  output unchanged.

  If ::textutil::expander encounters an unterminated macro, 
  e.g., if it encounters the left macro bracket but there is no 
  matching right macro bracket, then it always throws a 
  normal error, ignoring the error mode.  This is a common 
  error for novices to make, and the current implementation 
  means that the unterminated macro error must be handled 
  differently from other errors in the expander's input.

  ::textutil::expander should be changed so that the 
  unterminated macro error is handled like all other errors.


tkt_uuid: 649383ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: -textvariable mapped to label and entry
comment:
  If I want to bind the entry of a LabelEntry to a text
  variable by option -textvariable, not only the entry
  but also the label field is bound to it. So I can't
  give a fix text for the label and bind the value typed
  in by the user to a variable automatically.

  Solution:
  I handle the option -textvariable in the same way as
  width, font, anchor, ..., i.e. add it to the prefix
  list of the Label - now the option -textvariable is
  only used for the entry field.

  Here is the diff of the original version of file
  'labelentry.tcl' and my corrected version:

  20c20
  <         prefix {label -justify -width -anchor -height
  -font -textvariable} \
  ---
  >         prefix {label -justify -width -anchor -height
  -font} \


tkt_uuid: 458011ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct
priority: 5 Medium
foundin: None
resolution: Fixed
title: Limitations to the _names_ of nodes
comment:
  Hello,

  I found some annoying errors/limitations in the tree
  library 
  included in tcllib (at least in version 0.4, but
  nothing seems
  changed in 0.8).

  For my purposes, the limitations can be overcome, but
  the
  annoyance
  comes from the fact that they were not documented:

  - The names of nodes can not include :: or a space
  (probably tabs
    are forbidden as well). Using :: maked Tcl complain
  about a 
    missing parent namespace and a space caused a message
  about
  missing
    data elements (in my memory serves me).

    All these errors occurred after I successively
  created the
  node!

  - I had to examine the code to see that the index of
  the insert 
    subcommand may be "end" as well as an integer.

  - The version of Tcl that is required is later than 8.0
  (the
    one which I used initially).

  As far as I am concerned, the changes to be made are:

  - Verify that the name of the node is consistent with
  the
  limitations,
    while creating it with the insert subcommand.
  - Verify the version of Tcl
  - Add the above limitations to the documentation. 

  Regards,

  Arjen Markus


tkt_uuid: 766765ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: tree
priority: 8
foundin: None
title: myTree keys node ?PatternMatch?
comment:
  It sure would be nice to query only the keys you need 
  from a strut::tree.  -- Like you can with Arrays.

  For Example:

  ARRAY NAMES:  array get names *NAME_*

  New Key Name Extraction: 

  myTree keys %n *NAME_*

  This would save a lot of extra analysis if the information 
  could be extracted directly using pattern matching 
  instead of extracting all keys.

  Any Questions?

  David Bigelow


tkt_uuid: 1557494fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: sasl
priority: 5 Medium
foundin: None
resolution: Accepted
title: NTLM responses ignores negotiated encoding
comment:
  The procedure SASL::NTLM::CreateResponse will always 
  sent the domain, host and user in litte endian unicode 
  when creating the type 3 message. This is incorrect if 
  the server has indicated in the type 2 message that 
  Unicode is not supported.

  If the flag Unicode is not set OEM encoding should be 
  used instead.

  I have noticed this issue on a Windows NTLM 
  authenticating proxy and am in the position to do some 
  additional testing, I will see if I can create a patch 
  for this issue on short notice. 


tkt_uuid: 723677ffffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: struct :: tree
priority: 5 Medium
foundin: None
title: ADD --> ::struct::tree -exists -- myTree
comment:
  Currently there appears to be no way to detect if 
  a ::struct::tree name exists without usign non-lib 
  functions to capture what is availiable.

  CURRENT METHOD:
  if ![string match [info commands myTree] myTree] {
      ::struct::tree myTree
  }

  PROPOSED METHOD:
  if ![::struct::tree -exists -- myTree] {
      ::struct::tree myTree
  }


  We have found, when we are using the ::struct::tree as a 
  central location for data (instead of arrays or lists), that 
  we need to verify if the tree exists before we continue 
  with other program logic.  Since we have many procs 
  referencing the same ::struct::tree, and any of them 
  could be called at any time by the end user, we need to 
  check to see if the ::struct::tree exists so we make sure 
  to create it if it is not there.

  Even though there is a way to detect if the ::struct::tree 
  exists using other Tcl commands - it would be easier 
  and more complete to have this basic call in 
  the ::struct::tree lib as a standard option.


  Any Questions?

  David Bigelow
  davidhbigelow@compuserve.com


tkt_uuid: 500890ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Mainframe cannot be created if no textvar used
comment:
  I did a CVS update of BWidget and one of my apps stopped working. Anyone
  know what changes caused this? I see that an eval was added.

  Error in startup script: unknown option "0"
      while executing
  "label .main.status.label -textvariable -takefocus 0 -highlightthickness 0 -background #d9d9d9"
      ("eval" body line 1)
      invoked from within
  "eval label $status.label  -textvariable [Widget::getoption $path -textvariable]  -takefocus 0 -highlightthickness 0 -background $bg $sbfnt"
      (procedure "MainFrame::create" line 49)
      invoked from within
  "MainFrame::create .main -menu {&File all file 0 {{command E&xit {} {Exit Stock Watcher} {Ctrl q} -command Exit}} &Graph all graph 0 {{command &Clear {..."
      ("eval" body line 1)
      invoked from within
  "eval MainFrame::create $path $args"
      (procedure "MainFrame" line 1)
      invoked from within
  "MainFrame .main -menu $descmenu"
      (procedure "start_ticker" line 7)
      invoked from within
  "start_ticker"
      (file "./tkstkw" line 1457)


tkt_uuid: 1969151fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: doctools
priority: 3 Low
foundin: None
title: "Macro" definitions
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: 1556310fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: linearalgebra
priority: 5 Medium
foundin: None
resolution: Invalid
title: "scale" exists as a Tk widget - name conflict when importing
comment:
  As "nurwodah" found out on the chat, the linear algebra
  package exports a procedure "scale". If you do:

    namespace import ::math::linearalgebra::*

  in wish or have Tk loaded in another way, then
  the name "scale" conflicts with the scale widget.

  We need to repair this ...


tkt_uuid: 714209ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 8
foundin: None
resolution: Fixed
title: test failure: struct module
comment:
  Test platform: tcl 8.4.2 on intel Windows 2000

  Module:struct
  modules/struct/graph.test
  modules/struct/list.test

  ==== flatten-2.1 flatten errors FAILED
  ==== Contents of test case:

      list [catch {flatten} msg] $msg

  ---- Result was:
  1 {no value given for parameter "?-full?" to
  "::struct::list::Assign"}
  ---- Result should have been (exact matching):
  1 {wrong # args: should be "::struct::list::Assign
  ?-full? ?--? sequence"}
  ==== flatten-2.1 FAILED


tkt_uuid: 988628ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget 1.7 notebook: missing border
comment:
  Using the following code, with Tcl/Tk 8.4.6 and BWidget
  1.7:

  wm geometry . 200x100
  set book [NoteBook .book -side bottom]
  $book insert end 1; $book itemconfigure 1 -text 1
  $book insert end 2; $book itemconfigure 2 -text 2
  $book raise 1
  pack $book -fill both -expand 1

  I noticed that the 1 pixel bottom border of tab 1 is
  not visible, whereas it shows perfectly when using tabs
  on top side.
  Can you reproduce it? Any workaround at this time?


tkt_uuid: 1448800fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Rejected
title: PagesManager not themable
comment:
  The PagesManager widget doesn't check 'BWidget::theme'
  and therefore always uses a tk::frame instead of a
  ttk::frame.  This means when a theme (e.g. Aqua on
  MacOSX) needs interesting frames with textured
  backgrounds, the PagesManager looks totally out of place.


tkt_uuid: 1797428fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: asn
priority: 5 Medium
foundin: None
resolution: Fixed
title: padding byte in asnBitString missing
comment:
  The mandatory padding byte in the encoding of the BitString type is missing in the encoder.

  reported by "Fang, Lun Gang \(Ark\)" <lungangfang@alcatel-lucent.com>


tkt_uuid: 1844106fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Fixed
title: snit test suite failures against tcllib cvs head
comment:
  platform: sparc solaris 9
  tcl: cvs head 8.5
  tcllib cvs head 2.2.1



  ---- dtypemethod-1.6a start

  ==== dtypemethod-1.6a delegating unknown typemethod to existing typecomponent wi
  th error FAILED
  ==== Contents of test case:

      type dog {
          delegate typemethod * to stringhandler

          typeconstructor {
              set stringhandler string
          }
      }

      dog foo bar

  ---- Result was:
  unknown or ambiguous subcommand "foo": must be bytelength, compare, equal, first
  , index, is, last, length, map, match, range, repeat, replace, reverse, tolower,
   totitle, toupper, trim, trimleft, trimright, wordend, or wordstart
  ---- Result should have been (exact matching):
  bad option "foo": must be bytelength, compare, equal, first, index, is, last, le
  ngth, map, match, range, repeat, replace, reverse, tolower, toupper, totitle, tr
  im, trimleft, trimright, wordend, or wordstart
  ==== dtypemethod-1.6a FAILED

  ==== dmethod-1.6a delegating unknown method to existing component with error FAI
  LED
  ==== Contents of test case:

      type dog {
          constructor {args} {
              set stringhandler string
          }

          delegate method * to stringhandler
      }

      dog create spot
      spot foo bar

  ---- Result was:
  unknown or ambiguous subcommand "foo": must be bytelength, compare, equal, first
  , index, is, last, length, map, match, range, repeat, replace, reverse, tolower,
   totitle, toupper, trim, trimleft, trimright, wordend, or wordstart
  ---- Result should have been (exact matching):
  bad option "foo": must be bytelength, compare, equal, first, index, is, last, le
  ngth, map, match, range, repeat, replace, reverse, tolower, toupper, totitle, tr
  im, trimleft, trimright, wordend, or wordstart
  ==== dmethod-1.6a FAILED


tkt_uuid: 563380ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Duplicate
title: BWidget 8.4 padx bug
comment:
  The Tree, Listbox and ButtonBox widgets are all
  affected by the change in 8.4 that gave the frame
  widget a -padx option.

  Since these BWidgets have a padx that sets the padding
  between graphics and text, this option is actually
  passed on to Tcl.  Now the the frame widget has a padx
  option, the default padx on these widgets (20 pixels)
  is being passed to the frame, and there's a 20 pixel
  border around these widgets.


tkt_uuid: 3065746fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: log
priority: 3 Low
foundin: None
title: formatted log::log for performence
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: 822850ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 8
foundin: None
resolution: Fixed
title: incorrect eval use in various modules
comment:
  As pointed out by Jeff Hobbs on TCLCORE, eval is used
  in incorrect and unsafe ways in various modules. This
  should be fixed.

  Michael


tkt_uuid: 1503677fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Progress bar should display the current and maximum values
comment:
  I'm using the ProgressBar part of BWidgets, and am
  quite happy with it over all.

  I find a piece of information missing, and am going to
  display it in a separate label for now -- the current
  value and the maximum value of the progress.

  Ideally, there should be an option for these bit to be
  displayed right there on the progress bar itself...


tkt_uuid: 1381659fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: jpeg
priority: 5 Medium
foundin: None
resolution: None
title: jpeg::removeComments destroys jpeg files completely
comment:
  When tcllib jpeg package used with [encoding system]
  other than iso8859-1, procedures jpeg::removeComments
  and jpeg::replaceComments (which calls former one)
  convert jpeg file into piece of junk, replacing all
  8-bit symbols by question marks.

  Problem is that jpeg::openJFIF routine opens binary
  file properly, setting -translation binary, but
  jpeg::removeComments opens file in write mode to
  overwrite its content there, and doesn't configure it
  as binary. So, binary data read from original file are
  "converted" to [encoding system], which result in
  replacing all 8-bit symbols with "unknown character"
  marker.

  Solution is to add

  fconfigure $fh -translation binary 

  into jpeg::removeComments routine just after 

  set fh [open $file w]


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


tkt_uuid: 640932ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 6
foundin: None
resolution: Fixed
title: htmlparse not parsing incomplete tags
comment:
  htmlparse is supposed to be able to parse incomplete 
  tags by stuffing the incomplete part into a global var and 
  then, apparently, fishing it back and prepending it to it's 
  next string input. This works fine only if the rest of the 
  incomplete tag is in the same string, but not if the 
  incomplete tag is in another string entirely, e.g. if 
  separate lines are being processed in a foreach loop. 
  I'm using tcllib 1.3.

  Here's a script that shows the bad behavior:

  #!/bin/tclsh

  package require Tcl 8.4
  package require struct 1.2.1
  package require cmdline 1.2
  package require htmlparse 0.3

  lappend lines {<root>}
  lappend lines {<tag>Hi there</tag>}  
  lappend lines {<tag}
  lappend lines {>Hi there</tag>}
  lappend lines {</root>}

  proc tag_handler { tag slash attr text } {
          if {[string equal $tag hmstart]} {
                  return
          }
          puts "TAG=$tag SLASH=$slash"
  }

  foreach localline $lines {
          ::htmlparse::parse -cmd tag_handler -incvar 
  partial_xml $localline
  }

  Here's the output:

  axis-goodwins> ./bad-htmlparse.tcl 
  TAG=root SLASH=
  TAG=tag SLASH=
  TAG=tag SLASH=/
  TAG=tag SLASH=/
  TAG=root SLASH=/

  You can see that the third 'tag' should be an opening 
  tag but is being marked as a closing tag. The opening 
  tag never gets processed, and no errors are thrown.

  If I use htmlparse to parse this string:

  set line {
  <root>
  <tag
  >Hi there</tag>
  </root>
  }

  it works fine.

  /s.


tkt_uuid: 956930ffffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: ftp
priority: 7 High
foundin: None
resolution: None
title: Unknown state "pwd_sent"
comment:
  Unknown state "pwd_sent"
      while executing
  "error "Unknown state \"$ftp(State)\"""
      ("default" arm line 2)
      invoked from within
  "switch -regexp -- $ftp(State) {
          list {
              fileevent $sock readable [list [namespace 
  current]::HandleList $s $sock]
              set ft..."
      (procedure "::ftp::InitDataConn" line 27)
      invoked from within
  "::ftp::InitDataConn 0 sock6 <<cut>> 48836"


  uname -a
  Linux purehype.net 2.4.22-1.2115.nptl #1 Wed Oct 29 
  15:42:51 EST 2003 i686 i686 i386 GNU/Linux

  % info patchlevel
  8.4.6

  % package require ftp
  2.4.1


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

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

  Tested on 1.8 and some older versions.


tkt_uuid: 1597589fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: diagrams
priority: 5 Medium
foundin: None
resolution: Out of Date
title: Various issues with the diagrams package
comment:
  Yeeling reported on the Tclers' chat the following 
  issues:
  - No package provide yet
  - circle string radius - does not work
  - line [getpos ..] [getpos ..] - does not work
  - arrows built from two or more line segments would be 
    nice


tkt_uuid: 2866540fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: widget
priority: 5 Medium
foundin: None
resolution: Fixed
title: calendar widget -textvariable does not work both ways
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: 527716ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 7 High
foundin: None
title: add [usage] support
comment:
  The library seems to be designed for documenting 
  packages, but is missing something for doing man pages 
  of individual commands. Or maybe I don't quite 
  understand how it works. Specifically, it appears that 
  the only way to get something into the automatically 
  generated SYNOPSIS section is to first put it in a 
  [call] statement inside a definition list. Anyone know 
  if that is a true statement?

  When I tried using the package to write a man page for 
  a single command, I found this undesireable. I want a 
  SYNOPSIS section, but I don't want to have to put the 
  synopsis as an element in a definition list -- that 
  just doesn't fit the way I want to document the 
  command. The document would end up with the synopsis 
  twice -- once wherever I put it and once in the 
  SYNOPSIS section. 

  What I propose is a new command, [usage], which lets 
  one define a usage statement. The difference between 
  this and [call] is that [usage] wouldn't cause 
  anything to be generated as a direct result of the 
  command. Instead, it just stores the string for the 
  SYNOPSIS section. Thus, it could appear anywhere in 
  the source, though typically it would appear at the 
  top.

  I've attached a patch file that adds this new command. 
  Use at your own risk. This adds a "usage" command to 
  each of the formats (fmt.html, fmt.tmml, etc) and 
  updates mpexpand to know about the new command. I 
  haven't verified that the latex and tmml versions 
  generate correct output, but they should. The commands 
  are clones of the call proc, but return an empty 
  string rather than a formatted string.

  FWIW, here's how I'm using it in my man page right now:

  [manpage_begin fontdialog n 1.0]
  [moddesc   {Dialogs}]
  [titledesc {A dialog for defining a font 
  specification}]
  [usage [cmd "package require Tk 8.2"]]
  [usage [cmd "package require ::dialog::fontdialog"]]
  [usage [cmd ::dialog::fontdialog::fontdialog] \
         [opt "-applycommand [arg script]"] \
         [opt "-fixed [arg boolean]"] \
         [opt "-font [arg fontDescription]"] \
         [opt "-sizes [arg list]"] \
         [opt "-title [arg string]"] \
         [opt "-variable [arg boolean]"] \
  ]
  [description]
  ...


tkt_uuid: 3011581fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Fixed
title: Doc bug w/ -header option
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: 1800411fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: Missing CSS class names
comment:
  The following doctools markup:

    [cmd ns_logctl] [arg hold]


  Produces the following HTML:

    <b class='cmd'>ns_logctl</b> <i class='arg'>hold</i>


  Which is good. However, many of the other doctools macros don't include CSS class names. For example, fun, type, const and method all produce <strong>, no class name.

  Should the rule for basic, non-structural doctools macros be that the name of the macro becomes the CSS class?

  [fun function]: <strong class="fun">function</strong>


  (btw. cmd produces <b> whereas fun produces <strong>. I'm not sure there's a lot of extra symantic info in <strong>, but for consistency, maybe they should be the same?)


tkt_uuid: 1610655fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: uri
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::uri::split fails with query part on multiple "?"
comment:
  Hello,

  I just detected that the command ::uri::split in tcllib v1.9 fails, if an URI contains more than one query introducing questionmarks.
  Those URIs often contain a query containing e.g. subqueries.

  An example:

  % array set u [uri::split http://www.abc.de/dir1/dir2/file1.php?paramA=/file2.php?paramB=Hello%20World]
  % parray u
  u(host)   = www.abc.de
  u(path)   = dir1/dir2/file1.php?paramA=/file2.php
  u(port)   =
  u(pwd)    =
  u(query)  = paramB=Hello%20World
  u(scheme) = http
  u(user)   =

  It seems to be, that the command ::uri::split looks after the last not the first question mark in the path to split the path into the real path and the query part.

  The first time I saw this behaviour, was working on a link of an Amazon.de newsletter containing a redirection using query parameters and the link to be redirected to using query parameters too.

  Best regards,

  Martin Lemburg


tkt_uuid: 3007956fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 7 High
foundin: None
resolution: Fixed
title: problem loading msgcat
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: 505465ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: 2 new commands for PanedWindow
comment:
  What about 2 new commands for the PanedWindow to 
  hide/show a frame?

  Here is what I wrote to do this:

  proc PanedWindow::show { path num } {
    variable _panedw
    if { $num < $_panedw($path,nbpanes) } {
    }
    if [winfo exists [set pane "$path.f$num"]] {
      set side  [Widget::getoption $path -side]
      grid $pane
      if { ![string compare $side "top"] || ![string 
  compare $side "bottom"] } {
          grid columnconfigure $path [expr {2*$num}] \
              -weight  [Widget::getoption $path.f$num -
  weight]
      } else {
          grid rowconfigure $path [expr {2*$num}] \
              -weight  [Widget::getoption $path.f$num -
  weight]
      }
      if { [expr $num + 1] < $_panedw($path,nbpanes) } {
        set sash "$path.sash[expr $num + 1]"
      } elseif { $num > 0 } {
        set sash "$path.sash$num"
      }
      if [winfo exists $sash] {
        grid $sash
      }
    }
  }

  proc PanedWindow::hide { path num } {
    variable _panedw
    if { $num < $_panedw($path,nbpanes) } {
    }
    if [winfo exists [set pane "$path.f$num"]] {
      set side  [Widget::getoption $path -side]
      grid remove $pane
      if { ![string compare $side "top"] || ![string 
  compare $side "bottom"] } {
          grid columnconfigure $path [expr {2*$num}] \
              -weight  0
      } else {
          grid rowconfigure $path [expr {2*$num}] \
              -weight  0
      }
      if { [expr $num + 1] < $_panedw($path,nbpanes) } {
        set sash "$path.sash[expr $num + 1]"
      } elseif { $num > 0 } {
        set sash "$path.sash$num"
      }
      if [winfo exists $sash] {
        grid remove $sash
      }
    }
  }


tkt_uuid: 1446302fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Duplicate
title: 1.8: mime.tcl: patch for Bug 1276561 breaks date
comment:
  ---
  2005-10-04  Andreas Kupries <andreask@activestate.com>
  * mime.tcl: Applied patch for [SF Tcllib Bug 1276561]
  by Benjamin Riefenstahl. Fixes the handling of
  date/times, removing dependencies on the current locale.
  ---

  Apparently, the above changes break things badly:

  % set token [mime::initialize -canonical text/plain
  -string body]
  % lappend headers -servers 127.0.0.1
  % lappend headers -header [list From jfontain]
  % lappend headers -header [list Subject test]
  % lappend headers -header [list To jfontain]
  % eval smtp::sendmessage $token $headers

  And I get (look at the date):

  ---
  From: jfontain@host.company.com
  Content-ID: <13811.1141902264.1@host.company.com>
  Subject: test
  To: jfontain@host.company.com
  Date: Thu, 09 Oct 2006 12:06:21 +0100

  body
  ---

  Tcl is 8.4.12 on a x86_64 machine.


tkt_uuid: 404917ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Fixed
title: Missing index entry for smtp package
comment:
  The pkgIndex in the tcllib0.8 directory does not contain an entry for the smtp package (which 
  resides in the mime subdirectory).  Hence when you do a package require on tcllib you do not get 
  the smtp loaded automatically with all of the other packages.

  BTW, why isn't the smtp pacakge in its own directory?

  Also why does it not show up on the Category list in the source forge bug form?


tkt_uuid: 1205536fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: ComboBox Return binding broken if -bwlistbox set
comment:
  The Return binding on a ComboBox is broken if the -bwlistbox option is 
  set. The problem is that the binding is set on the underlying canvas rather 
  than on the BWidget ListBox widget, and so the "curselection" method 
  isn't supported.

  The attached patch fixes the problem by passing the path to the ListBox 
  widget, rather than %W (which will expand to the name of the underlying 
  canvas widget).


tkt_uuid: 1349154fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: irc
priority: 5 Medium
foundin: None
resolution: Accepted
title: Patch to return channel from connection
comment:
  Just a small and trivial little patch which will return the channel 
  used for a particular connection. Useful at least for setting stuff 
  like -encoding, although that should probably be handled by a 
  separate command.

  setox:~/Proging/tcllib setok$ diff /Library/Tcl/tcllib1.7/irc/irc.tcl 
  irc.tcl 
  10c10
  < package provide irc 0.5
  ---
  > package provide irc 0.6
  144a145,154
  >       # Return socket for this IRC connection, or "" if one does 
  not yet
  >       # exist.
  > 
  >       proc cmd-socket {} {
  >           variable sock
  > 
  >           return $sock
  >       }
  > 
  > 


tkt_uuid: 2824771fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: None
title: doctools test case 50.0.1 fails
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: 1769140fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: findByPattern has problems with NFS-style basedirs
comment:
  Solaris 8
  Tcl 8.4

  If ::fileutil::findByPattern is fed a basedir in the form /net/<machine>/export/disk1/... the resulting file names have the form /export/disk1/... ie the NFS portion of the base directory has been removed.

  mark.thornber@gmail.com


tkt_uuid: 484123ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Patch for BWidget::place
comment:
  When BWidget::place is called with location different
  from 'at' and 'center' and without a prarent (arglen =
  1), variable 'widget'  is undefined. I added an 'else'
  case the if statement setting the variable widget to
  make sure the variable widget is always set.

  Result of 'cvs diff utils.tcl':

  Index: utils.tcl
  ===================================================================
  RCS file: /cvsroot/tcllib/bwidget/utils.tcl,v
  retrieving revision 1.3
  diff -r1.3 utils.tcl
  272c272,274
  <             }
  ---
  >             } else {
  >                   set widget .
  >           }


tkt_uuid: 710139ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Out of Date
title: BWidget 1.4.1 ListBox dropovercmd bugs
comment:
  I encountered 2 bugs in the same proc  ListBox::_over_cmd

  1) The variable xs can escape intialisation in some case, causing runtime error.
  Can be produced by dragging (slowly) an entry vertically from
  a droppable area to a non-droppable area or reverse.

  2) -dropovercmd command, get called back with a missing parameter $path

  Below is a small context diff for the the changes:

  $ diff -c listbox.tcl*
  *** listbox.tcl Wed Mar 26 14:31:00 2003
  --- listbox.tcl.orig    Tue Aug 27 05:56:26 2002
  ***************
  *** 1164,1170 ****
            set yi   [expr {$line*$dy}]
            set ys   [expr {$yi+$dy}]
            set xi   0
  -         set xs   $xi
            set pos  $line
            if { [Widget::getoption $path -multicolumn] } {
                set nrows $data(nrows)
  --- 1164,1169 ----
  ***************
  *** 1225,1231 ****

        if { $vmode && [set cmd [Widget::getoption $path -dropovercmd]] != "" } {
            # user-defined dropover command
  !         set res   [uplevel \#0 $cmd [list $path $source $target $op $type $dnddata]]
            set code  [lindex $res 0]
            set vmode 0
            if {$code & 1} {
  --- 1224,1230 ----

        if { $vmode && [set cmd [Widget::getoption $path -dropovercmd]] != "" } {
            # user-defined dropover command
  !         set res   [uplevel \#0 $cmd [list $source $target $op $type $dnddata]]
            set code  [lindex $res 0]
            set vmode 0
            if {$code & 1} {


tkt_uuid: 922877ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: bwidget PasswdDlg - honour labelwidth and fix return binding
comment:
  Fixes the BWidget PasswdDlg widget so that it doesn't ignore the 
  -labelwidth option when calculating the label width.

  Also reinstalled the Return binding so that return now moves through 
  the widgets rather than always selecting OK (i.e. more like the 
  behaviour of various login managers on Windows, Unix)


tkt_uuid: 867604ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: Problem with focus and spinbox
comment:
  If trying the following code:

  package require BWidget
  pack [spinbox .b1]
  pack [spinbox .b2]
  .b1 insert end hello
  .b2 insert end hello

  and using the <Tab> key, content in the spinbox is not
  selected.

  Solutions seems to add:

  bind Spinbox <<TraverseIn>> [bind Entry 
  <<TraverseIn>>]

  in file init.tcl


tkt_uuid: 1846908fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: special
priority: 5 Medium
foundin: None
resolution: None
title: Ver 1.9: Gamma function implemented incorrectly
comment:
  Hi,

  I am using ver. 1.9 of tcllib. The Gamma function is implemented via factorial:

  proc ::math::special::Gamma {x} {
      ::math::factorial [expr { $x + 1 }]
  }

  However, this should be $x - 1:

  proc ::math::special::Gamma {x} {
      ::math::factorial [expr { $x - 1 }]
  }

  because factorial y invokes ln_Gamma {y + 1}

  Eric


tkt_uuid: 1499135fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Dynamic help balloon position wrong on dual screen WinXP PC
comment:
  In BWidget 1.7, DynamicHelp::_show_help uses [winfo
  vrootwidth .] when setting the position of the balloon.  
  On a dual screen PC vrootwidth only returns the width
  of the "first" screen. 

  As a quick fix I changed :

    if { $x+$width > $scrwidth } {
       set x [expr {$scrwidth - $width}]
    }

  to

    if { $x < $scrwidth & $x+$width > $scrwidth } {
       set x [expr {$scrwidth - $width}]
    }

  in _show_help.

  This dosen't position the balloon correctly at the
  extreem right of the second screen.  However I don't
  know how to get the combined width of the two screens
  to fix it properly.


tkt_uuid: 3066872fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Fixed
title: comm server blocks indefinitely
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: 1224755fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: None
title: ftp mode active/passive performance
comment:
  When I connect to a server though a firewall using
  the unix ftp command both active an passive mode work
  fine (tested with the dir command).

  When using active mode (the default) via tcllib(v 1.7)
  ftp it takes
  in my case more than 40seconds before I get a response
  with ftp::NList. When setting to passive mode it works fine
  without the delay.

  Why the difference ?


tkt_uuid: 440064ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: some code cleanup example/hpupdate.tcl
comment:
  I changed a few coding nits in the
  ftp/example/hpupdate.tcl file hoping against hope to
  fix at least one of the problems I have with it - the
  program tries to show me the difference, but what it
  shows doesn't reflect the real difference.  The
  original author is no longer supporting the program; he
  has written a significantly better app that replaces
  hpupdate, but it is all in german and my german is too
  rust.

  Anyways, I'm attaching my patches.  Mainly i added --
  to the switches ; which has the potential of making
  them safer if the variables happen to contain a - in
  their data, added some explicit return codes, etc.


tkt_uuid: 613134ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Duplicate
title: PanedWindow does not display correctly
comment:
  In version 1.4.1 of BWidget PanedWindows do not 
  display the second pane anymore. Windows need 
  resize to make second pane visible.

  Please checkout attached sample code:

  Klaus Meywirth
  klaus.meywirth@fci.com


tkt_uuid: 3593146fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Build System & Testing
priority: 5 Medium
foundin: None
resolution: Accepted
title: Fails to build under windows with cygwin installed
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: 492234ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: Documentation toolbox
comment:
  Enclosed a tar archive implementing a 
  module 'doctools', currently providing
  a simple tcl-nased markup for writing
  manpages and a processor for converting
  this format into TMML, HTML, and nroff.
  Other formats can be added at will.


tkt_uuid: 480945ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
title: consolidate tcllib examples
comment:
  Currently tcllib has examples in a higher level example
  directory as well as within several of the module
  directories.

  For consistency sake, moving them all into the higher
  level examples directory would be appreciated.


tkt_uuid: 1759532fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: grammar_fa
priority: 5 Medium
foundin: None
resolution: Accepted
title: Nullary "." and "|" operations
comment:
  The nullary cases of the "." (concatenation) and "|" (union) regexp operations seem not to have been implemented. In ::grammar::fa::op::Regex there are special cases for less than two arguments which assume there is exactly one argument.

  What are these good for, then?

  I've just made a first implementation of my own RFE#1735601 (grammar::fa::op::toRegexp, although I now notice grammar::fa seems to favour a spelling without "p"). This process requires that there are representations for the 0 language (the language without words) and the 1 language (the language whose only word is the empty word). Since these are the neutral elements for the "|" and "." operations, it is natural to represent them as nullary cases of the operations.

  A simple example of the kind of thing I'd like to use this for is generating a regexp for the language of all strings that don't contain e.g. the substring "aab":

  % grammar::fa not_aab fromRegex {! {. {* {| {S a} {S b}}} {S a} {S a} {S b} {* {| {S a} {S b}}} }}
  ::not_aab
  % not_aab states
  26 22 0 27 23 1 28 24 30 29 25
  % not_aab minimize
  % not_aab states
  0 1 2
  % grammar::fa::op::toRegexp [not_aab serialize]
  . {* {| {. {S a} {S b}} {S b}}} {| . {. {S a} {| . {. {S a} {* {S a}}}}}}

  One problem demonstrated by this is that the automatic regexps could often do with simplification -- the last branch of the "." root is equivalent to {* {S a}}, but that's not all that easy to see. It occurred to me that converting subexpressions back to an automaton is probably the best way to process them, but since fromRegex can't handle . and | as expressions this is currently not possible. :-(


tkt_uuid: 893516ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: flush error when large "quoted-printable"
comment:
  I get a "400: error flushing "sock336": invalid argument" 
  when doing the following with a body larger than 4096 
  buffersize:

  set token [mime::initialize -canonical text/plain \
          -string $body]
  smtp::sendmessage $token -header [list Subject \
          $subject] -header [list From $sender] \
          -header [list To $recipient] -servers $email_server
  mime::finalize $token

  In the "string" arm of the ::mime::copymessageaux proc, 
  I noticed that the blocksize is computed but never 
  fconfigured. 

  The issue is resolved if I add "fconfigure $channel -
  buffersize $blocksize" after the blocksize computation 
  and before the "puts $channel [$converter -mode 
  encode -- $state(string)]" (approx. line 1687 of 
  mime.tcl).

  Thanks for including this fix in the next release,
  Todd Copeland
  todd.copeland@pervasive.com


tkt_uuid: 1046955fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget 1.7.0: Tree::insert does not find parent node
comment:
  To the maintainer of BWidget's Tree widget:

  When inserting an element into a parent tree node which
  contained an ampersand (&) in the node name, this
  parent node is not found and an error is issued by
  Tree::insert.

  The following code shows the behaviour:

  package require BWidget 1.7
  frame .ftop
  pack .ftop
  set sampleTree .ftop.tsample
  Tree $sampleTree
  pack $sampleTree
  $sampleTree insert end root "/First&IT" -text "First&IT"
  $sampleTree insert end "/First&IT" "Abc" -text "Abc"

  The error is:

  node "/First&IT" does not exist
      while executing
  "Tree::insert .ftop.tsample end /First&IT Abc -text Abc"
      ("eval" body line 1)
      invoked from within
  "eval [linsert $args 0 Tree::$cmd .ftop.tsample]"
      (procedure ".ftop.tsample" line 1)
      invoked from within
  "$sampleTree insert end "/First&IT" "Abc" -text "Abc""
      (file
  "/home/users/roger/Dev/TclTk/Singles/treetest.tcl" line 17)

  When removing the "&" character from the insert
  commands it works.

  The attached one-line patch solves the problem: The
  parent node name is not converted to canonical form
  with _node_name before checking if the array entry exists.

  The patch does the following:

  set parent [_node_name $path $parent]

  This call overwrites parent with the canonical (mapped
  special characters) node name, add this line just
  before the [info exists data($parent)] line.

  The patch worked fine for me. I did not check the rest
  of the tree.tcl for other missing _node_name calls --
  maybe there are more...

  -- Roger

  PS: Thanks for the cool Tree widget!


tkt_uuid: 1842346fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: BWidget::place does not work as expected
comment:
  When BWidget::place is called like 
  BWidget::place widget width 0 above otherwidget
  or
  BWidget::place widget width 0 left otherwidget
  then widget is not placed at the expected position.

  Attached file of utils.tcl solves the problem.


tkt_uuid: 3062782fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
resolution: Invalid
title: graphops.test fail
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: 712028ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 3 Low
foundin: None
resolution: Works For Me
title: v1.6 bug in LabelEntry Creation
comment:
  invalid command name ".#BWidget#frame"
      while executing
  "$path cget $realopt"
      (procedure "Widget::_test_tkresource" line 6)
      invoked from within
  "$Widget::_optiontype($type) $option $value [lindex
  $optdesc 3]"
      (procedure "Widget::init" line 62)
      invoked from within
  "Widget::init LabelFrame $path $args"
      (procedure "LabelFrame::create" line 2)
      invoked from within
  "LabelFrame::create .payroll.f.le0.labf -text {Payroll
  Date} -width 20 -anchor w -relief flat -borderwidth 0
  -focus .payroll.f.le0.e"
      ("eval" body line 1)
      invoked from within
  "eval LabelFrame::create $path.labf $maps(.labf) 
  -relief flat -borderwidth 0 -focus $path.e"
      (procedure "LabelEntry::create" line 8)
      invoked from within
  "LabelEntry::create .payroll.f.le0 -label {Payroll
  Date} -labelwidth 20 -labelanchor w -textvariable
  var_payroll_date"
      ("eval" body line 1)
      invoked from within
  "eval LabelEntry::create $path $args"
      (procedure "LabelEntry" line 1)
      invoked from within
  "LabelEntry $f -label $label -labelwidth 20
  -labelanchor w -textvariable $textvar"
      (procedure "gui_LabelEntry" line 6)
      invoked from within
  "gui_LabelEntry $gui_payroll.le0 "Payroll Date"
  var_payroll_date "
      invoked from within
  "grid [gui_LabelEntry $gui_payroll.le0 "Payroll Date"
  var_payroll_date ] -sticky e"
      (file "payroll.tcl" line 473)
      invoked from within
  "source payroll.tcl"


tkt_uuid: 3012669fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Documentation
priority: 5 Medium
foundin: None
resolution: Fixed
title: msgcat man page conflicts with the Tcl core
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: 772442ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: snit
priority: 5 Medium
foundin: None
title: snit: Explore alternative for pkg mgmt setup
comment:
  Snit currently does

      catch {package require snit::__dummy__}

  to setup package management in the internal slave 
  interp it uses to process class definitions.

  This is a bit of a hack. Explore if an alias for 'package' 
  can be used as well.


tkt_uuid: 1016869fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
resolution: Fixed
title: math test suite failures in latest cvs snapshot
comment:
  sparc sunblad 100 solaris 8 sun c compiler
  tcl 8.4.7

  Module: math
  modules/math/bessel.test
  couldn't read file "polynomials.tcl": no such file or
  directory
      while executing
  "source "polynomials.tcl""
      (file
  "/vol/tclsrcsol/tcl84/tcllib/modules/math/classic_polyns.tcl"
  line 4)
      invoked from within
  "source [file join [file dirname [info script]]
  "classic_polyns.tcl"]"
      (file
  "/vol/tclsrcsol/tcl84/tcllib/modules/math/special.tcl"
  line 165)
      invoked from within
  "source [file join [file dirname [info script]]
  special.tcl]"
      (file
  "/vol/tclsrcsol/tcl84/tcllib/modules/math/bessel.test"
  line 21)
      invoked from within
  "source [pSet file]"
  modules/math/calculus.test
  modules/math/combinatorics.test
  modules/math/constants.test
  modules/math/elliptic.test
  can't import command "Beta": already exists
      while executing
  "namespace import ::math::Beta"
      (in namespace eval "::math::special" script line 11)
      invoked from within
  "namespace eval ::math::special {
      #
      # Define a number of common mathematical constants
      #
      ::math::constants::constants pi
      variable h..."
      (file
  "/vol/tclsrcsol/tcl84/tcllib/modules/math/special.tcl"
  line 19)
      invoked from within
  "source [file join [file dirname [info script]]
  "special.tcl"]"
      (file
  "/vol/tclsrcsol/tcl84/tcllib/modules/math/elliptic.test"
  line 16)
      invoked from within
  "source [pSet file]"
  modules/math/fuzzy.test
  math::fuzzy 0.2
  modules/math/geometry.test
  math::geometry 1.0.1
  modules/math/interpolate.test
  modules/math/math.test
  math 1.2.2
  modules/math/optimize.test
  modules/math/polynomials.test
  can't import command "saveState": already exists
      while executing
  "namespace import ::tcltest::*"
      (file
  "/vol/tclsrcsol/tcl84/tcllib/modules/math/polynomials.test"
  line 6)
      invoked from within
  "source [pSet file]"
  modules/math/qcomplex.test
  modules/math/special.test
  can't import command "Beta": already exists
      while executing
  "namespace import ::math::Beta"
      (in namespace eval "::math::special" script line 11)
      invoked from within
  "namespace eval ::math::special {
      #
      # Define a number of common mathematical constants
      #
      ::math::constants::constants pi
      variable h..."
      (file
  "/vol/tclsrcsol/tcl84/tcllib/modules/math/special.tcl"
  line 19)
      invoked from within
  "source [file join [file dirname [info script]]
  special.tcl]"
      (file
  "/vol/tclsrcsol/tcl84/tcllib/modules/math/special.test"
  line 21)
      invoked from within
  "source [pSet file]"
  modules/math/statistics.test


tkt_uuid: 593254ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Fixed
title: setValue doesn't work right w/ multipart
comment:
  ncgi::setValue doesn't work right with multipart forms,
  if you pass it a string with spaces in it, because of
  the way it gets treated by ncgi::value.  See new test case.


tkt_uuid: 2979481fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: bibtex
priority: 5 Medium
foundin: None
resolution: None
title: string macro parsing is buggy
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: 466219ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: Extend handling of userinfo
comment:
  * display userinfo in a dialog box if asked.
  * optionally display the images (if registered)
    for the people recognized as online.


tkt_uuid: 2853152fffffffffffffffffffffffffffffffff
type: Patch
status: Open
subsystem: dns
priority: 5 Medium
foundin: None
resolution: None
title: fix async dns behaviour
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: 911281ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
title: snit - Optimize for space
comment:
  An empty snit::type comes with 37 K of runtime code.
  Optimize the generator ot include only the parts of the
  runtime support which are necessary (i.e. not widget
  stuff for snit:type's, no delegate handling if there
  are no delegates declared, etc.)


tkt_uuid: 2593520fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: json
priority: 5 Medium
foundin: None
resolution: Fixed
title: json one-line fix for number parsing
comment:
  in json::_json2dict, when parsing a number value
  (line 192ff.), the code essentially does:
  string is double -failindex last $txt
  set num [string range $txt 0 [expr {$last - 1}]]

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

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

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


tkt_uuid: 932516ffffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: html
priority: 5 Medium
foundin: None
resolution: None
title: html - many procedures not compatible with prodebug
comment:
  prodebug complains about the following:

  html::foreach
  html::for
  html::while
  html::if
  html::set
  html::eval


tkt_uuid: 684462ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: parasite rectangle in BWidget demo - since 1.3.1
comment:
  In the BWidget demo, 
  selecting the Tree tab creates a rectangle at the left
  of the main window. 

  This behaviour has appeared since BWidget 1.3.1 at 
  least. 


tkt_uuid: 1393564fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
resolution: Fixed
title: erorr in ::math::linearalgebra::angle
comment:
  Hello,

  There is an error in:

  ::math::linearalgebra::angle

  instead of:

  set n1 [norm_2 $vect1]
  set n2 [norm_2 $vect2]

  it should be:

  set n1 [norm $vect1]
  set n2 [norm $vect2]

  or also:

  set n1 [norm_two $vect1]
  set n2 [norm_two $vect2]

  Also, there is no cross product fucnction in the
  package. It is a VERY common need for 3D vectors.

   Regards,


tkt_uuid: 2847341fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: md5
priority: 8
foundin: None
resolution: None
title: leak in md5 (critcl)
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: 540313ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: cmdline
priority: 5 Medium
foundin: None
resolution: Accepted
title: Add [getKnownOpt{ions}]
comment:
  >From "Melissa Chawla" <hershey@panasas.com>
  I've added 2 new procedures to the tcllib/cmdline package:

  The getKnownOpt and getKnownOptions procedures offer a
  way for options 
  that
  are not in the optionList to be ignored.  This way, you
  can have two
  independant locations in your application where
  commandline arguments 
  are
  parsed.  I bumped the package version to 1.2.  If I
  pass the args "-foo 
  x -bar
  a b c -debug 1, where -bar is not in the options list,
  then "-bar a b c" 
  will
  remain in argv without causing a problem.

  The reason I need this feature is that when I start
  TclHttpd, it checks 
  the
  commandline options and throws an error if there are
  options that it 
  doesn't
  know about.  But I've deliberately added options that
  my customized web 
  server
  libraries will look at, and until now, I had no "nice"
  way to pass those
  options through the TclHttpd option check to my
  application.

  My patch includes tests as well as improved
  documentation (in the code)
  throughout the package.


tkt_uuid: 967906ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: bwidget - Font Chooser Cursor Usage
comment:
  In the font chooser, the listbox cannot be navigated with the cursor key. Adding the bottom two lines to  SelectFont::create corrects this

  bind $lbf <space>           $script
  bind $lbf <1>               [list focus %W]
  +bind $lbf <Up>    $script
  +bind $lbf <Down>   $script


tkt_uuid: 900165ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: BWidget progressbar problem
comment:
  Hi, 
   
  The BWidget progressbar fails when using large values. This is 
  the code in version 1.7.0: 
   
  $path.bar coords rect -1 0 [expr {$val*$w/$max}] $h 
   
  Large integer values used for val and max will cause wrapping 
  problems for 32 bit integers. Making the new calculation using 
  doubles will fix the problem: 
   
  $path.bar coords rect -1 0 [expr {double($val)*$w/$max}] $h 
   
   
  Kind regards, 
   
  Jos. 


tkt_uuid: 784157ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 8
foundin: None
resolution: Fixed
title: ::fileutil::find is now dependent upon Tcl8.4
comment:
  In fixing fileutil.tcl: Fixed SF tcllib bug [647974], the 
  Tcl8.4 [file system ...] command was used in the ::find 
  proc. 

  The fileutil.tcl has a package require for 8.2 but 
  Tcl8.2 ... Tcl8.3 interpreters will no longer be able to 
  use ::fileutil::find or ::fileutil::findByPattern


tkt_uuid: 3475081fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: yaml
priority: 8
foundin: None
resolution: None
title: Parser accepts invalid YAML input, mistranslates others
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: 517595ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: control
priority: 5 Medium
foundin: None
resolution: Fixed
title: test suite bug in control/do.test
comment:
  using the very latest tcllib, and running make test, I
  see the following error:


  Module: control
  modules/control/do.test

  ==== do-2.3 wrong no of arguments FAILED
  ==== Contents of test case:

      set res [catch do] 
      list $res $::errorInfo

  ---- Result was:
  1 {wrong # args: should be "do body args"
      while executing
  "do"}
  ---- Result should have been (exact matching):
  1 {no value given for parameter "body" to "do"
      while executing
  "do"}
  ==== do-2.3 FAILED


tkt_uuid: 744391ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ntp
priority: 7 High
foundin: None
resolution: Fixed
title: empty result with FreeBSD tcp 37 time service
comment:
  The line in ::time::QueryTime of time.tcl:
  puts -nonewline $State(sock) "abcd"
  causes problems with a FreeBSD 4.7 time service. 

  Test against ntp.webpub.net to see that $State
  (data) is empty. 
  Removing that line fixes it - and I see it still works 
  without that line for the sample given, 
  ntp2a.mcc.ac.uk 
  According to rfc868, the server should respond 
  with the time upon connection.
  Is this line above, a hack to work around some 
  particular server implementation that needs to 
  receive bit of data before responding?  If so, could 
  it be changed to an option such as -prod? 


tkt_uuid: 932029ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Cannot have space in pathname of combobox (FIX SUPPLIED)
comment:
  An error occurs if you try to create a combobox with a
  space in its pathname

  Here are the changes I made to get it working, please
  patch the next release, they look fairly harmless...

  $ diff BWidget-1.7.0/entry.tcl entry.tcl
  140c140
  <       "return \[Entry::_path_command $path \$cmd
  \$args\]"
  ---
  >       "return \[Entry::_path_command [list $path]
  \$cmd \$args\]"
  159c159
  <     foreach $vars [eval Widget::hasChangedX $path
  $opts] { break }
  ---
  >     foreach $vars [eval {Widget::hasChangedX $path}
  $opts] { break }
  $ diff BWidget-1.7.0/arrow.tcl arrow.tcl
  90c90
  <     eval canvas $path.c $submaps(.c)
  ---
  >     eval {canvas $path.c} $submaps(.c)

  Cheers


tkt_uuid: 2840147fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: tar
priority: 5 Medium
foundin: None
resolution: Accepted
title: Add prefix to name of file added to tarball
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: 523036ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: 'make install' errors
comment:
  $ make install
  ...
  Installing doctools in
  /usr/local/lib/tcllib1.2/doctools
  /usr/bin/install: ./modules/doctools/*.tcl: No such
  file or directory
  ...
  Installing documentation for calendar
  sed: can't read ./modules/calendar/*.n: No such file or
  directory
  /usr/bin/install: installing multiple files, but last
  argument (/usr/local/man/mann/wm.n) is not a directory
  Try `/usr/bin/install --help' for more information.
  ...
  Installing documentation for doctools
  sed: can't read ./modules/doctools/*.n: No such file or
  directory
  /usr/bin/install: installing multiple files, but last
  argument (/usr/local/man/mann/wm.n) is not a directory
  Try `/usr/bin/install --help' for more information.
  ...


tkt_uuid: 2798450fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: uri
priority: 5 Medium
foundin: None
resolution: None
title: uri::split provides no user and pwd without (default) scheme
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: 599306ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 8
foundin: None
resolution: Fixed
title: master index exposes unsupported pkgs
comment:
  dgp
  Uh, oh.  The "master" pkgIndex.tcl file for tcllib
  bypasses sanity checks. 
  dgp
  Can't think it through now; will report as a bug.
  aku
  What checks are bypassed ? Or do you mean its mere
  presence bypasses some checks in the safe stuff ?
  schlenk
  The pkgIndex.tcl file in tcllib1.3 main directory can
  load packages that can not be loaded directly, so it
  bypasses access restrictions.
  dgp
  I mean because it offers [package ifneeded] scripts for
  packages, the actual indexes for those packages lose
  any control they have.
  dgp
  take a look at the pkgIndex.tcl for control
  steveo saunters in.
  dgp
   if {![package vsatisfies [package provide Tcl] 8.2]}
  {return}
  package ifneeded control 0.1.1 [list source [file join
  $dir control.tcl]]
      * suchenwi goes home - a great weekend to y'all! 
  dgp
  It's coded that way to prevent any attempts to load
  control 0.1.1 into a pre-Tcl-8.2 interp.
  dgp
  But the tcllib pkgIndex.tcl is giving away the secret.
  suchenwi macht wie eine Banane ...
  dgp
  I know this was a big problem when prepping the 1.3
  release.
  dgp
  ...but this wasn't the right solution.
  schlenk
  So we have more than one bug: 1. bad pkgIndex.tcl for
  tcllib, that bypasses sanity checks 2. bad security
  checks, that allow loading of packages, that should not
  be loadable in a safe interp
  aku
  Yeah, I see.
  schlenk
  3. Inconvenient access for safe interp to tcllib modules.
  aku
  The alternative is to source all subordinate package
  indices directly, no ?
  aku
  ... Or maybe inlining them into the main package index. ...
  dgp
  I can't devote the time and attention required to come
  up with the right solution right now.
  dgp
  I recall from the previous discussion that just about
  every alternative has problems.


tkt_uuid: 806537ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: bwidget - Progressbar problem
comment:
  Hi,

  When using the progressbar widget with large values, it
  is not 
  correctly drawn.  The following script shows the
  behaviour on my (32 bit arithmetic) machine:


  package require BWidget

  set max  100000000
  set incr   1000000

  pack [ProgressBar .pb -maximum $max -variable x]

  for { set x 0 } { $x < $max } { incr x $incr } {
      after 10
      puts $x
  }


  The attached patch fixes this problem.

  Kind regards,

  Jos


tkt_uuid: 1954771fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: nameserv (aka nns)
priority: 5 Medium
foundin: None
resolution: Fixed
title: Missing "variable comm" in nns.tcl
comment:
  In ::nameserv::configure there is a missing "variable comm".  This results in undefined variable from line 253 ( if { $comm ne ""} { ).


tkt_uuid: 851495ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Enable drag and drop by default for ListBox
comment:
  I suggest adding two new defaults to ListBox widgets:

      Widget::declare ListBox {
          ...
  {-dragenabled      Boolean  1  1}
  {-dropenabled      Boolean  1  1}
      }


  The latest ListBox has a default for -dropcmd, which
  allows you to move list items within the widget. 
  However, you have to explicity set -dragenabled and
  -dropenabled to true before this starts working.  By
  defaulting these options to true, all ListBoxes get the
  feature without extra code clutter.


tkt_uuid: 988123ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: "./sak.tcl nroff" fails
comment:
  The output is:

  Gen (nroff): ./modules/asn/asn.man
  Gen (nroff): ./modules/base64/yencode.man
  Gen (nroff): ./modules/base64/base64.man
  Gen (nroff): ./modules/base64/uuencode.man
  Gen (nroff): ./modules/bee/bee.man
  command "dt" already exists, unable to create doctools
  object
      while executing
  "::doctools::new dt  -format $fmt  -module $m"
      (procedure "gendoc" line 19)
      invoked from within
  "gendoc nroff n"
      ("eval" body line 1)
      invoked from within
  "eval gendoc nroff n    $argv"
      (procedure "__nroff" line 1)
      invoked from within
  "__$cmd"
      (file "./sak.tcl" line 1582)


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

  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: 978510ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: tkchat should add "package require Tcl 8.4"
comment:
  I tried running tkchat.tcl under Tcl 8.3, but it blew
  up because several places in the code require 8.4
  (lsearch switches, etc.).  You might want to add a
  "package require Tcl 8.4".  

  If anyone decides to support 8.3, contact me for a list
  of bugs I encountered.  I managed to get it to at least
  come up and display a few messages with only a few
  changes, but there might be deeper problems I haven't
  encountered yet.

  --willdye ("BobaFudd" on tkchat)


tkt_uuid: 709495ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: SpinBox widget problem
comment:
  I have made changes to the SpinBox widget of the
  BWidget library that seem to fix the following:

  The SpinBox widget of the BWidget library does not
  automatically turn over to the minimum/maximum value.
  That is, when the user selects the down arrow until the
  minimum value is reached, then selects the down arrow
  again, the widget should turn over to the maximum
  value. The widget should also turn over to the minimum
  value when the hiighest value is reached and the up
  arrow is selected.

  My new version of the file is attached. Please contact
  me and let me know if you agree at the email address
  indicated below.

  Take care,
  Cecelia Mitchell (cece.mitchell@noaa.gov)
  Applications Developer
  RS Information Systems


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


tkt_uuid: 723402ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: tree
priority: 8
foundin: None
title: Key/Value Filtering Support: myTree children $node -key len*
comment:
  It sure would be nice to be able to collect children of a 
  node within a struct::tree by filtering for key names 
  and/or values.

  CURRENT:
  myTree children $node
  -->> {List of Children Nodes of $node}


  PROPOSED:
  myTree children $node -key len*
  --> {List of nodes that have a key value matching "len*"

  myTree children $node -key length -value >50
  -->> {List of children who have a key name "length" and 
  the value of that key is greaterthan "50".

  myTree children -allchildren -- $node -key length
  --> the "-allchildren" option would toggle the search to 
  extract any sub-children through the rest of the structure 
  from the given node that have a -key of "length" -- same 
  capabilities for -value search also.

  For each example, the search options could be either 
  conventional glob/string matching and/or regexp.

  The last example would be particularly useful when 
  trying to quickly extract ALL nodes from a tree structure 
  that meet some particular characteristic(s) instead of 
  walking the entire structure node-by-node....  This would 
  greatly enhance the speed and performance for making 
  global changes quickly without evaluating ever node - 
  especially if a list of nodes is obtained quickly with one 
  command.

  This would also permit users to quickly digest statistics 
  about the structure without a walk -command -- sub-
  command strcutre to build up results based on a walk.


  Any Questions?

  David Bigelow
  davidhbigelow@compuserve.com


tkt_uuid: 765321ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 5 Medium
foundin: None
resolution: Fixed
title: lcsInvertMerge dies with: can't read "type": no such variabl
comment:
  Create following proc

  proc diff2 {s1 s2} {
      set l1 [split $s1 {}]
      set l2 [split $s2 {}]
      set x [::struct::list longestCommonSubsequence $l1 $l2]
      ::struct::list lcsInvertMerge $x [llength $l1]
  [llength $l2]
  }

  call with:

     diff2 ab "a b"

  and it dies with

  can't read "type": no such variable
      while executing
  "string equal $type unchanged"
      (procedure "LcsInvertMerge2" line 24)
      invoked from within
  "LcsInvertMerge2 [::lindex $lcsData 0] [::lindex
  $lcsData 1] $len1 $len2"
      (procedure "::struct::list::LcsInvertMerge" line 2)
      invoked from within
  "::struct::list::LcsInvertMerge {{0 1} {0 2}} 2 3"
      ("eval" body line 1)
      invoked from within
  "eval [linsert $args 0 ::struct::list::$sub"
      (procedure "::struct::list" line 16)
      invoked from within
  "::struct::list lcsInvertMerge $x [llength $l1]
  [llength $l2]"
      (procedure "diff2" line 5)
      invoked from within
  "diff2 ab "a b""

  Hope this is enough info.

  Regards,

  Ashley Sanders a.sanders@mcc.ac.uk


tkt_uuid: 485715ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
resolution: None
title: csvcut example program output problem
comment:
  csvcut produces "non-standard" (whatever that means :-)
  output for csv input files with fields with embedded
  blanks:

  $ cat /tmp/sample.csv
  1,2,"this is a test",4
  $ csvcut 0-4 /tmp/sample.csv
  1,2,this is a test,4

  Notice the quoting of the column with spaces is lost
  during the cut.  If the quoted field contains a comma,
  the spacing is maintained however!


tkt_uuid: 943146ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: nroff formatting eats backslashes
comment:
  with [const {\u001A}] in a doctools formatted
  document, the literal backslash gets passed
  through fine, but since \ is an nroff-special
  character, it doesn't appear in the displayed
  documentation.

  Seems the nroff formatting needs to add
  some \-escaping.


tkt_uuid: 567079ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: `make dist` recursion
comment:
  A `make dist` in the top directory of tcllib
  leads to infinite recursion of copying tcllib
  files into a subdirectory, then that subdir
  into its subdir. etc.

  Simple workaround, and better practice, is
  to do builds from another directory, but it's
  common for people to build in the source
  directory, and if they `make dist` they
  will fill their disks.


tkt_uuid: 792674ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Works For Me
title: ComboBox list size bug
comment:
  When the script below is executed using BWidget-1.4.1,
  it works fine.  However using BWidget-1.6.0 causes this
  code to seg-fault.  To crash this code drop down the
  list and select an item.  Then repeat.  When the list
  is resized, thats all folks!  My debugging tells me
  that there is memory usage problems in the Tk library.
   valgrind displays an 'invalid read of size 4'  So
  there must have been a change somewhere in the current
  BWidget version that brought out an old bug in Tk.  Or
  I could be wrong.  Any Idea how to fix this?  

  proc change_b { b } {
      set size [random 29]
      set vlist ""

      for {set i 0} {$i<$size} {incr i} {
  lappend vlist [clock seconds]
      }
      $b configure -values $vlist
  }

  proc main { } {

      set width 200
      set height 200
      #    BWidget::place . $width $height center
      wm geom . ${width}x${height}
      wm deiconify .
      raise .
      focus -force .
      set rt [catch {set version [package require
  BWidget]} err]

      if {$rt != 0} {
  puts "error getting package BWidget"
  return
      }

      set .b [ComboBox .b -modifycmd {change_b .b}]
      .b configure -values "Select an item"
      pack .b -side top
  }

  main
  wm geom . [wm geom .]


tkt_uuid: 1703408fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: asn
priority: 3 Low
foundin: None
resolution: Fixed
title: Routine for setting the ASN NULL encoding
comment:
  Hello,
  while using the ASN TclLib1.9 I realised that I got a routine for reading the ASN NULL value but none for setting one. Is this correct?
  If it is could we add it to the lib?
  Kind regards
  KK 


tkt_uuid: 3300362fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: tklib :: tooltip
priority: 3 Low
foundin: None
title: Tooltip font, msgcat namespace
comment:
  Leaving BWidget, I was looking to the tktooltip package. Here are two comments:

  1) Tooltip font
  Currently, the default font for labels is used as tooltip font.
  This might not be the desired font.
   Since Tk8.5, there is the special font "TkTooltipFont" containing the current tooltip font which might be used.
  Possible code from BWidget: 
      if {$::tcl_version >= 8.5} {
          set fontdefault TkTooltipFont
      } elseif {$Widget::_aqua} {
          set fontdefault {helvetica 11}
      } else {
          set fontdefault {helvetica 8}
      }
     label -font $fontdefault

  2) msgcat namespace
  IMHO, the use of msgcat within tooltips is half baken:
  - the namespace where msgcat::mc is called should be the namespace of the caller and not ::tooltip
  - there are no parameters allowed to" msgcat::mc"

  Suggestion:
  - save the caller namespace on tooltip creation for a later msgcat call
  - add a "--" option to the arguments to stop argument parsing
  - Allow to have multiple arguments after the message key.
    Save it as list and pass it to msgcat as arguments.

  Possible msgcat call with namespace and arguments
    namespace eval $ns [concat ::msgcat::mc $lkey]

  I would volonter to submit a patch for the two issues if this sounds reasonable

  - Harald


tkt_uuid: 2845453fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: None
title: MessageReceiver fails to read sequence byte on empty socket
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: 1166235fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Out of Date
title: NoteBook delete reindexing
comment:
  version 1.7

  In NoteBook::delete

      foreach tmpPage [lrange $data(pages) $newPos end] {
  set pageToIndex($page) $newPos

  needs to be 

      foreach tmpPage [lrange $data(pages) $newPos end] {
  set pageToIndex($tmpPage) $newPos


tkt_uuid: 1272899fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
resolution: Fixed
title: math::combinatorics - failed tests with Tcl 8.5
comment:
  ==== combinatorics-2.7 math::factorial, exponent
  overflow FAILED
  ==== Contents of test case:

      catch { math::factorial 171 } msg
      list $msg $::errorCode

  ---- Result was:
  Infinity {ARITH DOMAIN {argument to math::factorial
  must be greater than -1.0}}
  ---- Result should have been (exact matching):
  {floating-point value too large to represent} {ARITH
  OVERFLOW {floating-point value too large to represent}}
  ==== combinatorics-2.7 FAILED


  ==== combinatorics-3.10 math::choose big args FAILED
  ==== Contents of test case:

      catch { math::choose 1500 750 } msg
      list $msg $::errorCode

  ---- Result was:
  Infinity {ARITH DOMAIN {second argument to math::choose
  must be non-negative, or both must be integers}}
  ---- Result should have been (exact matching):
  {floating-point value too large to represent} {ARITH
  OVERFLOW {floating-point value too large to represent}}
  ==== combinatorics-3.10 FAILED


  ==== math-7.4 math::cov FAILED
  ==== Contents of test case:

      catch { math::cov 0 2 1 0 } msg
      set msg

  ---- Result was:
  Infinity
  ---- Result should have been (exact matching):
  divide by zero
  ==== math-7.4 FAILED


tkt_uuid: 1720896fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: general request
priority: 5 Medium
foundin: None
title: test suite enhancement - bug report files
comment:
  I'd like to request that, as a part of the tcllib test suite, one or more files be generated when tests fail, that would contain information formatted in such a way as to make submission of the bugs to the web site relatively trivial.

  In this way, after someone runs the tests, they could, if they so wanted, pop over to the sf.net site and submit a series of bug reports on problems seen.


tkt_uuid: 862638ffffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: None
title: can't read &quot;ftp(Wait)&quot;: no such variable - background error
comment:
  When an FTP session is close, all the variables has been 
  unset. However, the ::ftp::Timeout{} event is still be 
  triggered. This event will read the ftp(Wait) variable 
  that doesn't exist because it has already been unset 
  during ftp close session. Therefore, this background 
  error occur.  To fix this or to work around, we need 
  check whether if the ftp(Wait) variable is exist 
  in ::ftp::Timeout{} procedure, then we only procceed 
  on the event. 

  proc ::ftp::Timeout {s} {
      upvar ::ftp::ftp$s ftp
      if {[info exist ftp(Wait)]} {
          after cancel $ftp(Wait)
          set ftp(state.control) 1

          DisplayMsg "" "Timeout of control connection after 
  $ftp(Timeout) sec.!" error
          Command $ftp(Command) timeout
      }
      return
  }

  This only happen when we use ftp in asynchronous 
  mode.

  My Email:
  champdog_s1977@hotmail.com


tkt_uuid: 777061ffffffffffffffffffffffffffffffffff
type: Patch
status: Open
subsystem: None
priority: 5 Medium
foundin: None
resolution: None
title: add images to widget::balloonhelp
comment:
  Allow images in the balloonhelp label for
  balloonhelp.tcl using -image name.  For tcl 8.4, also
  accept -compound position.  

  Use resources to define the label properties.  

  Have label wrap at 3i.


tkt_uuid: 2168846fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: tklib :: plotchart
priority: 5 Medium
foundin: None
resolution: None
title: tklib test suite for plotchart generates core
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: 1050377fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: SMTP AUTH problems.
comment:
  A sourceforge viewer contacted me about not being able to
  get -username/-password to work in tcllib-1.7 smtp.tcl.

  I encoded the username/password for a hand-telnet test and
  got that to work, then figured out what was wrong and told the
  user who then reported success in using it.

  Here's the problem.

  The SMTP server responded:

  250-AUTH LOGIN CRAM-MD5 PLAIN

  The smtp.tcl code tried CRAM-MD5 first, and for whatever
  reasons, that failed.

  535 authorization failed.(#5.7.0)

  Once that failed, no further AUTHs would work.

  The smtp.tcl code then tried requesting AUTH LOGIN, and
  received this from the SMTP server:

  502 unimplemented (#5.5.1)

  The smtp.tcl then tried AUTH PLAIN, receiving the same error.

  I had the user edit this line:

  foreach mech [list DIGEST-MD5 CRAM-MD5 LOGIN PLAIN] {

  to be:

  foreach mech [list LOGIN PLAIN] {

  And he reported it was working.

  Perhaps choose the SMTP server's offerings in the
  order they are given, instead of smtp.tcl's decision
  to use the "most secure" sequence first. Or make
  smtp.tcl break the connection before trying the next
  variation. Or let the user choose which one to use.

  In any case, the smtp.tcl module does not show the
  dialog sequence when a failure happens. I'd suggest
  having it cough that up when a failure occurs. Less
  technical users don't have a chance of figuring out
  what's wrong without a more detailed diagnostic.


tkt_uuid: 565284ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: Notebook can't cope with multi-line-text
comment:
  I'd like to have a page-"label" with newlines in it.
  Only the first line can be seen in the label.
  This is due to the calculation of the height of the tabs in 
  function:
  NoteBook::create (and NoteBook::configure)
  which calculates the height like this:
  [expr {[font metrics $font -linespace] + 6}]

  Maybe the delta (6) should be configurable anyway, 
  because the texts (if the tabs are placed "top") are very 
  close to the tab-panes. So for my taste, I would like to 
  have
  [expr {[font metrics $font -linespace] + 8}]

  May be an additional option like: -text_offset_y or 
  something similar would do it.

  By the way, the width again is o.k. even with multiline-
  texts.


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

  test name 'asn-17.5' re-used; prior use in
  /local/src/tcllib/modules/asn/asn.test
  test name 'asn-18.6' re-used; prior use in
  /local/src/tcllib/modules/asn/asn.test


tkt_uuid: 737171ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Documentation
priority: 5 Medium
foundin: None
resolution: Fixed
title: Suggested fix for two typos in dtp docs
comment:
  dtp , a program in tclapps, should have the following
  two typos fixed:

  approx. line 42 - change appropiate to appropriate.

  approx. line 50 - copleted should be completed.


tkt_uuid: 527029ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
title: Online help for mpexpand
comment:
  Add option -help which when used causes
  mpexpand to dump a short help on its use
  (options, arguments) to stdout.

  Add option -help-fmt which when used
  dumps a quick reference of the doctools
  manpage format to stdout.


tkt_uuid: 1800420fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: doctools nroff output for type/arg reversed
comment:
  This markup:


    [section Arguments]
    [list_begin arguments]

    [arg_def [type Ns_Sls] *sls in/out]

    An opaque SLS slot handle.


  Produces this HTML output:


    ARGUMENTS

    Ns_Sls *sls (in/out)
      An opaque SLS slot handle.



  Which is correct. The nroff output looks like this:


    ARGUMENTS
      *sls Ns_Sls (in/out)
        An opaque SLS slot handle.


  The type and argument names have switched position, which looks weird.


tkt_uuid: 479935ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: MainFrame font configuration added
comment:
  Motivation:
  There is currently no way to set the menu and status
  bar fonts (sometimes needed for e.g. visually impaired)
  for the MainFrame widget.

  Remedy:
  This patch adds code to support options: -menubarfont,
  -menuentryfont and -statusbarfont at creation time of
  the widget as well as subsequent configures.

  Compatibility:
  The code extends the MainFrame configurability and does
  not interfere with older version usage.

  Bugs:
  None known so far. Documentation of these features must
  be included in the doc if accepted.

  Patch:
  The attached file contains a contextual diff and the
  complete new mainframe.tcl. BEWARE: the diff is based
  on my personal version of mainframe.tcl that already
  contains another patch (SF #470273: BWidget: MainFrame
  menu inconsistency), the new mainframe.tcl has it also
  incorporated.


tkt_uuid: 702169ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: tcl nits picked in tkchat
comment:
  I'm attaching a patch to this feature request - it is
  just a set of changes to add -- to regexp, add switch
  default actions, and to brace some expr's.


tkt_uuid: 953075ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Invalid
title: ScrolleableFrame packs weird
comment:
  The BWidget demo displays so wrong behaviour.
  In the ScrolleableFrame it packs 20 entry fields
  and packs them with -fill both and -expand yes.

  However its seems like the expand tag is lost
  somewhere.


tkt_uuid: 1850838fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tie
priority: 5 Medium
foundin: None
resolution: Fixed
title: tie writes utf-8, reads file with source
comment:
  On 14 Dez., 12:00, Vaclav Snajdr <snajdr.vac...@t-online.de> wrote on c.l.t: 

  > An array filled with words containing german umlauten like ü, Ü, ä, Ä, and 
  > so on, is transfered with the package "tie" in a file. 
  > ...
  > For example the word "lT-Stücke" ist stored in follow way 

  > ::a_20 
  > (lT-StÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂcke 
  > aus duktilem Eisen) 

  Yes, I could reproduce the problem with tie 1.1 as comes with Tcllib 1.10 (Win XP, ActiveTcl 8.4.16). Debugging this highly engineered piece of software, I found that most file handling configures the encoding to utf-8... *except* the tie::std::file method Replay where it says in tie_file.tcl, line 180: 
           $ip invokehidden -global source $path 

  Now, as we all know, [source] uses system encoding, which often is not utf-8. Such asymmetry (write utf-8, read cp1252 in my case), when done often enough, leads to such garbage as you demonstrated. 

  Quick fix: replace that line with 
          set fp [open $path] 
          fconfigure $fp -encoding utf-8 
          $ip eval [read $fp][close $fp] 


tkt_uuid: 1841979fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: grammar_fa
priority: 5 Medium
foundin: None
resolution: Accepted
title: Tests for grammar::fa::op::toRegexp
comment:
  Here are two tests for grammar::fa::op::toRegexp and
  grammar::fa::op::toTclRegexp which do not depend on 
  details of the implementation. The idea is to construct 
  an automaton which keeps track of of remainder modulo 3 
  (in order to keep it small; one could probably pick a larger 
  divisor, but I don't think it would make the test a better 
  error detector) while scanning the digits of a number, 
  then use that to generate a Tcl regexp for numbers belonging 
  to a particular modulo class, and finally compare the 
  result of [regexp] to the result of the straightforward 
  [expr] expression. The result is the list of numbers for 
  which these don't agree, so the correct result is empty 
  in both cases.

  I'm afraid I'm not quite sure how to best turn this into 
  a formal test, however.

  This first block of code tests integers in base 10 for being 
  congruent to 2 mod 3.

  set fa [grammar::fa decimal_2_mod_3]
  $fa state add 0 1 2
  $fa symbol add 0 1 2 3 4 5 6 7 8 9
  foreach state [$fa states] {
      foreach digit [$fa symbols] {
          $fa next $state $digit --> [expr {(10*$state + $digit) % 3}]
      }
  }
  $fa start add 0
  $fa final add 2
  set RE ^([
      grammar::fa::op::toTclRegexp [grammar::fa::op::toRegexp $fa] {}
  ])\$
  set res {}
  for {set n 0} {$n<1000} {incr n} {
      if {[regexp $RE $n] != ($n % 3 == 2)} then {lappend res $n}
  }
  $fa destroy
  set res

  This second block of code tests integers in base 8 for being 
  congruent to 1 mod 3.

  set fa [grammar::fa octal_1_mod_3]
  $fa state add 0 1 2
  $fa symbol add 0 1 2 3 4 5 6 7
  foreach state [$fa states] {
      foreach digit [$fa symbols] {
          $fa next $state $digit --> [expr {(8*$state + $digit) % 3}]
      }
  }
  $fa start add 0
  $fa final add 1
  set RE ^([
      grammar::fa::op::toTclRegexp [grammar::fa::op::toRegexp $fa] {}
  ])\$
  set res {}
  for {set n 0} {$n<4096} {incr n} {
      if {[regexp $RE [format %o $n]] != ($n % 3 == 1)} then {lappend res $n}
  }
  $fa destroy
  set res

  One limitation of these tests is however that they don't check 
  all parts of the regexp; some parts of it simply require longer 
  strings than the 3 and 4 respectively digits occurring in this 
  test. I'm working on a test that generates strings from the 
  regexp instead (essentially sampling the underlying language) 
  so that (in a sense) the implication can be tried the other way 
  round as well, but this string generation is itself a generally 
  useful operation on regexps, so I'll probably add that as 
  Yet Another regexp operation...


tkt_uuid: 458023ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Fixed
title: urlStub always returns ""
comment:
  cgi::urlStub is intended to return either 
  env(SCRIPT_NAME) or a value set by a previous call to 
  the proc.  It's missing a global env declaration and 
  so always fails to find a value for SCRIPT_NAME and 
  returns "" instead.

  The patch is simple, in ncgi.tcl:

   proc ncgi::urlStub {{url {}}} { 
       variable urlStub 
  +    global env
       if {[string length $url]} {


tkt_uuid: 2798448fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: uri
priority: 5 Medium
foundin: None
resolution: None
title: uri::split makes host to path without scheme
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: 547274ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Fixed
title: ncgi:nvlist bug
comment:
  When I have POST header as of 
  application/x-url-form-encoded;encoding=ISO-8859-1
  I got the following error message:


  Unknown Content-Type: application/x-www-form-
  urlencoded; charset=ISO-8859-1
      while executing
  "ncgi::nvlist"
      (procedure "ncgi::input" line 11)
      invoked from within
  "ncgi::input"
      (file "/var/www/billing/callback.tcl" line 6)

  I realized that probably 
  string 296 of cgi.tcl
  should be

  application/x-www-form-urlencoded*
  instead of just
  application/x-www-form-urlencoded    


tkt_uuid: 3433470fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Development Tools
priority: 9 Immediate
foundin: None
resolution: Fixed
title: Expired certificates
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: 1730868fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: None
priority: 5 Medium
foundin: None
title: install as Tcl Modules
comment:
  Following the instructions in
  INSTALL.txt installs the packages
  in a [tclPkgUnknown]-compatible
  install scheme.

  Where Tcl Module installation is
  support, it ought to be a better
  choice.

  I request that the tcllib install
  machinery permit Tcl Module
  installation, at least as an option,
  and preferably moving fairly quickly
  to being the default option.


tkt_uuid: 1658089fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Fixed
title: snitfaq typo report
comment:
  I'm looking at the latest tcllib cvs head.

  1. Under the section "what are snit's goals", the
  first point says "a snit object should should" -
  one of those two "should"s probably should be
  deleted.

  2. Later on, under the heading "What is an abstract data type?",
  the second sentence
  begins "In systems that include include ..."
  That second "include" can be deleted.

  3. Under "Can objects be renamed?", the first example, that of a callback
  command to another object, fails to display in the formatted doc.
  Here's what I see when I do a "man -s n snitfaq"

       o    If the object is renamed, however, then $self's value will
            change.  Therefore, don't use $self for anything that will
            break if $self changes. For example, don't pass a callback
            command to another object like this:

            You'll get an error if .btn calls your command after your
            object is renamed.

  4. In this same section of doc, there is the statement:

  Instead, the your object ...

  but I think that should be:

  Instead, your object ...

  (without the "the")

  5. The bullet mentioned in (4) is also not displaying its example code.

  6. Under How do I destroy a Snit Object, the example of
  using the destroy method appears twice. The first example should
  be removed to improve the flow of reading.


tkt_uuid: 1566434fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: stooop
priority: 5 Medium
foundin: None
resolution: Fixed
title: stooop-87 fails with Tcl 8.5
comment:
  In stooop-4.4.1 (tcllib-1.9-rc1):

  ==== stooop-87 verify member writing and unsetting
  within class namespaces in member data checking mode
  (it seems that unset tracing prevents error reporting
  at this time (bug?)) FAILED
  ==== Contents of test case:

      set interpreter [interp create]
      $interpreter eval {
          # reset any existing environment variables:
          foreach name [array names env STOOOP*] {unset
  env($name)}
          set env(STOOOPCHECKDATA) 1
      }
      $interpreter eval "source $source; namespace import
  stooop::*"
      set result [$interpreter eval {
          class a {
              set (m) 0
          }
          proc a::a {this} {
              set ($this,n) 0
          }
          proc a::~a {this} {}
          set o [new a]
          catch {class b {incr a::(m)}} message; lappend
  ::result $message
          catch {class b {incr a::($o,n)}} message;
  lappend ::result $message
          catch {class b {unset a::(m)}} message; lappend
  ::result bug
          catch {class b {unset a::($o,n)}} message;
  lappend ::result bug
          delete $o

          class A {
              set (m) 0
              proc A {this} {
                  set ($this,n) 0
              }
              proc ~A {this} {}
          }
          set o [new A]
          class B {
              catch {incr A::(m)} message; lappend
  ::result $message
              catch {incr A::($o,n)} message; lappend
  ::result $message
              catch {unset A::(m)} message; lappend
  ::result bug
              catch {unset A::($o,n)} message; lappend
  ::result bug
          }
          delete $o

          class c {}
          class c::d {
              set (m) 0
          }
          proc c::d::d {this} {
              set ($this,n) 0
          }
          proc c::d::~d {this} {}
          set o [new c::d]
          catch {class c::e {incr c::d::(m)}} message;
  lappend ::result $message
          catch {class c::e {incr c::d::($o,n)}} message;
  lappend ::result $message
          catch {class c::e {unset c::d::(m)}} message;
  lappend ::result bug
          catch {class c::e {unset c::d::($o,n)}}
  message; lappend ::result bug
          delete $o

          class C {
              class D {
                  set (m) 0
                  proc D {this} {
                      set ($this,n) 0
                  }
                  proc ~D {this} {}
              }
              set ::o [new D]
              class B {
                  catch {incr C::D::(m)} message; lappend
  ::result $message
                  catch {incr C::D::($o,n)} message;
  lappend ::result $message
                  catch {unset C::D::(m)} message;
  lappend ::result bug
                  catch {unset C::D::($o,n)} message;
  lappend ::result bug
              }
          }
          catch {incr C::D::(m)} message; lappend
  ::result $message
          catch {incr C::D::($o,n)} message; lappend
  ::result $message
          catch {unset C::D::(m)} message; lappend
  ::result bug
          catch {unset C::D::($o,n)} message; lappend
  ::result bug
          delete $o

          set ::result
      }]
      interp delete $interpreter
      set result

  ---- Result was:
  {can't set "a::(m)": class access violation in class b
  namespace} {can't set "a::(1,n)": class access
  violation in class b namespace} bug bug {can't set
  "A::(m)": class access violation in class B namespace}
  {can't set "A::(2,n)": class access violation in class
  B namespace} bug bug {can't set "c::d::(m)": class
  access violation in class c::e namespace} {can't set
  "c::d::(3,n)": class access violation in class c::e
  namespace} bug bug {can't set "C::D::(m)": class access
  violation in class C::B namespace} {can't set
  "C::D::(4,n)": class access violation in class C::B
  namespace} bug bug 1 1 bug bug
  ---- Result should have been (exact matching):
  {can't set "a::(m)": class access violation in class b
  namespace} {can't set "a::(1,n)": class access
  violation in class b namespace} bug bug {can't set
  "A::(m)": class access violation in class B namespace}
  {can't set "A::(2,n)": class access violation in class
  B namespace} bug bug {can't set "c::d::(m)": class
  access violation in class c::e namespace} {can't set
  "c::d::(3,n)": class access violation in class c::e
  namespace} bug bug {can't set "C::D::(m)": class access
  violation in class C::B namespace} {can't set
  "C::D::(4,n)": class access violation in class C::B
  namespace} bug bug {can't read "C::D::(m)": no such
  element in array} {can't read "C::D::(4,n)": no such
  element in array} bug bug
  ==== stooop-87 FAILED


tkt_uuid: 1847125fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: statistics
priority: 5 Medium
foundin: None
resolution: Fixed
title: Modified pnorm function
comment:
  Hello,

  I was using pnorm with some large values for the argument and having it blow up (floating-point value too large). I've made a modified version that swaps from the series expansion (the current approach) to a continued fraction, depending on the size of the argument. I'm attaching the file.

  It works pretty well! I've reported some test values at the end of the file.

  Eric


tkt_uuid: 1969042fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: doctools
priority: 5 Medium
foundin: None
title: Typewriter/fixed-width font
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: 2025485fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: uevent
priority: 5 Medium
foundin: None
resolution: Fixed
title: uevent::unbind typo in variable name
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: 1779624fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: log
priority: 5 Medium
foundin: None
title: Execute a command only when debug is active.
comment:
  e.g display the results of info script when debug is active. 

  something like:
   
  ::log::lvSuppressLE emergency 0

  ::log::log debug [ info script ]


tkt_uuid: 1536890fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Duplicate
title: regexp usage is inefficient and can hang
comment:
  using regexp in ::ncgi::nvlist is slower that the 
  usage of string methods (although it looks better).
  regexp also causes problems with bigger data which can 
  cause ncgi to get stuck (try running it on big post 
  data).
  replace:

  if {![regexp -- (.*)=(.*) $x dummy varname val]} {
            set varname anonymous
            set val $x
        }


  with: 
  set idx [string last "=" $x]
  if {$idx==-1} {
     set varname anonymous
    set val $x
  } else {
      set varname [string range $x 0 [expr {$idx-1}]]
      set val [string range $x [expr {$idx+1}] end]
  }


tkt_uuid: 864530ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: md5
priority: 8
foundin: None
resolution: Wont Fix
title: md5::md5 -- incompatible API change in 2.0
comment:
  Previously, [md5::md5 $data] returned a result as a hex
  string; as of version 2.0, it returns it as binary.
  Although this is noted in the ChangeLog, it is easy to
  miss, and is sure to cause many hard-to-track-down
  errors when users upgrade to the next release of tcllib.

  This seems like a gratuitous incompatibility.  Please
  make '-hex' the default, for compatibility with tclllib
  1.4, and add a '-bin' or '-binary' option for those
  that want the new behaviour.


tkt_uuid: 424797ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: Accepted
title: Behaviour diff cmp to Solaris ftp/ftpd
comment:
  When fetching files using the standard Solaris 2.6 ftp
  client, the "get" semantics are different using the
  ftpd server compared to using the standard Solaris ftp
  server. Consider the following example, where the
  remote file "test/file1" does not exist and the remote
  file "test/file2" does exist:
   
  $ ftp -n <<EOF
  open localhost 12344
  user someuser somepwd
  get test/file1 file1
  get test/file2 file2
  quit
  EOF

  Using the Solaris ftp server, the command above fetches
  the file "test/file2". Using the ftpd server, the
  command above does not fetch the file "test/file2".

  I'm not really sure whether this is an error in the ftp
  client shipped with Solaris or in the ftpd package,
  however the diff below seems to solve the problem.

  $ diff tcllib0.8/ftpd/ftpd.tcl ftpd.tcl ftpd_fix.tcl 
  1191c1211
  <       puts $sock "500 Copy Failed: $path\n$f"
  ---
  >       puts $sock "500 Copy Failed: $path $f"


tkt_uuid: 517599ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
title: Let mpexpand warn against visual tags
comment:
  Change the "mpexpand" application to optionally warn 
  the user when processing strong/emph tags => Reminder 
  to .man writer to use semantic tags, not visual ones.


tkt_uuid: 467876ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Out of Date
title: tkchat pops up User Info boxes
comment:
  After clicking on a user's name the site responds 
  with USERINFO lines. These get interpreted by 
  showInfo to display pop up boxes. When the display is 
  refreshed the same info is displayed repeatedly 
  filling the screen with User Info windows. 

  The attached patch keeps track of the User Info 
  strings displayed and only creates a toplevel if the 
  string is new.

  The patch also fixes the say proc a little to remove 
  unneeded puts.  

  Steve


tkt_uuid: 3487731fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pki
priority: 5 Medium
foundin: None
resolution: Duplicate
title: parse_csr errors
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: 748758ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Duplicate
title: ::ftp::NList + WS in FileNames
comment:
  Hi,

    I have files like:
      ttwosadmin2 Wed Jun 04 11:39:11 MEST 2003.tar.gz
    on a ftp-server.
    if I use the command:
      foreach F [::ftp::NList $FH [info hostname]*] { ... }
    I get every part of the name as single token
    like: ttwosadmin2, Wed, Jun ...


  mfg

    aotto


tkt_uuid: 1098051fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
resolution: None
title: bignum::rshift is wrong for negative inputs.
comment:
  Test cases to consider:

  [10:04]kbkOh, by the way, >> is wrong as well.
  [10:05]akuAre you talking about bignum::rshift ?
  [10:05]kbkUhm, yeah. -1>>1 is -1, not 0; -3>>1 is -2,
  not -1.
  [10:06]akuWell, rshift is not tested by the bignum
  testsuite.
  [10:06]kbkWell, I suppose that I've just proposed a
  couple of tests, then. 
  [10:07]akuYep
  [10:08]akuI will cut&paste this into a bug report

  And a solution, by Kevin:

  [10:08]kbkFixing that one is: A>>B = ~(~A>>B) =
  -((-A-1)>>B)-1

  Note: ~A is defined as (-A)-1 (Infinite precision
  two-complement).

  The general context is a talk on the chat about bignums
  in Tcl (core-level), something Kevin is working on, and
  for complete seamlessness he has to impl. all bitops,
  i.e. &, |. ^. Through this we also looked at the tcllib
  bignum code in this area. Especially as there is a RFE
  pending for more bitops as well.

  [10:11]akuWe might have to look at the
  set/clear/test-bit operators as well I guess.
  [10:12]kbkWell, for tcllib's bignums, we don't have
  to make them algebraically consistent with 2-s comp
  ints, because they can't appear in [expr].


tkt_uuid: 1144466fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: log
priority: 5 Medium
foundin: None
title: RFE: logger: customizable output format
comment:
  The current log output format of the logger pkg is:

  "[time] [service] [level]: 'msg'"

  I would like to see an easier method to change the
  output format instead of having to write a custom
  logproc to change it. For example, I would like to see
  the caller proc name also printed in the output message:

  "[time] [service] [proc] [level]: 'msg'"

  To support such a feature, the logger package should be
  enhanced with a new API say logger::format which would
  allow us to configure the logger output. Here's a
  suggested syntax for logger::format API:

  logger::format log ?<format>?
     where <format> allows you to specify percent
  substitutions; valid percent keys are %time,  service,
  %proc, %level, %callerstack and %message. The default
  <format> could be {[%time] [%service] [%level]:
  '%message'. If <format> is not specified, this command
  would return the format value set previously. Setting
  <format> to null {} will restore the default value.

  logger::format time ?-format <dateformat>? ?-gmt boolean?
    This cmd will allow the user to change the format of
  %time substitution. The <dateformat> would allow
  percent substitutions accepted by the [clock format
  -format ..] command. For example, if the user just
  wants to print 23:42:12 under %time, use the cmd
  [logger::format time -format %H:%M:%S]. Again the
  default value for the <dateformat> is same as for clock
  format command. If -format option is specified without
  any value, it will return the current value.

  logger::format service ?<format>?  where <format>
  supports substitutions (%parent %tail) for namespace
  qualifiers
  logger::format proc ?<format>? where <format> supports
  substitutions (%parent %tail) for namespace qualifiers 

  -----------------------Micahel's comments below--------

  I like this proposal, and it isn't really that hard to
  implement. Basically it calls for dynamic rewriting of
  the custom logging command which is called by the
  logger system with some more logic bits.
  I thought of something similar, a bit more flexible
  (but it got too complex then).

  The interesting part is, if the logger::format command
  should be a global option or a per service option. I
  can imagine good reasons for a per service option (for
  example think about tclhttpd, use one service for
  logging access to the server, then another for server
  errors and one for application code, each needs a
  different format basicallly.).

  Format inheritance would work as before. 


tkt_uuid: 470211ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: uri
priority: 5 Medium
foundin: None
resolution: Accepted
title: urn: scheme handling for uri module
comment:
  This is a package to extend the uri module of tcllib to
  handle the urn: scheme.

  package require uri::urn
  uri::split urn:uddi-org:app
  etc.


tkt_uuid: 830075ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 7 High
foundin: None
resolution: Fixed
title: fileutil::cat doesn't concatenate files
comment:
  fileutil::cat only accepts one filename as an argument,
  whereas the real cat takes files and concatenates them
  together.


tkt_uuid: 840571ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
title: fileType: Detect video
comment:
  Extended fileType to detect various video formats

  wmf - windows media player
  rm - real media
  mov - MOV format
  ogg/theora - ogg video format.
  mpeg2


tkt_uuid: 656336ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Duplicate
title: Highlighting for tkchat
comment:
  This code provides to highlight interesting text in the
  tkchat message window.

  The user interface can be invoked in two ways:
  1.) Through the Find entry on the FIle menu.
  2.) By entering /find in the message post window.
  (command line) The /find command may have an optional
  argument, which will then be used as the search string.

  To highlight an exact string or regexp pattern, enter
  it in "Find text" field.  All matches in the chat
  window will be highlighted.  Should the search be a
  time consuming one, it will pause when the Find dialog
  is closed and resume when it is re-opened.

  To remove all highlighting, clear the "Find text" field
  in the Find dialog.

  Known caveats:

  Sub-strings are not highlighted separately from the
  rest of the matching text when using regexp
  sub-matching. The whole match will be highlighted the
  same. This is a limitation of of the [text] -search
  command.


tkt_uuid: 914279ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: crc
priority: 5 Medium
foundin: None
resolution: Fixed
title: crc::crc32 and Trf
comment:
  When Trf is installed the data starting with the dash ('-') 
  lead to an error and end of otions option (--) doesn't work 
  either Examples: 
   
  set value "-hello world" 
   
  set x [ ::crc::crc32 $value ]  
   
  produces: 
   
  Error in startup script: bad option -hello world: must be 
  -filename, -format, -implementation or -seed 
      while executing 
  "::crc::crc32 $value " 
   
  set x [ ::crc::crc32 -- $value ]  
   
  produces: 
   
  Error in startup script: crc-zlib: wrong # args, all options 
  require an argument 
      while executing 
  "crc-zlib $s" 
      (procedure "crc::Crc32_trf" line 11) 
      invoked from within 
  "$impl [lindex $args 0] $seed" 
      (procedure "::crc::crc32" line 53) 
      invoked from within 
  "::crc::crc32 -- $value " 
   
  Changing line 167 in crc32.tcl (tcllib-1.6) from 
  binary scan [crc-zlib $s] i r 
  to 
  binary scan [crc-zlib -- $s] i r 
   
  solves the problem 
   
   


tkt_uuid: 914488ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Out of Date
title: Transfer rate should be under VERBOSE or DEBUG control
comment:
  This message:

    $ftp(Total) bytes sent in $elapsed seconds ($persec
  Bytes/s)

  in function ::ftp::ElapsedTime 

  is displayed as a debug message no matter what the
  value of ftp::DEBUG or ftp::VERBOSE.   I believe it
  should not be logged at all unless either of those
  flags are set to true.


tkt_uuid: 530207ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: matrix
priority: 5 Medium
foundin: None
resolution: Fixed
title: No documentation for printmatrix method
comment:
  The documentation for the ::struct::matrix module
  mentions methods for formatting the contents of a
  matrix, but it does not describe how to do this.

  It would be nice if this were illustrated with a simple
  example.


tkt_uuid: 511692ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Accepted
title: fix for mime.n mime::getproperty doc
comment:
  there was a formatting problem in the section of the .n
  where mime::getproperty was discussed.  The attached
  patch should fix this problem.


tkt_uuid: 1232385fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: struct::list filter -not switch
comment:
  Feature Request:

  Add -not switch to ::struct::list filter command so that 
  you can both filter and filter out.  This behavior mirrors 
  the tcl core lsearch -not switch.


tkt_uuid: 530059ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
title: Stricter check of incoming manpages
comment:
  The application of a format to a manpage should 
  perform stricter checks to ensure that the manpage
  is correct, i.e. conforming to the specification 
  in "format.man".

  This is a followup to the bug report

  "[528392] Missing commands in nroff format"

  which is invalid per se, but exposes that error
  messages generated during generation of the output
  may indicate errors in the manpage itself, and not
  in the doctools.


tkt_uuid: 839181ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: inifile
priority: 5 Medium
foundin: None
resolution: None
title: Not Found
comment:
  Are you  sure inifile is in the distribution of tcllib1.4 ? 
  Please verify, becouse all package work, bug inifile isn't 
  found.


tkt_uuid: 2897419fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: statistics
priority: 8
foundin: None
resolution: Fixed
title: beta-distribution-1.0 test failure (sol 2.8, sparc, 8.4.19)
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: 1218397fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 8
foundin: None
resolution: Invalid
title: "Can't find package md5c" error
comment:
  While using the (slightly modified - added username and
  password switches) "send_simple_message" sample code
  from the SMTP (v1.4) module's help file, I receive the
  following error:

  Error in startup script

  can't find package md5c
  while executing
  "package require md5c"
  invoked from within
  "smtp::sendmessage $token -recipients $recipient
  -servers...

  Here's the actual code...

  proc send_simple_message {recipient email_server
  subject body} {
      package require smtp
      package require mime

      set token [mime::initialize -canonical text/plain \
      -string $body]
      mime::setheader $token Subject $subject
      smtp::sendmessage $token \
      -recipients $recipient -servers $email_server \
      -username <myusername> -password <mypassword>
      mime::finalize $token
  }

  send_simple_message <email> <myserver> \
                    "Auto Send" "This is an
  auto-generated message"

  Obviously, data between "<...>" contains real (though
  somewhat sensitive) data in my case...

  Jeff


tkt_uuid: 1249079fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: install
priority: 7 High
foundin: None
resolution: Out of Date
title: non-root install fails
comment:
  Configure as follows:

  ./configure --prefix=/home/yourname/foo

  make install

  Should install LIBs and APPs in "foo", the app dtplite
  trys to install as /usr/bin/dtplite, it should not.

  It should install as: /home/yourname/foo/bin/dtplite


tkt_uuid: 1164663fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ldap
priority: 7 High
foundin: None
resolution: Fixed
title: package require ldap fails
comment:
  "package require ldap" fails with 'can't create
  procedure "::asn::getInteger": unknown namespace"

  I suspect someone copy/pasted this function from the
  ASN.1 module and forgot to change the namespace in the
  proc declaration.


tkt_uuid: 1220195fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtpd
priority: 5 Medium
foundin: None
resolution: Fixed
title: -deliverMIME option takes command not script prefix
comment:
  smtpd.tcl line 500 reads:

  set err [catch {$deliverMIME $tok} msg]

  should read:

  set err [catch {eval $deliverMIME $tok} msg]

  to be consistent with handling of -validate_* options,
  which take a script prefix and not a command.  This is
  noticable as a problem if one implements deliverMIME as
  (say) an object method.


tkt_uuid: 3613726fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: A Category Is Missing
priority: 5 Medium
severity: Minor
foundin: None
resolution: Fixed
title: rest package does not understand HTTP 303
comment:
  Hi all,

  While the rest package seems to handle HTTP codes 301/302 (and return an error with the Location header), it does not understand a 303 HTTP code,
  and throughs a plain error.

  All HTTP/1.1 clients should understand 303...


tkt_uuid: 719616ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 8
foundin: None
resolution: Fixed
title: alter install.tcl to support re-installs
comment:
  Index: install.tcl
  =========================================
  ==========================
  RCS file: /cvsroot/tcllib/tcllib/install.tcl,v
  retrieving revision 1.2
  diff -w -b -r1.2 install.tcl
  18c18
  <             file copy $file $sub
  ---
  >             file copy -force -- $file $sub

  30c30
  < file copy pkgIndex.tcl $installdir
  ---
  > file copy -force -- pkgIndex.tcl $installdir


tkt_uuid: 2912295fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Documentation
priority: 5 Medium
foundin: None
resolution: Fixed
title: random(n) manpage needs to be renamed
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: 985839ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Fixed
title: Can't send mail to Yahoo
comment:
  Using the smtp and mime packages to send email, I am
  having trouble sending email to Yahoo using Windows XP.
   It works fine from a Linux machine, also sending mail
  from the windows machine to hotmail.com works.  I am
  using the following code:

  proc send_simple_message {recipient email_server
  subject body} {
      package require smtp
      package require mime
      
      set token [mime::initialize -canonical text/plain \
     -string $body]
      mime::setheader $token Subject $subject
      
      puts [smtp::sendmessage $token \
        -recipients $recipient -servers $email_server]
      mime::finalize $token
  }
  send_simple_message andrewthompson10@hotmail.com
  mx3.mail.yahoo.com \
      "This is the subject." "\n\n This is the message.\n"


  It gives me an error:

  key message-id not in header
     while executing 
  "error "key $mixed not in header""

  This appears to be on line 1282 of mime.tcl.

  I tried to add things to the header with the following
  code inside proc send_simple_message:

  mime::setheader $token Subject $subject
  mime::setheader $token Message-ID \
  "<3140374180748234979238742391784313234@localhost>"
  mime::setheader $token Date "July 4, 2004"
      


  And I ended up with the following error:

  can't unset "state(route)": no such element in array
  while executing 
  "unset state($prop)"

  This appears to be referring to line 2675 of mime.tcl
  (I would expect that the catch would take care of the
  error, but apparently not).


tkt_uuid: 1076400fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: html
priority: 5 Medium
foundin: None
resolution: Fixed
title: html lib doesn't seem to support DOCTYPE tag
comment:
  the html library doesn't seem to support the DOCTYPE 
  directive that should be present at the beginning of an 
  HTML document to be W3C HTML 4.* compliant.

  A suggested solution would be the addition of 
  an ::html::doctype command that would take the doc 
  type arguments e.g:

  ::html::doctype {HTML PUBLIC "-//W3C//DTD HTML 4.0 
  Transitional//EN"}

  This would cause the appropriate code be generated 
  when ::html::head is called, etc.


tkt_uuid: 1631379fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Works For Me
title: ComboBox pulldown appears on wrong screen
comment:
  This occurs when using a MacBook with osx 10.4.8, ActiveTcl 8.4.14 including BWidget 1.8. The ComboBox works OK if the app is on the notebook's own screen, but if it is on the external screen, when you click the pulldown arrow the entry list appears briefly on the left of that screen then jumps to the internal screen. Also it has the decorations, which probably shouldn't be there.


tkt_uuid: 763712ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Accepted
title: add optional charset decode to mime::getbody
comment:
  when calling mime::getbody, the body returned is still in
  the charset as specified in the Content-Type, it seems to
  me that it would be good if it could be decoded using 
  ::encoding convertfrom before being returned. As doing this 
  automatically will probably break existing scripts I have 
  added a -decode switch to getbody that when specified 
  causes the charset to be decoded.

  I've attached a patch that does this and some tests to test it. 
  I'd strongly suggest adding my patch submission #758742, 
  "charset mapencoding improvements" at the same time.

  Matthew


tkt_uuid: 1422793fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: tklib: ipentry
priority: 5 Medium
foundin: None
resolution: Accepted
title: adds -textvariable to ipentry widget
comment:
  Supports -textvariable option to ipentry widget, taking
  either array or non array variable names.  Tries to
  mimic functionality of entry widget -textvariable as
  much as possible.  Will auto-correct most invalid IP
  addresses.

  Patch include version bump to 0.2 and addition to
  manual page.


tkt_uuid: 2818958fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: linearalgebra
priority: 5 Medium
foundin: None
resolution: Fixed
title: sizing of vectors
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: 1105010fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: html
priority: 1 Zero
foundin: None
resolution: Fixed
title: Font properties are printed twice
comment:
  In my tests with Tcllib 1.6:

  % ::html::font size="18"

  <font size="18"size="18">

  I inspected the source and found this in line 1183:

  ::set param [tagParam font [join $args]][join $args]

  [join $args] is called twice for some reason. I guess that is what causes the bug.

  The source of Tcllib 1.7 looks just the same.

  Luciano ES


tkt_uuid: 763669ffffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: mime
priority: 5 Medium
foundin: None
resolution: None
title: Problems with qp_encode and encoded_word, no_softbreak
comment:
  There are a number of bugs in qp_encode:

  When in no_softbreak mode it eats the last character.

  When in encoded_word mode it:

  - inserts softbreaks for lines over 72 chars
  - does not encode underscores leading to them being 
  decoded as spaces
  - does not encode question marks, potentially leading to 
  badly broken encoded words
  - does not encode tabs

  I have attached a patch to fix these and also to test them 
  and a couple of other RFC2047 requirements. With regard to 
  softbreaks in encoded words it's still not legal to just let 
  them ron on as an encoded word is not meant to be longer 
  than 75 characters itself. I'll file a bug report and patch for 
  that soon.

  Matthew


tkt_uuid: 688696ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: None
title: Memory Leak in tkchat
comment:
  There is a memory leak in tkchat; it does not clean up 
  unused URL-* tags anywhere.  This doesn't matter too 
  much in the main window, where URLs are fairly 
  uncommon, but the users-online window at the side is 
  filled with URLs and it gets refreshed (with completely 
  new URL-* tags) each time.  And yet none of the old 
  tags are ever deleted, resulting in the accumulation of 
  several thousand dead tags an hour!  This is not good.  
  Not good at all!

  A possible fix for this is to add the following code to the 
  procedure updateNames immediately after the line that 
  deletes the old content of the .names widget:
    foreach tagname [.names tag names] {
       if {[string match URL-* $tagname]} {
          .names tag delete $tagname
       }
    }

  Please fix this ASAP, as it is a serious leak for anyone 
  using Tkchat for longer than an hour or two (as seems 
  to be fairly common.)


tkt_uuid: 1903306fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: tklib :: plotchart
priority: 5 Medium
foundin: None
resolution: None
title: xyplot xconfig / yconfig -scale not working
comment:
  Using the xconfig or yconfig command with the -scale option results in an "Unknown or invalid value" error.

  Script showing problem:

  package require Tk
  package require Plotchart

  canvas .c
  pack .c

  set s [Plotchart::createXYPlot .c {0 100 10} {0 100 10}]
  $s xconfig -scale {0 200 20}


  The problem is in Plotchart::AxisConfig, in the file plotaxis.tcl around line 492.  The "idx" value is the index into a list with a single value per option, and it is used to index into the axis_option_values which has two values per option.  One possible fix is to multiply the idx by 2 before using it on the axis_option_values.

    set clear   [lindex  $axis_option_clear  $idx]
  >>  set idx [expr {2 * $idx}]
    set values  [lindex  $axis_option_values [incr idx]]


  Also, in the plotaxis.tcl file there is "console show" and "puts" command in the Plotchart::DrawXaxis routine which seem out of place.

  Thanks,
  -paul


tkt_uuid: 3599839fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Duplicate
title: fileutil::findByPattern dies when encountering link on Win 7
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: 1377945fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: Incorrect version number
comment:
  The configure.in script for bwidget-1.7.0 has this line:

  MINOR_VERSION=6

  This should really be:

  MINOR_VERSION=7

  As it is now the installed files get put into a
  directory named /usr/lib/bwidget1.6 when it should be
  bwidget 1.7


tkt_uuid: 1740574fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: javascript
priority: 5 Medium
foundin: None
resolution: Fixed
title: typographical errors in javascript package
comment:
  The documentation for the tcllib javacript package has three instances of "it's" where "its" is meant.

  ::javascript::makeMasterButton master value slavePattern boolean
      Create an HTML button that sets it's slave ....
  ::javascript::makeParentCheckbox parentName childName
      Create an HTML checkbox and tie its value to that of it's child checkbox....
  ::javascript::makeChildCheckbox parentName childName
      Create an HTML checkbox and tie its value to that of it's parent checkbox....

  Curiously, some of the "its" are right.


tkt_uuid: 1295737fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Installer
priority: 5 Medium
foundin: None
resolution: Out of Date
title: installer - apps on windows .tcl
comment:
  When installing the applications on Windows they should
  be given the extension .tcl, to associate them with the
  installed tclsh/wish.


tkt_uuid: 495976ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 8
foundin: None
resolution: Fixed
title: install copies from base dir not modules
comment:
  install.sh tries to copy from the base directory, not
  the modules subdirectory, so cp does not find the
  module directories:

  daruma# ./install.sh
  cp: cannot stat `base64/*.tcl': No such file or directory
  [etc]

  Fix: either cd to modules before the for loop, or
  change the cp commands in the for loop from:

      cp -f $j/*.tcl $TCLINSTALL/lib/tcllib1.1/$j ; \
      cp -f $j/*.n   $TCLINSTALL/man/mann ; \

  to:

      cp -f modules/$j/*.tcl $TCLINSTALL/lib/tcllib1.1/$j ; \
      cp -f modules/$j/*.n   $TCLINSTALL/man/mann ; \


tkt_uuid: 744276ffffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: None
title: ftp::Get of a nonexistent file
comment:
  I'm using ftp 2.4, and mandrake linux 9.1

  This occurs when ftp::VERBOSE and ftp::DEBUG are both 0.

  Open a connection in passive mode, try to get a
  nonexistent file, and it will hang with tclkit
  200303.001, tkcon, and tclsh 8.3.3

  When ftp::VERBOSE and ftp::DEBUG are turned on, no
  problems occur.

  % package require ftp 2.4
  2.4
  % ftp::Open $server $name $pass -mode passive
  0
  % ftp::Get 0 nonexistent_file
  can't unset "ftp(state.data)": no such element in array
      while executing
  "unset ftp(state.data)"
      ("default" arm line 4)
      invoked from within
  "switch -exact -- $rc {
                  1 {
                      set ftp(State) get_close
                  }
                  default {
                    ..."
      ("get_sent" arm line 2)
      invoked from within
  "switch -exact -- $ftp(State) {
          user {
              switch -exact -- $rc {
                  2 {
                      PutsCtrlSock $s "USER $ftp(U..."
      (procedure "::ftp::StateHandler" line 71)
      invoked from within
  "::ftp::StateHandler 0 sock4"
  error     error | E: Timeout of control connection
  after 600 sec.!
  debug      | 0 bytes sent in 600 seconds (0 Bytes/s)
  1
  %


tkt_uuid: 2037560fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: inifile
priority: 5 Medium
foundin: None
title: support keys with no = sign
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: 526499ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Accepted
title: Async errors silently discarded
comment:
  In the current implementation of "comm" errors 
  happening in the receiver of a command are silently 
  discarded if the caller performed an -async invocation.

  While that means that the caller itself is not 
  interested in a possible error I believe that it 
  should not be completely discarded. It makes 
  interactions based on async calls hard to debug as 
  problems simply show as the processes not doing what 
  they are supposed to do without any indication why 
  they are doing so.

  The patch to be associated with this report will 
  extend the execution of received commands with a call 
  to [bgerror] (if available or loadable) so that such 
  errors do not get lost.


tkt_uuid: 846422ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: struct :: matrix
priority: 5 Medium
foundin: None
resolution: Accepted
title: New sort method for matrix object
comment:
  I needed to sort a matrix, and wound up spending an
  evening 
  implementing sort methods for the struct::matrix extension.

  The methods use the heapsort algorithm, which is
  explained in "Introduction to Algorithms" by Thomas H.
  Cormen et al. (Copyright 2001 by MIT). The book's
  preface says "If you wish to implement any of the
  algorithms, you will find the translation of our pseudo
  code into your favorite programming language a fairly
  straightforward task." That was my experience -- it was
  actually pretty fun.


tkt_uuid: 1204345fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: report
priority: 5 Medium
foundin: None
resolution: Rejected
title: variable size cell
comment:
  Here is a patch that allows a reports to formatted in
  such a manner that the cell widths are variable in
  size, just big enough to fit the value. If one were to
  define a style that converts a matrix to csv format,
  the current implementation would produce something like
  the following

  foo, bar , ack ick
  I   , love , tcl      

  This patch provides the a new key word "var" for column
  size and allows the integer value "0" to indicate that
  cells in that column should be just big enough to hold
  the data. For example, the following code fragment
  would alter the results in the example below.

  $report size 0 var
  $report size 1 var
  $report size 2 0 ; # integer value 0 to indicate
  variable size

  The new output would be

  foo, bar, ack ick
  I, love, tcl      


tkt_uuid: 442474ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget: minor changes to PanedWindow
comment:
  I've attached a small patch (diff -c format) for the
  BWidget paned.tcl file.

  Motivation:
  --------
  1) The paned windows are divided by sashes. At the
  moment, the shape of the sash handler is defined by the
  OS the application is running: button for UNIX, line
  for Windows. It would be nice to be able to define it
  by hand (many users prefer the complete line as sash
  handler, buttons are easily overseen and very ...
  fumbly).

  2) The actual minimum setable values for the sash
  widths consume too much screen estate.

  Remeddy:
  -------
  1) introduce a new optional argument (say: -activator)
  width the values 'button' and 'line'. If set, use this
  as sash handler; if not set, use the old OS dependent
  mechanism.
  2) allow lower values for optional argument -width

  Impact of changes to existing code:
  -------------------------
  None, behaviour is exactly the same, except lower
  values for -width argument don't throw an error.


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

  * math::statistics 0.2
  test name 'BasicStats-1.3' re-used; prior use in
  /local/src/tcllib/modules/math/statistics.test
  test name 'Samplescount-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/statistics.test


tkt_uuid: 1272983fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Fixed
title: snit v2 - rename-1.5 panic with Tcl 8.5
comment:
  $ setenv TCLTEST_OPTIONS "-verbose bpste"
  $ /local/src/tcl/solaris/tclsh sak.tcl test snit
  Shell is "/local/src/tcl/solaris/tclsh"
  tcllib tests
  Test platform: "SunOS-5.9-sun4u" using Tcl 8.5a4
  Tests running in working dir:  /local/src/tcllib
  Only running tests that match:  *
  Skipping test files that match:  l.*.test
  Only sourcing test files that match:  *.test
  Tests began at Thu Aug 25 13:49:09 -0400 2005
  Module: snit
  modules/snit/snit.test
  - Tcl  8.5
  - snit 2.0
  ...
  ---- rename-1.5 start
  TclAppendLimitedToObj called with shared object
  child killed: SIGABRT
      while executing
  "exec [info nameofexecutable]  [file join $distribution
  all.tcl]  -modules $modules  >@ stdout 2>@ stderr"
      (procedure "__test" line 12)
      invoked from within
  "__$cmd"
      (file "sak.tcl" line 2287)


tkt_uuid: 1623653fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: math :: geometry
priority: 5 Medium
foundin: None
resolution: None
title: Polygons in pointInPolygon are always closed - no check
comment:
  In pointInPolygon there is no check if the polygon is already closed. The first point is added anyway. If it is already closed however the result is false.


tkt_uuid: 1559299fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: linearalgebra
priority: 5 Medium
foundin: None
resolution: None
title: leastSquareSVD runs into problem with simple test case
comment:
  The leastSquareSVD command produces a run-time error
  with the following simple script:

  #
  # Known relation: z = 1.0 + x + 0.1*y
  # Model this as: z = z0 + x + 0.1*y
  #
  #
  #          z0   x   y     z
  set Ab { {  1  1.0  1.0} 2.1
           {  1  2.0  1.0} 3.1
           {  1  2.0  2.0} 3.2
           {  1  4.0  2.0} 5.2
           {  1  4.0 22.0} 7.2
           {  1  5.0 -2.0} 5.8 }

  set A {}
  set b {}
  foreach {Ar br} $Ab {
      lappend A $Ar
      lappend b $br
  }
  set x [::math::linearalgebra::leastSquaresSVD $A $b}]
  puts $x             

  I must check this!


tkt_uuid: 1187156fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: md5
priority: 5 Medium
foundin: None
resolution: Duplicate
title: md5::md5 -hex $data fails for some data
comment:
  md5::md5 -hex $data can fail with:
  ::hex: wrong # args, all options require an argument

  protecting the arg with: md5::md5 -hex -- $data does not 
  help.

  %set errorInfo
  ::hex: wrong # args, all options require an argument
      while executing
  "Hex $r"
      (procedure "md5::md5" line 47)
      invoked from within
  "md5::md5 -hex -- $data"
  %

  My quick fix was to modify md5x.tcl so that the 2 
  occurrences of:

  set r [Hex $r]

  are replaced with:

  set r [Hex -- $r]

  I haven't thought through exactly what's going on and 
  whether or not it's required in both instances though.

  Unfortunately I only know of one string for which this 
  occurs, and that happens to be a chunk of xml which 
  includes private information.


tkt_uuid: 1799702fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: ip
priority: 5 Medium
foundin: None
resolution: None
title: ::ip::reduceToAggregates with weird netmask broken
comment:
  ::ip::reduceToAggregates returns an invalid result (i.e., a result that is not functionally the same as its input) when the netmask "255.255.0.255" is used in conjuction with disjoint, but still overlapping subnets.

  Example:

  tcl>package require ip
  1.1.1
  tcl>set iplist [list 1.2.0.4/255.255.0.255 1.2.3.0/255.255.255.0]
  tcl>set reducediplist [::ip::reduceToAggregates $iplist]
  tcl>puts $reducediplist
  1.2.0.4/16
  tcl>::ip::isOverlap 1.2.1.1/32 [lindex $iplist 0]
  0
  tcl>::ip::isOverlap 1.2.1.1/32 [lindex $iplist 1]
  0
  tcl>::ip::isOverlap 1.2.1.1/32 [lindex $reducediplist 0]
  1


tkt_uuid: 476733ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
title: add new example - validating ftp url
comment:
  andreas kupries asked me to log this feature request -
  at http://mini.net/cgi-bin/wikit/2444.html is code
  making use of the ftp and url modules to validate ftp
  urls.  With a couple of changes to ftp module so that
  it actually works with uri (read the uri doc for geturl
  for details) this code could be trivially changed to
  validate any url that uri supports.


tkt_uuid: 1742078fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: html
priority: 5 Medium
foundin: None
resolution: None
title: html::nl2br procedure bug
comment:
  The "html::nl2br" procedure is designed to replace all line-endings with the HTML <br> construct.  It appears to be missing a common line-ending combo.  Here's the original procedure:

  proc ::html::nl2br {s} {
      return [string map [list \n\r <br> \n <br> \r <br>] $s]
  }

  It's missing a substitution of the common "\r\n" combo.  Ultimately, the current procedure replaces that combo with 2 <br>'s, which is incorrect.  Now, maybe the existing "\n\r" is just transposed by accident, as that seems odd anyway...

  I'd suggest the following replacement if that's the case:

  proc ::html::nl2br {s} {
      return [string map [list \r\n <br> \n <br> \r <br>] $s]
  }

  Jeff


tkt_uuid: 633250ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 8
foundin: None
resolution: Out of Date
title: mpexpand: Tcl 8.3 required
comment:
  Using configure will find required Tcl 8.3

  # ./configure          
  loading cache ./config.cache
  checking for a BSD compatible install... (cached)
  /usr/bin/ginstall -c
  checking executable extension based on host type... 
  checking for tclsh... (cached) /usr/local/bin/tclsh8.3
  creating ./config.status
  creating Makefile

  but during installation "make" may fail due to usage of
  different tclsh interpreter - in my case tclsh has to
  be a tclsh8.2 interpreter. "configure -bindir=..." does
  not help as the search path is not changed.

  # make
  make html-doc
  make[1]: Entering directory `/home/fis/tmp/tcllib-1.3'
  make[2]: Entering directory `/home/fis/tmp/tcllib-1.3'
  Gen (html): ./modules/base64/base64.man
  bad option "unset": must be anymore, donesearch,
  exists, get, names, nextelement, set, size, or
  startsearch
      while executing
  "::mp expand $text"
      (procedure "passes" line 10)
      invoked from within
  "passes"
      (procedure "main" line 6)
      invoked from within
  "main"
      (file "./modules/doctools/mpexpand" line 737)
  Gen (html): ./modules/base64/uuencode.man


  Please insert

  package require Tcl 8.3

  to mpexpand and it'll work.


tkt_uuid: 1889835fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: mime
priority: 5 Medium
foundin: None
resolution: None
title: fix for extra CR/LF's inserted into binary file data
comment:
  The mime::buildmessageaux procedure has logic to insert carriage return line feeds in the middle of file data even when the encoding is binary.  The problem occurs when the number of bytes is greater than 32766 so the file is read in more than one read call.   Here are my changed lines in the version of mime.tcl that was released with tcllib 1.8.  I believe that the head version is the same, at least in this procedure.  I am no expert on mime and encodings, but I suspect the "\r\n" can be removed when $converter is not {} too.   This excerpt starts around line 2030 of the file mime.tcl:


      while {($size != 0) && (![eof $fd])} {
  if {$size < 0 || $size > 32766} {
      set X [read $fd 32766]
  } else {
      set X [read $fd $size]
  }
  if {$size > 0} {
      set size [expr {$size - [string length $X]}]
  }
  if {[string compare $converter ""]} {
      append result "[$converter -mode encode -- $X]\r\n"
  } else {
      # append result "$X\r\n" 
              # ECH fix - if binary do not mess up chunk boundaries
      append result $X
  }
      }
          # ECH fix - now add the \r\n after the data
  if {![string compare $converter ""]} { append result "\r\n" } ;# ECH fix

              if {$closeP} {
                  catch { close $state(fd) }
                  unset state(fd)
              }


tkt_uuid: 955473ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: Fatal error: tkchat requires winico
comment:
  Tkchat 1.160 requires the Winico extension, which is
  considerably less common than other extensions. This
  stops tkchat from loading (on Windows at least) if that
  extension isn't actually present.

  Please wrap the require of winico in a catch and only
  do the rest of the winico-related initialisation if the
  extension is loaded correctly.


tkt_uuid: 1960369fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: bignum :: float
priority: 5 Medium
foundin: None
resolution: Fixed
title: todouble returns 0.0 when it should not
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: 685073ffffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: textutil :: expander
priority: 5 Medium
foundin: None
title: expander - Input stack
comment:
  textutil::expander currenty manages a context stack to
  temporiliy hold up output material before inserting it
  into the actual stream of output.

  IMHO it should also manage a stack of input material,
  iallowing macros to push input onto for consumption
  after the macro is complete.

  This would generate an effect similar to using
  [expand], but without actually opening a nested output
  context.


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

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

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

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

  The error stack is

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

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

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


tkt_uuid: 637770ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: sha1
priority: 5 Medium
foundin: None
resolution: Accepted
title: Fix for sha1 on Tcl 8.4/MacOSX
comment:
  I'm not sure whether this code is actually necessary,
  but it seems to fix problems with the sha1 code as used
  by some people on MacOSX with Tcl 8.4 (I'm not sure if
  the code is actually needed with the HEAD of tcllib
  though, or whether that does the right thing anyway.
  This patch should be relatively harmless though, and
  won't hit performance all that badly either.)


tkt_uuid: 1156718fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: comm
priority: 5 Medium
foundin: None
title: comm - Make each connection's serial into a lamport clock
comment:
  See this paper:
  http://research.microsoft.com/users/lamport/pubs/time-clocks.pdf
  pdf for a description of Lamport clocks.

  The method: each time a process sends a message to
  another it sends a serial number (which comm already
  does.)  Upon receipt the receiver of a message sets its
  serial number to the larger of its serial number, and
  the serial number sent by the sender.

  In a two-endpoint comm connection this makes no
  difference, but in an n-endpoint comm connection, the
  serial number of each endpoint's serial will always be
  one greater than the last serial number it received.

  This enables a server to establish a partial ordering
  between requests when different systems' real-time
  clocks run at different rates - a sender whose clock is
  greater wins, as it has evolved through communication
  events, and is in some sense 'later' than the other.

  The only current constraint on serial is that it be
  locally unique, there is no requirement that it
  monotonically increase, or that it only increase by
  one.  The proposed change would specify that serial
  increases monotonically, and change the protocol to
  include an extra timestamp on reply/callback protocol
  messages: the serial value of the replying endpoint.

  Comm provides for protocol extension, and the
  implementation would degrade to the previous protocol
  version's behavior.

  A patch will follow.


tkt_uuid: 977354ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Accepted
title: cosmetic problem(s) in TkChat about box...
comment:
  I noticed this a while ago and finally got annoyed 
  enough to fix it.  Patch attached, please commit.


tkt_uuid: 2034464fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: tablelist
priority: 5 Medium
foundin: None
resolution: Fixed
title: columnconfigure -bg isn't respected for -state disabled
comment:
  A tablelist with -state disable doesn't respect columnconfigure -background settings unter a lot of circumstances. If the -state is disabled, the -background color of the widget itself is used as background color. Though, even that isn't always the case. Sometimes, even with -state disabled, the column -background setting is respected. 

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

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

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

  package require tablelist

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

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

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

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

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

  pack .tl1 .tl2 .tl3 .b


tkt_uuid: 602279ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Rejected
title: tkchat - Shared whiteboard
comment:
  This patch implements a shared whiteboard that hitches
  a ride on tkchat for its communication protocol. 
  Naturally, it needs more polishing before it is perfect
  for use...


tkt_uuid: 2431506fffffffffffffffffffffffffffffffff
type: Patch
status: Open
subsystem: nntp
priority: 5 Medium
foundin: None
resolution: None
title: Event based nntp, plus cleanups
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: 2597454fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
resolution: Fixed
title: Warnings in documentation
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: 1414051fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: set
priority: 5 Medium
foundin: None
resolution: Fixed
title: struct::set include does not create variable like lappend
comment:
  The struct::set include command is documented to work
  like lappend for sets, but differs in its handling of
  non-existing variables.

  ::struct::set include nosuchvar foo
  can't read "A": no such variable

  It should create the variable nosuchvar like lappend does.

  Michael


tkt_uuid: 547336ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Fixed
title: [package require Trf] twice
comment:
  There are two instances of
  [catch {package require Trf}]
  in smtp.tcl.  When there is no Trf package
  installed, the invokes a costly [tclPkgUnknown]
  in a default Tcl installation.  There's no
  need to pay this price twice.  After the
  first [package require] you have it if it's
  available.  Use [package present] in the second
  instance.


tkt_uuid: 1825092fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: lost char when extracting (some) parts
comment:
  The problem is that some extracted files are shorter than the original.

  I extracted the attachement with mime::copymessage, and there was one
  byte missing at the end of the extracted base64 encoded file.

  So the error seems to occur where the mime package builds up its state array where the offset and length of parts are stored.

  Same problem in Win ActiveStateTCL 8.5.0.0 beta-6, the last base64 encoded line has 63 chars, the original 64 chars.

  ####test code:
  set token [mime::initialize -file mail20071020-175849-0]

  set allparts [mime::getproperty $token parts]
  # I know this mail has two parts: one plain text, one attachement
  set attachtok [lindex $allparts 1]
  # test file name out:
  set ts [clock format [clock seconds] -format {%Y%m%d-%H%M%S}]
  set ofn a0036-test-${ts}.part

  set ofh [open $ofn w]
  fconfigure $ofh -translation binary
  mime::copymessage $attachtok $ofh
  close $ofh


tkt_uuid: 1239915fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Fixed
title: Bad processing of "*" in ldap::search
comment:
  The ldap::search processing of substrings does not    
  handle "*" when used in more complex situations    
  than "*x", "*x*" or "x*". For example, this little test    
  program displays :    
     (sn=david) : 3 result(s)   
     (sn=da*id) : 0 result(s)     <--- obviousely wrong!   
     
  ------------------------------------------------------------------------   
  #!/usr/local/bin/tclsh8.4     
   
  package require ldap 
   
  set host ldap.u-strasbg.fr 
  set base "o=ulp" 
  set filter1 "(sn=david)" 
  set filter2 "(sn=da*id)" 
   
  set ldapfd [::ldap::connect $host] 
  set r1 [::ldap::search $ldapfd $base $filter1 {}] 
  set r2 [::ldap::search $ldapfd $base $filter2 {}] 
  ::ldap::disconnect $ldapfd 
   
  puts "$filter1 : [llength $r1] result(s)" 
  puts "$filter2 : [llength $r2] result(s)" 
  --------------------------------------------------------------------------   
    
  The attached patch provides a general solution to the 
  "*" handling. It is still not the complete solution to RFC 
  2254, but a little step forward. 
  .. :-( 


tkt_uuid: 849106ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: Leaking smileys from the bridge
comment:
  When an action message containing a smiley comes over 
  tclbridge from someone using IRC, tkchat replicates that 
  smiley at the start of the following line.

  This does not happen for any actions initiated by 
  someone on the Ralf's Chat side of the bridge.

  The smiley may be located either at the end or in the 
  middle of the message (we've not tested at the start of 
  the message.)

  (Thanks to davidw for helping to test this!)


tkt_uuid: 784515ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Documentation
priority: 7 High
foundin: None
resolution: Fixed
title: Obsolete module instructions in README
comment:
  The overall tcllib README file describes how to add new 
  modules to Makefile.in.  A casual inspection of Makefile.in 
  reveals that it's not done this way anymore.  README should 
  be updated to reflect the new method.


tkt_uuid: 1161939fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: exif
priority: 5 Medium
foundin: None
resolution: Duplicate
title: Add most EXIF-2.2 tags to exif.tcl
comment:
  This patch adds most of the EXIF-2.2 tags and some
  Olympus makernotes to exif.tcl. If an unknown tag is
  found, the script will report this tag as unknown tag
  instead of crashing.
  I checked the script with lots of personal photos as
  well as some sample images found on www.exif.org.

  - Matthias

  mlange_lists(at)yahoo.com


tkt_uuid: 474846ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: uri
priority: 5 Medium
foundin: None
resolution: Fixed
title: Failure to handle ftp uri's
comment:
  URI handling for ftp url's seems to be flawed.

  (1) splitting an FTP url that contains user/password
  information results in an error:

  % uri::split ftp://user:password@host:1234/where/ever
  expected integer but got ""

  % uri::split ftp://user@host:1234/where/ever
  expected integer but got ""

  (2) Password field is ignored when joining

  % uri::join port 1234 path where/ever \
          scheme ftp host host type {} \
          user foo pwd password
  ftp://foo@host:1234where/ever

  (3) invalid URL produced by joining (see above)

  (4) geturl fails

  % uri::geturl ftp://nowhere.com/nothing
  invalid command name "ftp::geturl"


tkt_uuid: 1282221fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: uuid
priority: 5 Medium
foundin: None
resolution: Fixed
title: [uuid generate] tests fail
comment:
  ==== uuid-1.1 uuid generate should create a 36 char
  string uuid FAILED
  ==== Contents of test case:

      list [catch {string length [uuid::uuid generate]}
  msg] $msg

  ---- Result was:
  1 {can't read "tcl_platform(platform)": no such variable}
  ---- Result should have been (exact matching):
  0 36
  ==== uuid-1.1 FAILED


  ==== uuid-1.2 uuid comparison of uuid with self should
  be true FAILED
  ==== Contents of test case:

      list [catch {
          set a [uuid::uuid generate]
          uuid::uuid equal $a $a
      } msg] $msg

  ---- Result was:
  1 {can't read "tcl_platform(platform)": no such variable}
  ---- Result should have been (exact matching):
  0 1
  ==== uuid-1.2 FAILED


  ==== uuid-1.3 uuid comparison of two different uuids
  should be false FAILED
  ==== Contents of test case:

      list [catch {
          set a [uuid::uuid generate]
          set b [uuid::uuid generate]
          uuid::uuid equal $a $b
      } msg] $msg

  ---- Result was:
  1 {can't read "tcl_platform(platform)": no such variable}
  ---- Result should have been (exact matching):
  0 0
  ==== uuid-1.3 FAILED


tkt_uuid: 1613224fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: mime
priority: 5 Medium
foundin: None
resolution: None
title: too much braced message header values (::mime::getheader)
comment:
  Hello,

  currently experienced, that an eMail had for one message part a Content-ID like "abc$def$ghi@jklmnop".

  Using ::mime::getheader on that message part returned:

      % set header [::mime::getheader ::mime::3-2]
      Content-ID {{<002401c71848_6fba22d0$a500a8c0@dittc48ca0f6af>}}
      % dict get $header Content-ID
      {<002401c71848_6fba22d0$a500a8c0@dittc48ca0f6af>}
      % ::mime::getheader ::mime::3-2 Content-ID
      {<002401c71848_6fba22d0$a500a8c0@dittc48ca0f6af>}

  I expected to get a once-braced value, but not a twice-braced value.

  I used the mime package v1.5 from the tcllib 1.9 in tcl/tk 8.4.13 and 8.5a4.

  IMHO this is a misbehaviour, a bug.

  Thanks,

  Martin Lemburg


tkt_uuid: 1695131fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: doctools
priority: 5 Medium
foundin: None
title: doctools - Add backend 'doctools'
comment:
  Create a backend which writes doctools markup. This backend would in effect be a pretty printer of doctools formatted input.


tkt_uuid: 564767ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: profiler
priority: 5 Medium
foundin: None
resolution: Fixed
title: Missing variable initialization in dump
comment:
  The result var in profiler::dump is not initialized. This leads
  to a runtime error when [array names callCount $pattern] 
  returns an empty list.

  FIX: 

  proc ::profiler::dump {{pattern *}} {
      variable callCount
      variable compileTime
      variable totalRuntime
      variable callers
      variable descendantTime
      variable descendants
      variable statTime

      foreach name [lsort [array names callCount $pattern]] {

  ###############    FIX here  
  set result [list];
  ###############    FIX end

  set i [expr {[string length $name] + 1}]

  ...


tkt_uuid: 2814771fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: TkChat - Color Settings dialog bug
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: 2225148fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: struct :: list
priority: 3 Low
foundin: None
resolution: None
title: struct::list test suite problems against tcl 8.6 cvs head
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: 3308051fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 5 Medium
foundin: None
resolution: Accepted
title: struct::list equal is not commutative in special case
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: 469855ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
resolution: Fixed
title: Bug in ::csv::split
comment:
  Small test sample:

  package require csv
  set x [list "\"hello, you\"" a b c]
  puts $x
  puts [::csv::join $x]
  puts [::csv::split [::csv::join $x]]

  The output is:

  {"hello, you"} a b c
  """hello, you""",a,b,c
  {hello, you"} a b c

  but the last line of the output should equal the first
  line. Mind the missing " after the opening brace.


tkt_uuid: 709123ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::csv::split with | as separator
comment:
  I am trying to use ::csv::split2matrix with | as the
  separator char.

  set trec "REC|DPI|AD1|AD2|AD3"
  set sepchar "|"
  set line [::csv::split $trec $sepchar]
  puts $line

  - -----> {"} {} {"REC} DPI AD1 AD2 AD3

  set trec "REC,DPI,AD1,AD2,AD3"
  set sepchar ","
  set line [::csv::split $trec $sepchar]
  puts $line

  - -----> REC DPI AD1 AD2 AD3


tkt_uuid: 1113033fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tklib: plotchart
priority: 5 Medium
foundin: None
title: Add support for shade and isoline drawing
comment:
  Mark Stucky has provided a library to create isoline
  and shade drawings in a style that can be incorporated
  into Plotchart. I have attached the script for later
  reference.


tkt_uuid: 2769242fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: struct
priority: 5 Medium
foundin: None
title: Persistence for various data structures
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: 723307ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: tree
priority: 8
foundin: None
title: Tree Walk: Add Break/Return/Error Support
comment:
  The struct::tree functions within tcllib work VERY well - 
  but during some recent development I realized that there 
  was no clean way to "stop" a tree walk when walking 
  the nodes of a tree (either direction or both directions).

  I consider struct::tree strcutures to be a distinct 
  alternative to the already very powerful arrays and lists 
  wtihin tcl.

  The ability to attribute nodes with keys and manipulate 
  them is very powerful, but when working with large tree 
  structures and then trying to navigate them or search 
  until something is found, the walk command works, but 
  does NOT stop until it reaches the end of the tree.

  Adding the abilty to break/return/error during a walk 
  would definately increase the already useflness of this 
  library.

  contact me with any questions.

  Dave Bigelow
  davidhbigelow@compuserve.com


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

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


tkt_uuid: 3110860fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Documentation
priority: 5 Medium
foundin: None
resolution: Fixed
title: geometry man page conflicts with the Tcl core
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: 538922ffffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: mime
priority: 5 Medium
foundin: None
title: Enhance parseaddress to cope with spaces
comment:
  Bug 519594 noted that parseaddress can't cope with spaces.  The bug was closed with a note 
  that parseaddress does what it was designed to do: parse address lists in well-formed SMTP 
  headers.  It would be very helpful if parseaddress was enhanced (or supplimented by another 
  function) so user-ended addresses in e-mail clients could be parsed effectively.  The original bug 
  has some examples.


tkt_uuid: 676976ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: uri
priority: 5 Medium
foundin: None
resolution: Fixed
title: Regexp in uri::split allows ',' characters
comment:
  The first regexp command in the uri::split function 
  is:

  regexp -- {^([a-z0-9+-.][a-z0-9+-.]*):} $url 
  dummy scheme

  I think it should be:

  regexp -- {^([a-z0-9+.-][a-z0-9+.-]*):} $url 
  dummy scheme

  The way it is currently, the range of characters '+' 
  through to '.' are included, which incorrectly 
  includes ',' in addition to the intended 
  characters '+', '-', and '.' (assuming ASCII character 
  set).


tkt_uuid: 1954483fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: dns
priority: 5 Medium
foundin: None
resolution: Duplicate
title: Package 'resolv' has no documentation
comment:
  The packages 'resolv' and 'spf' in the module 'dns' are not documented at all. 'resolv' has no testsuite either.


tkt_uuid: 795032ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: uri
priority: 5 Medium
foundin: None
resolution: Fixed
title: [package require uri] alter some vars on global level
comment:
  This script:

  set host test
  package require uri
  puts $host

  returns:
  ((([A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9]|[A-Za-z0-9])\.)*([a-zA-Z][A-Za-z0-9-]*[A-Za-z0-9]|[a-zA-Z]))|([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+))

  It's not, that [package require uri] simply pollutes
  the global namespace. A

  package require uri
  puts $host

  gives "can't read "host": no such variable" as
  expected. The var 'host' must be set prior to the
  [package require uri] to be altered by the package request.

  The same problem shows with other variable names, for
  example 'escape', 'hostOrPort', 'uChar' and very
  probably some more.

  As far, as I've tracked it down, it seems, that proc
  ::uri::register or the script args of the various
  ::uri::register calls at the end of uri.tcl are the
  source of the problem.


tkt_uuid: 3601313fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: stack
priority: 5 Medium
foundin: None
resolution: Fixed
title: Simplify version requirement for TclOO
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: 934134ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtpd
priority: 7 High
foundin: None
resolution: Fixed
title: SMTPD GMT offset calculation incorrect
comment:
  Package smtpd, proc gmtoffset produces incorrect output
  (sign inverted) when calculating GMT offset. For
  example, it returns
    Sun, 11 Apr 2004 08:14:06 +0500
  for CDT. When it should return
    Sun, 11 Apr 2004 08:14:06 -0500

  The bug is at line 354 of $Id: smtpd.tcl,v 1.12
  2004/01/15 06:36:14 andreas_kupries Exp $

  Which is

          set off [expr {$zh - $lh}]

  but apparently should be

          set off [expr {$lh - $zh}]

  Raised by Bob Binder (rbinder aT rbsc dot com)


tkt_uuid: 996326ffffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: textutil :: expander
priority: 5 Medium
foundin: None
title: Hook for errmode 'error'
comment:
  When error mode "error" is used the expander places
  errors directly into the output. The format of that
  error message is hardwired. And really suitable only if
  the output is plain text.

  IMHO it makes sense to have a callback which can be set
  and creates a message which is properly formatted for
  the generated document. For example in HTML a box with
  highlighted background, bold text, large font, colors, ...


tkt_uuid: 3565267fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: errorCode : no such variable
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: 1512038fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: uri
priority: 5 Medium
foundin: None
resolution: None
title: uncomplete process
comment:
  while going back in the path, there are missing steps
  while exceding double dots.

  uri::canonicalize http://domain.something/1/2/3/../../../0/
  > http://domain.something/0/

  uri::canonicalize
  http://domain.something/1/2/3/../../../../0
  > http://domain.something/1/0/


tkt_uuid: 2569848fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: aes
priority: 5 Medium
foundin: None
resolution: None
title: aes vs Tcl 8.5 failure
comment:
  From the wiki, i.e. http://wiki.tcl.tk/14648

  Larry Virden wrote _________

  LV 2008 June 27.

  Here's what I get using ActiveTcl 8.5.2 (and teacup update):

   $ tclsh8.5
  % package require aes
   set key [string repeat - 16]
   set fullData {MalletData 9 q q q2 22}
   set encryptedData [aes::aes -dir encrypt -key $key $fullData]
   aes::aes -dir decrypt -key $key $encryptedData
   puts $errorInfo
  1.0.1
  % ----------------
  % MalletData 9 q q q2 22
  % I9â3òÌH£í<¯CUÜËÚ¤N|úÙdÜp
  % MalletData 9 q q q2 22
  % 

  Vale adds _________

  It's a bug in aes.tcl. After calling "binary scan binary-array I var", the numbers in var should be converted to unsigned 32-bit integers. You can define a procedure to do this.

          proc ::aes::to_unsigned {data} {
                  upvar $data d
                  set i 0
                  foreach num $d {
                          lset d $i [expr { $num & 0xffffffff }]
                          incr i
                  }
          }

  There are 5 places to do the convertion, 2 in ::aes::EncryptBlock, 2 in ::aes::DecryptBlock and 1 in ::aes::ExpandKey. You should call to_unsigned after calling of binary scan, like this:

      # original code
      if {[binary scan $block I4 data] != 1} {
          return -code error "invalid block size: blocks must be 16 bytes"
      }
      # bug-fix add here
      to_unsigned data


  AK, not from the wiki _________

  Note also the ChangeLog entry ...

  2008-05-12  Andreas Kupries  <andreask@activestate.com>

          * aes.tcl (DecryptBlock, EncryptBlock): Added code limiting the
          * aes.man: values to int32 range, to prevent going out of range
          * aes.test: when run by Tcl 8.5 and its bignums. Extended
          * pkgIndex.tcl: testsuite to catch a problematic case which fails
            without the change. Bumped version to 1.0.1.

  It may be that this is the same bug, that the fix made was not enough.
  Or a similar one.


tkt_uuid: 930101ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Out of Date
title: Help with Tcllib MIME
comment:
  Can anyone help me out with the following problem? I am 
  using Tcllib 1.0.

  THE CODE

  I am using the following code:
  [mime::initialize -canonical "text/html; charset=US-
  ASCII" -string $body]
  [mime::setheader $message Subject $subject]
  [smtp::sendmessage $message -originator $fromemail -
  recipients $toemail -servers $emailserver -ports 
  $emailport]
  [mime::finalize $message]

  THE ERROR

  When I use the variable "old" as described below, I have 
  no problems in sending the email. However, as soon as I 
  start defining attribute values in my HTML such as 
  width=100% (see the variable "new" defined below), I 
  get the following error:

  key message-id not in header

  THE MESSAGE

  [append old "<html><head> "
  append old "<title>eSampleMail</title> "
  append old "<style>"
  append old "</style>"
  append old "</head>"
  append old "<body>"
  append old "<table>"
  append old "<tr><td>We are pleased to 
  provide you with the most recent updates to 
  myserver.com</td></tr>"
  append old "</table>"
  append old "</body>"
  append old "</html>"
  NULL]

  [append new "<html><head> "
  append new "<title>eSampleMail</title> "
  append new "<style>"
  append new "</style>"
  append new "</head>"
  append new "<body>"
  append new "<table width=100%>"
  append new "<tr><td>We are pleased to 
  provide you with the most recent updates to 
  myserver.com</td></tr>"
  append new "</table>"
  append new "</body>"
  append new "</html>"
  NULL]


  Please help.


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

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


tkt_uuid: 985601ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 6
foundin: None
resolution: Fixed
title: doctools - engine parameters not documented
comment:
  Neither the general methods to query and set engine
  parameters are documented, nor are the actual
  parameters defined by the predefined formatters.


tkt_uuid: 557040ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: None
title: timeout immediately on large messages
comment:
  sendmessage timeout value grows ridiculously large as
  the size of the message (mime part) increases.

  The calculation used is:
   set secs [expr {(($state(size)>>10)+1)*3600}]
  which is then used by "after [expr {$secs*1000}]" to
  calculate how long to wait for the SMTP server to accept
  the message.

  For small messages, its reasonable. For large messages,
  you effectively never time out. For very large messages,
  you exceed the capacity of an int (and the milliseconds
  become negative) and the timeout happens immediately.

  The calculation needs to be fixed (or capped). Better
  yet, why not just allow a parameter to be passed
  to sendmessage to allow the user to specify how many
  seconds to wait for the message to be sent?

  I have done the latter, and can post a patch when I get
  a decent default calculation for the latter worked out.


tkt_uuid: 477130ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Big combobox api changes not documented
comment:
  In revision 1.14 of the combobox the LabelFrame was
  removed from the ComboBox (looking at the changelog for
  some speedimprovement).

  All the docs especially Changes.txt do not mention
  this. Also the html doc was not updated.

  It's nice that it's faster but why just ditch a lot of 
  functionality (ok I'm not 100% objective since I was
  using that functionality :) )?

  I'll personally settle for a mention of it in the docs
  =) I'll make a slow combobox myself I guess...

  Thanks,

  Ric


tkt_uuid: 1798210fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pluginmgr
priority: 5 Medium
foundin: None
resolution: Fixed
title: pluginmgr list is returning empty strings as plugin names
comment:
  Please see the example on: http://wiki.tcl.tk/16192

  At the end of example.tcl, simple add:

  puts [plug list]

  It will print "{} {}" It should print "simple slang"


tkt_uuid: 1220089fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: subsection markup doesn't encode quotes
comment:
  If the title argument to the doctools "subsection" tag contains 
  quotes, those quotes aren't stripped when the subsection title is 
  turned into an HTML anchor, e.g.,

  [subsection {This Title Has "Quotes"}]

  results in

  <a name="#this_title_has_"quotes"">

  which is invalid HTML.  The quotes should be stripped out when the 
  title is encoded as an anchor string.


tkt_uuid: 524353ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget SelectFont quick font list
comment:
  Categorizing fonts as fixed or variable is very slow. 
  If all the fonts are being displayed, then you don't
  need to categorize them, so the font list displays
  quickly.  This patch will also make the demo script
  load much faster.


tkt_uuid: 3541628fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: logger
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::logger::init has side-effects
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: 586708ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: mclistbox
priority: 5 Medium
foundin: None
resolution: Duplicate
title: comcmd itemconfigure, few options added
comment:
  Command itemconfigure index column list ?list 
  Allows one to configure any given cell of a 
  mclistbox. The arguments index and column specify a
  cell to be configures. 
  list  argument is a set of option-value pairs as in the
  listbox command itemconfigure.

  ::mclistbox::ResizeColumnsOfAllListboxes
  This command adjusts widths of columns according to set
  fonts of all mclistboxes in active an application. This
  function is supposed to be called after any font
  change. 

  Option -selectcolumn
  Specifies behavior of selection. If -selectcolumn is
  set to 1 and -selectmode is set to single, 
  then only one cell instead of hole line is highlighted
  upon click. Default value is 0. 

  Opton -usexscroll
  Specifies whether corresponding xscrollbar is visible.
  This option works only if -usecolumnxscroll is set to
  1. If the value is 1,
  it makes corresponding xscrollbar visible. Default
  value is 1.


tkt_uuid: 597102ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: nntp
priority: 5 Medium
foundin: None
resolution: Fixed
title: nntp post bug and doc enhancements.
comment:
  The nntp package could use some updating, before it is 
  useful. Here are the list of things that I had to modify in 
  order to get nntp work.

  1. (CODE) modify the generated post operation.
       args -> message
       "$args" -> $message

      Otherwise the body will be enclosed within extra curly 
  braces and no posting will go through.

  2. (DOC) update RFC information:
      RFC1036 obsoletes RFC850 and all USENET
      messages should conform to RFC1036

  3. (DOC) an example of a simple USENET posting:

      (Should this go to a Wiki page?)

  ############# Minimal NNTP example ############# 
  # Tested with Tcl 8.3.4 adn Tcllib/nntp 0.1
  package require nntp
  set n [nntp::nntp NNTP_SERVER]
  $n post "From: USER@DOMAIN.EXT (USER_FULL)
  Path: COMPUTERNAME!USERNAME
  Newsgroups: alt.test
  Subject: Tcl test post -ignore
  Message-ID: <[pid][clock seconds]
  @COMPUTERNAME>
  Date: [clock format [clock seconds] -format "%a, %d %
  b %y %H:%M:%S GMT" -gmt true]

  Test message body"
  ############################################

  -Jussi Kuosa


tkt_uuid: 2822970fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: ScrollableFrame background
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: 620754ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Patch to allow TkResource with toplevels
comment:
  Hi,

  When declaring a new widget based on the BWidget frame
  work it is possible to take default options from other
  widgets using 'TkResource'. When taking such default
  options from a toplevel, this toplevel is displayed
  (when taking from another widget, it is not displayed
  because it is not packed/gridded/placed). 

  This patch withdraws the toplevel used to get default
  options from.

  Jos.


tkt_uuid: 3122382fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: tablelist
priority: 5 Medium
foundin: None
resolution: None
title: findTabs returns 0 and callers fail
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: 564674ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Rejected
title: dns::resolve time out
comment:
  On a Windows NT system running behind a fireware the dns::resolve always times out.

  E.g.
  > tclsh
  % nslookup www.uno.edu dns.myisp.net
  Server:  dns.myisp.net
  Address:  xx.xx.xx.xx

  Non-authoritative answer:
  Name:    internet-service.ucc.uno.edu
  Address:  137.30.1.92
  Aliases:  www.uno.edu

  % package require dns; # Have to do this twice due to another bug
  % dns::configure -nameserver dns.myisp.net
  % dns::resolve www.uno.edu
  couldn't open socket: connection refused
  %


tkt_uuid: 473656ffffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: pop3
priority: 5 Medium
foundin: None
resolution: None
title: pop3::retrieve blocking forever
comment:
  Hi folks!

  I tried to use pop3::retrive and found a problem. It
  blocks while reading
  the message. I examined the code and found that it
  blocks on line 

  set msgBuffer [read $chan $size]

  I made a few tests and found that the message size if
  always less than
  $size. This was tested with qpopper v2.43, qpopper
  v4.0.3, cucipop v1.31.

  Another problem is handling "^\.". When a line begins
  with a dot (.) it is
  prefixed with a (.). It is client responsability to
  remove this extra (.)
  before exibiting the message.

  The patch below (seems to) fix both problems.

  I apologize for my poor english.

  Thanks in advance,

  Edesio
  edesio@ieee.org


tkt_uuid: 410054ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 1 Zero
foundin: None
resolution: Invalid
title: bwidget combobox.tcl bug
comment:
  line 273 of the March 10, 2001 version of bwidget's
  combobox.tcl says:

                  -listvariable [Widget::varForOption
  $path -values]]

  as an argument to listbox .  But as far as I can tell,
  the listbox.n man page documents -listvar as the name
  of the option, not -listvariable.

  Is this a documentation bug, or is it a coding bug,
  or is it something else?  

  Also, there does not seem to be a category for
  reporting bwidget bugs on this form.


tkt_uuid: 1714138fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tie
priority: 5 Medium
foundin: None
resolution: Rejected
title: tcllib 1.9 "tie" breaks "dup" command of Tclx extension
comment:
  After switching from tcllib 1.8 to tcllib 1.9 "dup" command of Tclx extension starts to behave strange. 

  After calling "dup" for stderr channel this channel disappears. Here's example:

  # cat dup-bug.tcl
  parray tcl_platform
  puts [info patchlevel]
  puts [package require Tclx]
  puts [package require tie]
  set h [open dup-bug.log w]
  dup $h stderr
  puts stderr "test"

  # tclsh dup-bug.tcl
  tcl_platform(byteOrder) = littleEndian
  tcl_platform(machine)   = i386
  tcl_platform(os)        = FreeBSD
  tcl_platform(osVersion) = 5.4-RELEASE
  tcl_platform(platform)  = unix
  tcl_platform(user)      = root
  tcl_platform(wordSize)  = 4
  8.4.11
  8.3
  1.1

  # cat dup-bug.log
  can not find channel named "stderr"
      while executing
  "puts stderr "test""
      (file "dup-bug.tcl" line 7)

  After reverting to tcllib 1.8 the problem goes away:

  # tclsh dup-bug.tcl
  tcl_platform(byteOrder) = littleEndian
  tcl_platform(machine)   = i386
  tcl_platform(os)        = FreeBSD
  tcl_platform(osVersion) = 5.4-RELEASE
  tcl_platform(platform)  = unix
  tcl_platform(user)      = root
  tcl_platform(wordSize)  = 4
  8.4.11
  8.3
  1.0.1

  # cat dup-bug.log
  test


tkt_uuid: 900178ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: Fixed
title: Incorrect or unclear Response to PASS
comment:
  In proc ::ftpd::command::PASS, the positive response is
  generated as puts $sock "200 OK" (line# 1050). The RFC
  (imo) states, that it should be "230 ...." instead.

  The ftpd-Version is:
  ftpd.tcl,v 1.17 2003/07/05 04:59:35 andreas_kupries

  This behaviour leads to the message
  Unexpected response: OK
  with the widely-used NCFTP-Clients.

  M.Hoffmann@hmk.info 


tkt_uuid: 991959ffffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: ncgi
priority: 5 Medium
foundin: None
title: command to send headers
comment:
  In CGI scripts with ncgi you send the headers via a
  regular old puts.  This works ok for the moment, but
  it's an obstacle to creating a compatibility layer for
  systems such as Rivet or tclhttpd.  It would be best if
  all 'special' goings-on were handled by ncgi commands
  that could be overridden to create a compatibility layer.

  Something along the lines of

  ncgi::headers text/html

  is what I'm thinking of.


tkt_uuid: 502246ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: bwidget 1.3 documentation
comment:
   I have installed ActiveTCL 8.3.1.4 for Linux and I 
  use Bwidgets.

   I have found that there is a problem of compatibility 
  between Bwidgets 1.2 and Bwidget 1.3
   By reading the code of the combobox and spinbox 
  megawidgets, I have seen that they no longer use 
  LabelledFrame  and associated options.  I have fixed 
  the problem in my application.

   This mail for telling you that the documentation of 
  the combobox (found in ActiveTcl  HTML documentation 
  tarball) has not been updated for the Bwidgets 1.3


tkt_uuid: 1294733fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: html
priority: 8
foundin: None
resolution: Accepted
title: Two small html helpers
comment:
  Because I used PHP for the web usually I missed some
  replacement for html_entities and nl2br in the html
  module of tcllib.


tkt_uuid: 481292ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: new package proposal: stooop
comment:
  This is not really a patch, but I am offering to add
  the Tcl only OO extension stooop (at
  http://jfontain.free.fr/).

  I think it is ready to go (has own namespace,
  documentation, test suite and examples).

  Please let me know if you need anything else.

  URL: http://jfontain.free.fr/stooop-4.1.1.tar.gz
  Best regards,

  Jean-Luc


tkt_uuid: 1843712fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: smtp
priority: 5 Medium
foundin: None
title: Option to set client address
comment:
  The EHLO client address comes from [info hostname] or is set to localhost if sending email to the localhost server but this is not sufficient.  For example I want to send an email from my desktop system using my ISP's mail server and it requires that the EHLO client is a FQDN but my system is setup with a simple hostname of "deth".  Because of this, sending emails fails yet I can send an email just fine from Thunderbird.  In looking at the conversation between Thunderbird and my mail server, I see that Thunderbird is sending "EHLO 127.0.0.1" so I would like the option to do this as well so that I can send emails properly from my software.

  The changes for this are just to allow a -client option to the ::stmp::sendmessage proc and add code in the initialize variables area (right by where username is set to {}) like this:

      set client {}

  Then in the option parsing add this:

      -client { set client $value }

  And then change the code to get the client like this:

      if { $client == "" } {
          if { [string compare $server localhost] } {
              set client localhost
          } else {
              set client [info hostname]
          }
      }

  Thats it!  Now I can specify "-client 127.0.0.1" and sending the email works properly.

  This is from bpepers@linuxcanada.com


tkt_uuid: 1646625fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: doctools
priority: 9 Immediate
foundin: None
resolution: None
title: doctools - html backend - backslashes wrong in doc example
comment:
  Looking at http://tcllib.sourceforge.net/doc/des.html I see that the backslashes in the example are doubled. This has proved very confusing to at least one user, and caused him to have needless problems.


tkt_uuid: 842408ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct
priority: 5 Medium
foundin: None
resolution: Fixed
title: pool.tcl - requesting an allocated item returns error
comment:
  Observed:
  =======

  package require struct
  struct::pool::pool chars
  chars add a
  chars add b
  chars add c
  chars request char -prefer a
  chars request char -prefer a

  The last command fails, returning an error.

  Desired
  =====
  The last command should return the value zero, as
  documented.

  Fix
  ===
  A bug in the code for ::struct::pool::request was the
  cause.
  I fixed the code, and attached a diff (with respect to
  version 1.2 of pool.tcl) which has that fix.

  Greetings,

  Erik Leunissen
  ==========


tkt_uuid: 1554121fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: snit
priority: 5 Medium
foundin: None
resolution: None
title: Camel case options
comment:
  Snit objects doesn't allow camel case named options.

  Something like 

  option -thisOrThat

  throws an error: 
  Error in "option -thisOrThat...", badly named option
  "-thisOrThat"

  It is documented, to work this way:
  "The option name must begin with a hyphen, and must not
    contain any upper case letters."

  It's there a reason for this other than to force the
  snit users to use a certain naming style?

  If possible, I would prefer, that camel case option
  names are allowed.

  Even if not, there is either a bug in the option name
  checking code or in the documentation. Because the user
  can in fact use upper case letters in an option name,
  as long as they are outside of 7-bit ASCII. E.g.

  option -thisÄtschThat

  works. The used char in this example ist a latin
  capital A with diaresis, \u00c4 and this is an upper
  case letter, as tcl confirm:

  string is upper Ä
  ==> 1


tkt_uuid: 1310623fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
resolution: Duplicate
title: tie file implementation broken
comment:
  The following script:

      package require tie
      set a(y) 1
      set a(z) 3
      tie::tie a file a.save
      set a(aa) 2
      set a(ab) 3
      set a(ac) 4

  Gives me an error:

      can't set "a(ab)": can't unset "cache": no such
  variable
          while executing
      "set a(ab) 3"


tkt_uuid: 2804961fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 3 Low
foundin: None
resolution: Accepted
title: combobox syntactic nit
comment:
  bwidget/combobox.tcl:28 (warnContinuation) possibly bad continuation line, blank line after backslash
          initialize {-relief sunken -borderwidth 2} \
                                                     ^


tkt_uuid: 2390890fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: exif
priority: 5 Medium
foundin: None
resolution: Duplicate
title: Unrecognized EXIF tags should not generate errors
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: 1977644fffffffffffffffffffffffffffffffff
type: Patch
status: Open
subsystem: None
priority: 5 Medium
foundin: None
resolution: None
title: Using case sensitive accelerator keys for bwidget mainframe
comment:
  The BWidget MainFrame widget supports an automatic accelerator key binding.

  With current implementation of 'mainframe -menu' only lower case letters can be bind as accelerator keys.

  By adding a new switch the accelerator key processing can be modified to support optional mixed case accelerator keys (e.g {Ctrl s} and {Ctrl S} for two different menu entries).

  The patch file contains the changes of mainframe.tcl. Also a modified manual MainFrame.html is included which explains the new -casesensitive switch (some missing HTML tags are added, too).


tkt_uuid: 784519ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: (unused)
priority: 9 Immediate
foundin: None
resolution: Fixed
title: tcllib 1.5 attempts to use tcllib 1.4 doctools during build
comment:
  During an attempt to install tcllib1.5, the installation failed 
  because multiplexer.n could not be generated.  Andreas 
  Kupries suggested that this was because tcllib 1.4 was 
  installed; there is a known bug in fmt.nroff.

  During installation, tcllib should ensure that it uses its own 
  copy of doctools, rather than relying on that installed on the 
  system.


tkt_uuid: 531541ffffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: mime
priority: 5 Medium
foundin: None
title: Partial message construction
comment:
  See Tcllib FR #531531 and Tcllib FR #527114
  for supplemental information.

  It would be convenient for the pop3 server
  if the mime package could construct/copy
  partial messages containing a specified number
  of lines of the body. The implementation of
  the pop3 TOP command would benefit greatly from
  this.

  I know that I could construct the whole message
  in memory and then simply cut of the transfer
  after the specified number of lines but this
  means that the system will consume a lot of memory
  when it comes to big messages.


tkt_uuid: 1187190fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Accepted
title: Update status icon when window regains focus
comment:
  Currently the status icon is only update when 
  restoring from the system tray.
  If the chat window doesn't have focus the number of 
  new messages is updated on both the window title and 
  the status icon, when regaining focus only the window 
  title is updated. This patch updates the status icon 
  as well.

  tkchatStatus1 is a minimal change to enable this.
  tkchatStatus2 is the way I think it should be done :)


tkt_uuid: 1514855fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: error when navigate in empty Tree widget
comment:
  I found an error in Tree widget when navigate inside it
  with keyboard.
  Script to reproduce a bug:

  ------------------

  #! /usr/bin/wish
  package require Tk
  package require BWidget

  Tree .t
  pack .t

  ------------------

  When I focus .t widget and press Down key I saw popup
  window with error message:

  .t selection set: Cannot select unknown node "".
  .t selection set: Cannot select unknown node "".
      while executing
  "Tree::selection .t set {}"
      ("eval" body line 1)
      invoked from within
  "eval [linsert $args 0 Tree::$cmd .t]"
      (procedure ".t" line 1)
      invoked from within
  "$win selection set [lindex $nodes 0]"
      ("down" arm line 4)
      invoked from within
  "switch -exact -- $which {
  "up" {
      # Up goes to the node that is vertically above the
  current node
      # (NOT necessarily the current node's pare..."
      (procedure "Tree::_keynav" line 24)
      invoked from within
  "Tree::_keynav down .t"
      (command bound to event)


  I use Debian Sarge with following versions of software:
  * Tcl 8.4.9
  * Tk 8.4.9
  * BWidget 1.7.0

  As I understand last version of BWidget from cvs
  repository affected by this bug too.

  Patch: the simplest decision is to add folowing code to
  the beginning of Tree::_keynav procedure

  ------------------
  if {[$win nodes root] eq ""} {
      return
  }
  ------------------


tkt_uuid: 1548418fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: None
title: ftp::Put hangs when non-existent directory
comment:
  When the directory in the l_dest_file does not exists,
  the statement hangs.

  Example:
  if { [ftp::Put $h_dest_ftp $l_bck_file $l_dest_file] ==
  1 } {                        
  ...
  }


tkt_uuid: 3469006fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: inifile
priority: 5 Medium
foundin: None
resolution: Fixed
title: ini::commit fail
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: 3608240fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: queue
priority: 5 Medium
foundin: None
resolution: Fixed
title: struct::queue error, procs peek and get
comment:
  Last action "qp peek [qp size]" gives an incorrect result [1 2 3 4 5] instead of [2 3 4 5]

  script:

  package require struct::queue
  struct::queue qp
  qp put 1 2 3
  puts [qp peek [qp size]]
  qp get
  puts [qp peek [qp size]]
  qp put 4 5
  puts [qp peek [qp size]]

  output:

  1 2 3
  2 3
  1 2 3 4 5


tkt_uuid: 923055ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: Fixed
title: Generic arg processing is bogus, trips on spaces in paths
comment:
  I've adapted the /tcl/demos/Tcllib/ftpd/ftpd.test -
  script to a full-functional ftp-daemon, especially
  using a modified proc like

  proc fakefs {cmd path args} {
      # Use the standard unix fs, i.e.
  "::ftpd::fsFile::fs", but rewrite the incoming path
      # to stay in the /tmp directory.

      set path [file join / tmp [file tail $path]]
      eval [linsert $args 0 ::ftpd::fsFile::fs $cmd $path]
  } 

  if transferring files with blanks in the filename, the
  $path-variable in fakefs() already holds an incorrect
  value: the cutted filename up until the first blank!

  I've been looking around the ftpd.tcl code, but someone
  with deeper knowledge of the program-logic there is
  required!

  I think this has something to do with the use of EVAL
  somewhere, because EVAL removes one level of grouping
  (so surrounding the destination-spec with "" doesn't
  solve the problem!).

  I haven't found a simple workaround yet.

  mailto:M.Hoffmann@hmk.info


tkt_uuid: 2999764fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 2
foundin: None
resolution: Fixed
title: ListBox: icon out of view on keybord select
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: 1813193fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: ftp
priority: 5 Medium
foundin: None
title: ftp - FXP - cross server transfer not going through client
comment:
  Is it possible to add FXP support? RFC959 describes the implementation of FXP as follows:

        When data is to be transferred between two servers, A and B (refer
        to Figure 2), the user-PI, C, sets up control connections with
        both server-PI's.  One of the servers, say A, is then sent a PASV
        command telling him to "listen" on his data port rather than
        initiate a connection when he receives a transfer service command.
        When the user-PI receives an acknowledgment to the PASV command,
        which includes the identity of the host and port being listened
        on, the user-PI then sends A's port, a, to B in a PORT command; a
        reply is returned.  The user-PI may then send the corresponding
        service commands to A and B.  Server B initiates the connection
        and the transfer proceeds.  The command-reply sequence is listed
        below where the messages are vertically synchronous but
        horizontally asynchronous:

           User-PI - Server A                User-PI - Server B
           ------------------                ------------------

           C->A : Connect                    C->B : Connect
           C->A : PASV
           A->C : 227 Entering Passive Mode. A1,A2,A3,A4,a1,a2
                                             C->B : PORT A1,A2,A3,A4,a1,a2
                                             B->C : 200 Okay
           C->A : STOR                       C->B : RETR
                      B->A : Connect to HOST-A, PORT-a


  If you would like to discuss this with me any further, please contact me at: pill_uk@hotmail.com


tkt_uuid: 1176748fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
resolution: Duplicate
title: graph.tcl uses global variable
comment:
  When graph.tcl is sourced as the struct package is
  loaded, the following expression is evaluated near the
  beginning:

  if {
      ![catch {package require cgraph} version] &&
      [package vcompare $version 0.6] > 0
  }

  in this instance $version is created as a global
  variable, which has the potential to clash with with
  values defined in the program loading the package.

  Since tcllib packages are supposed to make rigorous use
  of namespaces, the above expression would be better if
  it read:

  if {
      ![catch {package require cgraph}
  ::struct::graph::version] &&
      [package vcompare $::struct::graph::version 0.6] > 0
  }


tkt_uuid: 720206ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: profiler
priority: 7 High
foundin: None
resolution: Fixed
title: test failure: profiler module with tcl8.3
comment:
  Using tcl 8.3 to run the tcllib test suite we get the
  following errors  not present when using tcl 8.4
  Test platform: tcl 8.3.5 Windows 2K intel.

  Module:profiler
  modules/profiler/profiler.test

  ==== profiler-3.1 profiler wrappers do profiling FAILED
  ==== Contents of test case:

      set c [interp create]
      interp alias $c parentSet {} set
      set result [$c eval {
  set auto_path [parentSet auto_path]
  package require profiler
  profiler::init
  proc ::foo {} {
      set foobar 0
  }
  foo
  foo
  foo
  foo
  profiler::dump ::foo
      }]
      interp delete $c
      array set bar $result
      array set foo $bar(::foo)
      list callCount $foo(callCount) callerDist
  $foo(callerDist)

  ==== Test generated error:
  divide by zero
  ---- Result should have been:
  callCount 4 callerDist {GLOBAL 4}
  ==== profiler-3.1 FAILED


  ==== profiler-4.1 profiler::print produces nicer output
  than dump FAILED
  ==== Contents of test case:

      set c [interp create]
      interp alias $c parentSet {} set
      set result [$c eval {
  set auto_path [parentSet auto_path]
  package require profiler
  profiler::init
  proc ::foo {} {
      set foobar 0
  }
  foo
  foo
  foo
  foo
  profiler::print ::foo
      }]
      interp delete $c
      regsub {Compile time:.*} $result {} result
      string trim $result

  ==== Test generated error:
  divide by zero
  ---- Result should have been:
  Profiling information for ::foo
  ============================================================
              Total calls:  4
      Caller distribution:
    GLOBAL:  4
  ==== profiler-4.1 FAILED


  ==== profiler-5.1 profiler respects suspend/resume FAILED
  ==== Contents of test case:

      set c [interp create]
      interp alias $c parentSet {} set
      set result [$c eval {
  set auto_path [parentSet auto_path]
  package require profiler
  profiler::init
  proc ::foo {} {
      set foobar 0
  }
  foo
  foo
  foo
  foo
  profiler::suspend ::foo ; # note the qualification,
  has to match proc!
  foo
  foo
  set res [profiler::print ::foo]
  profiler::resume
  set res
      }]
      interp delete $c
      regsub {Compile time:.*} $result {} result
      string trim $result

  ==== Test generated error:
  divide by zero
  ---- Result should have been:
  Profiling information for ::foo
  ============================================================
              Total calls:  4
      Caller distribution:
    GLOBAL:  4
  ==== profiler-5.1 FAILED


  ==== profiler-6.1 profiler handles functions with funny
  names FAILED
  ==== Contents of test case:

      set c [interp create]
      interp alias $c parentSet {} set
      set result [$c eval {
  set auto_path [parentSet auto_path]
  package require profiler
  profiler::init
  proc ::foo(bar) {} {
      set foobar 0
  }
  foo(bar); foo(bar); foo(bar)
  profiler::dump ::foo(bar)
      }]
      interp delete $c
      array set bar $result
      array set foo ${bar(::foo(bar))}
      list callCount $foo(callCount) callerDist
  $foo(callerDist)

  ==== Test generated error:
  divide by zero
  ---- Result should have been:
  callCount 3 callerDist {GLOBAL 3}
  ==== profiler-6.1 FAILED


  ==== profiler-9.1 dump for multiple functions FAILED
  ==== Contents of test case:

      set c [interp create]
      interp alias $c parentSet {} set
      set result [$c eval {
  set auto_path [parentSet auto_path]
  package require profiler
  profiler::init
  proc ::foo {} {
      set foobar 0
  }
  proc ::bar {} {
      set foobar 1
  }
  foo; foo; bar;
  profiler::dump *
      }]
      interp delete $c
      array set data $result
      catch {unset foo}
      catch {unset bar}
      array set foo $data(::foo)
      array set bar $data(::bar)
      list [list callCount $foo(callCount) callerDist
  $foo(callerDist)]  [list callCount $bar(callCount)
  callerDist $bar(callerDist)]

  ==== Test generated error:
  divide by zero
  ---- Result should have been:
  {callCount 2 callerDist {GLOBAL 2}} {callCount 1
  callerDist {GLOBAL 1}}
  ==== profiler-9.1 FAILED


tkt_uuid: 1154863fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: SendAuthOld uses wrong variable
comment:
  tkjabber::SendAuthOld uses $username, but only sets $user.

  Fix: s/username/user/ @ line 6181 of tkchat.tcl 1.263


tkt_uuid: 791886ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Invalid
title: des: encoded and then decoded string does not match original
comment:
  Hello all,




  the following happens, when I try to encode and then 
  decode back a given string:




  set ciphertext [::DES::des -mode encode -key secret 
  oliver]


  set plaintext [::DES::des -mode decode -key secret 
  $ciphertext]




  string equal "oliver" $plaintext  --> 0 ??


  string length "oliver" --> 6


  string length $plaintext --> 8




  The reason for this is, the string in $plaintext now have 
  two more 'chars' at the end, both of hex 00.




  Regards Oliver




  P.S. By the way, I can't select 'des' as a category while 
  submitting a bug, it's not in the dropdown list.


tkt_uuid: 3606621fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Installation
priority: 5 Medium
foundin: None
resolution: Fixed
title: man pages collision with tcl-8.6.0
comment:
   package dev-tcltk/tcllib-9999 NOT merged
   * 
   * Detected file collision(s):
   * 
   * /usr/share/man/mann/zlib.n.xz
   * /usr/share/man/mann/variable.n.xz
   * /usr/share/man/mann/string.n.xz
   * /usr/share/man/mann/coroutine.n.xz
   * 
   * Searching all installed packages for file collisions...
   * 
   * Press Ctrl-C to Stop
   * 
  Some man pages from tcllib collide with tcl-8.6 installation.

   * dev-lang/tcl-8.6.0
   * /usr/share/man/mann/coroutine.n.xz
   * /usr/share/man/mann/string.n.xz
   * /usr/share/man/mann/variable.n.xz
   * /usr/share/man/mann/zlib.n.xz
   * 


tkt_uuid: 2947213fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tclapps :: tkchat
priority: 7 High
severity: Minor
foundin: None
resolution: Not Applicable Here
title: Repeated short history
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: 534349ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 6
foundin: None
resolution: Rejected
title: add a "macro" macro to doctools...
comment:
  When prototyping new macros, it's a pain to have to 
  hand-edit the foreach loop in mpexpand that makes safe 
  interpreter aliases for the macros. It would also be 
  nice to be able to create ad hoc macros within a man 
  page.

  To that end, I suggest a "macro" macro, which does 
  nothing but create and register new macros. 

  For example, it might work like this (off the top of 
  my head):

  macro myNewMacro html {arg1 arg2} {
      set result "<ol><li>$arg1</li><li>$arg2</li></ol>"
  }

  macro myNewMacro tmml {arg1 arg2} {
      set result "<bryan><shows><his><tmml><ignorace>"
      append result "<foo>$arg1</foo><bar>$arg2</bar>"
  }

  And then to use it in a document:

  blah blah
  [myNewMacro "foo" "bar"]
  blah blah

  ... and so on.

  The implementation would be fairly trivial. It could 
  be (almost) as simple as this:

  proc macro {name format arglist body} {
      lappend ::textutil::expander::knownmacros $name
      proc ::textutil::expander::$format::$name $arglist 
  $body
  }

  ... with allowances for parameter checking, etc. 
  mpexpand, then, could use the "knownmacros" variable 
  rather than a hard-coded list of known macros.

  This would make it easier to update formats without 
  having to update the mpexpand program. Plus, it allows 
  ad hoc macros in a document. We could even support 
  a "mpexpand.rc" file of some sort, where people could 
  write their own macros. For example, if I don't like 
  how the default rendering of [strong] works I could 
  write my own replacement. Or maybe I have my own 
  personal copyright macro that I want to use for the 
  documents I distribute.


tkt_uuid: 1601203fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: i18n package add
comment:
  http://wiki.tcl.tk/9169 is a potentially very useful package which adds a set of routines and utilities to help when generating unicode.


tkt_uuid: 2812832fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: statistics
priority: 5 Medium
foundin: None
resolution: Fixed
title: unstable calculation of variance
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: 717594ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: dns
priority: 8
foundin: None
resolution: Fixed
title: bgerror in dns::TcpEvent
comment:
  if a dns reply comes back that is too short (e.g.,
  server doesn't wait for tcp connection to gracefully
  drain, the call to "binary scan" won't create variable
  "id" and "flags", which will cause a bgerror to get
  thrown when those variables are references a few lines
  later.


tkt_uuid: 1515267fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Installation
priority: 5 Medium
foundin: None
resolution: Fixed
title: installation process broken with latest CVS
comment:
  a typo in the installed_modules.tcl file keeps tcllib
  from installing, 1.8.0.1

  I'm attaching a patch.


tkt_uuid: 3584574fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: cmdline
priority: 5 Medium
foundin: None
title: File/directory checking feature
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: 996569ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 7 High
foundin: None
resolution: None
title: BWidget 1.7: ComboBox: autocomplete problem w/upper case
comment:
  The autocomplete function in the BWidgets 1.7.0
  ComboBox has problems matching when the list has values
  that are all upper case.  By doing either a string
  tolower or string totitle on the list entries, the
  autocomplete works very well.


tkt_uuid: 579853ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Fixed
title: Backslashes escaped but not unescaped
comment:
  ::htmlparse::PrepareHtml protects characters that are
  special to Tcl (braces and backslash).  The ob & cb
  (open & closing brace) escapes are converted back
  because there are keys for ob & cb in the
  ::htmlparse::escapes array, but there is no entry for
  ::htmlparse::escapes(bsl).


tkt_uuid: 482558ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: control
priority: 5 Medium
foundin: None
title: update control man page for rswitch
comment:
  without documentation, it becomes somewhat difficult
  for developers to realize that particular functionality
  is available.  Addition of doc on rswitch to the
  control man page would remedy this situation in at
  least this case.


tkt_uuid: 532246ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: NoteBook tabs text not entirely visible
comment:
  Using BWidget 1.4.0 NoteBook widget:

  The lower portion of the text on the tabs gets 
  truncated on all tabs except the selected tab.

  The text should appear in its entirety on all tabs.


tkt_uuid: 1645333fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: asn
priority: 5 Medium
foundin: None
resolution: Fixed
title: asnGetContext fails if encoding is primitive
comment:
  Currently (as of version 0.7 of asn package) function asnGetContext  contain following check

     if {($tag & 0xE0) != 0x0a0} {
          return -code error \
              [format "Expected Context (0xa0), but got %02x" $tag]
     }

  This check true if context-dependent tag has constructed encoding. However it is possible to have context-dependent tag with primitive encoding. For example, in PKCS7 format encrypted message data are stored as context-dependent tag with primitive encoding.

  So, this check should be relaxed as 

    if {($tag & 0xC0) != 0x80} 

  for more strict conformance with BER. It would be very nice to add additional optional parameter "encodingType" to asnGetContext, which would return value of 0x20 bit of the tag, thus letting application to know whether encoding of this tag was constructed or primitive.

  Simular changes should be applied to asnGetApplication, which has the same problem.


tkt_uuid: 1328920fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: math
priority: 5 Medium
foundin: None
title: Symbolic differentiation
comment:
  The attached is a symbolic differentiation package for
  Tcl.  It depends on the 'tclparser' module from TclPro.


tkt_uuid: 1731101fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Works For Me
title: ScrollableFrame invalid scrollbar
comment:
  Hi,
  I've had quite an annoying bug with Bwidget's ScrollableFrame. Whenever we have data in the frame that doesn't need a scrollbar, at first, there is no scrollbar, but if we resize the window to give it a smaller size, then a scrollbar appears even though it is still not needed. Clicking on the scrollbar will make it disappear instantly. 
  In other words, you create a toplevel of size 500x500, you put a ScrollableFrame in a ScrolledWindow in it, you put widgets in the ScrollableFrame where the internal frame takes 100x100, no scrollbar needed, if we resize the toplevel to 400x400 for example, then a scrollbar appear even though it shouldn't until the size gets under 100x100. Clicking on the scrollbar makes it disappear, if we resize again to 300x300, it appears again. If we resize to 500x500, no scrollbar, if we resize again to 400x400, still no scrollbar.

  I found out the reason behind this. It's pretty simple. The ScrollableFrame is in fact a canvas which contains a frame. This allows the scrollbar to work with the canvas. ScrollableFrame creates the frame and adds a binding on its <Configure> which calls ::ScrollableFrame::_frameConfigure 
  That proc checks the [winfo width] and [winfo height] of the frame and takes the maximum width/height between the width/height of the frame and the width/height of the canvas and sets that as the -scrollregion of the canvas.

  In other words, in the above example, the width/height of the frame is 100x100 and the one of the canvas is 500x500, so the -scrollregion of the canvas becomes [list 0 0 500 500].

  Once we resize the window to 400x400 the scrollregion being [list 0 0 500 500] the scrollbar appears. And the reason why the -scrollregion doesn't get modified is that the frame doesn't get <Configured> since we resize to 400x400 and the frame is in 100x100 so its boundaries aren't touched, so the frame is not <Configured> so the ::ScrollableFrame::_frameConfigure doesn't get called, which is why the scrollregion isn't changed and the scrollbar appears.

  I hope this isn't too confusing.. Anyways, my solution was to simply replace the _frameConfigure proc by a one lines : 
  $canvas:cmd configure -scrollregion [$canvas:cmd bbox all]
  This makes the scrollregion of the canvas be set to the frame's width/height so when we resize, the scrollbar doesn't appear, and if we resize to let's say 99x99, then the scrollbar appears because of the [$canvas:cmd bbox all]. If the frame's size is modified, then you get the <Configure> and the bbox will report the new size of the scrollregion.

  Can you please make sure this patch gets into the next version of bwidget. 

  p.s.: sorry if it's too long and difficult to understand, I'm not very good at explaining things...


  Thank you,
  KaKaRoTo


tkt_uuid: 1909367fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Development Tools
priority: 5 Medium
foundin: None
resolution: Fixed
title: No info about syntax errors in the summary
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: 2800400fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: struct :: graph
priority: 5 Medium
foundin: None
title: struct::graph:op::toAdjacencyMatrix issues
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: 1003962fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: BWidget 1.7 Tree bindings (bindImage, bindText)
comment:
  Concerning the tree widget in version 1.7

  When the option -selectfill is active, the bindings for bindImage and 
  bindText will interfere with each other so that calling bindImage 
  before bindText will give a different result that calling bindText before 
  bindImage. This is because both procedures (Tree::bindText and 
  Tree::bindImage) use:


  if {[Widget::getoption $path -selectfill]} {
    path.c bind "box" $event $script
  } else {
    $path.c bind "box" $event {}
  }

  Both procedures change the binding for the "box".

  Calling bindText first, then bindImage will fire the image binding when 
  clicking on the background of the item (provided the binding is bound 
  to <B-1>).


tkt_uuid: 3598733fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Build System & Testing
priority: 9 Immediate
foundin: None
resolution: Fixed
title: Tcl 8.6.0 and tcllib 1.14 are not synced
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: 961454ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: tklib: plotchart
priority: 5 Medium
severity: Minor
foundin: None
resolution: Not Applicable Here
title: Add a date/time axis to the repertoire
comment:
  (Reminder)
  Add the ability to show date/times along the x-axis -
  especially useful for timeseries of measurement data


tkt_uuid: 494388ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
title: Section references & Example sections
comment:
  Extend the format of doctools manpages to allow for 
  markup of section references and example 
  sections/paragraphs.


tkt_uuid: 731457ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
title: results are lost for send -async calls
comment:
  The documentation suggests that the results of RPC and
  remote errors are lost when -async option is specified
   with comm::comm send.

  Is there an API which will allow me to wait and/or
  retrieve those values of an async invocation? If not,
  would it be possible to add such an API to this
  package. It would make it really useful to be able to
  submit async cmds to more than 1 interps and then wait
  for the results at a later point.

  -----------------------------------------------------------------

  Hm. This requires a number of changes in comm I
  believe. If I remember my look at the code correctly
  The sender tells the remote side if he is interested in
  the results of the call, and if not (i.e. -async) the
  remote side does not even make an effort to send this
  data back.

  ... so the sender has to pretend 'no async' to the
  remote side, but claim async for itself.

  Is there truly a need to wait for the result on your
  own ? How about allowing the specification of a
  'result' callback instead. Automatically called when
  the results return.

  The problem I have with waiting later is that comm does
  some fairly tricky things with 'vwait' to ensure that
  the sender is able to process incoming requests etc.
  even while waiting for the result of a synchronous
  [send], and this part is not completely understood by
  me (yet). Adding callbacks OTOH hand seems simpler to
  me. It would also fit into the general model of Tcl for
  such a situation.

  Andreas

  ----------------------------------------------------------------------

  I would think that the API would be something like
  -asyncvar foo, and foo gets set with the data (probably
  a list of completion code and result) when completed. 
  Perhaps -variable instead, understood to be async, not
  to overdo the -async name.

  Jeff
  ----------------------------------------------------------------------


tkt_uuid: 1009543fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Rejected
title: Better handling of up/down in text widgets
comment:
  This is in regards to the tk text windows.

  I find that the up/down keys do not work as one would
  expect in a text box that includes wrapped lines. It
  does not go to the character immediately above, rather
  goes to the character at the same index in the 'line'
  above which could actually be a number of lines up.

  Therefore I recommend changing the ::tk::TextUpDownLine
  to something more along the lines of below.

  Just a quick note it is not fully complete. I have not
  added the ::tk::Priv as before (which should be added)
  and there is a small bug with it when the cursor is at
  the very end of the line, although I believe that bug
  is due possibly to a bug in the return of [$inputbox
  bbox insert] when the character is at the end of the line.
  I also have it as 2 fucntions which could be
  reorganised to be 1 function as the old code.

  #///////////////////////////////////////////////////////////////////////////////
  # UpKeyPressed (inputbox)
  # Called by a window when the user uses the up key in
  a text box. It returns
  # the index of the character 1 line above the
  insertion cursor
  proc UpKeyPressed { inputbox } {
  $inputbox see insert

  set bbox [$inputbox bbox insert]
  set xpos [expr [lindex $bbox 0]+[lindex $bbox 2]/2]
  set ypos [lindex $bbox 1]
  set height [lindex $bbox 3]
  if { $ypos > $height } {
  return [$inputbox index "@$xpos,[expr $ypos-$height]"]
  } else {
  $inputbox yview scroll -1 units
  update
  set ypos [lindex [$inputbox bbox insert] 1]
  set height [lindex [$inputbox bbox insert] 3]
  if { $ypos > $height } {
  return [$inputbox index "@$xpos,[expr $ypos-$height]"]
  }
  }
  return [$inputbox index insert]
  }
  #///////////////////////////////////////////////////////////////////////////////


  #///////////////////////////////////////////////////////////////////////////////
  # DownKeyPressed (inputbox)
  # Called by a window when the user uses the down key
  in a text box. It returns
  # the index of the character 1 line below the
  insertion cursor
  proc DownKeyPressed { inputbox } {
  $inputbox see insert

  set bbox [$inputbox bbox insert]
  set xpos [expr [lindex $bbox 0]+[lindex $bbox 2]/2]
  set ypos [lindex $bbox 1]
  set height [lindex $bbox 3]
  set inputboxheight [lindex [$inputbox configure
  -height] end]
  if { [expr $ypos+$height] < [expr
  $inputboxheight*$height] } {
  return [$inputbox index "@$xpos,[expr $ypos+$height]"]
  } else {
  $inputbox yview scroll +1 units
  update
  set ypos [lindex [$inputbox bbox insert] 1]
  set height [lindex [$inputbox bbox insert] 3]
  set inputboxheight [lindex [$inputbox configure
  -height] end]
  if { [expr $ypos+$height] < [expr
  $inputboxheight*$height] } {
  return [$inputbox index "@$xpos,[expr $ypos+$height]"]
  }
  }
  return [$inputbox index insert]
  }
  #///////////////////////////////////////////////////////////////////////////////


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

  * report 0.3.1
  WARNING: cleanupTests deleting /local/src/tcllib/dummy...
  WARNING: cleanupTests deleting /local/src/tcllib/rep1...
  WARNING: cleanupTests deleting /local/src/tcllib/rep2...
  WARNING: cleanupTests deleting /local/src/tcllib/rep3...
  WARNING: cleanupTests deleting /local/src/tcllib/rep4...
  WARNING: cleanupTests deleting /local/src/tcllib/rep5...


tkt_uuid: 1042987fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: treeql
priority: 5 Medium
foundin: None
resolution: Fixed
title: Extra list layers on output of get
comment:
  Here is one unexpected behavior I found.  There seem to
  be extra list layers on elements of the list returned
  by get when that list element contains spaces or square
  braces.

      package require treeql
      package require struct::tree
      package require tcltest
      namespace import tcltest::*
      set t [struct::tree]; ::treeql q -tree $t
      test get.1 {attributes with special characters} {
          $t insert root end n1 n2 n3
          $t set n1 title hello
          $t set n2 title "hello there"
          $t set n3 title {[hello]}
          q query root children get title
      } [list hello {hello there} {[hello]}]
      $t destroy; q destroy

  Output:

   ---- Result was:
   hello {{{hello there}}} {{{[hello]}}}
   ---- Result should have been (exact matching):
   hello {hello there} {[hello]}
   ==== get.1 FAILED


tkt_uuid: 747541ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Accepted
title: ::mime::word_decode: lowercase method
comment:
  ::mime::word_decode expects the encoding method to be either B or Q. While testing code with one of the Debian mailing lists, I encountered one mail with a lowercase letter "q".

  Attached is the (simple) patch for tcllib 1.4.


tkt_uuid: 1156611fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 7 High
foundin: None
resolution: Fixed
title: Error raised by <iq> processing.
comment:
  Caused by a request for user info (actually version info):

  iqhook ::tkjabber::on_iq_version failed: 1
  expected boolean value but got ""
      while executing
  "if {$isempty} {
          append rawxml "/>"
      } else {
          append rawxml ">"
          
          # Call ourselves recursively for each child
  element. 
          # There is an arbitrary ..."
      (procedure "createxml" line 9)
      invoked from within
  "createxml $child"
      (procedure "wrapper::createxml" line 17)
      invoked from within
  [.....]


tkt_uuid: 2909962fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: json
priority: 5 Medium
foundin: None
resolution: Accepted
title: Faster, more readable implementation of json parser
comment:
  When parsing documents of some nontrivial size (i.e. >100kB), I have found the json parser package 1.0 to be far too slow.

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

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

  I have not touched the *2json procs.

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

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


tkt_uuid: 564691ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: bad interaction: PanedWindow ScolledWind
comment:
  Sometimes the sash disappears when you make a window 
  pane the wrong size.  I have a short hunk of code 
  which exhibits and a varient which does not.

  Here is the packing structure in both variants:

   PanedWindow
   +-ScrolledWindow
   | +-widget1
   +-widget2

  If widget1 is a child of the scrolled window it
  succeeds, otherwise it sometimes fails (widget1
  overwrites the sash and the start of widget2) when
  the pane is small.

  The problem can be seen in 8.3.4 (Windows and SGI),
  but not in 8.3.1 (Linux).

  The attached file exhibits the problem when I drag
  to the top of the "2".


tkt_uuid: 1050674fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Fixed
title: typos in snit FAQ
comment:
  I really enjoyed reading the snit FAQ.  It is almost a
  "snit by example."  But I noticed a few typos.

  In "What does the default constructor do?" 
  "interprete" should be "interpret."

  In "What does the install command do?" "install>"
  should probably be "install."

  In the delegation example.  "This code has the same
  affect..." should be "This code has the same effect..."

  And, finally, the resource and class names example code
  seems to mix "option -myvalue 5" with ".text configure
  -mytext."


tkt_uuid: 3308105fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: None
title: Traceback fingers unrelated catch output
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: 1266792fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: Wrong option added to database by Widget::tkinclude.
comment:
  Widget::tkinclude of BWidgets adds $option to the
  option database, but it should add $realopt. Compare
  for example with Widget::addmap.


tkt_uuid: 2860843fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
resolution: Fixed
title: csv.man typos
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: 3603593fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ncgi
priority: 7 High
foundin: None
resolution: Fixed
title: New version of ncgi introduces proc in global namespace
comment:
  The version of ncgi as part of tcllib 1.5 introduces a new DecodeHex proc to help decode the CGI request. This proc is created in the global namespace. It would be better to have it in the ncgi namespace.


tkt_uuid: 622927ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: ProgressBar update problem
comment:
  Hi,

  Duong.Nguyen@roads.vic.gov.au reported a problem with
  the ProgressBar widget on CLT. This was caused by the
  variable trace being temporarily disabled when running
  the trace command, and executing an 'update' in the
  trace command. I think replacing the 'update' command
  by 'update idletasks' will solve this problem.

  Attached you'll find the modified ProgressBar::_modify
  proc.

  Jos. 


tkt_uuid: 535066ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: tklib: request for new module
priority: 5 Medium
severity: Minor
foundin: None
resolution: Not Applicable Here
title: menu management module for tklib
comment:
  Attached (I hope) is a menu management package,
  ala BWidget MainFrame.
  README contains documentation.


tkt_uuid: 3437761fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: keyboard traversal broken if spaces in widget pathnames
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: 3613973fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Build System & Testing
priority: 5 Medium
severity: Minor
foundin: None
resolution: Fixed
title: Does not properly install under windows with cygwin
comment:
  Installation in cygwin env under windows fails since Makefile.in lacks proper conversion of pathnames, Correction in Makefile.in:


  --- ../../../g462/src/tcllib-1.15/Makefile.in   2013-01-23 05:25:49.000000000 +0100
  +++ Makefile.in 2013-05-24 11:29:22.863424000 +0200
  @@ -52,26 +52,26 @@
   install:
          $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/installer.tcl` \
                  -no-examples -no-html \
  -               -pkg-path   $(DESTDIR)$(pkglibdir) \
  -               -app-path   $(DESTDIR)$(bindir) \
  -               -nroff-path $(DESTDIR)$(mandir)/mann \
  +               -pkg-path   `$(CYGPATH) $(DESTDIR)$(pkglibdir)` \
  +               -app-path   `$(CYGPATH) $(DESTDIR)$(bindir)` \
  +               -nroff-path `$(CYGPATH) $(DESTDIR)$(mandir)/mann` \
                  -no-wait -no-gui

   install-libraries:
          $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/installer.tcl` \
  -               -pkg-path   $(DESTDIR)$(pkglibdir) \
  +               -pkg-path   `$(CYGPATH) $(DESTDIR)$(pkglibdir)` \
                  -no-examples -no-html -no-nroff \
                  -no-wait -no-gui -no-apps

   install-applications:
          $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/installer.tcl` \
  -               -app-path   $(DESTDIR)$(bindir) \
  +               -app-path   `$(CYGPATH) $(DESTDIR)$(bindir)` \
                  -no-examples -no-html -no-nroff \
                  -no-wait -no-gui -no-pkgs

   install-doc:
          $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/installer.tcl` \
  -               -nroff-path $(DESTDIR)$(mandir)/mann \
  +               -nroff-path `$(CYGPATH) $(DESTDIR)$(mandir)/mann` \
                  -no-examples -no-pkgs -no-html \
                  -no-wait -no-gui -no-apps


  Tested and verified under window XP and Windows 7 with cygwin usinf VS2010.


tkt_uuid: 923942ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Rejected
title: BWidget dynamic help problem
comment:
  Hi, 
   
  When using the BWidget DynamicHelp to add balloon tips to an 
  application, the balloons are only removed from the screen when 
  you move the mouse pointer out of the widget the balloon was 
  registered for. You can move the mouse inside the widget without 
  the balloon being removed. Use this test script to see the desired 
  effect: 
   
  package require BWidget 
   
  text .t 
  pack .t 
  DynamicHelp::register .t balloon "Testing dynamic help" 
   
   
  Hold the mouse pointer inside the text widget and the balloon help 
  will show. Now move the mouse pointer inside the text widget. The 
  balloon won't disappear. 
   
   
  The balloon help should also be removed when moving the mouse 
  cursor inside the widget the balloon was registered for. To obtain 
  this, replace the 
   
   DynamicHelp::_motion_balloon 
   
  function by the attached one. 
   
  Kind regards, 
   
  Jos. 
   


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

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

  Kind regards,

  Jos.


tkt_uuid: 1224203fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Rejected
title: Tree widget substitutes wrong path for %W in command binding
comment:
  If you put %W in the command bound to an action on a
  Tree widget you expect to get the path of the tree
  widget in its place when the command is invoked. But
  instead you get a canvas called c which is a child of
  the tree widget, as in this simple example...

  [jaspert@nacho Simile]$ wish
  % package require BWidget
  1.7
  % pack [Tree .t]
  % .t insert end root foo -text FOO
  foo
  % proc putall {args} {puts $args}
  % .t bindText <Button-1> "putall %W"
  % # now click on the text FOO...
  % .t.c foo
  .t.c foo
  .t.c foo


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

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


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


tkt_uuid: 1416760fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: bignum :: float
priority: 5 Medium
foundin: None
resolution: Fixed
title: bigfloat: test suite bugs
comment:
  with -debug 1:

  * math::bigfloat 1.2
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-div-1.3' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-div-1.3' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-div-1.3' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-div-1.3' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-div-1.3' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-div-1.3' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-div-1.3' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-div-1.3' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mod-1.4' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mod-1.4' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mod-1.4' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mod-1.4' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mod-1.4' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mod-1.4' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mod-1.4' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mod-1.4' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-round-2.6d' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-round-2.6e' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.1.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.1.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.1.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.2.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.2.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.2.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.3.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.3.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.3.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.4.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.4.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.4.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.1.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.1.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.1.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.2.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.2.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.2.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.3.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.3.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.3.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.4.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.4.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.4.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.1.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.1.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.1.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.2.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.2.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.2.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.3.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.3.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.3.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.4.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.4.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.4.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.1.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.1.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.1.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.2.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.2.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.2.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.3.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.3.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.3.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.4.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.4.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.4.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.1.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.1.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.1.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.2.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.2.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.2.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.3.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.3.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.3.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.4.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.4.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.4.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.1.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.1.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.1.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.2.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.2.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.2.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.3.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.3.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.3.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.4.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.4.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.4.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.1.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.1.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.1.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.2.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.2.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.2.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.3.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.3.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.3.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.4.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.4.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.4.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.1.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.1.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.1.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.2.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.2.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.2.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.3.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.3.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.3.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.4.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.4.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.4.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test


tkt_uuid: 1307714fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: None
title: ftp - NList Documentation problem
comment:
  In the ftp documentation --> NList command:
  ::ftp::NList handle ?directory? 

  When I try passing a pattern (like the List command)
  it seems to work.

  eg. ftp::NList $h_ftp "*.xml"
  Works altough not documented


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

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


tkt_uuid: 1390477fffffffffffffffffffffffffffffffff
type: Patch
status: Open
subsystem: snit
priority: 5 Medium
foundin: None
resolution: None
title: snit can destroy errorInfo in some cases
comment:
    Sometimes snit functions can be called from
  exception processing code:

  if {[catch {some_code }]} {
          exception processing code
          here snit called
          ...
  }

    It's possible in non evident way, for example,
  then executed the following code:

  proc procedure1 {...} {
     set varname snit_object
     trace add variable varname {snit_object destroy}
     ....
  }

    (this technique used in oomk -- http://www.equi4.com)

    When error occurs in procedure1, trace code will be
  called, which invokes snit destructor. But SNIT CAN
  DESTROY ::errorInfo and ::errorCode GLOBAL VARIABLES
  in many cases. As for example, when snit calls any
  method, including destructor. And you get obscure
  error message. Because snit's code abound with
  constructions like following:

     if {[catch {set snit_var} result]} {
            blablabla...
     }

  Here, if snit_var is not defined, errorInfo will be
  corrupted with message like
  "Snit_typemethodCache($mehod) -- no such variable"...

    This patch *partially* corrects described problems.
  ("catch" not used there possible or ::errorInfo and
  ::errorCode there possible preserved).
  In some cases, then real error occurs in snit, there
  are no solution where old value of errorInfo can be
  stored. This is not snit bug, but tcl defect, as I
  think. :-(


tkt_uuid: 1150714fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: uuid
priority: 5 Medium
foundin: None
resolution: Fixed
title: uuid should not make socket calls
comment:
  ::uuid::generate_tcl contains the following code:

  set s [socket -server void -myaddr [info hostname] 0]

  Creating a server socket may be a privileged operation. 
  With certain firewalls, it may produce a warning 
  message, which is inappropriate for many applications 
  that might want to create UUIDs.


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


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


tkt_uuid: 1935658fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Accepted
title: Minor issue on a change the font settings
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: 1312869fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Duplicate
title: Fix locale problems (Bugs #911580 and #1276561)
comment:
  This patch fixes mime::parsedatetime such that 
  it doesn't rely on the user locale. 
   
  mime::parsedatetime is used for protocol 
  elements in SMTP and MIME.  These 
  should always be locale independent i.e. in 
  English. 
   


tkt_uuid: 1501874fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Can't change selectmode after ListBox creation
comment:
  If a ListBox widget is created with a certain
  selectmode, then a different selectmode is desired, the
  configure command fails actually to switch modes, and
  one is stuck with the original selectmode.

  % package require BWidget 1.7
  1.7
  % set lb [ListBox::create .lb -selectmode single]
  .lb
  % $lb configure -selectmode multiple
  % $lb cget -selectmode
  single


tkt_uuid: 701077ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclbench
priority: 9 Immediate
foundin: None
resolution: Fixed
title: normbench can't process newest runbench output
comment:
  normbench.tcl fails to process the results of the latest 
  runbench.tcl, with this stack trace.

  TCL_INTERP: 1:8.4.2 2:8.4.2
  STARTED 2003-03-10 12:42:02 (runbench.tcl v1.15)
  Benchmark 1:8.4.2 ./tclkit-cc/tclsh8.4
  bbccdeeeffghkllmmmmpprrssstuvw 00:04:28 elapsed
  can't read "format": no such variable
      while executing
  "switch -exact -- $format {
              text { puts stdout [normalize-text $norm $line] }
              list { puts stdout [normalize-list $norm $line] }
              csv  {
          ..."
      (procedure "normalize" line 22)
      invoked from within
  "normalize $opts(norm) [read -nonewline $opts(fid)]
  "
      (file "./normbench.tcl" line 202)


  The offending line in the runbench.tcl output is 
    251591 milliseconds
  which passes the header-skipping [string match] at the 
  top of the 'normalize' proc, but it doesn't fall into any of 
  the version detection cases.

  You could fix this by changing the output format from 
  runbench, so that this line doesn't have numeric first 
  characters.

  A better solution might be to improve the header 
  detection section to check for string matches against 
  the format patterns.  For example (untested)

    set format "unknown"
    foreach line $lines {
        if {$format=="unknown"} {
            switch -glob -- $line {
                "0,VER*" {set format csv}
                ....
            }
        continue
        }
       ....


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


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

  % package require struct
  2.1

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

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

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

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


  nathan/grarp
  ndparrish@yahoo.com


tkt_uuid: 782367ffffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: None
title: ftp.tcl: file list empty after file get
comment:
  when I list a dir from root, say
  list /pub/linux/redhat

  I get a listing as usual. If I then do:

  get /pub/linux/redhat/readme.txt

  I get readme.txt , ok.

  If I now do :

  list /pub/linux/mandrake

  I get an empty dirlisting. If I do :

  list /pub/linux/mandrake

  I get the dirlisting with twice the contents .....
  pub is a symbolic link in root.

  If I do list, get, cd, list I get a normal listing.
  This problem occurs with different ftp daemons.


tkt_uuid: 1942472fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: doctools test hardcode author <aku>
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: 1443461fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: ListBox delete doesn't cleanup in help.
comment:
  ListBox items can have a helptext argument. In
  _set_help namespace variable "help" gets filled. In
  delete the content of array help is however not updated.
  If you add "Widget::getVariable $path help" after
  "upvar 0 $path data" and
  "array unset help $item" after " data(items) [lreplace
  $data(items) $idx $idx]" then this bug is fixed.

  m.d.nauta@hetnet.nl


tkt_uuid: 614591ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::namespace::cmd vs namespace::cmd
comment:
  In some modules - control and mime, for instance,
  commands don't start with a leading '::'.  In most of
  the rest of them, :: is used.  This should be
  consistent throughout.


tkt_uuid: 1059528fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct
priority: 5 Medium
foundin: None
title: lock-free data structures
comment:
  Would you like to see non-blocking implementations 
  of common data structures be added to a TCL library 
  module?
  - http://www.cs.chalmers.se/~noble/
  - http://groups.google.de/groups?
  threadm=YVyfd.10491%24HA.550%
  40attbi_s01&group=comp.programming.threads


tkt_uuid: 1416819fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tie
priority: 5 Medium
foundin: None
resolution: Fixed
title: tie: test suite bug
comment:
  with -debug 1:
  modules/tie/tie_file.test
  - tcllib::testutils 1.0
  - snit 1.1
  - tie 1.0.1
  * tie::std::file 1.0.1
  WARNING: removeFile removing
  "/local/src/tcllib/jtest/journal":
    not created by makeFile
  WARNING: removeFile removing
  "/local/src/tcllib/jtest/journal":
    not a file


tkt_uuid: 519594ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Invalid
title: parseaddress can't cope with spaces
comment:
  mime::parseaddress fails on simple, common cases. Specifically, it fails for some fairly typical user 
  input

       somebody@some.org someoneelse@other.com

  When I try to stress it and send mail to 

       foo<>bar@grill.com

  The parse "succeeds" but the send fails.


tkt_uuid: 1429405fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 6
foundin: None
resolution: None
title: bwidget - Incorrect pkgIndex.tcl
comment:
  The package index of bwidget refers to a non-existent
  file "ctrlframe.tcl".

  {ctrlframe.tcl source {ControlFrame
  ControlFrame::create ControlFrame::use}}


tkt_uuid: 1558352fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: asn
priority: 5 Medium
foundin: None
title: ASN Package
comment:
  Dear TCL Experts and Developer,

  Recently , I used TCL Asn linrary package which made 
  lots of thing easier. However, I found that bugs or 
  possibilites of improvement.

  Please check the following and see if it will be a 
  good idea to make following changes:

  1. TAG Verification
  In all of the asn Package, after reading TAG value it 
  is verified with Universal TAG , e.g.

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

  This , however , is true only when universal TAGs are 
  in use. In many cases private TAG are also use for 
  the data encoding.

  I think , such checks should be removed as it should 
  be consider programmer responsibility to verify if 
  the TAG is expected , universal or private. Library 
  should not provide any restriction.


  2. TAG Length
  The library package consider TAG length as one byte 
  only. This , however , might not be true in some case 
  where the TAG can be of 2 bytes.

  This should be corrected with the possibility of TAG 
  with variable length.

  3. PeekBytes Procedure?
  There is no procedure for PeekBytes. Sometimes it is 
  necessary to read the byte/bytes without affecting 
  the original Data. ::asn::asnPeekByte though exist 
  but there is nothing like PeekBytes

  4. Output of getByte
  The output byte of asnGetByte gives the result in 
  decimal format. Since it is binary data I will 
  suggest the result should be hex coded format to keep 
  all things in same format.


  5. Introduction of Choce Structure ( and others )
  The ASN library package should be able to handle 
  other kinds of ASN structure e.g. Choice structure

  The Choice structure allows to match one of the 
  various possibilites:

  Choice :: {

            1. Money
            2. Car
            3. Nothing
            
            }

  With this type of encoding any one of the above 
  choice may happen. Therefore , there should be a 
  possibility of passing TAG values as an argument and 
  the procedure should try which to match the TAG and 
  then pass the value back of the choice which actually 
  appeared .

  Similarly , we have SEQOF , SETOF types of data 
  structure which should also be consider.

  Many thanks!

  Wajih


tkt_uuid: 686065ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: popups!
comment:
  When the multi-line entry is used
  to enter an action message
  (one that begins /me) and that
  message spans multiple lines,
  tkchat pops up a window for 
  each line.


tkt_uuid: 1522881fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib
priority: 5 Medium
foundin: None
resolution: Fixed
title: widget::panelframe add method generates an error
comment:
  Fix: the line

  foreach {ipadx ipady} [_padval $opts(-pad)] { break }

  in widget::panelframe method add should be

  foreach {ipadx ipady} [$self _padval $opts(-pad)] { break }


tkt_uuid: 1106375fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Fixed
title: Widget Error on failed object's construction
comment:
  ** Widget Error: when an object's constructor fails, the 
  object is not destroyed **


     Let's take the following example.
     Here's a widgetadaptor providing an extension of 
  the 'label' widget.

  package require snit 0.97
  ::snit::widgetadaptor mylabel {
     
     delegate method * to hull
     delegate option * to hull 

     constructor {args} {
        installhull using label
        $win configurelist $args
        puts "** $win created"
     }

     destructor {
        puts "** $win destroyed"
     }
  }   

     when I (wrongly) create an instance 
     (for example, I use an unsupported option),
     the instance is not not destroyed !
    
  mylabel .myL -strangeoption xyz

     the following error is correctly raised
    
  ** .myL destroyed
  Error in constructor: unknown option "-strangeoption" 
   
     but the ".myL" object still exists !
     This is in contrast with 'standard' widgets, because if 
  you write:
    
  label .myL -strangeoption xyz
    
     then an error is raised and the object is not created.

  I also experimented with 'widgetadaptor' ... the 
  behaviour is still wrong.
  Finally I experimented with 'type' ... the behaviour is 
  correct. 


tkt_uuid: 1161942fffffffffffffffffffffffffffffffff
type: Patch
status: Open
subsystem: exif
priority: 5 Medium
foundin: None
resolution: None
title: Adds most EXIF-2.2 tags to exif.tcl
comment:
  Add most EXIF-2.2 tags to exif.tcl
  This patch adds most of the EXIF-2.2 tags and some
  Olympus makernotes to exif.tcl. If an unknown tag is
  found, the script will report this tag as unknown tag
  instead of crashing.
  I checked the script with lots of personal photos as
  well as some sample images found on www.exif.org.

  - Matthias

  mlange_lists(at)yahoo.de

  --> This is a repost because I missed the checkbox for
  the file upload ...


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

  * struct::matrix 1.2.1
  test name 'matrix-0.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.8' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.9' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.10' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.11' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.12' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.13' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-1.0' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-1.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-1.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-1.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-1.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-1.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-2.0' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-2.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-2.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-2.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-2.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-2.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-2.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-2.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-3.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-3.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-3.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-3.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-3.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-3.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-3.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-3.8' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-3.9' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-4.0' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-4.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-4.1a' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-4.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-4.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-4.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-4.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-4.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-4.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-5.0' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-5.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-5.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-5.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.0' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.8' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.9' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.10' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.11' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.12' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.13' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.14' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.15' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.16' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.17' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.18' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.19' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.20' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.21' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.22' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.23' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.24' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.25' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.26' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.27' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.28' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.29' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.30' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.31' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.32' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.33' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.34' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.35' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.36' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.43' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.44' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-7.0' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-7.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-7.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-7.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-7.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-7.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-7.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-7.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-7.8' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-7.9' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-7.10' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.0' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.8' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.9' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.10' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.11' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.12' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.0' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.8' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.9' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.10' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.11' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.12' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.12a' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.13' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name '10.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name '10.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name '10.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name '10.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name '10.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name '10.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name '10.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name '10.8' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.9' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.10' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.11' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.12' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.13' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.14' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.15' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.16' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.17' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.18' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.19' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.20' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.21' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.0' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.8' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.9' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.10' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.11' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.12' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.13' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.14' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-12.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-13.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-12.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-13.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-12.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-13.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-12.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-13.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-12.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-13.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-12.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-13.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-12.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-13.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test


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


tkt_uuid: 453983ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: Integrate 'comm' into tcllib
comment:
  Add the 'comm' extension by John Robert LoVerso
  to tcllib. 'comm' provides socket-based 'send'
  operations. A simple RPC paradigma.


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

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

  -- Possibly doubled, but I got an error message the
  first time


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

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


tkt_uuid: 609750ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Out of Date
title: Makefile.in should support --libdir
comment:
  tcllib (and TEA in general) should support the --libdir 
  configure option to set its $(pkglibdir), it currently hardcodes 
  this to $(prefix)/lib , which breaks on Mac OS X where libdir is 
  completely unrelated to prefix.

  The following patch fixes this and shouldn't break anything 
  on other platforms since the default for $(libdir) is precisely 
  $(prefix)/lib :

  Index: Makefile.in
  ===============================================
  ====================
  RCS file: /cvsroot/tcllib/tcllib/Makefile.in,v
  retrieving revision 1.79
  diff -u -r1.79 Makefile.in
  --- Makefile.in 19 Aug 2002 18:28:05 -0000      1.79
  +++ Makefile.in 16 Sep 2002 03:20:26 -0000
  @@ -177,7 +177,7 @@
   
   DESTDIR =
   
  -pkglibdir = $(prefix)/lib/@PACKAGE@@VERSION@
  +pkglibdir = $(libdir)/@PACKAGE@@VERSION@
   
   top_builddir = .
   


tkt_uuid: 665737ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: exif
priority: 7 High
foundin: None
resolution: Fixed
title: (v1.3) coding error causes failure in exif::makerNote
comment:
  In tcllib 1.3's exif module, in the exif::makerNote
  procedure, under the "$tag == 15" elseif (line 544),
  there are eight references in 'if' expressions to '$v'
  instead of the proper '$value'.  This bug goes
  unnoticed in many cases, but an error will occur if
  '$v' happens to contain a value that TCL can't convert
  to a boolean.  In my case, parsing JPEGs from a Canon
  EOS-D60, 3 files out of 150 caused a problem.  In each
  case, $v returned "+1/3", which TCL refused to booleanize.

  The fix ($v => $value in the eight 'if' clauses) fixed
  things nicely.


tkt_uuid: 1178045fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Invalid
title: Bad conversion for UTF-8 strings
comment:
  UTF-8 are not handled correctly in LDAP module (or may be 
  ASN). 
   
  Repeat by: 
   
  ---------------------------------------------- 
  package require ldap 
  set x [::ldap::connect ldap.u-strasbg.fr] 
  set y [::ldap::search $x o=ulp {(cn=*jamet an*)} *] 
  set z [lindex $y 0] 
  array set t [lindex $z 1] 
  puts $t(cn) 
  --------------------------------------------- 
   
  I get UTF-8 characters on dislay, even if stdout is 
  fconfigured with the normal "iso8859-15" encoding. 
   


tkt_uuid: 433147ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: None
title: csv man page term needs clarified
comment:
  The csv man page mentions the word "values" as an
  argument to, for instance, ::csv::join .  What should
  be mentioned there though is that it is a single
  argument.  I don't know if this argument must be in a
  list format, but I suspect so.  If so, that too should
  be mentioned.

  When I try 
  package require csv
  set a [::csv::join 1 2 3]

  expecting that, passing values, I would get 1,2,3 ,
  instead I get an error.


tkt_uuid: 464560ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Fixed
title: ncgi::redirect request_uri
comment:
  In the ncgi::redirect procedure, a variable called 
  request_uri is created, depending upon whether or not 
  env(REQUEST_URI) exists.

  Later in the procedure, env(REQUEST_URI) is used as 
  part of a regexp evaluation, when instead, the 
  request_uri variable should be used. The request_uri 
  variable should be used because the env(REQUEST_URI) 
  variable may not exist. (the source makes a comment 
  w/regard to not all servers having the leading 
  protocol spec...)

  Thanks,


tkt_uuid: 886385ffffffffffffffffffffffffffffffffff
type: Patch
status: Open
subsystem: control
priority: 5 Medium
foundin: None
resolution: None
title: Enhanced do...while|until [prefix] [suffix] Control Structur
comment:
  This one came out of my customer demand! Pat Thoyts 
  and Donal K. Fellows suggested me to submit it here.

  The submission is in form of a TIP. Please search 
  for "sample implementation" to get to the code.

  Please also see at the end of it, untried version of tests. 
  Please search for "tests for do" to get to the code

  TIP 
  Title 
  Enhanced do...while|until [prefix] [suffix] Control 
  Structure 
  Version 
  $Revision: 1.4 
  Author 
  Bhushit Joshipura 
  State 
  Draft 
  Type 
  Project 
  Vote 
  Pending 
  Created 
  20-Jan-2004 
  Keywords 
  control structure, do, while, until, prefix, suffix 
  ~ Abstract 
  This TIP proposes the introduction of an enhancement 
  on do...while|until control structure already present in 
  TCLLib. It proposes to add prefix statement list and 
  suffix statement list to prepend and append to 
  statement body of do...while|until for the "while" part 
  (second loop onwards) of the loop. 
  ~ Rationale 
  Theoretically only two controls - if and goto - are 
  sufficient to implement all algorithms. However, 
  languages provide more control structures for better 
  representation of algorithms. 
  do...while|until is a useful structure in itself for parsing, 
  file reading etc. With little pain, a while loop does the 
  job too. However, when it comes to nesting, 
  do...while|until into another, equivalent while loop starts 
  becoming clumsier. 
  In situations where do...while|until is used in testing, if 
  the statement body of do...while|until changes state of 
  entity being tested, next iteration is bound to have side 
  effects. At that time, proposed prefix and suffix 
  statements come handy. 
  While it is still possible to handle all of these in a while 
  loop, nesting becomes a nightmare. 
  Proposed solution is more elegant, in spirit of 
  do...while|until's spirit of treating first pass specially. 
  ~ Implementation in Other Languages 
  C, C++, Java, Pascal have do...while. Perl has 
  do...while|until. Python does not have any equivalent. 
  ~ Grammar and Behavior 
  |do { 
  | 
  |} while|until { } [ prefix { }] [suffix { statements2>}] 
  1. are executed 
  2. while|until is evaluated 
  3. while associated are true ( or until are false ) 
  3.1 are executed 
  It is necessary to specify one and only one of "while" 
  or "until" with proper condition block following it. 
  ~Sample Invocations 
  set x 1 
  |do { 
  |    puts "Hello world!" 
  |    incr x 
  |} until { $x > 3 } prefix { 
  |    puts "prefix begin" 
  |    puts $x 
  |    puts "prefix end" 
  |} suffix { 
  |    puts "suffix begin" 
  |    puts $x 
  |    puts "suffix end" 
  |} 
  ~Contrast 
  Contrast above code with its while loop equivalent 
  |set x 1 
  |set firsttime "yes" 
  |while { $x <= 3 } { 
  |    if { $firsttime == "no" } { 
  | puts "prefix begin" 
  | puts $x 
  | puts "prefix end" 
  |    } 
  |    puts "Hello world!" 
  |    incr x 
  |   if { $firsttime == "no" } { 
  | puts "suffix begin" 
  | puts $x 
  | puts "suffix end" 
  |    } 
  |    set firsttime "no" 
  |} 
  ~Sample Implementation 
  |# do.tcl -- 
  |# 
  |#        Tcl implementation of a "do ... while|until" loop. 
  |#        Once first iteration gets over, body can be 
  augmented using prefix or suffix 
  |# 
  |# Originally written for the "Texas Tcl Shootout" 
  programming contest 
  |# at the 2000 Tcl Conference in Austin/Texas. 
  |# 
  |# Copyright for TCLLib implementation was 
  |# Copyright (c) 2001 by Reinhard Max 
  |# 
  |# Added prefix and suffix by Bhushit Joshipura, 
  December 15, 2003 
  |# Bhushit does not know what happens to copyrights 
  |# 
  |# See the file "license.terms" for information on usage 
  and redistribution 
  |# of this file, and for a DISCLAIMER OF ALL 
  WARRANTIES. 
  |# 
  |# 
  |namespace eval ::control { 
  | 
  |    proc do {body args} { 
  | 
  | # 
  | # Implements a "do body while|until test [ [prefix | 
  suffix] bodyparts ]" loop 
  | # 
  | # It is almost as fast as builtin "while" command for 
  loops with 
  | # more than just a few iterations. 
  | # 
  | 
  | set len [llength $args] 
  | if {$len != 6 && $len != 4 && $len !=2 && $len != 0} { 
  |     set proc [namespace current]::[lindex [info level 0] 
  0] 
  |     return -code error "wrong # args: should be \"$proc 
  body\" or \"$proc body \[until|while\] test\" or \"$proc 
  body \[until|while\] test \[ \[ prefix | suffix \] bodyparts 
  \]" 
  | } 
  | set test 0 
  | set bodyprefix "" 
  | set bodysuffix "" 
  | set whileOrUntil "" 
  | 
  | foreach { argument value } $args { 
  |     switch -exact -- $argument { 
  | "while" { 
  |     if { $whileOrUntil == "" } { 
  | set whileOrUntil $argument 
  | set test $value 
  |     } else { 
  | return -code error \ 
  |     "\"$argument\" found after \"$whileOrUntil\"" 
  |     } 
  | } 
  | "until" { 
  |     if { $whileOrUntil == "" } { 
  | set whileOrUntil $argument 
  | set test !($value) 
  |     } else { 
  | return -code error \ 
  |     "\"$argument\" found after \"$whileOrUntil\"" 
  |     } 
  | } 
  | "prefix" { 
  |     # last of prefix will be considered 
  |     set bodyprefix $value 
  | } 
  | "suffix" { 
  |     # last of suffix will be considered 
  |     set bodysuffix $value 
  | } 
  | default { 
  |     return -code error \ 
  | "bad option \"$whileOrUntil\": must be until, while, 
  prefix or suffix" 
  | } 
  |     } 
  | } 
  | 
  | # the first invocation of the body 
  | set code [catch { uplevel 1 $body } result] 
  | 
  | # decide what to do upon the return code: 
  | # 
  | #               0 - the body executed successfully 
  | #               1 - the body raised an error 
  | #               2 - the body invoked [return] 
  | #               3 - the body invoked [break] 
  | #               4 - the body invoked [continue] 
  | # everything else - return and pass on the results 
  | # 
  | switch -exact -- $code { 
  |     0 {} 
  |     1 { 
  | return -errorinfo [ErrorInfoAsCaller uplevel do]  \ 
  |     -errorcode $::errorCode -code error $result 
  |     } 
  |     3 { 
  | # FRINK: nocheck 
  | return 
  |     } 
  |     4 {} 
  |     default { 
  | return -code $code $result 
  |     } 
  | } 
  | 
  | set body [ format "%s\n%s\n%s" $bodyprefix $body 
  $bodysuffix ] 
  | 
  | # the rest of the loop 
  | set code [catch {uplevel 1 [list while $test $body]} 
  result] 
  | if {$code == 1} { 
  |     return -errorinfo [ErrorInfoAsCaller while do] \ 
  | -errorcode $::errorCode -code error $result 
  | } 
  | return -code $code $result 
  | 
  |    } 
  |} 
  ~Copyright 
  This document is placed in public domain. 


  Tests for do

  # do.test --
  #
  #         Tests for [control::do]
  # 
  # RCS: @(#) $Id: do.test,v 1.6 2003/05/01 22:40:13 
  patthoyts Exp $
  #

  package forget control
  catch {namespace delete control}

  # Direct loading of provide script -- support testing even
  # when not installed.  And be sure we test the local copy
  # and not some later version that may be installed.
  source [file join [file dirname [info script]] control.tcl]
  namespace import ::control::do

  package require tcltest
  namespace import -force 
  tcltest::test ::tcltest::cleanupTests

  # This constraint restricts certain tests to run on tcl 
  8.3+
  if {[package vsatisfies [package provide tcltest] 2.0]} {
      # tcltest2.0+ has an API to specify a test constraint
      ::tcltest::testConstraint tcl8.3plus \
          [expr {[package vsatisfies [package provide Tcl] 
  8.3]}]
  } else {
      # In tcltest1.0, a global variable needs to be set 
  directly.
      set ::tcltest::testConstraints(tcl8.3plus) \
          [expr {[package vsatisfies [package provide Tcl] 
  8.3]}]
  }

  # ----------------------------------------
  test {do-1.0} {do ... while} {
      set x 0
      do {incr x} while {$x < 10}
      set x
  } 10

  # ----------------------------------------
  test {do-1.1} {do ... until} {
      set x 0
      do {incr x} until {$x > 10}
      set x
  } 11

  # ----------------------------------------
  test {do-1.2} {break} {
      set x 0
      do {
  incr x
  if {$x == 5} {break}
      } until {$x == 10}
      set x
  } 5

  # ----------------------------------------
  test {do-1.3} {continue} {

      set x 0
      set xx [list]
      do {
  incr x
  if {$x == 5} {continue}
  lappend xx $x
      } until {$x == 10}
      set xx
  } {1 2 3 4 6 7 8 9 10}

  # ----------------------------------------
  test {do-1.4} {error} {
      catch {
  set x 0
  do {
      incr x
      if {$x == 5} {foo}
  } while {$x < 10}
      } result
      list $x $result
  } {5 {invalid command name "foo"}}

  # ----------------------------------------
  test {do-1.5} {return} {
      proc foo {} {
  set x 0
  do {
      incr x
      if {$x == 5} { return $x }
  } while {$x < 10}
      }
      set result [foo]
      rename foo ""
      set result
  } 5

  # ----------------------------------------
  test {do-1.6} {break in the first loop} {
      set x 0
      do {
  break
  incr x
      } while {$x < 10}
      set x
  } 0

  # ----------------------------------------
  test {do-1.7} {continue in the first loop} {
      set x 0
      set xx [list]
      do {
  incr x
  if {$x == 1} {continue}
  lappend xx $x
      } until {$x == 10}
      set xx
  } {2 3 4 5 6 7 8 9 10}

  # ----------------------------------------
  test {do-1.8} {error in the first loop} {
      set x 0
      catch {
  do {
      foo
      incr x
  } until {$x == 10}
      } result
      list $x $result
  } {0 {invalid command name "foo"}}

  # ----------------------------------------
  test {do-1.9} {[do ... while] with false condition} {
      set x 0
      do {
  incr x
      } while 0
      set x
  } 1

  # ----------------------------------------
  test do-1.10 {[do ... until] with true condition} {
      set x 0
      do {
  incr x
      } until 1
      set x
  } 1

  # ----------------------------------------
  test do-1.11 {third arg is neither while nor until} {
      set x 0
      catch {
  do {
      incr x
  } foo 1
  set x
      } result
      list $x $result
  } {0 {bad option "foo": must be until, or while}}

  # ----------------------------------------
  test do-1.12 {stack traces for errors in the first 
  iteration} {
      proc a {} b
      proc b {} {do c while 1}
      proc c {} d
      catch a
      set ::errorInfo
  } {invalid command name "d"
      while executing
  "d"
      (procedure "c" line 1)
      invoked from within
  "c"
      ("do" body line 1)
      invoked from within
  "do c while 1"
      (procedure "b" line 1)
      invoked from within
  "b"
      (procedure "a" line 1)
      invoked from within
  "a"}

  # ----------------------------------------
  test do-1.14 {stack traces for errors in subsequent 
  iterations} tcl8.3plus {
      proc a {} b
      proc b {} {
  set i 10
  do {
      incr i -1
      c $i
  } while {$i}
      }
      proc c {i} {if {$i==5} e}
      catch a
      set ::errorInfo
  } {invalid command name "e"
      while executing
  "e"
      (procedure "c" line 1)
      invoked from within
  "c $i"
      ("do" body line 3)
      invoked from within
  "do {
      incr i -1
      c $i
  } while {$i}"
      (procedure "b" line 3)
      invoked from within
  "b"
      (procedure "a" line 1)
      invoked from within
  "a"}

  # ----------------------------------------
  test do-2.0 {one-shot do} {
      set x 0
      do {incr x}
      set x
  } 1

  # ----------------------------------------
  test do-2.1 {one-shot do with break} {
      set x 0
      do {incr x; break; incr x}
      set x
  } 1

  # ----------------------------------------
  test do-2.2 {wrong no of arguments} {
      set x 0
      set res [catch {do {incr x} foo} ret]
      list $x $res $errorInfo
  } {0 1 {wrong # args: should be "::control::do body" 
  or "::control::do body [until|while] test"
      while executing
  "do {incr x} foo"}}

  # ----------------------------------------
  test do-2.3 {wrong no of arguments} {} {
      set res [catch do]
      if {[string match \
       {no value given for parameter "body" 
  to "do"*} \
       $::errorInfo]
      } then {
  set ::errorInfo {wrong # args: should be "do 
  body args"
      while executing
  "do"}
      }
      list $res $::errorInfo
  } {1 {wrong # args: should be "do body args"
      while executing
  "do"}}

  # ----------------------------------------
  test do-2.4 {one-shot do with error} {
      set x 0
      set res [catch {do {
  incr x
  foo
  incr x
      }}]
      list $x $res $::errorInfo
  } {1 1 {invalid command name "foo"
      while executing
  "foo"
      ("do" body line 3)
      invoked from within
  "do {
  incr x
  foo
  incr x
      }"}}

  cleanupTests

  if {[info exists ::argv0] && $::argv0 == [info script]} {
      # a proc that wastes some time
      proc something {n} {
  for {set i 0} {$i < $n} {incr i} {}
      }
      
      proc main {} {
  # run it for the first time to get it byte compiled
  something 1

  set payload {
      something 10
      incr x
  }
  puts "\nComparing performance of do-while, do-
  until and builtin while..."
  set format "%-8s : %20s for %4d iteration(s)."
  foreach c {1 10 5000} {
      puts ""
      foreach {descr script} {
  {do while} {do $payload while {$x < 
  $c}}
  {do until} {do $payload until {$x == 
  $c}}
  {while} {while {$x < $c} $payload}
      } {
  set x 0
  puts [format $format $descr [lrange 
  [time $script 1] 0 1] $x]
      }
  }
      }
      main
  }

  # Local variables:
  # mode: tcl
  # End:


tkt_uuid: 3423097fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: smtp
priority: 5 Medium
foundin: None
title: smtp lacks -timeout option
comment:
  There's a need for such option, to assure reliability for scipts using smtp client package. I made a simple "experiment": while sending a few mails simply pulled ethernet plug out of the socket - the script went "frozen" for several minutes (didn't measure...), until I plugged it in again. IMHO there should be possibility to give up ("-timeout x", where "-timeout 0" could mean "keep trying unlimited time"), And perhaps it could be improved a bit: to keep the entire script responsible, even in the case of network problems, like loss of connectivity?


tkt_uuid: 3288793fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Accepted
title: ftp::List does not work inside tkcon
comment:
  the proposed fix is to replace:
  proc ::ftp::__ftp_ls {args} {
          foreach i [eval ::ftp::List_org $args] {
              puts $i
          }
      }
  with:
      proc ::ftp::__ftp_ls {args} {
          set rc [eval ::ftp::List_org $args]
          foreach i $rc {
              puts $i
          }
          return $rc
      }

  in ftp.tcl file.


tkt_uuid: 3105412fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
resolution: Duplicate
title: ::csv incorrect format implementation on LINE BREAK records
comment:
  Hi,

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

  Many thanks
  Cyril ROUX

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

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

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

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

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

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

  package require csv
  package require struct::matrix

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

  #display matrix
  M format 2string

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

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

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

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

  #display matrix
  Mread format 2string

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


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

  * treeql 1.3
  > tree : pure Tcl

  test name 'treeql-tcl-0.3' re-used; prior use in
  /local/src/tcllib/modules/treeql/treeql.testsuite
  test name 'treeql-tcl-0.3' re-used; prior use in
  /local/src/tcllib/modules/treeql/treeql.testsuite


tkt_uuid: 712951ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: Potential infinite loop in doctools::cvs::scanLog
comment:
  In doctools/cvs.tcl, ~line 63:

  while { ! [regexp "(-----*)|(=====*)" $line] } {
      append comment $line "\n"
      incr i
      set line [lindex $text $i]
  }

  This will fail to terminate if the input doesn't end
  with a "-----*" or "=====*" line.  The while loop
  controlling clause should also include a test for " ...
  && $i < $n", to account for the possibility of bad
  input.


tkt_uuid: 934702ffffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: Add a XML parsing module to tcllib
comment:
  As there is no XML parsing module in either the tcl
  core distro nor the Tcllib yet, there is a large class
  of modules not really nicely includeable into tcllib
  (nearly everything xml related). 

  A Tcllib XML parsing module would be really nice,
  especially if linked to a DOM module using the
  ::struct::tree (not super efficient but standard). 

  Candidates would be the TclXML package from the tclxml
  project or a new development. 

  A new development could unify the two most used C
  extensions in the area (TclXML and tDOM).


tkt_uuid: 1725717fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: plotchart
priority: 5 Medium
foundin: None
resolution: None
title: package load writes to stdout
comment:
  When loading the plotchart package two lines are written to stdout. It is assumed that these are debug statements which were left active during checkin.

  The offending lines are in scaling.tcl, lines 140-141.
  To fix change line 139.


tkt_uuid: 1484791fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: list
priority: 5 Medium
foundin: None
title: lmap and lfilter procs (like 'lmap' on the wiki)
comment:
  I am used to these two little procs, and I would like
  to see them in tcllib, as I do not want have always to
  'reinvent the wheel'.

  I know that [struct::list map] and [struct::list
  filter] already are in tcllib, but I feel more
  comfortable with the ability, not to define trivial
  procs like :

  proc first {list} {lindex $list 0}
  struct::list map $mylist first

  Here are the ones I like:

  proc lmap {var list cmd} {
      upvar $var elt
      set out ""
      foreach elt $list {
          lappend out [uplevel $cmd]
      }
      return $out
  }
  proc lfilter {var list condition} {
      upvar $var x
      set out ""
      foreach x $list {if {[uplevel expr $condition]}
  {lappend out $x}}
      return $out
  }

  Of course, if we adopt these two, we should
  differentiate  the existing from the new with a prefix.
  'l' seems nice to me, you might prefer something else.

  Hope this will be useful.

  Stéphane Arnold


tkt_uuid: 492563ffffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: mime
priority: 5 Medium
foundin: None
title: relative domain when parsing email addresses
comment:
  I am submitting a request for a feature for
  mime::
  package.
  If I do mime::parseaddress on some addresses,
  I am getting them parsed against the machine name.
  But I have a very complicated server with a lot of
  domain names pointed to it. I need an option for
  mime::parseaddress to parse addresses relative
  not to machine name but to domain directly provided.
  for example
  set zinfo [mime::parseaddress -mydomain qq.com
  "addr1@qq.com"]
                                  Thank you
                                  Denis Medvedev
  P.S. where is a distribution of tcllib1.1?
  I can't download it from sourceforge - bad requests...
  If you can, please update the distribution of tcllib
  on ftp.scriptics.com - there is only  version 0.8


tkt_uuid: 1061759fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: pop3
priority: 5 Medium
foundin: None
title: Make pop3 non-blocking
comment:
  Hi,

  I was using tcllib code for a plugin in amsn* to check
  pop3 email. The problem was that every time the email
  was checked it blocked amsn while it was checking.
  Therefore I suggest changing the code such that it is
  non-blocking. I have made a start (and possibly all the
  changes necessary). I made the ::pop3::open, and
  ::pop3::send both non-blocking which I think should
  then include all other functions (haven't looked)?

  Just note that Im not sure which version of pop3 I
  started with (someone else copied the code originally).
  Also in trying to make it non-blocking I went around in
  a couple of circles before getting it correct, so may
  have removed some code that could be reinserted.

  Now that it is complete it is not so hard to
  understand, and I recommend having a look at what I
  have done and possibly implementing it into pop3 in tcllib.

  Also to note, the way I have done it (to make it
  simpler) was that it is blocking to the calling process
  but not the program in entirety. This was ok for what I
  was doing as the calls to it were done by the after
  command which creates a new process and doesn't block
  the whole program.

  If you have any comments or questions don't hesistate
  to contact me at my sf email. Or by posting here.

  Lio.

  *PS The code was copied and a reference that the code
  was from tcllib was made, hope this is ok? if not tell
  me and I will remove.


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

  ---- nameprep-5 start

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

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


tkt_uuid: 1043581fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: bwidget
priority: 5 Medium
foundin: None
title: SelectFont: add a -relief option?
comment:
  Hi all,

  I am facing a problem with the SelectFont command 
  from the BWidget toolkit. SelectFont is a dual "nature" 
  command, as it can present itself as a dialogo or a 
  toolbar.
  I am trying to use it as a toolbar. However, in toolbars 
  usually all widgets have a flat relief, whcih changes to 
  raised when the mouse gets over a widget. This, cannot 
  be done with the current implementation of SelectFont, 
  which does not even have a -relief option. It would be a 
  good idea to at least add a "-relief" option to the 
  widget, even if it applies to all the internal sub-widgets 
  simultaneously...

  George


tkt_uuid: 782735ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Fixed
title: import file
comment:
  documentation refers to [importFile] but implementation 
  still has [import_file]

  attempt to invoke import_file gives
  invalid command name "pre"

  which is not surprising


tkt_uuid: 567428ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: problem with tmml documentation
comment:
  The following modules have a problem with the way their
  tmml documentation generates nroff:

  counter/counter.man
  fileutil/fileutil.man
  ftp/ftp.man
  ftpd/ftpd.man
  html/html.man
  irc/irc.man
  javascript/javascript.man
  log/log.man
  math/combinatorics.man
  math/math.man
  mime/mime.man
  mime/smtp.man
  ncgi/ncgi.man
  nntp/nntp.man
  pop3/pop3.man
  profiler/profiler.man
  report/report.man
  smtpd/smtpd.man
  stooop/stooop.man
  textutil/expander.man

  The nroff that gets generated starts out with:

  '\" -*- tcl -*- doctools manpage

  But that causes Sun's nroff to fail to format the man page.
  The error that is caused says:

  $ man -s n counter
  Reformatting page.  Wait...unknown preprocessor specifier -


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

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

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

  Here's the log with VERBOSE and DEBUG on:

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

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

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


tkt_uuid: 1242740fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: Error in tkcat::addAction
comment:
  In the wild, with tkchat v1.301 I got abrupt the error:


  can't read "tags": no such variable
  can't read "tags": no such variable
      while executing
  "$w insert $mark "\n" $tags"
      (procedure "::tkchat::addAction" line 38)
      invoked from within
  "::tkchat::addAction .txt $color $nick $msg $mark
  $timestamp $opts"
      (procedure "::tkjabber::parseMsg" line 47)
      invoked from within
  "::tkjabber::parseMsg $from $m(-body) $color end
  $timestamp"
      ("groupchat" arm line 23)
      invoked from within
  "switch -- $type {
          chat {
              set from $m(-from)
              set w .txt
              set name $from
              if { [regexp {([^/]+)/(.+)} $m(-from) ->
  conf name] } {
                  i..."
      (procedure "::tkjabber::MsgCB" line 42)
      invoked from within
  etc.


  Can't say, what triggered this, but it seems, that
  tkchat::addAction is too credulous. In the line 

    $w insert $mark "\n" $tags

  it depends on the variable tags to exist. But this
  variable is only set within this foreach loop in the proc:

      foreach { str url } [parseStr $str] {
         ....
      }

  which will run 0 times, if [parseStr] returns the empty
  list (which is possible, as a look at that proc shows
  and the error msg demonstrates), let tags unset.

   


tkt_uuid: 1763707fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: None
title: ::ftp::Get returns "" in mode inline + error
comment:
  contrary to the man-page ::ftp::Get returns the empty string when in mode $ftp(inline) and an error occurs.

  -------------------------------------
  % packa requi ftp
  2.4.8
  % set conn [ftp::Open localhost  user pass]
  0
  % set erg [ftp::Get $conn not_existing_file -variable var]
  error     error | E: Error retrieving file "not_existing_file"!:
  error     invalid command name "ftp::Open"
  error         while executing
  error     "ftp::Open localhost  user pass"
  % puts $erg

  %
  ------------------------------------
  This is 7 line before the end of ftp::Get 

  2 lines after that:
  CloseDataConn $s is only called if $ftp(inline) is false.
  Is this correct?

  In the normal configuration I am unable to retrieve the info about the error. Am I suppost to redefine the DisplayMsg for this?

  thanks for your efforts
  Albrecht Mucha MediTec GmbH
  a.mucha at mdtec . de


tkt_uuid: 2340355fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Combobox path to entry
comment:
  Hi,

  There is no current method to test the bindings 
  of the entry based on the Combobox widget because 
  the API does not provide the path to the 
  entry.
  Suppose the method "getentry" exists.
  One can generate an event so that the command 
  bound to the entry is fired.

  () 49 % package require BWidget
  1.8
  () 50 % ComboBox .mycbb
  .mycbb
  () 52 % set ntr [.mycbb getentry]
  .mycbb.e
  () 54 % configure .mycbb -command {puts "COUCOU !"}
  () 57 % pack .mycbb
  () 63 % focus -force .mycbb.e;event generate .mycbb.e <Return>
  COUCOU !

  To be able to do this script, I added the following 
  method which returns the path to the entry.

  proc ComboBox::getentry { path } {
      return $path.e
  }

  I would be very pleased if that method was added 
  to BWidget's Entry, or if someone show me another 
  way to do this.

  By the way, thank you for the great work on Tcllib.

  Best regards,

  Michaël


