# ticket

tkt_uuid: 1115335fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: mclistbox
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: mclistbox patch: select color
comment:
  years ago, I have made a small change to mclistbox to
  get short options for -foreground and -background (-fg
  and -bg) and enable -selectforeground -selectbackground.

  Here it is now as diff to the current CVS.


tkt_uuid: 1539479fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: asn
priority: 5 Medium
foundin: None
resolution: Accepted
title: mispelled variable in asnContext
comment:
  ::asnContext has appeard in rev 1.10 of asn.tcl.
  However, there is a mispelled variable ("out" should 
  be "data") in the function body since this rev.
  The attached patch (against current asn.tcl) resolves 
  this problem.


tkt_uuid: 1663970fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: Submitting code for multivar linear regression
comment:
  Hi,

  I have written some code for carrying out multivariate linear regressions. I think it would be a good candidate for tcllib's math::statistics module, and when I posted a version of it to the tcler's wiki, I was asked (by AM & LV) to submit it here.

  I'm attaching a zip file with the following contents:

   - mvlinreg.tcl : The code for the package
   - pkgIndex.tcl : A basic pkgIndex for the submitted code to work as its own package
   - mvlinreg_test.tcl : A single example that exercises the code in a "main path" way (no exceptions are tested)
   - mvlr.man.txt : A simple man page in plain text format (no *roff)

  Some comments:
   - Although I don't offer a test for the wls function directly (it's tested indirectly since it's called from the ols procedure), I've tested it as part of the SWLS code that I posted on the Tcler's wiki, and reproduced published results.
   - For the example included in the zip file, I compared the output from the example against the output for the same data using Excel's "LINEST" function and they match.
   - I'm submitting this using the BSD license, on the understanding that that is the license used for tcllib. But the main point is not BSD - I want to submit the code under a license that is compatible with it being used in tcllib, so let me know if BSD isn't the right choice.

  Thanks!
  Eric


tkt_uuid: 577055ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct
priority: 5 Medium
foundin: None
title: Add struct::list
comment:
  Add a new command [::struct::list] to the struct package.

  This should be the extended subcommand [list] or "listx"
  that has been discussed so many times.

  Let's have an implementation of it in tcllib, so future
  discussions about are not theoretical.


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: 474859ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Accepted
title: interpreter startup string
comment:
  The current tkchat.tcl has a full path name to wish
  in the first line.  This tiny patchlet changes that to
  look for wish in the user's path.


tkt_uuid: 3141163fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: None
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Login at hosted accounts in Rest API gdocs API
comment:
  Posting this here since there isn't any category for the rest library candidate. The gdocs example API interface should include "accountType HOSTED_OR_GOOGLE" in the static_args list of the gdocs(auth) table in order to allow login at "regular" google docs accounts, but also at hosted accounts.


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

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


tkt_uuid: 1391776fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: asn
priority: 5 Medium
foundin: None
resolution: Accepted
title: asn::asnObjectIdentifier incorrectly encodes OIDs
comment:
  I've found that routine asn::asnObjectIdentifier
  produces incorrect encoding of OIDs, which is not
  understandable by OpenSSL 0.9.8a ASN1 parser.

  According to ITU-T recommendation X.690 subidentifiers
  less than 128 should be encoded as one byte, but
  asn.tcl version 1.7 as downloaded from CVS today,
  encodes them as two bytes with first byte equal to
  0x80. Some ASN1 parsers such as dumpasn1 utility,
  understand this and some don't.

  Example:

   $ tclsh
   % source asn.tcl
   % set bad [asn::asnObjectIdentifier {1 2 643 2 2 31 1}]
   %  foreach char [split $bad ""] { append hex [format "
       %02x" [scan $char %c]]}
   $puts $hex
  06 0b 2a 85 03 80 02 80 02 80 1f 80 01

  where correct encoding of this OID should be
  06 07 2a 85 03 02 02 1f 01

  Attached patch fixes this problem and also removes
  debugging puts from asn::asnObjectIdentifier routine


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

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


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

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

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

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

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

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


tkt_uuid: 1153603fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: tkchat errs out on a disconnection
comment:
  (this is msw from tcl'ers chat)
  This happened when my router reconnected itself:

  can't read "x(-body)": no such element in array
  can't read "x(-body)": no such element in array
      while executing
  "tkchat::addSystem "Network error $x(-body)""
      ("networkerror" arm line 3)
      invoked from within
  "switch -- $cmd {
      connect {
          tkchat::addSystem "Connection to Jabber Server
  Established"
      }
      disconnect {
          cleanup
          scheduleReconnect
      }
  ..."
      (procedure "::tkjabber::ClientCB" line 4)
      invoked from within
  "::tkjabber::ClientCB ::jlib::jlib4 networkerror"
      ("uplevel" body line 1)
      invoked from within
  "uplevel #0 $lib(clientcmd) [list $jlibname
  networkerror]     "
      (procedure "::jlib::recvsocket" line 16)
      invoked from within
  "::jlib::recvsocket ::jlib::jlib4"

  this is tkchat 1.263 and tcl 8.4.9 as tclkit.


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: 663394ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: None
priority: 6
foundin: None
resolution: Not Applicable Here
title: Update all.tcl
comment:
  dgpThe all.tcl file in tcllib could be greatly 
  simplified by [package require Tcl 8.3; package require 
  tcltest 2.2]
  dgpthough even then, [getErrorMessage] would 
  need to be defined, probably in a "loadScript"
  akuPossibly. Are you willing to draw up a patch ?
  akugetErrorMessage - yes, because the change 
  happened in 8.4
  dgpIf you want to register a brief FR in tcllib 
  about updating all.tcl and assign to me, that's OK./
  dgpI don't expect to attack it with a high priority 
  though./
  dgpIt'
  dgps
  akuOk.


tkt_uuid: 1087173fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Fixed
title: too much [package require]
comment:
  htmlparse starts out with

  package require struct 2

  but near as I can tell, the only
  command used is [::struct::stack]
  which is provided by the
  considerably smaller package

  package require struct::stack 1.2.1

  No need to drag in all the other
  struct stuff and then not use it.


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: 1846923fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: math
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Submission: incomplete Gamma function
comment:
  Hi,

  As part of a package I'm developing for gamma-distributed random variables, I've implemented the incomplete gamma function (the normalized function P(p,x)). I'm attaching the file.

  I've tested several values, but haven't tested it exhaustively.

  Eric


tkt_uuid: 1359041fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: patch adding -autopost option to ComboBox
comment:
  I wanted a ComboBox that would automatically post as
  soon as the user started typing, and would scroll to
  the value that is most similar to the entry's input. 
  The following patch adds an "-autopost" boolean
  configuration option that performs this behavior. 
  Furthermore it handles up and down arrow key events to
  let the user instead select an item from the listbox. 
  Pressing the escape key while the entry has focus
  causes the listbox to unpost.

  This patch is against BWidget 1.7.


tkt_uuid: 907904ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 8
foundin: None
resolution: Accepted
title: Patches to adjust startup for modules and examples
comment:
  These are the patches used in the OpenBSD port of
  Tcllib to adjust the 'exec tclsh' lines of scripts.


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

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

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

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

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

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

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

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

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

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

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


tkt_uuid: 2782256fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: two potential package bugs found
comment:
  When using the version of doctools provided by teapot, I see the following two errors:

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

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

  Also, I am seeing

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


tkt_uuid: 2063144fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Snit method name collision
comment:
  The following code creates two distinct typemethods
  with but a single body between them:

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

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

  Methods have the same problem, naturally.

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


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

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

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

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

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


tkt_uuid: 1225870fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: control
priority: 5 Medium
foundin: None
title: [try] command
comment:
  Here's a [try] command using the features of TIP#90,
  perhaps for adding to the control package. I'm
  perfectly happy with the code being published under the
  normal tcllib license.

  proc try {script args} {
      upvar 1 try___msg msg try___opts opts
      if {[llength $args]!=0 && [llength $args]!=2} {
  return -code error "wrong \# args: should be \"try
  script ?finally script?\""
      }
      if {[llength $args] == 2} {
  if {[lindex $args 0] ne "finally"} {
      return -code error "mis-spelt \"finally\" keyword"
  }
      }
      set code [uplevel 1 [list catch $script try___msg
  try___opts]]
      if {[llength $args] == 2} {
  uplevel 1 [lindex $args 1]
      }
      if {$code} {
  dict incr opts -level 1
  return -options $opts $msg
      }
      return $msg
  }


tkt_uuid: 777568ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: None
title: tklib ipentry widget pkgIndex.tcl bug
comment:
  the pkgEntry.tcl file for ipentry says:
  i# Tcl package index file, version 1.1

  Installing this causes all tcl package require calls to
  fail due to the way package require reads all
  pkgIndex.tcl files and insists that none fail...


tkt_uuid: 2499603fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: fileutil::jail returns wrong results in repeated execution
comment:
  See console output below:

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

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

  Platform is Tcl 8.6b1 on XP

  /Ashok


tkt_uuid: 1844111fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
title: snitfaq: $self destroy restrictions?
comment:
  I've encountered a situation where it seems reasonable that 
  a snit object initiates its own destruction: The object manages 
  a channel and has an internal queue of messages to transmit. 
  A soft shutdown of the communication would then means that 
  the object owner stops calling it, but the object itself should 
  hang around for as long as it takes to work through the queue, 
  and only then destroy itself.

  The catch is, I find nothing in the documentation about 
  whether an object method is allowed to call $self destroy, 
  although my gut feeling is that this might be asking for trouble. 

  For now, I'll probably do is as
    after 0 [mymethod destroy]
  instead, as I'm anyway running an event loop for the I/O, but 
  if there is some more elementary solution, then it would be 
  nice to learn about it.


tkt_uuid: 1855635fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: tkchat: Error message on opening current history in new pane
comment:
  Using the "Show current history in new pane" option on Dec 21 2007 gave the following error message:

  extra characters after close-brace
  extra characters after close-brace
      while executing
  "$w tag configure {NICK-}"
      ("eval" body line 1)
      invoked from within
  "eval $value"
      ("exec" arm line 1)
      invoked from within
  "switch $key {
      exec    {eval $value}
      image   {$w image create $index -name $value}
      text    {$w insert $index $value}
      mark    {
     ..."
      (procedure "::tkchat::textRestore" line 14)
      invoked from within
  "::tkchat::textRestore $clone [::tkchat::textSave $text]"
      (procedure "::tkchat::textClone" line 8)
      invoked from within
  "::tkchat::textClone .txt .clone"
      (procedure "::tkchat::HistoryPaneToggle" line 28)
      invoked from within
  "::tkchat::HistoryPaneToggle"
      invoked from within
  ".#mbar.#mbar#vis invoke active"
      ("uplevel" body line 1)
      invoked from within
  "uplevel #0 [list $w invoke active]"
      (procedure "tk::MenuInvoke" line 50)
      invoked from within
  "tk::MenuInvoke .#mbar.#mbar#vis 1"
      (command bound to event)

  The problem was observed with tkchat v1.411 running on tclkit 8.4.13 form equi4 on SuSE linux 10.1 and could be reproduced with a 8.5.0 tclkit built using kitgen.


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

  # find tcl files
  package require fileutil
  proc is_tcl {name} {return [string match *.tcl $name]}
  set tcl_files [fileutil::find . is_tcl]
  =====


tkt_uuid: 2976290fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: base64
priority: 5 Medium
foundin: None
resolution: Fixed
title: decode fails
comment:
  This code:

  ::base64::decode s=GQMRAk5WXhsABh0NEx4RXBocBVgBHQMXHRgEFltMQENQXEFOExJVQ0RAQERUQ0dAEhYEExVIRRVVFENWKxMKABsPGBI6LRoYLhsEFhsXGFkXEwZXGQMIHg==

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

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


tkt_uuid: 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: 768610ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Works For Me
title: NoteBook can't accept page named "C:\foo\bar"
comment:
  % NoteBook .book
  % .book insert end {C:\foo\bar} -text {C:\foo\bar}

  throws an error:

  bad window path name ".altab0.pages.fC:\foo\bar"
      while executing
  "frame $path.f$page 
   -relief flat

  ...


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

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

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


tkt_uuid: 530056ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: textutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: Misleading error message in expander
comment:
  When a user of the expander does not pop all the 
  contexts it pushed during the expansion process the 
  core expander will access the wrong context when 
  trying to restore bracket information of an outer 
  invocation. The generated error message refers to the 
  lb variable, telling us that it is missing. But the 
  root cause is that there are still user contexts open.

  Change the expander to check that before/after levels 
  of contexts are the same and generate a better error 
  message if the levels are not the same. Maybe even 
  name the contexts which were not popped.


tkt_uuid: 3309165fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: math
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: math::bigfloat::isInt returns 1 on non-integers
comment:
  Tcl 8.5
  math::bigfloat version 2.0.1

  The procedure math::bigfloat::isInt performs a very naive check to distinguish BigFloats from integers, but the check isn't nearly comprehensive enough to cover all or even most cases.  The doc states that the proc should be able to distinguish standard Tcl 8.5 integers from other values.  But note for example:

  % isInt 2.0
  1
  % isInt 0.5
  1
  % isInt 1/2
  1
  % isInt [expr exp(1)]
  1
  % isInt i
  1
  % isInt HAM_SANDWICH
  1

  A better implementation might be something like:

  proc isInt {n} {
  if {[catch {set n [expr abs($n)]}]} {return 0}
  if {[string first . $n] > -1} {return 0}
  return 1
  }


tkt_uuid: 1615159fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: diagrams
priority: 5 Medium
foundin: None
resolution: Out of Date
title: tklib::Diagrams examples need fix
comment:
  The code in draw_anchor.tcl , draw_fraction.tcl , and draw_heater.tcl need changed to use
  package require Diagrams
  instead of 
  source draw_diagram.tcl
  I think they all need a 
  package require Tk
  as well.
  The other examples may need modified to also use the package - I think they might include the package inline.


tkt_uuid: 2943788fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ntp
priority: 5 Medium
foundin: None
resolution: None
title: couldn't open socket: connection refused
comment:
  proc tz:gettime { server } {
    package require time;
    set time "";
    while {$time == ""} {
      set tok [::time::gettime $server];
      set time [::time::unixtime $tok];
    }
    return $time;
  }

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

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

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


tkt_uuid: 974034ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Rejected
title: ArrowButton attributes insensitive to [option add]
comment:
  The command [option add *ArrowButton.$property 20 100]
  has no effect for at least the properties "width" and
  "height". (While it does have effect for the options
  "background" and "foreground").

  I have been using BWidget 1.7 in combination with
  Tcl/Tk 8.4.6


  Sincerely,

  Erik Leunissen


tkt_uuid: 2812473fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: math :: statistics
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: test-normal description is confusing or wrong
comment:
  The documentation for math::statistics::test-normal says it returns 1 if the data is distributed normally within the given confidence.
  I am not a statistician, but either I am severely confused or this is completely wrong.  It seems that this procedure returns 1 when the null hypothesis of a normal distribution should be rejected, which is the opposite of what I read.

  Also, the confidence specification seems backwards from the things I read---which admittedly are just Wikipedia and MATLAB help---which use significance (alpha), a small number, rather than confidence.  In fact, I don't even think confidence is the right word here, or at least I don't think you're talking about confidence intervals.

  package require math::statstics
  0.6


tkt_uuid: 2028993fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Accepted
title: ::htmlparse::mapEscapes doesn't handle the &apos; entity
comment:
  &apos; is not a valid HTML entity [1] but it is valid in XML [2].

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

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

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

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

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

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


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

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

  Eric


tkt_uuid: 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: 1747945fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: profiler
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Patch to avoid inflation of the 'statTime' array
comment:
  This patch relates to the size of the statTime array.
  In the existing package (v0.2.3) the statistics on proc execution times are performed on data collected in array 'statTime'. However, if the profiler is run for a length of time, this array is getting very big, which I believe slows down the profiler. I've seen this degradation of performance in a program that uses a lot of 'after time' calls. It looks like for the type of statistics performed with this package there is no need to collect all time samples in the array. With this patch the basic statistics ('mean' and 'sum of squared times') are performed in the 'leaveHandler' proc and the array space is kept small (two array variables -not lists- per profiled function). The calculation of 'sigma' and 'cov' is done when the user issues a ::profiler::print or ::profiler::dump command. I've measured a 6% increase in the execution time of 'leaveHandler' due to the performing of basic stats calculation in this proc.


tkt_uuid: 826145ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 7 High
foundin: None
resolution: Invalid
title: wrong eval of send arguments with blanks (e.g lists)
comment:
  when the send is called with arguments containing lists the 
  evaluation on the receiving side is one level too deep. 
   
  line 1066 of tcllib1.5/comm.tcl (comm 4.1) reads: 
           set err [catch [concat [list uplevel #0] $buffer] ret] 
  this evaluates the passed buffer one time too much. 
  if changed to: 
           set err [catch {uplevel #0 $buffer} ret] 
   
  it correctly expands the passed lists. 
   
  Could this please be checked and changed in the next version. 
   
  Thanks. 
   
  Benno Lange 


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

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


tkt_uuid: 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: 618241ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ftp::Get <source> -variable <var> bombs
comment:
  ftp::Get <source> -variable <var>  is used by ftpvfs
  and fails everytime. 

  Test code:
    package require ftp

    set ftp [ftp::Open cdaftp.harvard.edu ftp  
  john@cfa.harvard.edu]
    ftp::Get $ftp  
  pub/science/ao03/cat4/3672/primary/acisf03672N001_1_sum2.html
  -var

    puts $X
    exit


  I don't see how this ever worked.  If -variable is set
  then $dest gets set to the $source.

  If $ftp(inline) then no $dest should be expexted,
  $dest should only be set on !$ftp(inline).


  ftp.tcl:
  1955c1955
  <     if {$ftp(inline) != 2} {
  ---
  >     if {$ftp(inline) == 0} {


tkt_uuid: 726275ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: general request
priority: 3 Low
foundin: None
resolution: Not Applicable Here
title: distinguish tcllib man pages from other packages
comment:
  When a Tcl extension installs, care needs to be taken
  that the manual pages do not overwrite pages from some
  other package.

  To do this, perhaps it is necessary to install man
  pages to match
  the namespace of the module:

  struct::tree.n

  for instance - or, if the :: are a problem , then perhaps 
  struct_tree.n


tkt_uuid: 410198ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Accepted
title: New module: logging facility
comment:
  This patch provides a full-fledged logging facility for
  tcl applications and libraries. It was reaped from my
  own Pool_Base and modified too fit into tcllib.

  Missing from the patch is documentation, but this will
  follow shortly.


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

  Thanks

  Matthew


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

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

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


tkt_uuid: 1307714fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 784523ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: (unused)
priority: 7 High
foundin: None
resolution: Fixed
title: make install fails on Mac OS X
comment:
  On Mac OS X, configure generates a Makefile with 
  extraneous carriage returns in the VERSION and pkglibdir 
  variables.  There might be additional problems as well.

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

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


tkt_uuid: 756948ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: html
priority: 7 High
foundin: None
resolution: Invalid
title: html::select's use of ncgi not correct ?
comment:
  tcllib CVS head.

  Looking at the implementation of html::select I believe 
  that its use of ncgi::valueList together with lsearch is 
  incorrect.

  The result of valueList is a list of lists. I.e each element 
  of the result is a 2-element list containing metadata and 
  the value. Using that in lsearch -exact means that the 
  string searched for has to be the same. But the string is 
  actually only the value of the form element.

  Either we have to lindex the result of valueList to strip 
  the outer list, or we have to use ncgi::value to get only 
  the value for the form element.

  Note: The form element select has only one value, not 
  multiple ones. 


tkt_uuid: 1412021fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: sasl
priority: 5 Medium
foundin: None
resolution: Accepted
title: Ignoring -service option in DIGEST-MD5
comment:
  Option -service is ignored in DIGEST-MD5 SASL auth
  method. digest-uri is always set to smtp/$realm.

  Possible fix is to replace smtp for $ctx(service).


tkt_uuid: 882402ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: textutil
priority: 7 High
foundin: None
resolution: Fixed
title: -full option ignored in ::textutil::adjust command
comment:
  In the textutil package, which is a part of Tcllib, the -full 
  option (which should stop multiple consecutive space 
  characters being replaced with a single space) seems to 
  be ignored. This is in ActiveTcl 8.4.3.0, textutil version 
  0.6 . There are three [regsub] commands executed near 
  the beginning of ::textutil::adjust; it seems that they 
  should only be run if the -full option wasn't given.


  Original submitter:
  m_j_griffiths@talk21.com

  Original location of the bug:
  http://bugs.activestate.com/show_bug.cgi?id=28867


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


tkt_uuid: 3511994fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Duplicate
title: ScrolledWindow setwidget buggy
comment:
  Calling ScrolledWindow::setwidget does not make the widget intended to be scrolled visible since ScrolledWindow::setwindow method lacks a raise:

  toplevel .t
  text .t.t -width 10 -height 4;
  .t.t insert end {z1
  z2
  z3
  z4
  z5
  z6
  z7
  z8
  z9
  z10}

  ScrolledWindow::create .t.s -auto none;
  pack .t.s -fill both -expand 1;
  .t.s setwidget .t.t

  does not show the text widget. Adding a raise command after gridding the widget into the scrolledwindow works fine:

      grid $widget -in $path -row 1 -column 1 -sticky news
      raise $widget;


  ATTENTION:
  - method getwidget would be fine
  - support to remove a widget from a scrolledwindow would be fine (setwidget "")


tkt_uuid: 523109ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: textutil
priority: 5 Medium
foundin: None
resolution: None
title: expand handling of plain text
comment:
  When using macro arguments the processor does not run 
  the constant parts of such arguments through the 
  handler for plain text. It should.

  Example:

  In
     [bla "ditz   [foo] bla"]
           *******     ****

  the parts marked with * should be run through the
  handler for plain text before invoking the macro "bla"

  Doing this change ensures that macros can always be 
  sure that all special characters and what not are 
  already handled when they are invoked. I.e. they
  can assume that their arguments are already formatted
  for the requested output format.

  This issue came up with in doctools.

  Joe, anything else to say, or different ?


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: 1123327fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: counter
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: histograms do not handle negative reals correctly.
comment:
  When I do this: 
  ::counter::init h -hist 10
  ::counter::count h 9.1
  ::counter::count h -9.2

  I end up with bin 0 incremented twice.  I should have
  incremented bin -1 once and bin 0 once.

  proc ::counter::count is incorrect.  This fixes
  (counter.tcl) that problem. 

  -hist {
          upvar #0 counter::H-$tag histogram
  set bucket [expr int([expr floor([expr {$delta /
  $counter(bucketsize)}])])]
          if {![info exists histogram($bucket)]} {
              set histogram($bucket) 0
          }
          incr histogram($bucket)

  The problem is that int(-0.9) == 0 and int(0.9) == 0


  The html output is also incorrect as the labels are off
  by one.  I simply subtracted one in proc
  histHtmlDisplayBarChart

      #set x [expr {$i * $counter(bucketsize) *
  $counter(mult)}]
      set x [expr {($i-1) * $counter(bucketsize) *
  $counter(mult)}]



  There are still problems with the -skip option


tkt_uuid: 766245ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: inifile
priority: 5 Medium
foundin: None
resolution: Fixed
title: ini::commit bug
comment:
  Bug description added to the code ...

      # NOTE: Possible bug. Not closing the fh here
      # may cause problems if the written data is
      # less than there was in the file before. As it
      # is done here the old data after the last
      # byte written remains in existence. This can
      # cause bad syntax, causing errors when reading,
      # or even leace data in existence which was
      # supposedly deleted from the file.
      #
      # Closing and reopening the file should do the
      # trick, however this also assumes that the
      # newly opened file gets the same handle as the
      # one we closed. This assumption is wrong in the
      # case of a multi-threaded interpreter, as other
      # threads may create their own files between
      # the commands to close and reopen here.
      #
      # The full solution is to decouple the externally
      # visible handle for the ini file from the channel
      # handle.


tkt_uuid: 477753ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: add irc module
comment:
  Irc module available at 

  http://people.debian.org/~davidw/

  Please add or request changes necessary for addition.


tkt_uuid: 1581075fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: units
priority: 5 Medium
foundin: None
title: Feature submission: metric-imperial unit conversion
comment:
  I have recently created a simple set of procedures to
  convert imperial units of measurement to metric units
  and vice versa. I think it would be a useful addition
  to TCLLIB.

  Please see
  http://www.toxicantidote.net/scripts/tcl-metimp.shtml
  for details of usage and file download.


tkt_uuid: 981771ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tklib: plotchart
priority: 5 Medium
foundin: None
title: Add radial diagram to the repertoire
comment:
  Often semi-numerical data (scores on categories) are
  represented in a circular diagram. Each score is a
  point on a spoke of the circle and these scores are
  then connected by lines.

  Such a diagram could be a useful addition to Plotchart
  too.


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

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

  can't unset ftp(state.data)

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

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

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

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


tkt_uuid: 3189786fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: cmdline
priority: 5 Medium
foundin: None
resolution: Fixed
title: option processing default incorrect for .arg and .secret
comment:
  It looks like a regexp is not escaped properly, so an option myarg creates a default m in the argument array.

  I think the code
      if {[regsub -- .arg$ $name {} name] == 1} {

  should be
      if {[regsub -- {\.arg$} $name {} name] == 1} {

  I think the change needs to be done in two procs, ::cmdline::GetOptionsDefaults and ::cmdline::usage, with .arg and .secret, for a total of 4 lines changed.

  Run the attached script "arg -h".


tkt_uuid: 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: 1113348fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: logger
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: No way for logproc to discover servicename
comment:
  Currently there is no way for a logproc to discover its
  servicename.

  Example:
  set log [logger::init foo]
  proc customized {txt} {
     puts "How shall i find my servicename with this
  signature?: $txt"
  }
  ${log}::logproc error customized

  There is a workaround using the older logproc syntax
  though.

  set log [logger::init bar]
  proc customized {service txt} {
     puts "Logging service $service : $txt"
  }
  ${log}::logproc error txt {
     variable service
     ::customized $service $txt
  }

  The signature of the custom logproc should be enhanced
  with the loglevel, the service and the text and
  possible an args for future extensions.

  Michael


tkt_uuid: 1023867fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Out of Date
title: Tk dependency in version 1.7
comment:
  BWidget 1.4 TitleFrame does not work with Tk 8.2

  $ wish8.2
  %  package require BWidget
  1.7
  % pack [TitleFrame .tf -text Test]
  error while autoloading "TitleFrame": unknown option
  "-state"


  $ wish8.4
  %  package require BWidget
  1.7
  % pack [TitleFrame .tf -text Test]
  %

  In some version the "-state" option has been added to
  the TitleFrame Widget, which is which is handled over
  th the Tk label widget. The "label" in Tk 8.2 does not
  support "-state", but the Tk 8.4 label does have this
  method.
  In the BWidgets 1.2 no "-state" method of the
  TitleFrame was present, so this version works with Tk
  8.2.

  I don't know how the situation is in Tk 8.3, neither do
  I know when the "-state" has been added to the
  TitleFrame.

  By,
  Gerhard


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: 3090738fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
resolution: Fixed
title: Minor doc typo in graphops manpage
comment:
  The graphops manpage contains a small typo in several places.  The attached diff patches tcllib 1.12  graphops manpage to remove the typo.


tkt_uuid: 1224755fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 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: 548233ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: more hpupdate bug reports
comment:
  When I start hpupdate 2.0, it displays the local set of
  files, with highliting to show which ones have changed
  since the last upload.

  If I then select File / Connect , the remote directory
  is read, parsed, and displayed and the local info is
  'refreshed'.  This means that any changes the user
  might have made in terms of selecting what s/he wished
  to upload is now gone.

  Also, once an upload is done, hpupdate does a
  disconnect (the not connected icon appears) but the
  File menu isn't updated to display Connect instead of
  Disconnect.

  Finally, the upload process appears to not do the cd's
  necessary so that the uploaded files appear in the
  appropriate directories.  Instead, all files, including
  ones from subdirectories, go into the top level
  directory, clobbering any files by the same name that
  are present there.


tkt_uuid: 565281ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: tcllib documentation bugs
comment:
  Two issues when building tcllib's documentation.

  ./configure
  make
  ...
  Gen (html): ./modules/control/control.man
  Manpage error (nolistcmd), "section LIMITATIONS" :
  Command not allowed inside of a list.
  ...
  Gen (nroff): ./modules/control/control.man
  Manpage error (nolistcmd), "section LIMITATIONS" :
  Command not allowed inside of a list.
  ...


  Then when the docs are built, two empty files
  are left behind: html-doc and nroff-doc


tkt_uuid: 1545931fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Accepted
title: A proposal for "ldapx", a new package
comment:
  Here is "ldapx", a proposal for a new Tcllib package.

  This package provides a new, extended high-level 
  interface to LDAP
  diretories and LDIF files. It makes use of the Snit 
  object type to
  provide three classes: ldap directories, ldif files 
  and individual
  entries.

  This new package is built upon existing packages: 
  uri.tcl, asn.tcl
  and ldap.tcl (to provide low level access).

  Here is the proposed documentation (both in .man 
  format and in PDF)
  and the ldapx.tcl code. The ldapx.tcl code needs a 
  very current
  Tcllib (uri.tcl patch committed, asn.tcl patch 
  committed, and
  ldap.tcl patches currently being reviewed by Michael 
  Schlenker).


tkt_uuid: 821126ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: base64
priority: 7 High
foundin: None
resolution: Fixed
title: uninitialized "$output" in ::base64::decode
comment:
  Bug: '$output' is not defined in some situations at the
  end of
  proc ::base64::decode

  Rationale:
  Citing base64::decode comments:
       # RFC 2045 says that line breaks and other
  characters not part
       # of the Base64 alphabet must be ignored, and that
  the decoder
       # can optionally emit a warning or reject the
  message.  We opt
       # not to do so, but to just ignore the character.
  So, if you pass to base64::decode a totally bad string,
  you should
  get "" on return, not an error, since for the empty
  string we get "".

  How to reproduce:
  tcl>package require base64
  tcl>base64::decode "  "
  Error: can't read "output": no such variable

  Proposed patch:
  At the beginning of base64::decode (base64.tcl, line 281):
  set output ""


tkt_uuid: 1695111fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: doctools - Gather markup statistics
comment:
  Extend engine to gather statistics about the use of markup commands in a set of documents, and print them. Both only on demand.

  Note: To get the actual commands used (i.e. deprecated ones) this has to be done in the syntax checking layer. Backend is too late, it sees only the canonical commands, and some are filtered out already (include, comments, ...)


tkt_uuid: 1519755fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: struct :: record
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Unable to delete record
comment:
  I'm using a combination of incr TCl and struct::record

  I can create and edit a records and records inside of
  records, but unable to delete with no error.

  please review


tkt_uuid: 531799ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 6
foundin: None
resolution: Fixed
title: checks for wrong tcl version
comment:
  ftpd did not run on tcl8.2.2 for win32.
  Reason: The use of "lsort -unique" which is new in 
  tcl8.3.

  The problem: pkgIndex.tcl from ftpd does not check the 
  right tcl version:

  if {![package vsatisfies [package provide Tcl] 8.2]} 
  {return}

  Must be: 
  if {![package vsatisfies [package provide Tcl] 8.3]} 
  {return}

  Also i miss any information in the manpage about the 
  smallest tcl-version ftpd needs.


tkt_uuid: 1029144fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: bwidget listbox multi selection handles ctrl key wrong
comment:
  the multi-selection mode of listbox has a rather non-
  intuitive "feature": when holding down ctrl key and 
  clicking on an unselected item it selects it - so far so 
  good - when clicking on a selected item nothing changes.

  One would expect (from experience with other listboxes) 
  that clicking on a selected item with Ctrl-key held would 
  de-select the item.

  Tested with: BWidget 1.6 and CVS-Head as of 2004-09-
  16


tkt_uuid: 1272913fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: profiler
priority: 5 Medium
foundin: None
resolution: Fixed
title: profiler - failed test with Tcl 8.5
comment:
  ==== profiler-7.2 sortFunctions FAILED
  ==== Contents of test case:

      set c [interp create]
      interp alias $c parentSet {} set
      set result [$c eval {
          set auto_path [parentSet auto_path]
          package require profiler
          profiler::init
          proc ::foo {} {
              set foobar 0
          }
          proc ::bar {} {
              set foobar 1
          }
          foo; foo; bar;
          profiler::sortFunctions calls
      }]
      interp delete $c
      set result

  ---- Result was:
  {::tcl::clock::scan 0} {::tcl::clock::format 0}
  {::tcl::clock::add 0} {::bar 1} {::foo 2}
  ---- Result should have been (exact matching):
  {::bar 1} {::foo 2}
  ==== profiler-7.2 FAILED


tkt_uuid: 1120152fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
title: logger: maintain callstack for custom logprocs
comment:
  Hi,

  In logger package, custom logprocs should be able to
  use "uplevel 1 .." to execute code in the caller's
  scope. This currently works but is not documented.
  There are several benefits for providing this feature,
  such as:

  * The default logger output does not include the caller
  proc which is very useful. So I have defined a custom
  logproc which uses [info level $lvl] cmd to get the
  caller proc name.

  * Execute code in caller's stack using uplevel cmd.
  Instead of writing if stmts:

  if {log::currentloglevel == "debug"} {
      log::debug "diagnosis = [runDiag $a]"
  }

  I prefer calling it as:

  log::debug {diagnosis = [runDiag $a]}

  and let custom proc for log::debug invoke [runDiag $a]
  in the caller's scope and print/log the output returned
  by it.

  Hemang.


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: 1151534fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Danish language file
comment:
  Hi, I just created a Danish language file for bwidget.
  Please feel free to include it in the distro.


  - elhaard


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: 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: 2250870fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: improvements for fileutil::traverse
comment:
  This patch improves the fileutil::traverse package in
  several ways.  The changes are documented in the
  man page traverse.man and in the Changelog.  The version
  number of the traverse package has been bumped to 0.5,
  which is also reflected in pkgIndex.

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

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

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


tkt_uuid: 1471885fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Invalid
title: snit2.tcl - faulty "in" keyword
comment:
  Don't know what the deal is..


  -@- -) tclsh
  % info tclversion
  8.5
  % info patchlevel
  8.5a2
  % package require snit
  2.0
  % snit::type dog { }
  syntax error in expression "$name in $arglist": extra 
  tokens at end of expression


  So I look in the source and find
      if {$name in $arglist} {
  replace it with
      if {[lsearch $arglist $name] != 1} {
  and recompile which fixes that 'bug'.


  -@- -) tclsh
  ...
  % snit::type dog { }
  ::dog
  % snit::type dog {option -color brown}
  syntax error in expression "$option in $compile
  (delegatedoptions)": extra tokens at end of expression


  So I find all instances of:
      if {X in Y} {
  replace them with
      if {[lsearch Y X] != 1} {
  and recompile to fix.


  But what gives? I can't find "X in Y" used anywhere 
  else in tcllib, and the only clue I have is the "in" 
  procedure for xifo objects.

  Dylan.


tkt_uuid: 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: 1808431fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: dns
priority: 5 Medium
foundin: None
resolution: Works For Me
title: ::ip::version errors when argument is not of form */*
comment:
  can't read "addr": no such variable while executing
  "string first $addr :"
      (procedure "version" line 4)
      invoked from within
  "version $ip"
      (procedure "::ip::type" line 2)
      invoked from within
  "::ip::type $ip"


tkt_uuid: 832488ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: None
priority: 8
foundin: None
resolution: Not Applicable Here
title: License woes
comment:
  Tcllib has three licenses:

  tcllib/license.terms: BSD-style, ok.
  tcllib/modules/textutil/expander_license.txt:
  BSD-style, ok.

  tcllib/modules/comm/comm.LICENSE: Seems BSD-ish,
  paragraphs 2 and 5 seem problematic.

  Is there something that can be done to clean this up?

  Thanks,

  Stu


tkt_uuid: 440051ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 3 Low
foundin: None
resolution: Fixed
title: latest sha1 test suite fails
comment:
  Note: I don't see sha1 listed in the sf tcllib project
  categories.

  I downloaded the latest tcllib snapshot from scriptics
  on July 10, 2001 at 9:30 AM EDT.

  when I run the test from the top level directory, I get
  this error.

  Module: sha1
  modules/sha1/sha1.test
  sha1 1.0 (pure Tcl)

  ==== sha1-1.0 sha1 FAILED
  ==== Contents of test case:

      catch {::sha1::sha1} result
      set result

  ---- Result was:
  wrong # args: should be "::sha1::sha1 msg"
  ---- Result should have been (exact matching):
  no value given for parameter "msg" to "::sha1::sha1"
  ==== sha1-1.0 FAILED

  ==== sha1-1.1 sha1 FAILED
  ==== Contents of test case:

      catch {::sha1::hmac} result
      set result

  ---- Result was:
  wrong # args: should be "::sha1::hmac key text"
  ---- Result should have been (exact matching):
  no value given for parameter "key" to "::sha1::hmac"
  ==== sha1-1.1 FAILED

  ==== sha1-1.2 sha1 FAILED
  ==== Contents of test case:

      catch {::sha1::hmac key} result
      set result

  ---- Result was:
  wrong # args: should be "::sha1::hmac key text"
  ---- Result should have been (exact matching):
  no value given for parameter "text" to "::sha1::hmac"
  ==== sha1-1.2 FAILED


tkt_uuid: 957919ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: uri
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: uri::split fails on "http://a.b.c/idx?path=/idx"
comment:
  uri::split "http://a.b.c/idx?path=/idx"
  results in
  path: "idx?path=/idx"
  query: ""

  I think the "/" in the query confuses the regexp 
  in "SplitHttp"

  Fixing:
  variable charN {[a-zA-Z0-9$_.+!*'(,)?:@&=-]}
  to:
  variable charN {[a-zA-Z0-9$_.+!*'(,)?:@/&=-]}
  (Note the "/")
  results in the correct result.

  I'm not quite sure if this does affect other functions?

  I ran the "uri.test" but got 12 failures (before and after 
  my change!).

  I'm using uri 1.1.3 (with tcl 8.4.5 on WindowsXP).


tkt_uuid: 1394840fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: Module assumes wrong global $:: level
comment:
  Under cygwin, I directly sourced:

  source $::Tcllib/md5/md5.tcl
  source $::Tcllib/base64/base64.tcl
  source $::Tcllib/mime/mime.tcl
  source $::Tcllib/mime/smtp.tcl

  It blew up.

  The MIME module gave me this error:

  can't read "::major": no such variable
  while executing
  "if {$::major < 2} {

  I altered the other two references to $major to $::major
  to get around this error.

  I've mentioned this before: bugid 979894.

  You are assuming some namespace wrapping or something.

  Don't do that.


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

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

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

  Comments please!


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

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

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

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

  HTH,
  Chris


tkt_uuid: 726352ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: bwidget configure/Makefile fails to install
comment:
  The currently distributed configure.in and Makefile.in
  that are in bwidget CVS result in a Makefile that looks
  for config/mkinstalldirs , but that file is no longer a
  part of the TEA 2 sample extension's distribution.

  Either a set of config directory files need to be
  included in bwidget, or the configure.in/makefile.in
  files need to be updated to TEA 2 or alternative (Tcl
  Script Extension Architecture - TSEA ?).


tkt_uuid: 3608943fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: dns
priority: 5 Medium
foundin: None
resolution: Fixed
title: [::ip::version] crashes when receives empty string
comment:
  tcllib version 1.15, when empty string passed as arg, proc ip::version crashes:
  % package require dns
  1.3.3
  % ip::version {}
  can't read "addr": no such variable
  % set errorInfo
  can't read "addr": no such variable
      while executing
  "IPv4? $addr"
      (procedure "ip::version" line 4)
      invoked from within
  "ip::version {}"

  One of possible ways to correct it - check for an empty string in proc, or lassign can be used instead of foreach:
  proc ::ip::version {ip} {
      set version -1
      if {$ip eq {}} {return $version}
      foreach {addr mask} [split $ip /] break
      # or: lassign [split $ip /] addr mask
      if {[IPv4? $addr]} {
          set version 4
      } elseif {[IPv6? $addr]} {
          set version 6
      }   
      return $version
  }


tkt_uuid: 753770ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: None
title: unwanted log output
comment:
  The ftp-modules in tcllib 1.4 produces a line of output
  for every transfer: "xxxx bytes sent in yyy seconds
  (zzzz Bytes/sec)".

  This should only be produced, if verbose output is wanted.

  ftp.tcl has a namespace variable VERBOSE, which is
  honored in every call to DisplayMsg, except in
  procedure ElapsedTime.

  The attached patch should change this.


tkt_uuid: 1500946fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tklib: plotchart
priority: 5 Medium
foundin: None
title: histogram plot type
comment:
  Hi,

  is it possible to add a new plot type function :
  Plotchart::createHistogram
  in the same way that
  math::statistics::plot-histogram
  i.e. with continuous x-axis variable.

  Thanks

  dcobac@free.fr


tkt_uuid: 1316061fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: tree
priority: 4
foundin: None
resolution: Fixed
title: struct/tree.test prints extra info
comment:
  tree.test includes gratuitous puts commands, cluttering
  the log.  It prints something about "impl. performance."


tkt_uuid: 1615255fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: Installation
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: The "notes" in INSTALL.TXT are wrong
comment:
  The tcllib-1.9/INSTALL.TXT file has notes at the bottom saying how it interacts with other versions. They don't appear accurate.

  They refer to previous versions of Tcllib, implying an install will clobber them. If the install actually does for some reason clobber old versions, this should be made more emphatic I believe. But it doesn't appear to.


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: 740484ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Markup error in DragSite and DropSite HTML docu.
comment:
  Both DragSite and DropSite HTML docu pages are -
  starting in the -droptype docu and then until the end
  of the page - shown completely in bold. (Well, at least
  in mozilla.)

  There is a small markup error, which causes this. View
  the HTML pages in a text editor and search for: 
  <b>baseop</i>
  This markup should of course read: <i>baseop</i>


tkt_uuid: 1911513fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: struct :: tree
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: deserialise into a branch of a tree
comment:
  The 'serialise' action for a tree allows you to serialise a portion of a tree for... well, for whyever you want. The 'deserialise' action, however, overwrites the entire tree with whatever is being deserialised. This Request is to enable to deserialise into a selected node, to make it fully complementary with serialise.


tkt_uuid: 715193ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: unwanted PCDATA space trim
comment:
  ### test code ###

  package require cmdline 1.1
  package require htmlparse 0.3

  set html {<html><head><title>Title</title>
  <body><b>BB</b> RR <b>BB</b> <i>II</i></body></html>}

  catch {t destroy}
  struct::tree t
  htmlparse::2tree $html t
  t walk node1 -order both -command {puts [list %n %a [t
  getall %n]] }

  ### result ###
  ...
  node7 enter {type b data {}}
  node8 enter {type PCDATA data BB}
  node8 leave {type PCDATA data BB}
  node7 leave {type b data {}}
  node9 enter {type PCDATA data RR}
  node9 leave {type PCDATA data RR}
  node10 enter {type b data {}}
  node11 enter {type PCDATA data BB}
  node11 leave {type PCDATA data BB}
  node10 leave {type b data {}}
  node12 enter {type i data {}}
  node13 enter {type PCDATA data II}
  node13 leave {type PCDATA data II}
  node12 leave {type i data {}}
  ...

  ### expected result ###

  ...
  node9 enter {type PCDATA data { RR }}
  ...
  node12 enter {type PCDATA data { }}
  ...

  ### discussion ###

  Due to "string trim $textBehindTheTag",
  significant PCDATA spaces are destroyed.
  The code should distinguish if PCDATA is expected
  or not expected. It must rely on a sort of simplified DTD.


tkt_uuid: 886304ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidgets1.7.0 bug in Notebook:bindtabs command
comment:
  I am using ActiveTcl8.4.4.0 with BWidgets1.7.0. The 
  Notebook widgets bindtabs command seems to be 
  stripping off the first two characters of the tabname. 
  Here is a small script to replicate the bug. 

  #!/bin/env wish

  proc print_tab_name {tab} {
  puts $tab
  }

  # Load BWidget package into the interpreter
  package require BWidget

  wm withdraw .

  # Create Notebook
  set notebook [NoteBook .nb]
  $notebook insert end TestTab -text "Test Tab"
  $notebook compute_size
  pack $notebook -fill both -expand yes -padx 4 -pady 4
  $notebook raise [$notebook page 0]
  $notebook bindtabs <Button-1> "print_tab_name"

  wm deiconify .


tkt_uuid: 1897846fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 7 High
foundin: None
resolution: Fixed
title: assign test 4.4 fails
comment:
  sparc solaris 9 sun c compiler, cvs head for tcl and tcllib.

  ---- assign-4.4 start

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

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

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


tkt_uuid: 3552226fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: docs specify -part, but the option is -parts
comment:
  in mime.man and mime.tcl, -part is specified as the option to ::mime::initialize, but the option is actually -parts


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

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


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

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


tkt_uuid: 2646568fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: jpeg
priority: 5 Medium
foundin: None
resolution: Accepted
title: jpeg::imageInfo opens files with r+
comment:
  The procedure never needs to write the file -- and really ought not to, of course.

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

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

  Thanks.


tkt_uuid: 782367ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 2853152fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: dns
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 466094ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: tkchat 'logging' info move
comment:
  Currently tkchat produces logging info to stdout .
  An option to either log it to a file or to
  a tk window would be a useful addition.


tkt_uuid: 1879622fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: tooltip
priority: 5 Medium
foundin: None
resolution: Fixed
title: tooltip::show fails when window has been destroyed
comment:
  In function: ::tooltip::show

  It begins:

      set we [winfo exists $w]
      set wc [string match $w* [eval [list winfo containing] \
                                    [winfo pointerxy $w]]]
      set wm [string equal [winfo class $w] "Menu"]
      if {!$we || (!$wm && !$wc)} {
          return
      }

  should be:

      set we [winfo exists $w]
      if {!$we } { return }
      set wc [string match $w* [eval [list winfo containing] \
                                    [winfo pointerxy $w]]]
      set wm [string equal [winfo class $w] "Menu"]
      if {!$wm && !$wc} {
          return
      }


tkt_uuid: 1305988fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: Insufficient PagesManager documentation
comment:
  The documentation does not specify much in the way of usage. I 
  bumped into some confusion when I tried to pack the separate pages 
  returned by [add]. Apparently this is not the correct usage. Only 
  widgets inside the pages are GMed separately, as well as the 
  PagesManager itself. In addition, it was not totally clear that [page] 
  takes a new identifier as an argument, not the path of an existing 
  widget. Perhaps it should state something like the following:

  Add a new page identified by 'page', which is an arbitrary identifier. 
  The pathname of the new page is returned and widgets for the page 
  should be created with this as the parent or ancestor. However, 
  PagesManager manages its own geometry. [pack], [grid] or an 
  equivalent should not be used with the pathname returned by [add].

  It also does not explain that no page is raised on creation and this 
  must be done with a call to [raise] to view any page.


tkt_uuid: 3506188fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: logger
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: level none cannot be inherited
comment:
  minimal example (responsens with indentation for readability):

  expect:/tmp$ package require logger
      0.9
  expect:/tmp$ ::logger::init xy
      ::logger::tree::xy
  expect:/tmp$ foreach lvl [::logger::levels] {::logger::tree::xy::disable $lvl}
  expect:/tmp$ ::logger::tree::xy::currentloglevel
      none
  expect:/tmp$ ::logger::init xy::z
      Invalid level 'none' - levels are debug info notice warn error critical alert emergency
      while evaluating {::logger::init xy::z}
  expect:/tmp$ 


tkt_uuid: 466317ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Accepted
title: Cleanup of tkchat sources
comment:
  Added on behalf of Larry Virden (lvirden) the enclosed
  patch cleans up the tkchat in several places noted as
  problematic by static code checkers.


tkt_uuid: 3053446fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: multiplexer
priority: 7 High
foundin: None
resolution: Works For Me
title: multiplexer fails self-test, tcllib 1.11 and TCL 8.5.8
comment:
  Hi,

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

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

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

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

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

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

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


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

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

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

  Thanks!


tkt_uuid: 756893ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtpd
priority: 5 Medium
foundin: None
resolution: Invalid
title: Error in rcpt
comment:
  When I use a "command" rcpt , I receive an eror:
  ----
  mail from:x
  501 Syntax error in parameters or arguments
  ----

  In server a message log is:

  ----
  debug     received: mail from: x
  debug     MAIL failed wrong # args: should be "array
  set arrayName list"
  ----

  I get tcllib1.4, tcl8.4.3 and tk8.4.3 today.

  When I use tcllib1.3 with same program I don't receive
  this error.

  For test only, I downgrade for "tcllib1.3", execute the
  same program, and the er

  In "telnet localhost 25"
  -----
  mail from:x
  250 OK
  -----

  In SERVER
  -----
  debug     received: mail from:x
  debug     MAIL FROM: x@fb.home
  -----

  Thank you.

  FB

  P.S.: I'm sorry, my english is bad!!!!


tkt_uuid: 3312900fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: Fixed
title: CWD operation does not perform basic checks
comment:
  CWD operation should check for existence of file (using the filesystem callback "exists" to prevent changing directories to a file)

  --- ftpd1.2.5/ftpd.tcl(revision 2177)
  +++ ftpd1.2.5/ftpd.tcl(working copy)
  @@ -824,7 +824,14 @@
   return
       }
   
  -    set data(cwd) [file join $data(cwd) $relativepath]
  +    set path [file join $data(cwd) $relativepath]
  +
  +    if {[::ftpd::Fs exists $path]} {
  +        puts $sock "550 not a directory"
  +        return
  +    }
  +
  +    set data(cwd) $path
       puts $sock "250 CWD command successful."
       return
   }


tkt_uuid: 722192ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 3 Low
foundin: None
resolution: Fixed
title: Use lsearch -exact in bwidget/tree.tcl
comment:
  The attached patch is mechanical ly replaces all
  occurrences of [lsearch] in tree.tcl with [lsearch
  -exact]; this is to avoid problems in case node IDs
  contain  "*" or other glob characters.

  I'm *pretty* sure that [lsearch -exact] is the right
  thing in all cases, since the Tree widget isn't
  documented to use glob-matching in any operation, but
  this ought to be double-checked before committing.


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

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


tkt_uuid: 1224575fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtpd
priority: 5 Medium
foundin: None
resolution: Fixed
title: 'MAIL FROM <>' fails, but shouldn't
comment:
  in proc ::smtpd::MAIL, around line 624, the result from
  split_address is parsed using ::mime::parseaddress,
  which will fail if it is passed a "", ie if the form
  'MAIL FROM <>' is received.

  However, RFC 821 (3.6.  RELAYING) provides: 'it is
  permissible to leave the reverse-path null.  A MAIL
  command with a null reverse-path appears as follows:
  MAIL FROM:<>'.  This is used in some bounce messages,
  and serves to prevent bounce loops.

  I recommend that the result from split_address be
  inspected, and if it is "", the address is not parsed,
  but simply taken as is, and passed to validate_sender, etc.

  I can provide patches if necessary.  Please advise.


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

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

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


tkt_uuid: 1603273fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tar
priority: 5 Medium
foundin: None
resolution: Fixed
title: Error in handling filenames with spaces in untar
comment:
  When file names contains spaces untar fails because of comparing a brace delimited string (list representation) with a "normal" string.

  Patch provided.

  Another problem I fell in was the fact that the parameter calles "files" is interpreted as list of files.
  Whereas a single file maybe entered in this situation it fails when specifying a file name with spaces.
  For clarity reasons I would prefer the expression "filelist" in these procedures.

  Best regard,
    Gerhard


tkt_uuid: 3325112fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Accepted
title: ftp -- too enthusiastic use of reverse DNS
comment:
  The calls to [fconfigure -peer/sockname], which incur reverse DNS lookups, are not ideally placed in the code. This matters when the reverse DNS lookup is likely to fail slowly (with a timeout). TYpical are ill-configured resolvers. Especially the lookup on the client's own IP is likely to fail when it's NATted. See https://groups.google.com/group/comp.lang.tcl/browse_frm/thread/65b6637a503f4966?hl=fr# .

   (1) [fconfigure -peername] is called unconditionally, but uses the result only in the VERBOSE case (!)

   (2) [fconfigure -sockname] is called unconditionally for the data connection, though it is only useful in active mode.


tkt_uuid: 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: 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: 720933ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: struct :: graph
priority: 2
foundin: None
resolution: Not Applicable Here
title: testsuite makes incorrect assumptions about walk order
comment:
  The tests in graph.test assume a particular order while
  walking a graph, even if multiple valid orderings exist.

  This isn't a direct problem for tcllibs ::struct::graph
  module, but for modules reusing the test suite for
  interface checking, like cgraph does.

  There are multiple valid walks through the graph for
  each test, but the test suite selects an arbitrary one
  as the correct solution based on implementation details
  of ::struct::graph

  The attached pdf file shows the graph layout for the
  tests. One can easily see the multiple valid walk pathes.

  Solution:
  Match with any of the valid walks, not only with a
  single one selected arbitrarily.

  Some examples from running the tests with another
  implementation of the interface (cgraph):



  ---- Result was:
  enter mygraph i enter mygraph ix enter mygraph vii
  enter mygraph vi enter mygraph viii enter mygraph ii
  enter mygraph iii enter mygraph iv enter mygraph v
  ---- Result should have been (exact matching):
  enter mygraph i enter mygraph ii enter mygraph iii
  enter mygraph iv enter mygraph v enter mygraph vi enter
  mygraph viii enter mygraph ix enter mygraph vii
  ==== graph-21.10 FAILED


  ==== graph-21.11 forward post-order dfs walk FAILED
  ---- Result was:
  leave mygraph viii leave mygraph vi leave mygraph v
  leave mygraph iv leave mygraph iii leave mygraph ii
  leave mygraph vii leave mygraph ix leave mygraph i
  ---- Result should have been (exact matching):
  leave mygraph viii leave mygraph vi leave mygraph v
  leave mygraph iv leave mygraph iii leave mygraph ii
  leave mygraph ix leave mygraph vii leave mygraph i
  ==== graph-21.11 FAILED
  ==== graph-21.12 forward both-order dfs walk FAILED
  ---- Result was:
  enter mygraph i enter mygraph ii enter mygraph iii
  enter mygraph iv enter mygraph v enter mygraph vi enter
  mygraph viii leave mygraph viii leave mygraph vi leave
  mygraph v leave mygraph iv leave mygraph iii leave
  mygraph ii enter mygraph vii leave mygraph vii enter
  mygraph ix leave mygraph ix leave mygraph i
  ---- Result should have been (exact matching):
  enter mygraph i enter mygraph ii enter mygraph iii
  enter mygraph iv enter mygraph v enter mygraph vi enter
  mygraph viii leave mygraph viii leave mygraph vi leave
  mygraph v leave mygraph iv leave mygraph iii leave
  mygraph ii enter mygraph ix leave mygraph ix enter
  mygraph vii leave mygraph vii leave mygraph i
  ==== graph-21.12 FAILED
  ==== graph-21.13 forward pre-order bfs walk FAILED
  ---- Result was:
  enter mygraph i enter mygraph ix enter mygraph ii enter
  mygraph iii enter mygraph iv enter mygraph v enter
  mygraph vi enter mygraph viii enter mygraph vii
  ---- Result should have been (exact matching):
  enter mygraph i enter mygraph ii enter mygraph ix enter
  mygraph vii enter mygraph iii enter mygraph vi enter
  mygraph iv enter mygraph viii enter mygraph v
  ==== graph-21.13 FAILED
  ==== graph-21.14 backward pre-order bfs walk FAILED
  ---- Result was:
  enter mygraph ix enter mygraph i enter mygraph viii
  enter mygraph vi enter mygraph v enter mygraph iv enter
  mygraph iii enter mygraph ii enter mygraph vii
  ---- Result should have been (exact matching):
  enter mygraph ix enter mygraph i enter mygraph viii
  enter mygraph vi enter mygraph v enter mygraph vii
  enter mygraph iv enter mygraph iii enter mygraph ii
  ==== graph-21.14 FAILED
  ==== graph-21.15 backward pre-order dfs walk FAILED
  ---- Result was:
  enter mygraph ix enter mygraph i enter mygraph viii
  enter mygraph vi enter mygraph vii enter mygraph v
  enter mygraph iv enter mygraph iii enter mygraph ii
  ---- Result should have been (exact matching):
  enter mygraph ix enter mygraph i enter mygraph viii
  enter mygraph vi enter mygraph v enter mygraph iv enter
  mygraph iii enter mygraph ii enter mygraph vii
  ==== graph-21.15 FAILED
  ==== graph-21.16 backward post-order dfs walk FAILED
  ---- Result was:
  leave mygraph vii leave mygraph ii leave mygraph iii
  leave mygraph iv leave mygraph v leave mygraph vi leave
  mygraph viii leave mygraph i leave mygraph ix
  ---- Result should have been (exact matching):
  leave mygraph ii leave mygraph iii leave mygraph iv
  leave mygraph v leave mygraph vii leave mygraph vi
  leave mygraph viii leave mygraph i leave mygraph ix
  ==== graph-21.16 FAILED
  ==== graph-21.17 backward both-order dfs walk FAILED
  ---- Result was:
  enter mygraph ix enter mygraph i enter mygraph viii
  enter mygraph vi enter mygraph vii leave mygraph vii
  enter mygraph v enter mygraph iv enter mygraph iii
  enter mygraph ii leave mygraph ii leave mygraph iii
  leave mygraph iv leave mygraph v leave mygraph vi leave
  mygraph viii leave mygraph i leave mygraph ix
  ---- Result should have been (exact matching):
  enter mygraph ix enter mygraph i enter mygraph viii
  enter mygraph vi enter mygraph v enter mygraph iv enter
  mygraph iii enter mygraph ii leave mygraph ii leave
  mygraph iii leave mygraph iv leave mygraph v enter
  mygraph vii leave mygraph vii leave mygraph vi leave
  mygraph viii leave mygraph i leave mygraph ix
  ==== graph-21.17 FAILED


tkt_uuid: 1494597fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: html
priority: 5 Medium
foundin: None
resolution: Fixed
title: spits out invalid <meta> tag
comment:
  The html package currently spits out a <meta> tag in
  the following format:

  <meta name="keywords" value="Tcl, TclHttpd, Tcl/Tk, Tcl
  Web Server, Web Server">

  The spec for <meta> tags reads "content=" not "value=".
  So the correct tag should be:

  <meta name="keywords" content="Tcl, TclHttpd, Tcl/Tk,
  Tcl Web Server, Web Server">

  I have verified this on the W3C site:

  http://www.w3.org/TR/html401/struct/global.html#h-7.4.4.2

  and in my O'Reilly "HTML & XHTML" book.

  Robert Hicks

  P.S. I tested this using the tclhttpd server during my
  investigation about adding more tag support for this
  package.


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

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

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


tkt_uuid: 1213646fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 2
foundin: None
resolution: Fixed
title: French locale (fr) is blocking man pages making
comment:
  I tried to install tcllib-1.7 from the tar.gz archive.
  On my computer (under WinME) the doc generation step
  throws an error that I could localize in
  'modules/doctools/mpformats/fr.msg'.
  mcset (from msgcat package) is used with an incorrect
  number of arguments :

  mcset fr "tag" "english desc" "french desc"

  All we need to fix this bug is to remove the "english
  desc" from all similar calls. And this is still present
  in the current CVS snapshot.
  May this be useful.
   Stephane


tkt_uuid: 1390477fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 898774ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: html
priority: 5 Medium
foundin: None
resolution: Fixed
title: html - documentation for checkSet incomplete
comment:
  The docs for ::html::checkSet do not document the
  arguments key and sep.

  Diff included.

  Index: html.man
  ===================================================================
  RCS file: /cvsroot/tcllib/tcllib/modules/html/html.man,v
  retrieving revision 1.6
  diff -u -b -r1.6 html.man
  --- html.man    11 Apr 2003 18:27:10 -0000      1.6
  +++ html.man    17 Feb 2004 14:47:22 -0000
  @@ -50,8 +50,8 @@

   Generate a set of CHECKBOX form elements and
  associated labels.  The
   [arg list] should contain an alternating list of
  labels and values.
  -This uses [cmd ::html::checkbox].
  -
  +This uses [cmd ::html::checkbox]. All the CHECKBOX
  buttons share the same
  +[arg key] for their name. The [arg sep] is text used
  to separate the elements.

   [call [cmd ::html::checkValue] [arg name] [opt [arg
  value]]]


tkt_uuid: 891024ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: color handling problems for unrecognised users
comment:
   can't read "Options(Color,<[A]bomination>,Web)": no
  such element in array
      while executing
  "string compare $Options(Color,$nick,Web) $clr"
      (procedure "checkNick" line 23)
      invoked from within
  "checkNick $nick $clr"
      (procedure "addAction" line 3)
      invoked from within
  "addAction $clr "<$truenick>" $msg $mark"
      (procedure "addMessage" line 35)
      invoked from within
  "addMessage "" $nick $msg HISTORY"
      (procedure "::tkchat::LoadHistoryLines" line 15)
      invoked from within
  "::tkchat::LoadHistoryLines"
      ("after" script)


tkt_uuid: 1610665fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: No constant header tokens in ::mime::getheader
comment:
  Hello,

  working with several RFC822 compatible messages and the mime package from tcllib v1.9 I detected, that the tokens for the header parts are really those used in the header and so they are not constant, if ...

      ... one mailer uses e.g. Content-ID

  ... and ...

      ... the another mailer uses e.g. Content-Id

  ... than ::mime::getheader returns in the one case "Content-ID" and in the other case "Content-Id".

  The ::mime::getheader command should return standardized constant tokens for each header value like in my example e.g. Content-ID.

  Currently I have to test for different "styles" of header value names to guarantee, that I'm not missing a bit.

  Best regards,

  Martin Lemburg


tkt_uuid: 685073ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: textutil :: expander
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 955187ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Unknown state "<whatever>_sent"
comment:
  Most of the time it's Unknown state "type_sent" ... but 
  this time it's pwd_sent .... -shrug-

  --[ Error as follows. ]--

  Unknown state "pwd_sent"
      while executing
  "error "Unknown state \"$ftp(State)\"""
      ("default" arm line 2)
      invoked from within
  "switch -regexp -- $ftp(State) {
          list {
              fileevent $sock readable [list [namespace 
  current]::HandleList $s $sock]
              set ft..."
      (procedure "::ftp::InitDataConn" line 27)
      invoked from within
  "::ftp::InitDataConn 0 sock6 <cut> 56721"


tkt_uuid: 1896363fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: irc
priority: 5 Medium
foundin: None
resolution: Fixed
title: irc::destroy mentioned in man page doesn't exist
comment:
  The manual page refers to ::irc::destroy to cleanup a connection. That command doesn't exist, it is [$conn destroy] instead


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

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

  destroys the content of the global variable  "key". 


tkt_uuid: 558132ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Duplicate
title: smtp::sendmessage -maxsecs
comment:
  A patch to workaround bug #557040. 

  This patch supercedes patch #557520 (adds: if timeout is 
  less than 0, set it to 0).

  557520: Rather than automatically calculate a timeout for SMTP
  acknowledging acceptance of message body (DATA), 
  allow the user to specify a timeout (default 120 seconds).


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: 1198196fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Accepted
title: Convert bridged entry/exit messages to Traffic Messages
comment:
  This converts the bridged IRC/Web entry and exit 
  messages to Traffic messages so that they can be 
  hidden with the 'Hide Entry/Exit Messages' menu.

  Also converts bridged nick changes to system messages.

  Factors out common code for parsing live and history 
  messages into a new proc.

  Moves the entry/exit color initialization into the 
  main array initialization. I like being able to 
  change the message color without it being reset 
  everytime I start the program :)

  Note: This patch will fail on block #2 if the 
  NickList patch has been applied, as it modifies the 
  same code in the ::tkchat::add Action proc. This 
  patch has all the same changes with the addition that 
  it changes the RE.


tkt_uuid: 1800185fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib
priority: 5 Medium
foundin: None
resolution: Fixed
title: tooltip text inside yellow box is centred
comment:
  Tooltips seems to default to centred alignment on multiline tooltips, which looks bad particularly if your tooltip is a small paragraph or a long sentence.

  Eg: http://pc.autons.net/stuff/tooltips-centred.png

  A controlling option might also be useful as some people might find the old centred behaviour preferable.


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

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

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

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

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


tkt_uuid: 879451ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
title: add better introspection to logger
comment:
  Hi,

  I would like to see more introspection for the logger
  command. 

  At the moment only logger::services and
  ${log}::services exist

  I would like to see this additions:

  ::logger::levels -- 
  Return the currently defined levels accepted by logger
  enable/disable.

  ${log}::enabled --
  Return 1 if the service is enabled 0 otherwise.

  ${log}::currentloglevel -- (bad name?)
  Return the current log level for this service .

  And maybe:

  ${log}::delproc --
  Return the current deleteproc if no argument was given.

  Similar behaviour for the procs for the log levels.
  (BTW. What is the rationale for not using a proc name
  as argument for logproc but creating a new proc? Speed?
  )

  Michael


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: 1472443fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: bwidget - fix for several causes of ListBox slowness
comment:
  The bwidget 1.7 ListBox has several pieces of code that
  lead to O(N**2) time to insert N items into a new
  ListBox, and then display them (execute 'update')

  I made the following timings before and after my patch:

  #items time (ms)  ms/item
    4000     5842    1.460
    8000    24053    3.007
   16000    90522    5.658
   
    4000     1303    0.326
    8000     2599    0.325
   16000     5304    0.332

  For 16000 items, the speedup is about 17x.  Because
  ms/item is nearly constant for different item counts,
  the performance is probably O(N).

  This patch is against the 1.7 ListBox, but before
  submitting I tested with the CVS version of listbox.tcl
  and found that the N-squared performance problem still
  exists.  I believe this patch is "of interest" even if
  it doesn't automatically apply.


tkt_uuid: 1115865fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: WebDAV client
comment:
  There's a new implementation of a WebDAV client, which I hereby 
  would like to offer for consideration to be included in Tcllib.

  The README is at:
      http://www.equi4.com/pub/sk/davkit.kit/lib/webdav/README
  There is a starkit at:
      http://www.equi4.com/pub/sk/davkit.kit
  (it's also in sdarchive)

  The code consists of two packages:

   - webdav is a client which supports a number of functions,
      as described here:
          http://www.equi4.com/pub/sk/davkit.kit/lib/webdav/
  webdav.html

   - davvfs is a VFS driver which uses the webdav package

  Webdav requires tclxml to parse the XML returned by WebDAV 
  server (the trivial XML that is sent is done in plain Tcl).  The client 
  becomes considerably faster when a compiled version of expat is 
  present, but TclXML will fall back to pure Tcl just fine on any 
  platform.

  Davvfs is a driver which supercedes the webdavvfs client in TclVFS.  
  That client was a proof of concept, and only supports read-only use 
  of webdav, while these to packages support r/w, globs, stats, mkdir, 
  rmdir, etc.

  The current code does not support locking or versioning.  It also is 
  relatively simple right now, because a read is done entirely on open 
  and a write on close.  A refinement would be to pass channels 
  around so I/O can be done more gradually, and progress statusbars 
  could be supported.

  This code was written for a commercial project, and not taken 
  further than its current (startup) requirements.  It has been used 
  with Apache as WebDAV server, and has been used quite a bit 
  already.  The code can be placed under a Tcl- or MIT-license.

  There are test suites, but these are a bit cumbersome because they 
  depend on a hardwired server with specific content (test content is 
  included in the starkit).

  I think this set of packages would be a useful addition to tcllib, but 
  a few issues will need to be resolved to do this:
   - is it ok to depend on a pure-tcl non-tcllib package? (TclXML)
   - if not, are there alternatives? the parsing demands are not high
   - should davvfs go here on in TclVFS?
  W.r.t. that last point, I think it would be better to include VFS 
  drivers here.  TclVFS will probably at some point become part of the 
  core, or tightly bundled with it - not all possible drivers would be 
  included I suspect (to allow them to be developed further, and 
  because not everyone needs them all).

  I'm ok with whatever the tcllib maintainers decide.  Just wanted to 
  try and find a good home for this code...

  -jcw


tkt_uuid: 1615252fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: cmdline
priority: 5 Medium
foundin: None
resolution: Fixed
title: cmdline keywords could be more helpful
comment:
  Adding "command line processing" in addition to "cmdline processing" in the keywords may make searching easier.


tkt_uuid: 601257ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Accepted
title: fix missing content boundary workaround
comment:
  In parsepart, the following code checks for end-of-
  content without a boundary marker. 

      while {$moreP} {
          if {$fileP} {
              if {$pos > $last} {
          #        error "termination string missing ...
                    set line "--$boundary--
              } else {
   
  Later tests on 'line' assume that 'x' contains [string 
  length $line].  If the above code sets line in this way, an 
  infinite loop occurs.

  Need to add
                    set x [string length $line]

  after 'set line'.

  Attached patch does this.


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: 446562ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: profiler
priority: 5 Medium
foundin: None
resolution: Fixed
title: profiler: uplevel breaks for rare case
comment:
  The profiler breaks if a user defines  a proc with spaces in its name or if the name
  begins with # or a digit.

  The following patch will resolve this problem:

  godel> cvs diff profiler.tcl
  Index: profiler.tcl
  =============================================
  RCS file: /cvsroot/tcllib/tcllib/modules/profiler/profiler.tcl,v
  retrieving revision 1.14
  diff -r1.14 profiler.tcl
  138c138
  < set CODE [uplevel ${name}ORIG $args]
  ---
  > set CODE [uplevel 1 [list ${name}ORIG] $args]

  The list command is used to take care of procnames with spaces in it.
  The "uplevel 1 ..." ensures that procnames begining with # or a digit
  are not construed as the level argument to uplevel.

  Hemang. 


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: 3613644fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tepam
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: incorrect namespace formatting results in no vars defined
comment:
  The procedure "ProcedureArgumentEvaluation" incorrectly assumes that if a procedure name returned by [info level -1] doesn't start with "::" then the procedure isn't qualified with a namespace designation at all, neglecting the possibility of a relative namespace qualifier.  This leads to failure to match the called procedure with its definition stored in array ProcDef, and no arguments corresponding to command line flags are defined.

  The problem is illustrated in the attached file.  A tepam procedure is defined, then called first with an absolute namespace qualifier, then again with a relative qualifier.  The first call succeeds, the second fails.

  The "if" statement starting at line 642 appears to be the cause of the problem.  Replacing the entire "if" statement with the line "set ProcName [uplevel 2 "info command $ProcName"]" appears to fix the problem (only lightly tested).

  tepam version 0.4.0


tkt_uuid: 1796255fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: Emoticons insertion
comment:
  on linux x68 when inserting emoticons, for some there are inserted three instead of one:
  cry:^(   :-(   :(

  these are also shown with ShowEmoticons menu (see attached file)


tkt_uuid: 1695131fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 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: 1861565fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Fixed
title: comm: error msg not clear when server port is in use
comment:
  Hi,

  I am trying to create a comm channel on a specific port so that client knows which port to connect to. However, when the server port is already in use, the comm package doesn't throw an appropriate error message, see below:

  # First, start a server on port 5050 and then run
  # the following:
  mavis:49> tclsh
  % socket -server _acceptConnection 5050
  couldn't open socket: address already in use
  % package require comm
  4.5.6
  % comm::comm new xxx -port 5050 -local 0 -listen 1
  can't delete "::xxx": command doesn't exist
  %  comm::comm new xxx -port 5051 -local 0 -listen 1
  ::xxx
  % exit
  mavis:50>

  As you can see, tcl's socket command clearly indicates where the problem is whereas the error message from comm pkg is misleading.

  Hemang.


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: 520279ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Accepted
title: New package - dns lookups in Tcl
comment:
  I have produced a dns package to permit Tcl-only Domain
  Name Service lookups using the usual fileevent
  framework to allow for timeouts and asynchronous
  network transmission. This is modelled on the http package.

  Also extends the uri package to support the dns URI
  scheme. This code should probably end up in the uri
  package later on.

  For example:
   set tok [dns::resolve www.google.com]
   dns::address $tok
   dns::cleanup $tok

   dns::resolve "dns:tcl.tk;type=MX" -command handler

  No tests but there is a .man page.


tkt_uuid: 429384ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: control
priority: 5 Medium
foundin: None
resolution: Duplicate
title: execCmd procedure: improved catch/exec
comment:
  proc execCmd {commandstring {args ""}} {
      # The execCmd procedure replaces Tcl "exec" and "catch {exec}" commands
      # in order to allow external command to be executed with the flexibility
      # of obtaining the return code of the command and processing the
      # standard error and output messages of the command independently.
      #
      # Standard output and error messages may be reported to stdout/stderr
      # as the command runs, may be sent to same or different channel pointers,
      # or may be saved in the same or different variables.
      #
      # Standard error/output messages do not imply success or failure of
      # the command. The procedure may wait for the command to complete or
      # may return immediately and inform the calling proc later when the
      # command completes.
      #
      # Syntax:
      #   execCmd "commandstring" [-arg1 value1] [-arg2 value2] ...
      #      (note that commandstring may include ksh symbols |, >, <, >&, etc)
      #
      # Optional arguments:
      #   -outvar var      variable to receive stdout of command
      #   -errvar var      variable to receive stderr of command
      #   -outerr var      variable to receive stdout or stderr (success/fail)
      #   -outfp fp        channel to receive stdout of command
      #   -errfp fp        channel to receive stderr of command
      #   -waitvar var     variable to receive return code upon completion
      #                    (must be globabl variable)
      #   -pidlistvar var  variable to receive list of process ids from the
      #                    command string (used with -waitvar)
      #
      # Return code:
      #   Return code of the execCmd procedure is that of the command executed.
      #   If the procedure does not wait for the command to complete (using the
      #   (-waitvar argument), this procedure will always return 0.
      #
      # Examples:
      #   1. Run command and send output to stdout/stderr channels:
      #          set rc [execCmd "mycommand"]
      #
      #   2. If command return code is 0, saves stdout in result. Else, saves
      #    stderr to result:
      #          set rc [execCmd "mycommand" -outerr result]
      #
      #   3. Output of command sent to channel fp and stderr is captured
      #    in variable result:
      #          set rc [execCmd "mycommand" -outfp fp -errvar result]
      #
      #   4. Execute command in background and capture return code when complete:
      #          global rc
      #          execCmd "mycommand" -outfp result -errfp result -waitvar rc
      #           (do other stuff here)
      #          vwait rc
      #      or:
      #          global rc
      #          set rc ""
      #          execCmd "mycommand" -outfp result -errfp result -waitvar rc
      #          while 1 {
      #              if {$rc != ""} break
      #              (keep doing other stuff here)
      #          }

      global runcmdrc runcmdout runcmderr

      # Parse arguments
      set outfp ""
      set errfp ""
      set outerr 0
      set errvar 0
      set outvar 0
      set waitvar ""
      set runcmdrcvar runcmdrc
      set outvarname ""
      set errvarname ""
      set runcmderrvar runcmderr
      set runcmdoutvar runcmdout
      set pidlistvar ""
      array set var $args
      foreach ix [array names var] {
          switch -- $ix {
              -waitvar {
                  set waitvar $var(-waitvar)
                  global $waitvar
                  set runcmdrcvar $waitvar
              }
              -pidlist {
                  set pidlistvar $var(-pidlist)
                  upvar $pidlistvar pidlist
              }
              -outerr {
                  set outvarname $var(-outerr)
                  set outerr 1
                  set outvar 1
                  set errvar 1
              }
              -errout {
                  # Same as outerr
                  set outvarname $var(-errout)
                  set outerr 1
                  set outvar 1
                  set errvar 1
              }
              -errvar {
                  set errvarname $var(-errvar)
                  set errvar 1
              }
              -outvar {
                  set outvarname $var(-outvar)
                  set outvar 1
              }
              -outfp {set outfp $var(-outfp)}
              -errfp {set errfp $var(-errfp)}
          }
      }

      if {$waitvar != ""} {
          # If waitvar is set and user provided variables to store the
          # output in, must define them as globals
          if {$outvar} {
              global $outvarname
              set runcmdoutvar $outvarname
          }
          if {$errvar && !$outerr} {
              global $errvarname
              set runcmderrvar $errvarname
          }
          if {$outerr} {
              set runcmderrvar $outvarname
          }
      }

      unset args var
      set $runcmdrcvar ""
      set $outvarname ""
      set $errvarname ""
      set runcmderr ""
      set runcmdout ""

      # If no options provided, output to stdout and stderr
      if {$outfp == "" && $outvar == 0} {set outfp stdout}
      if {$errfp == "" && $errvar == 0} {set errfp stderr}

      pipe runcmdrpipe runcmdwpipe
      fconfigure $runcmdrpipe -blocking 0 -buffering line
      fconfigure $runcmdwpipe -blocking 0 -buffering line
      fileevent $runcmdrpipe readable [list readExecCmd $runcmdrpipe $errfp\
          $runcmdrcvar $runcmdrpipe $runcmdwpipe $runcmderrvar]

      if [catch {open "|$commandstring 2>@$runcmdwpipe"} runcmdfp] {
          if {$errfp != ""} {puts $errfp $runcmdfp}
          {set $errvarname $runcmdfp}
          return 1
      } else {
          # Set callers variable to list of process ids of this command
          if {$pidlistvar != ""} {
              set $pidlistvar [pid $runcmdfp]
          }

          # Call readExecCmd proc to capture command output.
          fconfigure $runcmdfp -blocking 0 -buffering none
          fileevent $runcmdfp readable [list readExecCmd $runcmdfp $outfp\
              $runcmdrcvar $runcmdrpipe $runcmdwpipe $runcmdoutvar]

          if {$waitvar != ""} {
              # Calling proc doesnt want to wait until the command completes.
              # Caller will watch for the return code to be set in the
              # waitvar variable.
              return 0
          }

          # Wait for command to complete
          vwait $runcmdrcvar
      }

      if {$outerr} {
          # Set output to either stdout or stderr depending on the return
          # code of the command
          catch {unset cmdresult}
          upvar $outvarname cmdresult
          if {$runcmdrc} {
              set cmdresult $runcmderr
          } else {
              set cmdresult $runcmdout
          }
      } else {
          # If user provided variables for stdout and stderr of command,
          # set those variables to the output
          catch {unset cmdresult}
          if {$outvar} {
              upvar $outvarname cmdresult
              set cmdresult $runcmdout
          }
          if {$errvar} {
              upvar $errvarname cmdresult
              set cmdresult $runcmderr
          }
      }

      # Return with return code of the command
      return $runcmdrc
  }

  proc readExecCmd {fp outfp rcvar rpipe wpipe {outvar ""}} {
      # Read output from command and save in variables or send to
      # channels. Capture exit code of command upon completion.
      global errorCode $rcvar
      if {$outvar != ""} {
          global $outvar
      }
      if [eof $fp] {
          # Process no more fileevents for stdout
          catch {fileevent $fp readable {}}

          # Process remaining fileevents in case there is stderr pending,
          # then close stderr channel
          update
          catch {fileevent $rpipe readable {}}
          catch {close $rpipe}
          catch {close $wpipe}

          # Close stdout channel and get command return code
          set errorCode ""
          fconfigure $fp -blocking 1
          catch {close $fp}
          set rc [lindex $errorCode 2]
          if [string match SIG* $rc] {
              set rc 99
          }
          if {$rc == ""} {set rc 0}
          set $rcvar $rc
          return
      }

      if {[gets $fp line] < 0} return

      if {$outfp != ""} {
          # Send output to channel
          puts $outfp $line
      }
      if {$outvar != ""} {
          # Append output to output variable
          if {[returnVar $outvar] == ""} {
              set $outvar $line
          } else {
              append $outvar "\n$line"
          }
      }
  }


tkt_uuid: 2064326fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Accepted
title: updated de.msg
comment:
  Hi Pat,

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

  -- Matthias Kraft


tkt_uuid: 2769242fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: struct
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 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: 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: 1560822fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: blowfish
priority: 7 High
foundin: None
resolution: Fixed
title: decrypt (blowfish) doesn't always work
comment:
  set key "uP/AD/oGb6q/"
  set text "ececho clear"
  set foo [::blowfish::blowfish -mode ecb -dir encrypt
  -key $key $text]

  And when I am trying to decrypt that:

  ::blowfish::blowfish -mode ecb -dir decrypt -key $key $foo

  Error:

  ": must be one of -chunksize, -dir, -hex, -in, -iv,
  -key, -mode, -out
      while executing
  "::blowfish::blowfish -mode ecb -dir decrypt -key $key
  $foo"


tkt_uuid: 3324610fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: ListBox bindImage is broken
comment:
  The node name of the item returned when triggering the event is incorrectly constructed. To reproduce it:

  # Taken from a snippet from FW in http://wiki.tcl.tk/1434,  
  proc generate_data {} {  
      set data [list]
      for {set x 0} {$x < 5} {incr x} {    
          set row [list]           
          for {set y 0} {$y < 5} {incr y} {
              lappend row [format "#%02x%02x%02x" [random_byte] [random_byte] [random_byte]] 
          }         
        lappend data $row  
      }  
     return $data       
  }    

  proc random_byte {} { 
      return [expr {int(rand() * 256)}]             
  }    

  set image [image create photo]                              
  $image put [generate_data]                                                
             
  pack [ListBox .l -selectmode single]                       
  .l insert end list:#auto -text 111 -image $image 
  .l insert end list:#auto -text 222 -image $image
  .l insert end list:#auto -text 333 -image $image
  .l configure -width 10

  proc printNode {args} {
     puts "Returned $args"
  } 

  .l bindText <Button-1> [list printNode Text]
  .l bindImage <Button-1> [list printNode Image] 
  vwait forever

  Clicking on the text returns:

  Returned Text list:0
  Returned Text list:1
  Returned Text list:2

  But on the image, the result is:

  Returned Image gbind
  Returned Image gbind
  Returned Image gbind

  The problem is the code in listbox.tcl returns as the node:
   [string range [lindex $t 1] 2 end]

  Where $t (the tags) are:

  img imgbind i:list:1 current

  I believe the bug was introduced in  Bug 3000293, adding the additional tag imgbind in the place where the code expects to find the node

  Attached is a possible patch 


tkt_uuid: 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: 1176268fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tar
priority: 5 Medium
foundin: None
resolution: Fixed
title: incorrect use of open in tar.tcl
comment:
  tar.tcl uses 'open' to access files. In my app which
  uses tar and vfs::tar I'm getting errors of the form 

  wrong # args: should be "open path"

  I've fixed this by changing all 'open' calls in tar.tcl
  with '::open' which seems to work ok. Is it possible to
  put this fix into the main source?


tkt_uuid: 3141584fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: units
priority: 5 Medium
foundin: None
resolution: Fixed
title: units::convert bug (when value is zero)
comment:
  tcllib version 1.1.2

  If 0 is specified as source value, units::convert regards it as (blank value + source units). As a result, it returns 1.0 * scale.

  For example,
  ::units::convert 0.0cm cm; #=> 0.0 (Correct!)
  ::units::convert 0cm cm; #=> 1.0 (Wrong! The same result as ::units::convert cm cm)
  ::units::convert 0cm mm; #=> 10.0 (Wrong! The same result as ::units::convert cm mm)


tkt_uuid: 556504ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: fileutil::cat won't read empty files
comment:
  fileutil::cat won't read non-empty "empty" files (where
  [file size] == 0, but the file isn't empty), as is the
  case with the files in the /proc filesystem on Linux.

  fileutil::cat /proc/[pid]/maps currently returns the
  empty string.  With the attached patch it returns the
  actual data as expected.


tkt_uuid: 985568ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 7 High
foundin: None
title: doctools - better error messages
comment:
  The error messages generated by doctools are bad with
  regard to reporting the location they happen at. They
  should report not only what is wrong, but exactly where.


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: 3513263fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: ComboBox does not work themed
comment:
  Tk 8.5.9 with bwidget 1.9.5 gives the following error:

  package require BWidget
  Widget::theme 1
  toplevel .t
  ComboBox .t.c -bwlistbox 1 -hottrack 1 -values {1 2 3 4 5 6 7 8 9 10 11 12 13 14}
  .t.c
  .t.c configure
  unknown option "-highlightbackground"


  I guess the problem is in ComboBox and Entry since they use some resources not present when theming is active.


tkt_uuid: 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: 507242ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: crc
priority: 5 Medium
foundin: None
resolution: Fixed
title: test failed
comment:
  i got the following errors during \make test from crc:

  Module: crc
  modules/crc/cksum.test

  ==== cksum-4.0 cksum file option FAILED
  ==== Contents of test case:

      set r1 [crc::cksum -file $::argv0]
      set r2 [crc::cksum [crc::loaddata $::argv0]]
      if {$r1 != $r2} {
          set r "differing results: $r1 != $r2"
      } else {
          set r ok
      }

  ==== Test generated error:
  can't read "::argv0": no such variable
  ---- Result should have been:
  ok
  ==== cksum-4.0 FAILED

  modules/crc/crc32.test

  ==== crc32-4.0 crc32 file option FAILED
  ==== Contents of test case:

      set r1 [::crc::crc32 -file $::argv0]
      set r2 [::crc::crc32 [crc::loaddata $::argv0]]
      if {$r1 != $r2} {
          set r "differing results: $r1 != $r2"
      } else {
          set r ok
      }

  ==== Test generated error:
  can't read "::argv0": no such variable
  ---- Result should have been:
  ok
  ==== crc32-4.0 FAILED

  modules/crc/sum.test

  ==== sum-4.0 sum file option (BSD) FAILED
  ==== Contents of test case:

      set r1 [crc::sum -bsd -file $::argv0]
      set r2 [crc::sum -bsd [crc::loaddata $::argv0]]
      if {$r1 != $r2} {
          set r "differing results: $r1 != $r2"
      } else {
          set r ok
      }

  ==== Test generated error:
  can't read "::argv0": no such variable
  ---- Result should have been:
  ok
  ==== sum-4.0 FAILED


  ==== sum-4.1 sum file option (SysV) FAILED
  ==== Contents of test case:

      set r1 [crc::sum -sysv -file $::argv0]
      set r2 [crc::sum -sysv [crc::loaddata $::argv0]]
      if {$r1 != $r2} {
          set r "differing results: $r1 != $r2"
      } else {
          set r ok
      }

  ==== Test generated error:
  can't read "::argv0": no such variable
  ---- Result should have been:
  ok
  ==== sum-4.1 FAILED


  ********
  ******** solution?
  ********
  after, package require cksum in cksum.test, i added
  set ::argv0 [info script]

  that fixed it.


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: 836442ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 9 Immediate
foundin: None
resolution: Fixed
title: timeout with large data
comment:
  Hi,

    the "secs" parameter used in "smtp::talk" 
    calculated at line 849 in smtp.tcl:
      set secs [expr {(($state(size)>>10)+1)*3600}]
    for largs "state(size)" data the "secs" can become
    very big.

    Problem: 

    the command "smtp::hear" uses this parameter to
    setup an "after" event:

    if {$secs >= 0} {
              set state(afterID) [after [expr
  {$secs*1000}] \
                                        [list smtp::timer
  $token]]
          }

    the bug is in the code:

     [expr {$secs*1000}]

    the large secs become negative -> BUG
    the after get invoked and the error happen

    to fix this problem i add some code:

    ## correction, aotto 031105
      if {$secs > 600} {set secs 600}


  mfg

    aotto


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

  * textutil::expander 1.3
  test name 'expander-3.3' re-used; prior use in
  /local/src/tcllib/modules/textutil/expander.test


tkt_uuid: 724822ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: struct :: graph
priority: 7 High
foundin: None
resolution: Not Applicable Here
title: graph - simply increased functionality in walk
comment:
  per http://mini.net/tcl/8787 there is some value in
  being able to override walk's behavior, and allow
  multiple visits of a node - particularly in the case
  that the graph is a DAG (where no cycles can exist)

  Moving the line graph.tcl 1884:

     set visited($node) .

  to before graph.tcl 1879 (in which the command is
  invoked) would permit the command to unset
  visited($node), and effectively override the visit-once
  semantics of walk for those cases.

  It's not exactly clean, but shouldn't change too much
  behavior, and I can't think of a better way to permit
  the desired behavior.


tkt_uuid: 486570ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: counter
priority: 5 Medium
foundin: None
resolution: Fixed
title: test suite failure
comment:
  Platform: sparc solaris 8, sun c compiler, tcl 8.4a4
  compiled with debug symbols and no threading

  This morning, after downloading,  building, and
  installing the latest tcl 8.4a4 and tcllib, I ran the
  tcllib test suite and got this error:

  hist2x 435 microseconds per iteration
  Pausing during timehist tests

  ==== counter-timehist counter::count FAILED
  ==== Contents of test case:

      counter::init hits -timehist 4
      catch {puts stderr "Pausing during timehist tests"}
      counter::count hits 2
      # We need to reach in and find out what bucket was
  used
      array set info [counter::get hits -all]
      set min0 $info(lastMinute)
      after [expr 4000]
      counter::count hits 4
      after [expr 4000]
      counter::count hits 8
      set result [list]
      foreach {n v} [counter::get hits -hist] {
          if {$v > 0} {
              lappend result [expr {$n - $min0}] $v
          }
      }
      set result

  ---- Result was:
  0 2 2 4 3 8
  ---- Result should have been (exact matching):
  0 2 1 4 2 8
  ==== counter-timehist FAILED

  timehist 291 microseconds per iteration


tkt_uuid: 439016ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: Enhancement of tabify.tcl in textutil
comment:
  The current version (tcllib0.8) of tabify and untabify does not behave as any editor
  would, which IMHO is counter-intuitive and thus limits their use.
  I wrote two new procs tabify2 / untabify2 which behave differently and some tests
  for them.

  Any comments will be appreciated
  Helmut Giese (hgiese@ratiosoft.com)


tkt_uuid: 564670ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: Package fails to load
comment:
  The dns pacakge fails to load on the first "package require".

  It requires two "package require dns" to load; the first one fails with: 
            invalid command name "configure" 
                while executing 
            "configure -loglevel $options(loglevel)" 
                (in namespace eval "::dns" script line 17) 
                invoked from within 
            "namespace eval dns { 
                variable version 1.0 
                variable rcsid {$Id: dns.tcl,v 1.1 2002/03/02 01:37:46 patthoyts Exp $} 

                namespace export config..." 
                (file "D:/Program Files/ActiveState/Tcl/lib/tcllib1.3/dns/dns.tcl" line 29) 
                invoked from within 
            "source {D:/Program Files/ActiveState/Tcl/lib/tcllib1.3/dns/dns.tcl}" 
                ("package ifneeded" script) 
                invoked from within 
            "package require dns"


tkt_uuid: 1634416fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: -geometry option to BWidget Dialog undocumented
comment:
  The Dialog BWidget supports a -geometry option (which works well for me). However, the documentation for that widget doesn't even mention this option.


tkt_uuid: 1502400fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: math
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: add an option to math::statistics::histogram
comment:
  Hi,
  math::statistics::histogram groups datas in intervals
  according to this logical scheme :
  [x0,x1] ]x1,x2] ]x2,x3] ... ]xn-1,xn]
  I'd like to have the possibility of grouping the other
  way ie :
  [x0,x1[ [x1,x2[ [x2,x3[ ... [xn-1,xn]
  This is actually the grouping method commonly used in
  France (at least).

  Thank you, arjen :)

  dcobac@free.fr


tkt_uuid: 449284ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 4
foundin: None
resolution: Fixed
title: Tree does not handle Space key
comment:
  On behalf of Matthias Kleine.

  > Hi,
  > 
  > while working with the BWidgets version 1.3.1, I 
  found 
  > a behaviour which should be corrected in future 
  BWidget 
  > versions. 
  > 
  > In file tree.tcl, function Tree::_keynav, the code 
  to 
  > handle the "space" event for navigation in the 
  BWidget 
  > tree lacks a call to the opencmd, when the tree is 
  opened 
  > (and to the closecmd, when the tree is closed).
  > 
  > For example, the left-arrow event call the following 
  code
  > when opening a tree node:
  > 
  > if { [set cmd [Widget::getoption $win -opencmd]] !
  = "" } {
  >                     uplevel \#0 $cmd $node
  > }
  > 
  > This leads to a call to the opencmd of the tree. 
  Without 
  > this call, we have no chance to control what is 
  happening 
  > when the user presses the space key.
  > 
  > Regards,
  > Matthias 


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: 3613726fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 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: 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: 1193023fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: smtp can have no originator/from
comment:
  Consider this code:

  -----------------------------
          # If no -originator was provided, get the
  originator from the "From"
          # header.  If there was no "From" header get it
  from the username
          # executing the script.

          set who "-originator"
          if {$originator == ""} {
              if {![info exists header($fromL)]} {
                  set originator $::tcl_platform(user)
              } else {
                  set originator [join $header($fromL) ,]

                  # Indicate that we're using the From
  header for the originator.

                  set who $fromM
              }
          }
          
  # If there's no "From" header, create a From header
  with the value
  # of -originator as the value.

          if {[lsearch -exact $lowerL $fromL] < 0} {
              lappend lowerL $fromL
              lappend mixedL $fromM
              lappend header($fromL) $originator
          }

  # ::mime::parseaddress returns a list whose elements
  are huge key-value
  # lists with info about the addresses.  In this case,
  we only want one
  # originator, so we want the length of the main list
  to be 1.

          set addrs [::mime::parseaddress $originator]
          if {[llength $addrs] > 1} {
              error "too many mailboxes in $who: $originator"
          }
          array set aprops [lindex $addrs 0]
          if {$aprops(error) != ""} {
              error "error in $who: $aprops(error)"
          }
  -----------------------------

  It is entirely possible that there is no originator,
  because tcl_platform(user) can be empty.  In that case,
  the above code will fail if no -originator is provided
  because aprops(error) will be empty.


tkt_uuid: 3425269fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tepam
priority: 5 Medium
foundin: None
resolution: Fixed
title: Errors in tepam demo when TkCon not present
comment:
  The tepam demo will generate an error when TkCon isn't present, due to an uninitialized variable.
  Another error will be generated because the variable "tcl_platform" is not scoped properly.
  Attached patch also applies the same "prologue" as used in all the other examples.


tkt_uuid: 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: 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: 861287ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Fixed
title: htmlparse: comment delimiters
comment:
  htmlparse::parse doesn't parse comments correctly.
  One example:

  htmlparse::parse "<pre>&lt;-- a comment --></pre>"

  The closing delimiter "-->" gets turned into \01, and
  never gets turned back.  (This is legal HTML BTW, found
  in the wild).

  It also fails to recognize comments if there is a space
  between the final COM (--) and MDC (>) delimiters.


tkt_uuid: 2024843fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: special
priority: 5 Medium
foundin: None
resolution: None
title: erf is not accurate
comment:
  Problem description
  ====================

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

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

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

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


tkt_uuid: 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: 1720898fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Build System & Testing
priority: 5 Medium
foundin: None
resolution: Invalid
title: test suite problem?
comment:
  I was running the cvs head tcllib test suite against a cvs head tcl 8.5a6. A number of tests failed (which didn't surprise me). What did surprise me,however, is that there were times when the test suite output went from the "one line per module" mode into a "one line per test" mode. Here's an example:
  [  * ]  [8.5a6] profiler    ---- profiler::leaveHandler::initialize_descendent_t[  * ]  [8.5a6] profiler    PASS profiler::leaveHandler::initialize_descendent_t[  * ]  [8.5a6] profiler    ---- profiler::leaveHandler::increment_descendent_ti[   *]  [8.5a6] profiler    PASS profiler::leaveHandler::increment_descendent_ti[   *]  [8.5a6] profiler    ---- profiler-4.1                                   [   *]  [8.5a6] profiler    PASS profiler-4.1                                   [   *]  [8.5a6] profiler    ---- profiler-5.1                                   [   *]  [8.5a6] profiler    PASS profiler-5.1                                   [  * ]  [8.5a6] profiler    ---- profiler-6.1                                   [  * ]  [8.5a6] profiler    PASS profiler-6.1                                   [  * ]  [8.5a6] profiler    ---- profiler-7.1                                   [  * ]  [8.5a6] profiler    PASS profiler-7.1                                   [  * ]  [8.5a6] profiler    SKIP profiler-7.2                                   [ *  ]  [8.5a6] profiler    ---- profiler-7.2-85                                [ *  ]  [8.5a6] profiler    PASS profiler-7.2-85                                [ *  ]  [8.5a6] profiler    ---- profiler-7.3                                   [ *  ]  [8.5a6] profiler    PASS profiler-7.3                                   [ *  ]  [8.5a6] profiler    ---- profiler-7.4                                   [*   ]  [8.5a6] profiler    PASS profiler-7.4                                   [*   ]  [8.5a6] profiler    ---- profiler-7.5                                   [*   ]  [8.5a6] profiler    PASS profiler-7.5                                   [*   ]  [8.5a6] profiler    ---- profiler-8.1                                   [*   ]  [8.5a6] profiler    PASS profiler-8.1                                   [ *  ]  [8.5a6] profiler    ---- profiler-8.2 
  [ *  ]  [8.5a6] profiler    PASS profiler-8.2                                   [ *  ]  [8.5a6] profiler    ---- profiler-9.1                                   [ *  ]  [8.5a6] profiler    PASS profiler-9.1                                   [    ]  [8.5a6] profiler    ~~       T    21 P    15 S     6 F     0               


tkt_uuid: 744276ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: Deleted
subsystem: inifile
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 2255355fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: crosshair
priority: 5 Medium
foundin: None
resolution: Fixed
title: documentation error in crosshairs module causes install fail
comment:
  In trying to build the tklib cvs head from 2008 Nov 04 against Tcl 8.6 cvs head, I get this error:

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

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


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

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

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


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

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

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


tkt_uuid: 232017ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
priority: 5 Medium
resolution: Not Applicable Here
title: "string" subcommands require at least Tcl8.1
comment:
  Usage of "string" subcommands: is, equal, map, repeat, replace, totitle
  are not implemented in tcl 8.0.

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

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


tkt_uuid: 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: 3065746fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: log
priority: 3 Low
foundin: None
resolution: Not Applicable Here
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: 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: 1799702fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ip
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 1779424fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 5 Medium
foundin: None
resolution: Fixed
title: Example Error ::struct::list filterfor
comment:
  Example in documentation for did not work.
  I remove the expr {..} layer and it worked as expected

  tcl_patchLevel 8.4.4
  % ::struct::list filterfor x {1 2 3 4 5} {expr {($x % 2) == 0}}
  syntax error in expression "expr {($x % 2) == 0}": variable references require preceding $
  % ::struct::list filterfor x {1 2 3 4 5} {($x % 2) == 0} 
  2 4


tkt_uuid: 1742078fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: html
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 929727ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Invalid
title: BWidget notebook page name bug
comment:
  BWidget notebook page name retrieval uses wrong index.
  Here is the diff that I made:

  diff notebook.tcl BWidget-1.7.0/notebook.tcl 
  336c336
  <       append script " \[NoteBook::_get_page_name [list $path] current 1\]"
  ---
  >       append script " \[NoteBook::_get_page_name [list $path] current 2\]"


tkt_uuid: 1889835fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 461434ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: html
priority: 5 Medium
foundin: None
resolution: None
title: docs mention formatCode
comment:
  The man page for html mentions the proc formatCode 
  which isn't implemented in the library.  It's only in 
  the proc list, not in the main body.  

  Fix: add it in (from Jeff's implementation?) or leave 
  out the doc mention.


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

  ---- json-1.1 start

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

  ---- json-1.2 start

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

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

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


tkt_uuid: 2002489fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: treeql
priority: 1 Zero
foundin: None
resolution: Not Applicable Here
title: tree-tcl test 4.4.17 in test suite - error msg difference
comment:
  I'm using the latest activestate cvs head snapshots of tcl 8.6 and tcllib on Solaris 2.8 SPARC. The test suite message is:
  ---- tree-tcl-4.4.17 start

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

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

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


tkt_uuid: 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: 1969078fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: base64
priority: 9 Immediate
foundin: None
resolution: Fixed
title: Base64 speedup
comment:
  The current implementation of base64 in tcllib is very slow, even
  (or especially) when Trf is used. Funny enough,
  the problem is not the base64 encoding itself, but the
  reflow to a different width. The reflow is written in Tcl
  but a seldom example of inefficient code.

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

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

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

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

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

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

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

  all the best
  -gustaf


tkt_uuid: 3312860fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Many FTP commands do not handle commands with absolute paths
comment:
  Many FTP commands such as "APPE", "STOR", and "RETR" do not handle pathname arguments that are absolute pathnames -- they instead get the current working directory appended to them as relative paths.

  This is due to the use of the following idiom:
            set path [file join $data(cwd) [string trimleft $filename /]]

  Suggested fix is to remove the [string trimleft] call, which will result in the "path" variable containing the correct absolute path when an absolute path is supplied and when a relative path is supplied.


tkt_uuid: 681119ffffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: bwidget - Add percentage text to progressbar
comment:
  Attached is a patch that shows the percentage of the 
  progressbar.  This new behavior is optional and by 
  default, it is disabled.


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

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

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

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

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


tkt_uuid: 2014172fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: tooltip
priority: 5 Medium
foundin: None
resolution: Invalid
title: Unkown option "-highlightthickness" when using ttk
comment:
  The tklib::tooltip library reports the following error when run within a tile/ttk application:

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


  The following code demonstrates the problem:


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

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


tkt_uuid: 1597840fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: tablelist
priority: 5 Medium
foundin: None
resolution: None
title: Infinite loop when using ScrolledFrame
comment:
  A tablelist in an iWidgets::Scrolledframe fails - looks like an infinite loop.

  I'am using ActiveState distribution 8.4.13 with tklib 0.4 on Win XP.

  Sample code appended. Call 'create' two times - dont know why it hangs on the second time - in my bigger application it hangs up immediately.

  thx


tkt_uuid: 1877643fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: plotchart
priority: 5 Medium
foundin: None
resolution: None
title: pkgIndex.tcl and plotchart.tcl indicate different versions
comment:
  The current pkgIndex.tcl file does a package provide of 1.3.1 while the current plotchart.tcl does a package provide of 1.4.0, which results in a package require Plotchart failing.  I installed this from the ActiveState Tcl repository, but I believe from looking at the latest CVS version that the problem exists outside of the ActiveState Tcl distribution as well.


tkt_uuid: 2694992fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: exif
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: exif reports "Unrecognized EXIF Tag"
comment:
  Hi!

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

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

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

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

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

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


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

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

  Best regards,

  Stefan Witt


tkt_uuid: 1798337fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 5 Medium
foundin: None
resolution: Fixed
title: struct::list permutations can't handle 1-element list
comment:
  % source h:/tcl/lib/tcllib1.10/struct/list.tcl
  % package present struct::list
  1.6.1
  % ::struct::list permutations {a b}
  {a b} {b a}
  % ::struct::list permutations {a}
  bad option "a": must be :struct::list::Lforeachperm, :struct::list::Lsplit, :struct::list::Lreverse, :struct::list::Liota, :struct::list::Lfold, :struct::list::Lmapfor, :struct::list::Lmap, :struct::list::Lflatten, :struct::list::Lequal, :struct::list::LlongestCommonSubsequence, :struct::list::Lrepeat, :struct::list::LlongestCommonSubsequence2, :struct::list::LlcsInvert, :struct::list::LlcsInvertMerge, :struct::list::Lswap, :struct::list::Lfirstperm, :struct::list::LlcsInvert2, :struct::list::LlcsInvertMerge2, :struct::list::Lfilterfor, :struct::list::Lassign, :struct::list::LdbJoin, :struct::list::Lfilter, :struct::list::Lshift, :struct::list::Lrepeatn, :struct::list::LdbJoinKeyed, :struct::list::Lpermutations, or :struct::list::Lnextperm

  The Lpermutations proc contains this check

      if {[llength $list] < 2} {
  return [list $list]
      }

  The [list] command in the return statement needs to be referenced from the global namespace.


tkt_uuid: 1676157fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: http :: autoproxy
priority: 5 Medium
foundin: None
resolution: Fixed
title: autoproxy in-code example creates bogus dependency
comment:
  The autoproxy::defAuthProc, and example user authentication command requires bwidget and introduces this as dependency into the package. The example should be in an example application where the dependency would be ok as well.


tkt_uuid: 746176ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Duplicate
title: hang on parse
comment:
  hang on parsing
  mime::initialize -file MDNPart3 hang on parsing.
  This is real file from sendmail MTA

  I think, is the multipart/mixed parsing problem in 1.3
  and 1.4 tcllib version 


tkt_uuid: 3117246fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Accepted
title: Mime maildemo file is missing the tclsh startup bits
comment:
  Here's the patch:

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


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

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


  By pressing the button you get the following error 
  message:

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


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

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


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


tkt_uuid: 2962077fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tklib :: ipentry
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: error if an array element is used as -textvariable
comment:
  Steps to reproduce:

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

  output for version 0.2:
  8.4.19
  0.2
  1.1.1.2

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

  Expected:
  no error in both cases

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

  Is this a bug or a feature?


tkt_uuid: 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: 832317ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: taip
priority: 5 Medium
foundin: None
resolution: Fixed
title: taip.mp3 tagged wrong in CVS
comment:
  All MP3 files should be binaries, but
  apps/taip/taip.mp3 is marked as a text file.  This
  makes it check out wrong on Windows.  Fix with:
    cvs admin -kb apps/taip/taip.mp3


tkt_uuid: 527025ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: Some formatting commands not described
comment:
  The commands "rb" and "lb" for entering brackets
  into the text of a manpage are not described in
  the manpage for the format itself.

  Nor are the new commands for semantic markup.


tkt_uuid: 443619ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pop3
priority: 5 Medium
foundin: None
resolution: Fixed
title: pop3 doesn't handle empty mailbox!
comment:
  I noticed a problem with pop3::list. It chokes on an 
  empty mailbox by complaining it knows nothing about 
  the msgBuffer variable (that occurs in the pop3::list 
  return). 

  Since mailboxes can indeed be empty, an obvious 
  workaround seems to be to initialize the variable at 
  the start of the procedure:

      set msgBuffer {}

  Another solution might be for people to keep sending 
  me emails. But that may be asking for a bit too much 
  [;-)].

  Cheers,

  -- AH.


tkt_uuid: 589225ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Fixed
title: test writes ~/foo
comment:
  It appears that testing of the comm module
  creates and leaves behind a file ~/foo

  temporary files should be written to 
  [tcltest::configure -tmpdir] and should
  be deleted by the same test file that
  creates them.


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


tkt_uuid: 747674ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ftp_lib.tcl
comment:
  hello
  just a question about this ftp_lib.tcl included in the 
  tcllib1.4
  in fact when i use this command ftp::Quote

  for exemple : puts [ftp::Quote $conn help]

  it returns to me only the first line of the ftp server "help" 
  command, but i
  want all the lines from it, how can i do ???
  thx for help !!!


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


tkt_uuid: 505468ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Invalid
title: missing MainFrame menu accelerator line
comment:
  Hi!

  There's a missing line in 
  MainFrame::_parse_accelerator:
  If no modificator is specified, then the F-Keys won't 
  work! You forgot to capitalize the 'f'...

  Bye
  Stephan


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

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


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

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

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


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


tkt_uuid: 478478ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: ftp::ModTimePostProcess fails
comment:
  Admittedly this is most likely due to a server-side 
  problem, but I was unable to figure out which RFC 
  covered the MDTM command/response definition.  

  The server:
   (Version wu-2.4(4) Thu Jun 18 14:15:17 PDT 1998) 
  returns from MDTM a string like:
  "213 191010831020526" 
  instead of:
  "213 20010831020526"

  which cause the following code to fail at clock scan 
  (the following lines are split for entry width):

      scan $clock "%4s%2s%2s%2s%2s%2s" \
                year month day hour min sec
      set clock [clock scan \
           "$month/$day/$year $hour:$min:$sec" -gmt 1]


  I do not know how widespread this response may be, but 
  the code could be modified to handle it by replacing 
  the "scan $clock ..." line with:

      if { [string length $clock] == 15 } {
          scan $clock "%2s%3s%2s%2s%2s%2s%2s" \
                    cent year month day hour min sec
          set year [expr ($cent * 100) + $year]
      } else {
          scan $clock "%4s%2s%2s%2s%2s%2s" \
                    year month day hour min sec
      }


tkt_uuid: 1316233fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: struct :: tree
priority: 8
foundin: None
resolution: Not Applicable Here
title: struct::tree - need more testcases - walk, deserialize
comment:
  For deserialize - handling of attributes for root node

  For walk - Handling of walks modifying the tree while
  they are running (move/delete/add of children,
  move/delete of parent, etc). The current behaviour is
  highly implementation defined, and likely  different
  between Tcl and critcl implementations.


tkt_uuid: 1399030fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: None
priority: 5 Medium
foundin: None
title: import mini-tclhttpd
comment:
  The full blown tclhttpd is too big to include in
  tcllib, but its 250 line sister "mini" rightfully
  belongs in this library.  Please integrate this
  excellent package into tcllib!
  http://cvs.sourceforge.net/viewcvs.py/tclhttpd/tclhttpd/bin/mini/


tkt_uuid: 3463420fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: logger
priority: 5 Medium
foundin: None
resolution: Fixed
title: level below currentloglevel is logged
comment:
  expect1.1> package require logger
  0.9
  expect1.2> logger::setlevel warn
  expect1.3> logger::init global
  ::logger::tree::global
  expect1.4> ::logger::tree::global::debug "Don't show!"
  [Wed Dec 21 16:46:38 CET 2011] [global] [debug] 'Don't show!'
  expect1.5> ::logger::tree::global::currentloglevel
  warn
  expect1.6> info tclversion
  8.5

  workaround1:
  use servicenames with :: separator (cannot reproduce the above with "glo::bal")

  workaround2:
  package require logger
  rename ::logger::init ::logger::init_redirect
  proc ::logger::init {service} {
  set log [uplevel [list ::logger::init_redirect $service]]
  ${log}::setlevel [${log}::currentloglevel]
  return $log
  }


tkt_uuid: 3235340fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: uri
priority: 5 Medium
foundin: None
resolution: Fixed
title: uri::split mishandles fragment
comment:
  The uri::split command mishandles the "fragment" of http:// URIs in two ways:

  1. If the URI includes a query, e.g., http://myserver.com/foo?bar=baz#quux, the fragment is treated as part of the query.
  2. The "fragment" key is only included in the dictionary returned by uri::split if a fragment is found.  All of the other optional URI components are included with an empty value when the component is omitted.


tkt_uuid: 740474ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: DropSite::register documenation error
comment:
  The current DropSite HTML page says:

  --- quotation start ---
  DropSite::register  path  ?option value...?
      This command is used to declare path as a drop
  site. Options are:

  -dropcmd
      This command is called when user release the drag
  icon over a valid drop target widget. It takes the same
  arguments as -dragovercmd command. Its return values is
  passed as a result to the -dragendcmd command of the
  drag source widget. 
  --- quotation end ---

  The reference to "-dragovercmd" in the -dropcmd is
  strange, because there isn't either a -dragovercmd
  implemented nor documentation for it.

  Probably, this is a typo and that "-dragovercmd" should
  read as "-dropovercmd". But even this isn't fully
  corret. It seems, the -dropcmd exptects the same args
  as -dropovercmd, with the expection of the "event" arg
  (which indeed would be senseless for the -dropcmd). In
  other words (and as a propose for a minimum text).

  Arguments passed to the command are:

      * pathname of the drop target (the widget itself),
      * pathname of the drag source,
      * root x-coordinate of the pointer,
      * root y-coordinate of the pointer,
      * operation,
      * type of the dragged data,
      * dragged data. 


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

  * ncgi 1.3
  test name 'ncgi-10.4' re-used; prior use in
  /local/src/tcllib/modules/ncgi/ncgi.test
  WARNING: cleanupTests deleting /local/src/tcllib/test1...
  env array elements created:     SERVER_PORT REQUEST_URI
  QUERY_STRING CONTENT_TYPE CONTENT_LENGTH SERVER_NAME
  HTTPS REQUEST_METHOD


tkt_uuid: 3609183fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: oo::util
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ooutil::singleton not working when it is used as mixin class
comment:
  Example of how to use ooutil::singleton at http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/ooutil/ooutil.html is not working.
  Below is the extract of the example from the mentioned website:

  oo::class create example {
     self mixin singleton
     method foo {} {self}
  }

  puts [[example new] foo]
  puts [[example new] foo]


  I tried it and the return does not shown as the same object reference.


tkt_uuid: 1060460fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: dns
priority: 5 Medium
foundin: None
resolution: Fixed
title: ip::normalize & ipv6 rfc3513 sect 2.2.3 addressing
comment:
  Hi there,

  I really really like the IP:: package. Thanks very much for this.

  I have an IPv6 feature request.  Would it be possible to handle also
  the format described in section 2.2.3 of rfc3513, like so

          0:0:0:0:0:0:13.1.68.3
          0:0:0:0:0:FFFF:129.144.52.38

  I think contract is already handling this fine, but I wonder if it would be 
  possible to add a flag to normalize which would cause it to return the 
  last two 16 bit fields as decimal dotted octets, like the above?

  Thanks,

  Selina


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

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

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

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

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

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

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

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

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

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

     }

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

     return $result
  }


  --Mark 


tkt_uuid: 827416ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: list
priority: 5 Medium
foundin: None
title: extend Lmap to more flexible cmd
comment:
  I've found the Lmap-command a very nice thing.
  But what I miss is the flexible positioning of 
  the "argument" to the given command. Currently 
  the "argument" (or item) is simply added to the end, but 
  most commands need the list-"item" somewhere (not 
  necessarily at the end.
  A more flexible solution would be the use of the format-
  command like this:

  proc ::struct::list::Lmap {sequence cmd} {
    # Shortcut when nothing is to be done.
    if {[::llength $sequence] == 0} {return $sequence}

    # if no position is given, treat cmd as cmdprefix
    if {[string first "%s" $cmd]<0} {
      append cmd " %s"
    }
    set res [::list]
    foreach item $sequence {
      lappend res [uplevel 1 [format $cmd $item]]
    }
    return $res
  }

  With this you can call Lmap as usual (with a cmdprefix) 
  or use, e.g. (simplified):
  ::struct::list::Lmap {name=vogel firstname=stefan 
  gender=m} {eval set [split %s =]}
  which sets variables with given values ... 

  What do you think of that?

  Best regards
    Stefan


tkt_uuid: 1154867fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: Add a bookmark when unseen chat happens
comment:
  At current tkchat starts counting up the lines which
  some have missed if activity happens without focus. If
  you leave tkchat running for some longer time and
  return to it, there's no easy way to go back X lines,
  especially since tkchat deletes the linecounter (in its
  [wm title]) once it has focus back. So I suggest adding
  a bookmark each time the counter is incremented for the
  first time, providing an easy way to jump back to the
  last seen line(s).

  In tkchat::IncrMessageCounter, "else" arm, add:

  if {!$MessageCounter} then { BookmarkAdd }

  et voila


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

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

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

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


tkt_uuid: 3325229fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: Fixed
title: RNTO calls callback "rename" with wrong number of args
comment:
  According to the documentation for the "rename" callback, it takes 3 args:
          fsCmd rename path newpath channel

  However, RNTO actually only calls it with 2 args:
          if {![catch {::ftpd::Fs rename $data(renameFrom) $path} msg]} {


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

  modules/textutil/textutil.test
  - tcllib::testutils 1.0
  test name 'textutil-1.0' re-used; prior use in
  /local/src/tcllib/modules/textutil/textutil.test
  test name 'textutil-1.0' re-used; prior use in
  /local/src/tcllib/modules/textutil/textutil.test
  test name 'textutil-1.0' re-used; prior use in
  /local/src/tcllib/modules/textutil/textutil.test


tkt_uuid: 1692954fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: grammar_fa
priority: 5 Medium
foundin: None
title: Expand the grammar::fa::dexec
comment:
  A very simple modification to the grammar::fa::dexec package, to add a current_state introspection and a new callback param, the state. 

  State callback will carry the current state that the FA just entered after a put.

  I have a simple implementation against Tcllib 1.9 ready.

  Thanks,
  Bogdan.
  rftghost@gmail.com


tkt_uuid: 3183080fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tcl :: chan :: *
priority: 5 Medium
foundin: None
resolution: Fixed
title: Allowance in tcl::chan::string
comment:
  Verification of "Allowance" in a string channel return error.

  Example:
  -----------------------------
  lappend auto_path /home/john/lib/tcllib1.13

  package require tcl::chan::events 1
  package require tcl::chan::string 1

  set string "a b c \n d e f"

  set chan [::tcl::chan::string $string]

  puts [gets $chan]
  -----------------------------------

  [john@vps0 excel]$ tclkit8.6 xxx
  can't read "allowed(read)": no such variable
      while executing
  "if {$allowed($event) == $enable} continue"
      (class "::tcl::chan::events" method "Allowance" line 5)
      invoked from within
  "my Allowance $args yes"
  .....


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

  Tested on Linux and FreeBSD.
  See attached patch.


tkt_uuid: 3608951fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tepam
priority: 3 Low
foundin: None
resolution: Fixed
title: TEPAM: Help text shows incorrect argument order
comment:
  The argument order of the help text of procedures defined in the Tk style (unnamed arguments first - named arguments later, [named_arguments_first=0]) is incorrect. Example:

  tepam::procedure MyProc {
  -named_arguments_first 0
  -short_description "Help generation demonstration"
  -description "Command to demonstrate the help text generation"
  -args {
  {Unnamed1 -optional -description "1st unnamed argument"}
  {Unnamed2 -optional -description "2nd unnamed argument"}
  {-Named1 -optional -description "1st named argument"}
  {-Named2 -optional -description "2nd named argument"} }
  } {
  puts "MyProc"
  }

  MyProc -help

  | NAME
  |       MyProc - Help generation demonstration
  | SYNOPSIS
  |       MyProc
  |             [-Named1 <Named1>]
  |                1st named argument
  |             [-Named2 <Named2>]
  |                2nd named argument
  |             [<Unnamed1>]
  |                1st unnamed argument
  |             [<Unnamed2>]
  |                2nd unnamed argument
  | DESCRIPTION
  |       Command to demonstrate the help text generation

  The following help text would be expected (unnamed argument listed first, named argument listed afterwards).

  | NAME
  |       MyProc - Help generation demonstration
  | SYNOPSIS
  |       MyProc
  |             [<Unnamed1>]
  |                1st unnamed argument
  |             [<Unnamed2>]
  |                2nd unnamed argument
  |             [-Named1 <Named1>]
  |                1st named argument
  |             [-Named2 <Named2>]
  |                2nd named argument
  | DESCRIPTION
  |       Command to demonstrate the help text generation

  This bug affects only the help text generation. It is not affecting the behavior of the procedure call.
  A fix for the TEPAM package is available, and once the TEPAM author has write/commit access to the new TclLib repository (Fossil) the fix will be commited.


tkt_uuid: 693059ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: log
priority: 2
foundin: None
resolution: Not Applicable Here
title: logger 0.1 depends on Tcl 8.2
comment:
  The command [string map] is used in logger 0.1.

  Thus, logger 0.1 ought to

    package require Tcl 8.2

  and ought to have an index script that
  prevents loading in a pre-8.2 interp.

  However, logger 0.1 shares its index script
  with log 1.0.1, which does not require Tcl 8.2;
  it can happily load in Tcl 8.0.

  The best way to fix both packages is to see
  to it that they get installed with separate
  index scripts.  The simplest way to
  accomplish that is to move the logger
  package into its own subdirectory of
  tcllib's modules directory.


tkt_uuid: 1724818fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
resolution: Fixed
title: csv::join doesn't properly handle embedded newlines
comment:
  csv::join doesn't properly handle the case where a value contains an embedded newline or carriage return. 

  Corrected code is below (note the change in [string match])

  proc ::csv::join {values {sepChar ,}} {
      set out ""
      set sep {}
      foreach val $values {
  if {[string match "*\[\r\n\"$sepChar\]*" $val]} {
      append out $sep\"[string map [list \" \"\"] $val]\"
  } else {
      append out $sep$val
  }
  set sep $sepChar
      }
      return $out
  }

  Tim


tkt_uuid: 434202ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Duplicate
title: Static checker results
comment:
  The static checkers "frink" and "procheck" were run
  over the scripts in tcllib (not Bwidgets nor tklib).
  The found problems were fixed (or suppressed if not
  actually a problem). The enclosed patch details the
  changes. (ftp[d] is not checked yet).


tkt_uuid: 852945ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: None
title: variable should check for :: in names
comment:
  although 'variable' isn't meant to be the same as Tcl's 
  variable, it is and will be used similarly.  Therefore it 
  would be a good idea to check if something like
     variable ::foo::bar
  is used and not prepend the snit namespace in that 
  case.


tkt_uuid: 1056892fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: statistics
priority: 5 Medium
foundin: None
resolution: None
title: math::statistics takes > 1 sec to load
comment:
  math::statistics sources pdf_stat.tcl which calls 
  Initialise-cdf-normal which "Initialise the private data for 
  the normal cdf". Unfortunately, on my 700mhz machine 
  this takes over 1 sec to accomplish. 

  I think a lot more people are interested in doing 
  standard deviations and means than in pdf-exponential, 
  and so I think that that expensive initialization should be 
  deferred until needed.

  Keith Vetter


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


tkt_uuid: 1037636fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: TempFile does not generate random names on fast computers
comment:
  When you call the TempFile on a fast computer (3GHz w. 
  HT technology) then is generate a name with equal 
  chars like YYYYYYYY
  The random generation of names use the clock clicks 
  which is machine depended, and if I try to call clock 
  clicks to time right after each other then it returns the 
  same value.

  Why not use the ::math::random instead? 


  Tcllib 1.6

  Best regards
  Torben A. Hansen

  torben.arnt.hansen@sciatl.com

   


tkt_uuid: 3495830fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: First go at installing tcl modules
comment:
  Attached patch gives the installer the ability to install (some) packages as tcl modules.
  Also adds -destdir option, similar to ${DESTDIR} in Tcl's Makefile.


tkt_uuid: 1111364fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: dtplite error
comment:
  dtplite -o e:/mydir html myfile.man
  does not automatically create a file e:/mydir/myfile.html, 
  but a file e:/mydir/myfile., as specified in the command 
  syntax. 
  Reason: In procedure ::dtplite::processCmdline

      if {[string equal $ext ""]} {
        set ext $format
      }

  should be before

  set output [file join $output [file tail [Output $input]]]

  (thl@gedas.de)


tkt_uuid: 1890987fffffffffffffffffffffffffffffffff
type: Patch
status: Open
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: None
title: Encoded chars in rss feeds
comment:
  Hi,

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

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


  Kind regards,

  Jos.


tkt_uuid: 792796ffffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Let ::mime::parsepart accept a header only with multipart
comment:
  When calling ::mime::initialize with a header only and the 
  header includes a multipart description, ::mime::parsepart 
  will return an end-of-file error.
  This patch fixes that by counting the lines after the 
  header. If no lines are found, no error is thrown.

  This is useful when you want to parse a mail header only 
  with help of the mime package.

  Something to think of:
  This only works if the last newline character returned 
  from ::pop3::top is removed prior to calling ::mime::
  initialize. I thought of patching pop3 too, but thought 
  that it's correct that the last line returned also contains 
  a newline character.
  To help the user so he not needs to think of removing the 
  last newline character, maybe ::mime::parsepart should 
  count non-blank lines after the header, instead of just 
  counting lines.


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


tkt_uuid: 1407811fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: csv
priority: 7 High
foundin: None
resolution: Accepted
title: read2* incorrect for multi-line data
comment:
  This patch applies to read2matrix, but each API that
  reads from a channel needs to account for multiline CSV
  data.

  Index: csv.tcl
  ===================================================================
  RCS file: /cvsroot/tcllib/tcllib/modules/csv/csv.tcl,v
  retrieving revision 1.22
  diff -u -r1.22 csv.tcl
  --- csv.tcl     30 Sep 2005 23:03:20 -0000      1.22
  +++ csv.tcl     17 Jan 2006 01:10:58 -0000
  @@ -166,10 +166,19 @@
          }
       }

  +    set data ""
       while {![eof $chan]} {
          if {[gets $chan line] < 0} {continue}
  -       if {$line == {}} {continue}
  -       Split2matrix $alternate $m $line $sepChar $expand
  +       # Why skip empty lines?  They may be in data.
  +       #if {$line == {}} {continue}
  +       append data $line
  +       if {[regexp -all \" $data] % 2} {
  +           # Odd number of quotes - must have embedded
  newline
  +           append data \n
  +           continue
  +       }
  +       Split2matrix $alternate $m $data $sepChar $expand
  +       set data ""
       }
       return
   }


tkt_uuid: 1513382fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: Proxy password cannot be saved
comment:
  Currently it is not possible to save the proxy 
  password. This means that with every startup the proxy 
  password will have to be provided again.
  Would it be possible to add a checkbox similar to the 
  one for the chat password to save the proxy password?


tkt_uuid: 2695618fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: linearalgebra
priority: 8
foundin: None
resolution: Fixed
title: MkWilkinson- is also false...
comment:
  Compute the Wilkinson - matrix of size 5 :

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

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

  The following is a fix :

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

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

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


tkt_uuid: 465768ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: Browser invocation broken on Unix
comment:
  Clicking on a URL is intended to launch 
  a browser, but that fails on Unix.

  Problem is that [findExecutable] uses
  [upvar] and [gotoUrl] passes env(BROWSER)
  as the variable name to be linked to by
  [upvar] -- the global ::env array.

  Linking to an element of the ::env array
  via [upvar] has been broken in Tcl since
  release 8.1 -- this is Tcl Bug 219372.

  We should be able to work around this by
  change "env" to any other global array
  variable name.


tkt_uuid: 971076ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: tklib: request for new module
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: snitbutton widget
comment:
  A working snit-port of the itcl-gbuttons-widget. That
  way the wikit-tkGui can also be used on platforms where
  itcl is not available (like MacOS 9). 

  All feature to use it instead of gButton inside a wikit
  as a tkGUI are already supplied in the implementation on:

  http://mini.net/tcl/11794

  regards,
  Detlef Groth

  <dgroth (at) gmx.de>


tkt_uuid: 1167772fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: tklib: ctext
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: code/block expansion
comment:
  I've sat on this long enough, and I lack the motivation
  to work on the ctext 3.x series much anymore.  So,
  here's an email with some code that could be merged in
  to provide code expansion, or whatever it's called when
  you click the + to expand a block.  He also mentions a
  bug that should be fixed.

  Date: Tue, 12 Oct 2004 12:27:03 +0200
  From: Jos Decoster <decoster@retarget.com>
  To: GeorgePS@XMission.com
  Subject: ctext and tags
  Parts/Attachments:
     1 Shown    84 lines  Text, "message body text"
     2          24 KB     Application
  ----------------------------------------


  Dear mister Staplin,

  I'm using your ctext widget in an application. Syntax
  highlighting works fine. But when I use tags, the ctext
  widget reports errors. 

  In my application, I modify the text based on tags I
  placed during insert. The ctext widget however removes
  tags during insert and delete (all but _cComment).
  Consider the example at the end of the mail. It uses
  both the text and ctext widget to show the differences.
  Double clicking on a line will show or hide a '+' at
  the beginning of the line.

  After modifying the ctext widget to prepend each tag
  added by ctext with __ctext and to only delete __ctext
  tag during insert and delete, the example works as
  expected.

  I attached the modified code in case you would find
  this modification usefull.

  Kind regards,

  Jos.


  set t [text .t]
  set c [ctext .c -linemap 0]

  bind $t <Double-1> [list toggle_prefix $t %x %y]
  bind $c <Double-1> [list toggle_prefix $c %x %y]

  pack .t .c

  proc test_insert { txt ln dta } {
      $txt insert end " >" [list 1.$ln prefix] \
          [format " %5d : " $ln] [list 1.$ln line] \
          $dta [list 1.$ln source] \
          "\n" ""
  }

  proc toggle_prefix { txt x y } {

      global line_char

      set tl [$txt tag names @$x,$y]
      set line -1
      foreach t $tl {
          puts "t = $t @ $x,$y"
          if { [regexp {^([0-9]+)[.]([0-9]+)$} $t match
  p1 p3] } {
              if { $p1 == 1 } {
                  set line $p3
                  break
              }
          }       
      }

      if { $line < 0 } {
          puts "No line found!"
          return
      }

      set iidx [expr {[$txt index 1.$line.first]}]
      
      puts "iidx = $iidx"

      $txt delete $iidx

      if { [info exists line_char($txt,$line)] && 
           [string equal $line_char($txt,$line) "+"] } {
          $txt insert $iidx " " 1.$line
          set line_char($txt,$line) " "
      } else {
          $txt insert $iidx "+" 1.$line   
          set line_char($txt,$line) "+"
      }
  }

  set dtal [list qwerty azerty test foo bar brol]
  set ln 1

  foreach dta $dtal {
      test_insert $t $ln $dta
      test_insert $c $ln $dta
      incr ln
  }


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

  * struct::graph 1.2.1
  test name 'graph-0.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-0.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-0.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-0.4' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-0.5' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-0.6' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-1.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-1.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-1.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-2.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-2.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-3.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-4.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-4.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-4.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-4.4' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-5.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-5.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-5.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-5.4' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-5.5' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-5.6' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-6.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-6.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-6.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-6.4' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-6.5' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-7.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-7.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-8.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-8.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-9.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-9.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-9.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-9.4' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-10.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-10.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-10.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-10.4' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-10.5' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-10.6' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-10.7' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-10.8' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-10.9' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-10.10' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-10.11' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-10.12' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-11.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-11.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-11.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-11.4' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-11.5' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-12.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-12.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-12.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-12.4' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-13.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-14.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-14.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-14.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-14.4' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-15.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-15.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-15.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-16.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-16.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-16.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-16.4' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-16.5' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-17.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-17.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-17.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-17.4' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-17.5' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-18.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-18.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-18.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-18.4' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-19.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-19.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-19.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-19.4' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-19.5' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-19.6' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-19.7' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-19.8' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-19.9' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-19.10' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-19.11' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-19.12' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-20.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-20.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-20.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-20.4' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-20.5' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-20.6' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-22.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-22.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-22.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-23.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-23.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-23.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-24.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-24.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-24.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-25.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-25.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-25.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-26.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-26.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-26.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-26.4' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-27.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-27.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-27.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-27.4' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-28.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-28.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-28.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-28.4' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-29.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-29.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-29.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-29.4' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-30.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-30.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-30.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-30.4' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-31.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-21.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-21.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-21.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-21.4' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-21.5' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-21.6' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-21.7' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-21.8' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-21.9' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-21.10' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-21.11' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-21.12' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-21.13' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-21.14' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-21.15' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-21.16' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-21.17' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-21.18' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-21.19' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-21.20' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-21.21' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-21.22' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-33.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-33.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-33.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-34.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-34.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-34.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-34.4' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-34.5' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-35.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-35.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-35.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-36.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-36.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-37.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-37.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-38.1' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-38.2' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test
  test name 'graph-38.3' re-used; prior use in
  /local/src/tcllib/modules/struct/graph.test


tkt_uuid: 1963364fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: roman
priority: 5 Medium
foundin: None
resolution: Fixed
title: Namespace is math::roman
comment:
  The manpage calls the commands of this package ::roman::toroman, ::roman::tointeger, etc., when in fact they live in the math::roman namespace, and should thus be specified as math::roman::toroman (or ::math::roman::toroman).

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


tkt_uuid: 3555995fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Latest version download link on sourceforge
comment:
  The "Download latest version" link on sourceforge tcl-lib project actually downloads bwidget. Please correct the link to point to tcllib instead of bwidget.


tkt_uuid: 1281136fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
resolution: Accepted
title: Bug #1280529
comment:
  --- ini-old.tcl 2005-07-19 19:40:19.000000000 +0200
  +++ ini.tcl     2005-09-03 08:28:27.891839136 +0200
  @@ -12,6 +12,8 @@
   package provide inifile 0.1
    
   namespace eval ini {
  +    variable nexthandle
  +    variable commentchar
       set nexthandle 0
       set commentchar \;
   }
  @@ -28,6 +30,9 @@
       fconfigure $tmp -translation crlf
    
       namespace eval ::ini::$fh {
  +        variable data
  +        variable comments
  +        variable sections
           array set data     {}
           array set comments {}
           array set sections {}


tkt_uuid: 795585ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: regular expression bug in fileutil::fileType
comment:
  The test to determine if a file is an interpreted
  script file has an error:

  The line
      if { [ regexp {^\#\!(\S+)} $test -> terp ] } {
  does not accomodate the fact that whitespace is valid
  after the #!

  A file that begins
      #! /bin/sh
  has its type reported as simply "text" instead of the
  proper "text script /bin/sh"

  The appropriate regex should be {^#!\s*(\S+)} 


tkt_uuid: 1714668fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: asn
priority: 5 Medium
foundin: None
resolution: Duplicate
title: asnGetApplication bitmask is too restrictive
comment:
  The library function ::asn::asnGetApplication in tcllib1.9 and tcllib1.8 use the following mask

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

  This should be rewitten as

      if {($tag & 0xD0) != 0x040} {
          return -code error \
              [format "Expected Application (0x40), but got %02x" $tag]
      }

  The extra bit codes for whether the data is simple or constructed. Types NetworkAddress and TimeTicks of RFC-1155 are simple.


tkt_uuid: 727694ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: general request
priority: 8
foundin: None
title: sak validate imposes [package provide] format
comment:
  Several packages in tcllib had a structure like:

  namespace eval foo {
      variable version 1.0.2
  ...
      package provide foo $version
  }

  but they were changed to have a literal value
  in the [package provide] command, like:

  namespace eval foo {
  ...
  }

  set ::foo::version 1.0.2
  package provide foo 1.0.2

  This was done to meet the limitations of
  the Swiss Army Knife tool in validating
  the modules against the release plan,
  and is explained in devdoc/notes.txt.

  I request that sak.tcl remove this limitation,
  so the original structure of these packages
  can be restored.

  A simple [source] into a slave interp should
  suffice for determining the provided version,
  rather than the current attempt to parse Tcl
  code with regexps.


tkt_uuid: 1735588fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: grammar_peg
priority: 3 Low
foundin: None
resolution: Fixed
title: Relation to context-free grammars
comment:
  One thing that had me rather confused the first time I 
  read the peg manpage was that it didn't say anything 
  about context-free languages or grammars -- despite 
  the fact that it all looked very similar. I might have 
  been constantly wondering "where's the catch?", or 
  perhaps not, but the issue left me a bit anxious and 
  not particularly eager to try it out.

  Yesterday I read a paper by Bryan Ford that clarified 
  the issue: the class of parsing expression languages is 
  really distinct from the class of context-free languages: 
  It might be that CFL is a subset of PEL (since the 
  classical a^n b^n c^n example of a non-context-free 
  language turns out to a PEL), but more likely the two 
  classes are incomparable.

  I think it would be useful if a note about this was 
  added somewhere in the manpage, either in the top 
  of the TERMS & CONCEPTS section, or somewhere in 
  the PARSING EXPRESSION GRAMMARS section, but I 
  think the former is preferable. The first paragraph
  could be something like:

  "PEGs are similar to context-free grammars, but not 
  equivalent; in some cases PEGs are strictly more 
  powerful than context-free grammars (there exist PEGs 
  for some non-context-free languages). The formal 
  mathematical definition of parsing expression and 
  parsing expression grammar can be found in the 
  section PARSING EXPRESSION GRAMMARS."


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

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


tkt_uuid: 625327ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Works For Me
title: Problem using i as a counter at level 0
comment:
  set mailHost localhost
  set mailPort 25
  set myAddress lduperval@yahoo.com

  set addresses {
  lduperval@yahoo.com
  }

  proc send_simple_message {recipient subject body} {
      package require smtp
      package require mime
      global mailHost
      global mailPort
  global myAddress

      set token [mime::initialize -canonical text/plain
  -string $body]
      mime::setheader $token Subject $subject
      smtp::sendmessage $token -recipients $recipient
  -servers $mailHost\
        -ports $mailPort -originator $myAddress
      mime::finalize $token
  }

  for {set i 0} {$i < [llength $addresses]} {incr i} {
  puts "Sending [expr {$i+1}]/[llength $addresses]"
  send_simple_message [lindex $addresses $i] "Test: ne
  pas répondre"\
    "Ceci n'est qu'un test. Il n'est pas nécessaire de
  répondre.\n\nL"
  }

  This is the error I get:

  Sending 1/1
  can't read "i": no such variable
      (reading value of variable to increment)
      invoked from within
  "incr i"
      ("for" loop-end command)
      invoked from within
  "for {set i 0} {$i < [llength $addresses]} {incr i} {
  puts "Sending [expr {$i+1}]/[llength $addresses]"
  send_simple_message [lindex $addresses $i] "Te..."
      (file "sendmail.tcl" line 27)

  Now, if I change "i" to "ii", it works.


tkt_uuid: 594263ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Out of Date
title: bug in tkchat message dissector
comment:
  if a person using the web interface to the
  Tcl'ers Chat has no special color attached
  to their name, then the line of text which
  is output when they speak isn't wrapped by
  <FONT COLOR="#whatever"></FONT>. If such a
  person post a multi-line message, then the
  tkchat program gets confused, and all but
  the first line of the message are handled
  as "help" messages, and shown in popup windows,
  one window per line.


tkt_uuid: 1289692fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Out of Date
title: bug in installer.tcl
comment:
  Hi,

    I get the error from the bottom of the page:

  the problem are the two variables:
  tcl_pkgPath</global/mqm/home/mqusers/mqm/otto/Proj
  ects/OpMenu2/ext/lib>
  libdir</global/mqm/home/mqusers/mqm/otto/Projects/Op
  Menu2/ext/lib>

  the tclsh was build on a other node where /global is 
  available... the current node does has no /global avilable 
  but tcl tries to install the components in a /globale/... 
  directory

  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

  >make install-libraries
  /export/home/mqusers/mqm/scripts/OpMenu/tclsh 
  `echo ./installer.tcl` \
          -pkg-
  path   /export/home/mqusers/mqm/scripts/OpMenu/ext/li
  b/tcllib1.7 \
          -no-examples -no-html -no-nroff \
          -no-wait -no-gui
  Installing Tcllib 1.7
  You have chosen the following configuration ...

  Packages:      /export/home/mqusers/mqm/scripts/OpM
  enu/ext/lib/tcllib1.7
  Applications:  /global/mqm/home/mqusers/mqm/otto/Proj
  ects/OpMenu2/ext/bin
  Examples:      Not installed.
  Documentation: Not installed.

  ..................................................................................
  ..................................................................................
  ..................................................................................
  ...................................................
  Generating /export/home/mqusers/mqm/scripts/OpMenu/
  ext/lib/tcllib1.7/pkgIndex.tcl
  can't create directory "/global": permission denied
      while executing
  "file mkdir [file dirname  $adst]"
      (procedure "ainstall" line 14)
      invoked from within
  "ainstall"
      (procedure "doinstall" line 26)
      invoked from within
  "doinstall"
      (procedure "main" line 11)
      invoked from within
  "main"
      (file "./installer.tcl" line 540)
  make: *** [install-libraries] Error 1
  mpsun17:mqm:/export/home/mqusers/mqm/scripts/OpM
  enu/src/tcllib-1.7\>


tkt_uuid: 1408494fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: BWidget Tree bug with autoscroll (when dragging)
comment:
  Tree::_auto_scroll calls Tree::_scroll with 2 parameters,
  but _scroll has 3 parameters. Error generates and
  auto_scroll not works. Proc _scroll correct, only
  last 2 parameters packed in list.
       With this all works ok:
  ##################################
  proc Tree::_scroll { path scroll } {
      variable $path
      upvar 0  $path data
  set cmd [lindex $scroll 0]
  set dir [lindex $scroll 1]
      if { ($dir == -1 && [lindex [$path.c $cmd] 0] > 0) ||
           ($dir == 1  && [lindex [$path.c $cmd] 1] < 1) } {
          $path.c $cmd scroll $dir units
          set data(dnd,afterid) [after 50 [list
  Tree::_scroll $path $scroll]]
      } else {
          set data(dnd,afterid) ""
          DropSite::setcursor dot
      }
  }
  ######################################
  Kapkaev@inbox.ru


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: 1465066fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: logger
priority: 3 Low
foundin: None
resolution: Not Applicable Here
title: logger does not print correct args when passed multiple args
comment:
  (bin) 49 % package require logger
  0.6.2
  (bin) 50 % set f [logger::init foo]
  ::logger::tree::foo
  (bin) 51 % ${f}::debug foo bar baz
  [Wed Apr 05 17:41:43 Westeuropäische Normalzeit 2006]
  [bar] [debug] 'baz'
  (bin) 52 % 

  This should print:
  'foo bar baz'

  seems like the origin tracking code is not robust enough.

  Michael


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

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

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

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

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

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

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

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



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

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


tkt_uuid: 582668ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: ftp::Get with -variable fails
comment:
  By using a construct like

  ftp::Get $ftphandle directory/file -variable data

  ftp raises an error, if no local directory "directory"
  exists:

  ftp::Get, directory "directory" for destination
  "directory/file" does 
  not exist

  ftp checks for a local directory, even if the data
  should never go to this directory, but to a variable.


tkt_uuid: 1098039fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: fileutil::find lists files that start with . twice
comment:
  TCL version: 2.4.9
  Platform:     WIN2K SP4
  tcllib:         1.7

  In the course of writing a script on the win2k
  platform, I've
  come across a bug in the implementation of fileutil::find

  I'm not sure if it's an issue under *unix, but I
  suspect it is...

  If a directory has a file that starts with a . (like
  .splintrc)
  then fileutil::find will list it twice!

  To reproduce:

  1. Create a clean directory
  2. Start a tcl shell, and go to that dir
  3. package require fileutil
  4. fileutil::touch .splintrc
  5. fileutil::find .

  the .splintrc file is listed twice

  The implementation of find in tcllib uses [glob
  -nocomplain * .*]
  which explains the problem.

  It might be better to use [glob nocomplain *] as
  Windows does not
  see the . and .. anyways.

  I suspect the problem may be there under *unix as well,
  so the
  search pattern may be better expressed as [glob
  -nocomplain * . ..]

  Ralph


tkt_uuid: 1154619fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Accepted
title: segfault in tkchat
comment:
  On Solaris 9, with Tcl/Tk 8.4.9,
  and tile 0.4, the tkchat.tcl
  program Revision 1.263
  segfaults at startup at line 4416

    catch {destroy $w}

  Upgrading to tile 0.5 corrects
  the problem.

  I recommend updating tkchat
  to [package require tile 0.5]


tkt_uuid: 739393ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: mkdir error/bug
comment:
  I get an error lile this:

  debug      | ---> MKD test
  bgerror failed to handle background error.
      Original error: can't read "multi_line": no such variable
      Error in bgerror: invalid command name "bgerror"

  i think the multi-line cannot handy the ftp output like this:

  MKD test
  Skipping... hidden...
  257 "test" created.
  EXEMPTED
  PWD

  i think it cannot handle with the output may someone 
  can help me

  thx


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: Deleted
subsystem: doctools
priority: 3 Low
foundin: None
resolution: Not Applicable Here
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: 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: 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: 1050608fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: base64
priority: 5 Medium
foundin: None
resolution: None
title: base64 doesn't encode propertly unicode chars > 0xff
comment:
  decode(encode()) is not the identiy operation for
  strings with unicode characters > 0x00ff:

  % info tclversion
  8.4
  % source modules/base64/base64.tcl
  % string equal \u2019 [::base64::decode
  [::base64::encode \u2019]]
  0

  In the (pure tcl) ::base64 implementation, "binary
  scan" is used to get the byte representation of the
  characters in the string. This doesn't work for
  characters with a unicode representation beyond 0x00ff,
  as Tcl itself throws away the unicode high byte:

  % set string \u2019
  ?
  % binary scan $string c* X
  1
  % set X
  25
  # (this is the low byte 0x19 in dec)

  Only variables of the type "bytearray" are handled
  correctly, but you will not know from the string
  representation if this Tcl object was created as string
  or bytearray.

  PS: I'm missing a -encoding option to provide the
  encoder (decoder) a hint how to get (interpret) the
  binary representation of the characters of the string,
  as the string to encode is only an array of chars, not
  of bytes.


tkt_uuid: 1161779fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Fixed
title: destructor can't precede constructor
comment:
  The following code:

  package require snit

  ::snit::type Boom {
      destructor {
      }

      constructor {args} {
  $self configurelist $args
      }
  }

  Causes:

  extra characters after close-brace
      while executing
  "error $result"
      (procedure "Comp.Define" line 12)
      invoked from within
  "Comp.Define [Comp.Compile type $type $body]"
  ...

  Because (I think) snit sees the destructor and decides
  to create a default constructor (without a space, for
  some reason.)


tkt_uuid: 1352763fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
resolution: Duplicate
title: file appender for logger
comment:
  file appender for logger patch includes:

  Patch file includes the following changes:

  * changes to man pages
  * new appender fileAppend
  * fixes to createLogProc to allow channel selection
  * tests 


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

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


tkt_uuid: 630500ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget panedwindow _realize problem
comment:
  Hi,

  On CLT a problem with the __realize_ function of the
  _PanedWindow_ widget was reported. The call to
  __realize_ in the _add_ function caused incorrect
  beavior but is needed when adding new panes after te
  widget received a _Configure_ event. To solve this,
  __realize_ is only called from _add_ after te
  _Configure_ event is received.

  Jos.


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: 723692ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: tree
priority: 8
foundin: None
title: ADD: ::struct::tree -copy -- myTree myTree2
comment:
  Currently there appears to be no way to copy 
  a ::struct::tree without walking the tree and setting 
  contents to a new tree structure.

  CURRENT METHOD:

  # note - "myTree" already exists in this example (which 
  does not account for keys and values - just node 
  transfer)

  # New Tree Structure
  ::struct::tree myTree2

  ::struct::tree walk root -command {
      if {"%n" != "root"} {
         myTree2 insert [myTree parent %n] end %n
      }
  }


  PROPOSED METHOD:
  ::struct::tree -copy -- myTree myTree2


  This command would greatly simplify and enhance the 
  ability to duplicate a tree and all of the attributes within it 
  and it's nodes as compared to the the current work 
  around.

  Any Questions?

  David Bigelow
  davidhbigelow@compuserve.com


tkt_uuid: 554233ffffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: apps : request for new app
priority: 5 Medium
foundin: None
title: Browser for images
comment:
  It would be nice to include a browser so that people 
  can look at the images in the BWidget/images directory.

  A very simple image browser is attached...


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: 840568ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
title: fileType: Detect audio
comment:
  Extend fileType to detect various audio file formats:
  wav
  ogg
  mp3
  ra (real audio)

  ....
  From the sox(1) manpage, a list of other audio formats.

         .8svx     Amiga 8SVX musical instrument
  description format.

         .aiff     AIFF files used on Apple IIc/IIgs and
  SGI.  Note: the AIFF format supports only one SSND
  chunk.  It does not  support  multiple
                   sound  chunks,  or  the  8SVX  musical
  instrument description format.  AIFF files are
  multimedia archives and can have multiple
                   audio and picture chunks.  You may
  need a separate archiver to work with them.

         .au       SUN Microsystems AU files.  There are
  apparently many types of .au files; DEC has invented
  its own with a different magic  num­
                   ber  and  word  order.  The .au
  handler can read these files but will not write them. 
  Some .au files have valid AU headers and
                   some do not.  The latter are probably
  original SUN u-law 8000 hz samples.  These can be dealt
  with using the  .ul  format  (see
                   below).

         .avr      Audio Visual Research
                   The AVR format is produced by a number
  of commercial packages on the Mac.

         .cdr      CD-R
                   CD-R  files  are  used in mastering
  music on Compact Disks.  The audio data on a CD-R disk
  is a raw audio file with a format of
                   stereo 16-bit signed samples at a
  44khz sample rate.  There is a special blocking/padding
  oddity at the end of the  audio  file
                   and is why it needs its own handler.

         .cvs      Continuously Variable Slope Delta
  modulation
                   Used to compress speech audio for
  applications such as voice mail.

         .dat      Text Data files
                   These  files  contain a textual
  representation of the sample data.  There is one line
  at the beginning that contains the sample
                   rate.  Subsequent lines contain two
  numeric data items: the time since the beginning of the
  first sample and the sample  value.
                   Values  are  normalized  so that the
  maximum and minimum are 1.00 and -1.00.  This file
  format can be used to create data files
                   for external programs such as FFT
  analyzers or graph routines.  SoX can also convert a
  file in this format back into one of the
                   other file formats.

         .gsm      GSM 06.10 Lossy Speech Compression
                   A  standard  for  compressing speech
  which is used in the Global Standard for Mobil
  telecommunications (GSM).  Its good for its
                   purpose, shrinking audio data size,
  but it will introduce lots of noise when a given sound
  sample is encoded and decoded multi­
                   ple times.  This format is used by
  some voice mail applications.  It is rather CPU intensive.
                   GSM  in SoX is optional and requires
  access to an external GSM library.  To see if there is
  support for gsm run sox -h and look
                   for it under the list of supported
  file formats.

         .hcom     Macintosh HCOM files.  These are
  (apparently) Mac FSSD files with some variant of
  Huffman compression.  The Macintosh has wacky
                   file  formats and this format handler
  apparently doesn't handle all the ones it should.  Mac
  users will need your usual arsenal
         .maud     An Amiga format
                   An IFF-conform sound file type,
  registered by MS MacroSystem Computer GmbH, published
  along with the  "Toccata"  sound-card  on
                   the Amiga.  Allows 8bit linear, 16bit
  linear, A-Law, u-law in mono and stereo.

         .nul      Null  file  handler.  This is a fake
  file hander that act as if its reading a stream of 0's
  from a while or fake writing output
                   to a file.  This is not a very useful
  file handler in most cases.  It might be useful in some
  scripts were you do not  want  to
                   read or write from a real file but
  would like to specify a filename for consistency.

         .ogg      Ogg Vorbis Compressed Audio.
                   Ogg  Vorbis  is  a open, patent-free
  CODEC designed for compressing music and streaming
  audio.  It is similar to MP3, VQF, AAC,
                   and other lossy formats.  SoX can
  decode all types of Ogg Vorbis files, but can only
  encode at 128 kbps.  Decoding is  somewhat
                   CPU intensive and encoding is very CPU
  intensive.
                   Ogg  Vorbis in SoX is optional and
  requires access to external Ogg Vorbis libraries.  To
  see if there is support for Ogg Vorbis
                   run sox -h and look for it under the
  list of supported file formats as "vorbis".

         ossdsp    OSS /dev/dsp device driver
                   This is a pseudo-file type and can be
  optionally compiled into SoX.  Run sox -h to see if you
  have support for this file  type.
                   When  this driver is used it allows
  you to open up the OSS /dev/dsp file and configure it
  to use the same data format as passed
                   in to SoX.  It works for both playing
  and recording sound samples.  When playing sound files
  it attempts  to  set  up  the  OSS
                   driver to use the same format as the
  input file.  It is suggested to always override the
  output values to use the highest qual­
                   ity samples your sound card can
  handle.  Example: -t ossdsp -w -s /dev/dsp

         .sf       IRCAM Sound Files.
                   Sound Files are used by academic music
  software such as the CSound package, and the MixView
  sound sample editor.

         .sph
                   SPHERE (SPeech HEader Resources) is a
  file format defined by NIST (National Institute of
  Standards and Technology) and is  used
                   with  speech audio.  SoX can read
  these files when they contain u-law and PCM data.  It
  will ignore any header information that
                   says the data is compressed using
  shorten compression and will treat the data as either
  u-law or PCM.  This will allow SoX  and
                   the command line shorten program to be
  ran together using pipes to uncompress the data and
  then pass the result to SoX for pro­
                   cessing.

         .smp      Turtle Beach SampleVision files.
                   SMP files are for use with the PC-DOS
  package SampleVision by Turtle Beach Softworks. This
  package is for communication to sev­
                   eral  MIDI  samplers. All sample rates
  are supported by the package, although not all are
  supported by the samplers themselves.
                   Currently loop points are ignored.

         .snd
                   Under DOS this file format is the same
  as the .sndt format.  Under all other platforms it is
  the same as the .au format.

         .sndt     SoundTool files.
                   This is an older DOS file format.

         sunau     Sun /dev/audio device driver
                   This is a pseudo-file type and can be
  optionally compiled into SoX.  Run sox -h to see if you
  have support for this file  type.
                   When this driver is used it allows you
  to open up a Sun /dev/audio file and configure it to
  use the same data type as passed in
                   to SoX.  It works for both playing and
  recording sound samples.  When playing sound files it 
  attempts  to  set  up  the  audio
                   driver to use the same format as the
  input file.  It is suggested to always override the
  output values to use the highest qual­
                   ity samples your hardware can handle.
   Example: -t sunau -w -s /dev/audio or -t sunau -U -c 1
  /dev/audio for older  sun  equip­
                   ment.

         .txw      Yamaha TX-16W sampler.
                   A  file  format from a Yamaha sampling
  keyboard which wrote IBM-PC format 3.5" floppies. 
  Handles reading of files which do not
                   have the sample rate field set to one
  of the expected by looking at some other bytes in  the
   attack/loop  length  fields,  and
                   defaulting to 33kHz if the sample rate
  is still unknown.

         .vms      More info to come.
                   Used to compress speech audio for
  applications such as voice mail.

         .voc      Sound Blaster VOC files.
                   VOC  files  are  multi-part and
  contain silence parts, looping, and different sample
  rates for different chunks.  On input, the
                   silence parts are filled out, loops
  are rejected, and sample data with a new sample rate is
  rejected.  Silence with a different
                   sample  rate is generated
  appropriately.  On output, silence is not detected, nor
  are impossible sample rates.  Note, this ver­
                   sion now supports playing VOC files
  with multiple blocks and supports playing files
  containing u-law and A-law samples.

         vorbis    See .ogg format.

         .wav      Microsoft .WAV RIFF files.
                   These appear to be very similar to IFF
  files, but not the same.  They are the native sound
  file format of Windows.  (Obviously,
                   Windows  was  of such incredible
  importance to the computer industry that it just had to
  have its own sound file format.)  Nor­
                   mally .wav files have all formatting
  information in their headers, and so do not need any
  format options specified for an input
                   file.  If any are, they will override
  the file header, and you will be warned to this effect.
   You had better know what you are
                   doing! Output format options will
  cause a format conversion, and the .wav will written
  appropriately.  SoX currently  can  read
                   PCM, ULAW, ALAW, MS ADPCM, and IMA (or
  DVI) ADPCM.  It can write all of these formats
  including (NEW!)  the ADPCM encoding.

         .wve      Psion 8-bit A-law
                   These are 8-bit A-law 8khz sound files
  used on the Psion palmtop portable computer.


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

  [General]    
  key=value
  key2=value2


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

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


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

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

  (Note: VolUp just increses by 1 the volume)

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

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

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

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


tkt_uuid: 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: 1172924fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: tklib: ctext
priority: 4
foundin: None
resolution: Accepted
title: doctools style man for ctext
comment:
  Hi,

  attached you'll find a first cut at doctools style
  documentation for the ctext widget. Maybe it is a
  helpful start for using doctools to document ctext. 

  (I was annoyed that no docs for ctext could be found
  inside ActiveTcl...)


  Michael


tkt_uuid: 3247765fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: smtpd
priority: 5 Medium
foundin: None
title: Add a smtpd::configure -banner callback
comment:
  The first thought using the  smtpd package is that the first response the smtpd does to an accepted client connection is to put up a "banner" reply to the client shouldnt be hardcoded by the smtpd package.

  This line is hardcoded in the source as :  Puts $channel "220 $options(serveraddr) tcllib smtpd $version; [timestamp]" .
  Developping your own smtpd application using the smtpd package as of now leaves you having no way to set your own banner relevant to your own implementation.

  I suggest that there should be something like smtpd::configure  -banner callback


tkt_uuid: 556509ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: doctools
priority: 3 Low
foundin: None
resolution: Fixed
title: mpexpand nroff header comments
comment:
  'mpexpand nroff' inserts some comments in the header
  that probably do not belong there. It assigns copyright
  to the person who ran the converter (the original
  author may disagree with this :-), and inserts an
  unexpanded CVS revision tag (CVS: $Id$), which is
  inappropriate for an output file.

  It also adds the mysterious admonition "do not modify
  the .SH NAME line immediately below!" -- I don't think
  there's any reason to keep this particular coke bottle
  around.

  The attached patch removes the above stuff.


tkt_uuid: 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: 2935339fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::ftpd::config not idempotent
comment:
  Calling ::ftpd::config a subsequent time with a different option resets all previously set options. The problem is is that it uses cmdline::getoptions but supplies the application defaults for unspecified options instead of current values.

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


tkt_uuid: 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: 2979481fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: bibtex
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 1376903fffffffffffffffffffffffffffffffff
type: Patch
status: Open
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: None
title: tkchat - aqua mods - set app name + unhide on alert
comment:
  A could of mods to tkchat to make it "nicer" for AquaTk users

  The first sets the application name (i.e. the left most menu name in the 
  menu bar) to TkChat.

  The second "unhides" the chat window on alert. Previously only minimised 
  (i.e. iconified) windows were de-iconified.

  Both changes use Ffidl - thanks to Daniel Steffen for the pointers on how 
  to use it.

  A starkit containing the changes + Ffidl for OSX is at http://mini.net/
  sdarchive/tkchat.kit


tkt_uuid: 932516ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: html
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 981764ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Out of Date
title: label problem in BWidget-1.2.1
comment:
  Error in startup script: unknown option "-label"
      while executing
  "error "unknown option \"$option\"""
      (procedure "Widget::parseArgs" line 7)
      invoked from within
  "Widget::parseArgs ComboBox $args"
      (procedure "ComboBox::create" line 3)
      invoked from within
  "ComboBox $parent.mscCombo -label "MSC"  -labelwidth 
  5 -labelanchor w  -textvariable save::mscNo  -values { 
  apollo athena mscE mscS }  -width 8  -helpt..."
      (procedure "_MscCell" line 7)
      invoked from within
  "_MscCell  [$mscCellFrame getframe]"
      (procedure "save::create" line 11)
      invoked from within
  "save::create $notebook"
      invoked from within
  "set f0  [save::create $notebook]"


tkt_uuid: 2814050fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: fix [notebook itemconfigure -helptext]
comment:
  This is a small fix for notebooks. When calling [itemconfigure -helptext] on a notebook tab, the helptext is currently not updated.
  The _set_help proc already contains code for checking whether the helptext has changed, but it is not called from itemconfigure.


tkt_uuid: 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: Deleted
subsystem: textutil :: expander
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 3041989fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: cmdline
priority: 7 High
foundin: None
title: Enhance documentation and help message
comment:
  The procedure "getoptions" aparently always understands "--" as "end of flags".

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

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

  Thank you,
  Harald


tkt_uuid: 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: 453519ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 7 High
foundin: None
resolution: Out of Date
title: 10.5 Needs Tk 8.4 (TIP 44) update
comment:
  Question 10.5 refers to redefining the commands
  [tk{Text|Entry}Insert] and accessing the 
  variable tkPriv to implement an overwrite
  mode for the text or entry widgets.

  These instructions are out of date now that
  private internal commands of Tk have been
  moved into the ::tk namespace for Tk 8.4
  (see TIP 44).


tkt_uuid: 2569848fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: aes
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 433145ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: csv module man page fix needed
comment:
  The current csv.n file has data on the first line
  which caused man commands on some systems to fail.
  The first line of a man page is used to define
  specialized filters, such as tbl, are required to
  format the man page.

  The current csv.n man page has what appears to be a
  comment used by emacs to indicate that the contents are
  nroff.

  Hopefully the emacs comment can be moved elsewhere -
  because right now, Solaris 8's man command is unable to
  format the man page correctly.


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

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


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

  Tested on Linux and FreeBSD.
  See attached patch.


tkt_uuid: 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: 1541828fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Accepted
title: modifyDN : new arg, and split search function
comment:
  This patch:

  - introduces a newSuperior optional parameter to 
  modifyDN

  - splits the search function in 3 new functions: 
  searchInit, searchNext and searchEnd. The old search 
  function is rewritten using these 3 new functions and 
  the result is compatible.

  Since I'm not familiar with Tcllib man format, don't 
  hesitate to correct wording and formatting.


tkt_uuid: 899204ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: inifile
priority: 5 Medium
foundin: None
resolution: Fixed
title: inifile test suite failures
comment:
  The inifile.test depends on the
  file test.ini being writable. 
  However, in the official tcllib
  release, that file is read-only,
  causing the tests to fail.
  Is writability really needed?
  If not, the test should be modified
  to use mode r, instead of r+.

  Also, as written, tests
  inifile-1.2 through initfile-1.14
  depend on inifile-1.1 having
  run successfully.  This kind
  of inter-test dependency should
  be removed, since -skip options,
  etc. to tcltest mean there's no
  guarantee what tests will actually
  run.


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

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

  - Bryan Schofield


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

  Error message:

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


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


tkt_uuid: 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: 3182287fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: Themed ComboBox failes due to themed entry widget
comment:
  When using a BWidget Combobox when theming is activated, it fails on creation and on posting its list due to the use of the themed Entry widget, which does not support any more:
  -relief
  -highlightbackground
  -highlightforeground

  The attached patch at least removes the errors.
  Please use ttk::combobox instead.

  The attached patch will not be in the repository before Andreas reallows it.


tkt_uuid: 1843712fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 1099722fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: log
priority: 7 High
foundin: None
resolution: Fixed
title: bug in logger's inheritance of level
comment:
  Hi,

  I am creating two services: foo and foo::bar using the
  logger command and seting the default log level to
  "notice" for the foo service. This means that the
  foo::bar will also have its default level set to
  "notice". However the following script shows that the
  debug logs are still printed for foo::bar service.

  godel:93> cat foobar.tcl 
  package require logger

  namespace eval ::foo {

      namespace export {[a-z]*} ;# export all commands
  begining with lower case.
      variable _foo             ;# array containing foo
  runtime globals

      set log [logger::init foo]
      logger::import -all -namespace log foo
      log::setlevel notice
      puts "foo level = [log::currentloglevel]"

  }

  namespace eval ::foo::bar {

      set log [logger::init foo::bar]
      logger::import -all -namespace log foo::bar
      # It should inherit foo's level, so do not set it here
      # log::setlevel notice
      puts "foo::bar level = [log::currentloglevel]"

  }

  proc ::foo::x args {
      log::warn   "foo::x warn"
      log::debug  "foo::x debug"
  }
  proc ::foo::bar::y args {
      log::warn   "foo::bar::y warn"
      log::debug  "foo::bar::y debug"
  }

  ::foo::x
  ::foo::bar::y
  godel:94> tclsh foobar.tcl 
  foo level = notice
  foo::bar level = notice
  [Mon Jan 10 15:50:32 EST 2005] [foo] [warn] 'foo::x warn'
  [Mon Jan 10 15:50:32 EST 2005] [foo] [warn]
  'foo::bar::y warn'
  [Mon Jan 10 15:50:32 EST 2005] [foo] [debug]
  'foo::bar::y debug'    <---- this should not be printed.
  godel:95> 

  Note that the level for foo::bar is correctly set to
  "notice", however it still ends up printing debug logs.
  I suspect this is bug.

  Hemang.


tkt_uuid: 1917035fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: inifile
priority: 6
foundin: None
resolution: Fixed
title: inifile - Global procedure 'commentchar' ok?
comment:
  The package inifile defines a global procedure called 'commentchar' (line 175ff).

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


tkt_uuid: 553784ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: word_decode: test failures
comment:
  Tests mime-5.3,4,5,6,7 all fail because [word_decode]
  does not recognize the charset ISO-8859-1.  Here's
  a patch to fix that.


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

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

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

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


tkt_uuid: 1977644fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: None
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 531541ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 3316505fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: simulation::random
priority: 7 High
foundin: None
resolution: Fixed
title: chi-squared is wrong
comment:
  The variable y in the generation of chi-squared randon numbers is independent of loop counter or itself from previous iterations.
  I.e. after the loop we have only the last y of the last iteration.

  According to
  http://www.dsplog.com/2008/07/28/chi-square-random-variable/

  y should be a sum instead, i.e. instead of

      set y [expr {$r * $r}]

  it should be

      set y [expr {$y + $r * $r}]


tkt_uuid: 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: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 533788ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Invalid
title: bwidget include synonym problem?
comment:
  I've been trying to read (and understand :-) the
  BWidget's code so I can write my own BWidgets. 

  In proc BWidget::bwidgetinclude the following code is
  present:

      foreach {option optdesc} [array get subclassopt] {
          set subOption $option
          if { (![info exists include] || [info exists
  include($option)]) &&
          ![info exists remove($option)] } {
              set type [lindex $optdesc 0]
              if { ![string compare $type "Synonym"] } {
   <<<< BUG?
                  # option is a synonym
                  ...

  Shouldn't the ! be removed on the string compare. It
  seems like if the option is a synonym the following
  code should be executed.


tkt_uuid: 2895994fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: tklib :: tooltip
priority: 8
foundin: None
resolution: Not Applicable Here
title: extend tooltip to the treeview widget
comment:
  Using the same logic as listbox, extend tklib tooltip to work with ttk::treeview.

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


tkt_uuid: 579026ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: crc
priority: 5 Medium
foundin: None
resolution: Fixed
title: crc32 consumes lots of memory
comment:
  crc32 consumes a large amount of memory if it has to
  determine the checksum for a large file (a file of10 MB
  causes the process to consume 200 MB of memory). This
  is probably due to the use of a list containing
  elements of 1 character (each list element has an
  overhead of 12 bytes).

  Alternative implementation:

     for { set i 0 } { $i < $length } { incr i } { 
        scan [string range $str $i $i] c n
        ...
     }


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

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

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

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


tkt_uuid: 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: 1003671fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
resolution: Fixed
title: sourcegraph without arcs can not be copied
comment:
  A graph without arcs is possible and useful. Please help!
  I guess it must be a quick fix.

  Example TCL : (search for Example for output)
  # Aim : create graphs x,y; copy x over y, print them

  package require Tcl 8.2
  package require struct
  package version struct

  set x [ ::struct::graph ]
  set y [ ::struct::graph ]
  set a [ $y node insert ]
  set b [ $x node insert ]
  set c [ $x node insert ]
  if { [ catch { $y = $x } mesg ] } {
      puts $mesg
  } else {
      puts "All well"
  }
  set e [ $y arc insert $a $a ]
  if { [ catch { $y = $x } mesg ] } {
      puts $mesg
  } else {
      puts "All well"
  }
  set d [ $x arc insert $b $c ]
  if { [ catch { $y = $x } mesg ] } {
      puts $mesg
  } else {
      puts "All well"
  }
  puts [ $y nodes ]
  $y destroy
  puts [ $x nodes ]

  Example Output :

  bhushit@jungle:/home/bhushit: tclsh temp.tcl
  2.0 1.4 1.3
  can't unset "arcn": no such variable
  can't unset "arcn": no such variable
  All well
  node2 node1
  node2 node1


tkt_uuid: 3004301fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Bad images.tgz files in CVS
comment:
  The images.tgz files in the CVS seem to be corrupted. Maybe they were not marked as binary files to CVS ?

  % tar tvfz ./themes/keramik_alt/images.tgz
  drwxr-xr-x oberdo/catia      0 2009-08-04 16:37:48 images/
  tar: Skipping to next header

  gzip: stdin: invalid compressed data--crc error

  gzip: stdin: invalid compressed data--length error
  tar: Child returned status 1
  tar: Error exit delayed from previous errors

  % gzip -t ./themes/keramik_alt/images.tgz
  gzip: ./themes/keramik_alt/images.tgz: invalid compressed data--crc error
  gzip: ./themes/keramik_alt/images.tgz: invalid compressed data--length error


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

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

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


tkt_uuid: 1492211fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 7 High
foundin: None
resolution: Out of Date
title: NoteBook Tab Deletion Problems
comment:
  If you have 6 notebook tabs, and start deleting them 
  from the middle to the end (e.g. index 2 -> end), the 
  tabs will either not reorganize properly and the 
  final tab will throw an exception.

  If a middle tab is removed, the tabs should 
  automatically slide-down to take it's place.


tkt_uuid: 2829049fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tklib
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: "failure" or missing feature in "getstring"
comment:
  Hello,

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

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

  Best regards,

  Martin


tkt_uuid: 535382ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 7 High
foundin: None
resolution: Fixed
title: definition list problems
comment:
  mpexpand needs to support two types of definition 
  lists: one with vertical whitspace between elements, 
  and one without.

  The reason? To support to types of markup common to 
  most tk man pages. 

  The need for no vertical whitespace: every tk option 
  is documented with three individual lines that look 
  like this:

     Command-Line option: foo
     Database Name: foo
     Database Class: Foo

  This format has proven to work well over the years, 
  though its possible we could put all the information 
  on a single line. It's also possible to use a 
  preformatted section to mark this up, but I don't 
  think that would quite look right, since it would 
  likely have the same colorization and fonts as code 
  samples.

  One could also use a bulleted list, but bullets don't 
  really make sense here. What we need is a bulleted 
  list without the bullets (but also without descriptive 
  paragraphs). 

  The need for whitespace: methods are typically 
  described with the following format:

     bbox
        returns a list blah blah

     cget
        returns blah blah blah

     configure
        query or modify blah blah blah

  This type of presentation is tedious to read if there 
  is no vertical whitespace between the different 
  methods. The present (as of March 26, 2002) nroff 
  formatter puts in this whitespace, but the html 
  formatter does not.

  I don't know what the best solution is, but I believe 
  both types of definition lists ought to be supported. 
  This could be done with "hints" to the formatter (eg: 
  [list_begin definition -compact]), or as separate 
  types of lists (eg: [list_begin compact], or with a 
  smart algorithm that guesses whether vertical 
  whitespace should be used or not.

  Ultimately, however, I think doctools needs to provide 
  some standard mechanism for creating both types of 
  markup, and all of the formatters should attempt to 
  generate an equal amount of vertical whtiespace.
    


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: 781652ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Selection display bug in BWidgets Listbox
comment:
  When using a BWidgets Listbox, clicking on an item
  selects it, and highlights the text (that's normal). 
  However, clicking on other items does not remove the
  highlights from previous selections.  It is quickly
  possible to fill the listbox
  with apparently selected items.  Very confusing.

  The problem is located in ListBox::_redraw_selection:

              set id [eval [list $path.c create
  rectangle] $bbox \
        [list -fill $selbg -outline $selbg \
        -tags [list [list sel s:$item]]]]

  This is one [list] too many. Changing this line to:

              set id [eval [list $path.c create
  rectangle] $bbox \
        [list -fill $selbg -outline $selbg \
        -tags [list sel s:$item]]]

  solves the problem. 


tkt_uuid: 1601203fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 1099727fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: "make install" fails to install apps other than in /usr/bin
comment:
  When one tries to install tcllib in another directory
  than /usr/...

  the installation process, called as 
  ./configure --prefix=...  && make install

  tries to install dtplite into /usr/bin and fails (until
  /usr/bin is writable for the user, of course).

  Example:

  > ./configure --prefix=/u/leusch/tmp/eval
  --exec-prefix=/u/leusch/tmp/eval/intel 
  [...]

  > make install
  /usr/bin/tclsh8.4 `echo ./installer.tcl` \
          -no-examples -no-html \
          -pkg-path  
  /u/leusch/tmp/eval/intel//lib/tcllib1.7 \
          -nroff-path /u/leusch/tmp/eval//man/mann \
          -no-wait -no-gui
  Installing Tcllib 1.7
  You have chosen the following configuration ...

  Packages:      /u/leusch/tmp/eval/intel//lib/tcllib1.7
  Applications:  /usr/bin                             [
  <===== !!!!! ]
  Examples:      Not installed.
  Documentation:

          NROFF:  /u/leusch/tmp/eval//man/mann
          HTML:   Not installed.

  [...]
  Generating /u/leusch/tmp/eval/man/mann/uri.n
  Generating /u/leusch/tmp/eval/man/mann/uuid.n
  error copying "./apps/dtplite" to "/usr/bin/dtplite":
  permission denied
      while executing
  "file copy -force $aexe    $adst"
      (procedure "ainstall" line 16)
      invoked from within
  "ainstall"
      (procedure "doinstall" line 26)
      invoked from within
  "doinstall"
      (procedure "main" line 11)
      invoked from within
  "main"
      (file "./installer.tcl" line 536)
  make: *** [install] Error 1



  Stating --bin-path explicitly when calling configure
  doen't help either.


  Diagnosis:
  installer.tcl requires the -app-path parameter if the
  apps are to be installed other than in /usr/bin which
  the Makefile doesn't.


  Possible fix:
  *** Makefile.in.orig    2005-01-10 21:20:27.000000000 +0100
  --- Makefile.in 2005-01-10 21:24:17.000000000 +0100
  ***************
  *** 28,33 ****
  --- 28,34 ----
    exec_prefix   = @exec_prefix@
    libdir                = @libdir@
    mandir                = @mandir@
  + bindir                = @bindir@
    
    DESTDIR               =
    pkglibdir     = $(libdir)/@PACKAGE@@VERSION@
  ***************
  *** 52,57 ****
  --- 53,59 ----
          $(TCLSH_PROG) `$(CYGPATH)
  $(srcdir)/installer.tcl` \
                  -no-examples -no-html \
                  -pkg-path   $(DESTDIR)$(pkglibdir) \
  +               -app-path   $(DESTDIR)$(bindir) \
                  -nroff-path $(DESTDIR)$(mandir)/mann \
                  -no-wait -no-gui
    

  (or whatever path is reasonable for the apps)


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


tkt_uuid: 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: 415001ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: xpm2image/bwidget
comment:
  Hi,
  it seems that not all graphic programs produce the same
  XPM output.

  Here's the difference:

  a sample line by "pixmap"
  "#c #feb66c",

  a sample line by "Gimp"
  "# c #feb66c",

  The problem is that there is no tab between "#" and "c"
  with the line of Gimp and xpm2image fails

  Greets

  Simon


tkt_uuid: 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: Deleted
subsystem: struct :: graph
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 1245508fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ntp
priority: 5 Medium
foundin: None
resolution: Fixed
title: NTP handling wrong
comment:
  The handling of (s)ntp by the ntp package is wrong; you
  can't talk ntp (these days) over tcp and you certainly
  can't use 'abcd' as a request message!

  And the package claims to be the time package for
  [package require], despite being in the ntp dir within
  the distribution.


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

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

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


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


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

    See [cmd ns_rollfile] for details...

  Produces this HTML output:

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


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

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


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

  * md5 2.0.4
  > pure Tcl
  test name 'md5-1.0' re-used; prior use in
  /local/src/tcllib/modules/md5/md5.test
  test name 'md5-1.1' re-used; prior use in
  /local/src/tcllib/modules/md5/md5.test
  test name 'md5-1.2' re-used; prior use in
  /local/src/tcllib/modules/md5/md5.test


tkt_uuid: 3501392fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: New Module: socks5
comment:
  Patch to add a new module for establishing connections via SOCKS 5 proxies.  The patch was generated against the 1.14 release tarball.


tkt_uuid: 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: 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: 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: 659238ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: ftp
priority: 6
foundin: None
resolution: Accepted
title: FTP Support for MDTM setting ModTime
comment:
  Some simple changes to allow setting of file modified 
  time on FTP servers that allow it (which apparently isnt 
  many)

  changes need to be made to file:
  tcl:/lib/tcllib1.3/ftp/ftp.tcl
  change is backward compatible & fails gracefully

  Also a simple change to tclVFS that requires the 
  change to the above ftp.tcl (I'll post it to the tclVFS 
  group)

  Note: ftpd's mdtm command should be patched to 
  support setting mdtm

  Sorry for the messy attached changes file, (and my 
  probably old files) I dont know a lot about CVS yet

  Also, I'm new to TCL, so someone should check my 
  work anyway.


tkt_uuid: 2988486fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: cmdline
priority: 5 Medium
foundin: None
resolution: Fixed
title: cmdline with ::argv does not update ::argc
comment:
  I realize this is not strictly a cmdline bug because it can work on any list of arguments.  However, I realized that if the ::argv global varname is passed then ::argc will not be updated, even though $::argv changes.

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


tkt_uuid: 3308105fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 1081971fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: None
title: &ob; and &cb; don't seem to exist?
comment:
  The htmlparse::PrepareHtml procedure has this line:

      return [string map [list "\{" "&ob;" "\}" "&cb;"
  "\\" "&bsl;"] $html]

  I don't think &ob; and &cb; are really HTML for {}.  At
  least they don't work in my browser.  Best just to use
  the numeric versions, &#123; and &#125;.


tkt_uuid: 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: 557043ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Accepted
title: badly formated mail causes infinite loop
comment:
  In mime::parsepart, the following two lines cause me
  trouble:
   # error "termination string missing in $state(content)"
   set line "--$boundary--"                                        

  Switching the comments (uncomment the first; comment out
  the second) solves the following problem:

  Mail with incorrectly terminated mime parts causes
  a "mime::initialize -file" to enter an infinite loop.

  A lot of adverts and spam have incorrectly formated
  mime parts... For example: specifying a boundary that
  doesn't exist. Also, some virus filters remove the part
  but may leave the reference.


tkt_uuid: 1400838fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: MessageDlg bug, LabelEntry bug, demo bug
comment:
  I have found 2 bugs in BWidgets and 1 bug in BWisgets-demo 
  (ActiveState Tcl/Tk 8.4 12 WindowsXP).
  BWidgets bug1: MessageDlg abort-retry-ignore -
  "-default must 
  not be """ 
  BWidgets bug2: Dialog focus bug with LabelEntry.
  Dialog draw LabelEntry - LabelEntry not request focus.
  When I change LabelEntry with tk-entry - all OK.

  BWidgets demo bug: Notebook page 'Basic' - 'Entry' 
  In entry command must be space before and after ';'.
  When I 
  press Enter on entry - error genrates. After adding
  space all 
  works ok.


tkt_uuid: 3613973fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: Build System & Testing
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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.


