# ticket

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

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


tkt_uuid: 534349ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 6
foundin: None
resolution: Rejected
title: add a "macro" macro to doctools...
comment:
  When prototyping new macros, it's a pain to have to 
  hand-edit the foreach loop in mpexpand that makes safe 
  interpreter aliases for the macros. It would also be 
  nice to be able to create ad hoc macros within a man 
  page.

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

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

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

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

  And then to use it in a document:

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

  ... and so on.

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

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

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

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


tkt_uuid: 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: 622927ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: ProgressBar update problem
comment:
  Hi,

  Duong.Nguyen@roads.vic.gov.au reported a problem with
  the ProgressBar widget on CLT. This was caused by the
  variable trace being temporarily disabled when running
  the trace command, and executing an 'update' in the
  trace command. I think replacing the 'update' command
  by 'update idletasks' will solve this problem.

  Attached you'll find the modified ProgressBar::_modify
  proc.

  Jos. 


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


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

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

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


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

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

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


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

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

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

  and now everything seems to be working fine.


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

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

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

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

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

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

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

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

  Thank you very much for your time and consideration.


tkt_uuid: 1777399fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ftp cause memory leak
comment:
  Hi, I'v use ftp package for a long duration execution.
  And found there is memory leak. Following is the top infomation. STProxy is the script I used.
  pls also found it in attachment.

  [fwang@pc3-5 ~]$ top -d 5 -p 4036 -n 2 -b
  top - 10:29:10 up 51 min,  5 users,  load average: 0.00, 0.04, 0.06
  Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
  Cpu(s):  1.8% us,  0.9% sy,  0.0% ni, 95.5% id,  1.7% wa,  0.0% hi,  0.0% si
  Mem:    507224k total,   380992k used,   126232k free,    41192k buffers
  Swap:  1015800k total,        0k used,  1015800k free,   206452k cached

    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
   4036 fwang     16   0 17212 3728 1520 S  0.0  0.7   0:03.82 STProxy



  [fwang@pc3-5 ~]$ top -d 5 -p 4036 -n 2 -b
  top - 11:08:51 up  1:31,  6 users,  load average: 0.05, 0.19, 0.30
  Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
  Cpu(s):  2.8% us,  3.0% sy,  3.8% ni, 88.0% id,  2.3% wa,  0.1% hi,  0.0% si
  Mem:    507224k total,   482360k used,    24864k free,    45496k buffers
  Swap:  1015800k total,        0k used,  1015800k free,   278360k cached

    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
   4036 fwang     16   0 22736 9128 1520 S  0.0  2.4   0:35.18 STProxy


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

  follwing code demonstrates the issue:

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

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

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

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

  Best regards,

  Martin Lemburg


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

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

  Regexps get it wrong...

  Michael


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

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


tkt_uuid: 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: 1393804fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: asn
priority: 5 Medium
foundin: None
resolution: Fixed
title: asnPeekByte contains a typo which prevents it from working
comment:
  procedure asn::asnPeekByte contains a typo:

  It starts with lines

   proc ::asn::asnPeekByte {data_var byte_var} {
      upvar $data_var data $byte_var $byte

  which obvoisly cause error "Cannot read byte - no such
  variable" 

  Should be 

   proc ::asn::asnPeekByte {data_var byte_var} {
      upvar $data_var data $byte_var byte


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

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


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

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

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


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

  Here is the correct code:


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

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


  Keith Vetter


tkt_uuid: 1641071fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: tklib :: tooltip
priority: 5 Medium
foundin: None
resolution: Fixed
title: Add alpha fading to tooltips
comment:
  This patch adds simple alpha-transparency fading to the tooltip package on platforms that support [wm attributes -alpha]. I find this adds a little bit of extra polish. Possibly might want an option to disable this behaviour.

  PS - the tracker is missing a category for the tooltip package.

  PPS - I find most changing the label to -bd 0 in tooltip::show looks "better" on Mac OS X/Aqua (i.e., looks more like the tooltips in native/Cocoa apps).


tkt_uuid: 3288977fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Accepted
title: client hangs on bad multi-line server responses
comment:
  If the server doesn't speak strict RFC-959 when it comes to multi-line responses, it can cause the client to hang.

  For example, this was causing Tcllib ftp code to have an infinite loop  and eat 100% cpu.

      RETR blah
      150 Opening BINARY mode data connection for blah (180 bytes).
      226 Transfer complete.
      QUIT
      221-You have transferred 180 bytes in 1 files.

      ^^^ notice no "221 Goodbye."

  Most likely the network I was using was dropping the last couple of packets after the client said QUIT, that included the "221 Goodbye" response that the code was waiting for.

  This is the same issue described in the latter half of 2813069. I couldn't upload files to it, so I created a new bug and have attached a patch.


tkt_uuid: 467835ffffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Invalid
title: tkchat retrieve menu item
comment:
  This patch adds a Retrieve menu item to the debug menu
  which delegates to tkchat::Retrieve and obtains the
  current HEAD revision from the SourceForge CVS tree.
  The user may then re-source from the new version.

  Taken from tkcon and modified slightly for tkchat.


tkt_uuid: 1213123fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: DropSite::register fails with multiple droptypes
comment:
  If you specify multiple droptypes to DropSite::register
  and one of the later droptypes does not contain all of
  the operations that an earlier type supported, the
  command will cause an error:

  toplevel .f
  frame .f.fr
  DropSite::register .f.fr -dropcmd foo -dropovercmd bar
  -droptypes {ABC {copy {} move {}} DEF {copy {}}}

  can't read "drop(DEF,mod,4)": no such variable

  I'm not sure about the BWidget drag'n'drop internals,
  but I believe the problem is caused by the failure to
  clear the "masklist" variable in dropsite.tcl:

  --- ..\lib\BWidget-1.7.0\dropsite.tcl   2004-01-23
  10:31:48.000000000 -0800
  +++ C:\Program
  Files\Fs2\Mips\Lib\BWidget-1.7.0\dropsite.tcl   
  2005-06-01 15:53:24.708250000 -0700
  @@ -150,6 +150,7 @@
           set drop(overcmd) $overcmd
           foreach {type ops} $types {
               set drop($type,ops) {}
  +            set masklist {}
               foreach {descop lmod} $ops {
                   if { ![llength $descop] || [llength
  $descop] > 3 } {
                       return -code error "invalid
  operation description \"$descop\""


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


tkt_uuid: 737770ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: csv
priority: 8
foundin: None
title: add example of alternate parsing to csv docs
comment:
  with the latest version of csv, there is now two
  behaviors with regards to the string "" .

  Documentation regarding the difference between the two
  behaviors
  and the expected modification to the data would be
  beneficial
  to developers.


tkt_uuid: 1492630fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: Installer
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Installer not creating tcllibc + related uuid issue
comment:
  installer.tcl (on windows at least) doesn't create the 
  tcllibc module - nor does INSTALL.txt mention how to 
  build it.

  I found out about 'sak.tcl critcl' through a c.l.t 
  article where the original poster was complaining 
  about slow pure tcl implementations.

  A missing tcllibc module means that the uuid package 
  at least, will fallback to Tcl only mode even though 
  critcl is installed.

  for uuid without tcllibc - the faster version can be 
  accessed by first package requiring critcl..
  then directly calling the c proc.

  e.g on a machine without tcllibc installed.

  %package require critcl
  0.35
  %package require uuid
  1.0.1
  %uuid::tostring [uuid::generate_c]
  <some guid>
  %time {uuid::tostring [uuid::generate_c]} 100
  150.0 microseconds per iteration
  %time {uuid::uuid generate}
  51560 microseconds per iteration

  As you can see there's a huge performance difference 
  (due to exec call to ipconfig I guess) so it seems 
  that the fast critcl version is usable without 
  tcllibc - yet the default in this case is to still use 
  the pure Tcl version.

  Note that if critcl is 'package required' after uuid 
  then you just get:
  invalid command name "uuid::generate_c"

  I guess I'm suggesting that either uuid shouldn't 
  depend on tcllibc being present - just critcl... 
  and/or that tcllibc should be built by the tcllib 
  installer and documented, or at least just explained 
  in INSTALL.txt.


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

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

  The last command fails, returning an error.

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

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

  Greetings,

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


tkt_uuid: 1774990fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 9 Immediate
foundin: None
resolution: Fixed
title: vwait dies when given varname with spaces
comment:
  When comm is loaded it overrides vwait, but has a bug in the implementation that manifests itself when the vwait variable has spaces in it. I get the error:

  wrong # args: should be "::comm::VwaitOrig name"
      while executing
  "vwait [::itcl::scope flag]"
  ...
      

  This is due to the following line of code in vwait.tcl:

  set code [catch {uplevel 1 ::comm::VwaitOrig $varname} res]

  I think that should be (note the use of list):

  set code [catch {uplevel 1 [list ::comm::VwaitOrig $varname]} res]

  As an aside, you may be saying "why would anyone use a variable name with spaces?". As you can see in the above error message, I'm vwait'ing on an itcl public variable, which resolves to something like "@itcl ::foo ::Foo::flag". When it gets eval'd by the upvar those spaces naturally cause havoc.


tkt_uuid: 1119279fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
resolution: Fixed
title: error in loading math::rationalfunctions pkg
comment:
  Please see the following error:

  hlavana-u5:53> tclsh
  % package require math::rationalfunctions
  couldn't read file "polynomials.tcl": no such file or
  directory
  % exit
  hlavana-u5:54> less
  /auto/ttsw/ActiveTcl/8.4.9/lib/tcllib1.7/math/rational_funcs.tcl

  # rational_funcs.tcl --
  #    Implement procedures to deal with rational functions
  #
  source polynomials.tcl
  package require math::polynomials
  ..

  The "source polynomials.tcl" cmd  is causing this
  problem. This line should be deleted because the
  following line "package require math::polynomials"
  loads the polynomials.tcl file correctly.

  Hemang.


tkt_uuid: 916668ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: cmdline
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: getoptions: handling of booleans undocumented
comment:
  Hi,

  from comp.lang.tcl:

  Why is it that the handling of boolean vars in
  cmdline::getoptions differs from that of other
  "datatypes" or rather that this is not mentioned in the
  docs?

  According to the manpage:
  "...optlist contains a list of lists where each element
  specifies an option in the form: flag default comment...."

  Consider the following example:


  package require cmdline
  set optlist [list {v 1 "be verbose"} \
     {f.arg "index.html" "some usage"}]
  if {[catch {array set params [cmdline::getoptions argv
  $optlist]} res]} {
      puts stderr "$res"
      exit
  }
  # ...process each options


  Invoked with -?:

   -v                   1
                       ^^^
   -f value             some usage <index.html>
   -help                Print this message
   -?                   Print this message


  The only way to avoid this incorrect usage string is
  _not_ to set a default value for booleans.
  I think this should be mentioned in the docs, shouldn't it?

  Regards,
  Andreas


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

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

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

  M.Hoffmann@hmk.info 


tkt_uuid: 3426178fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: json
priority: 5 Medium
foundin: None
resolution: Fixed
title: extra "$" in json::list2json
comment:
  perhaps I am misunderstanding the code, but it appears there is an extra "$" on line 315 of json.tcl in the function json::list2json. Currently creating a list and sending it to this functions produces what appears to be invalid json.

  Example 1:

  package require json
  set z [list {"first"} {"second"} {"third"}]
  json::list2json $z

  The output of the above code on my debian unstable system with tcl8.5 and tcllib-1.13 is:

  [$"first","second","third"]

  Note the extra $. I would expect the output to looks like this:

  ["first","second","third"]


tkt_uuid: 1948953fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ncgi: incomplete url encoding/decoding
comment:
  Se attachment for a reimplementation of encode/decode that supports non ASCII chars.

  Hope this helps


tkt_uuid: 810298ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Out of Date
title: ::fileutil::tempfile can't find temp dir with env
comment:
  ::fileutil::tempfile has taken its code to set tmpdir 
  for any platform from the wiki page 772.
  But the code on that page was wrong (now modified)
  . The proc tempfile tries to use the env variable 
  without making it global.
  On Mac it will crash.
  On windows and others it will always return current 
  directory.

  The code should look like this:
  switch $tcl_platform(platform) {
      unix {
  set tmpdir /tmp   # or even $::env(TMPDIR), at 
  times.
      } macintosh {
  set tmpdir $::env(TRASH_FOLDER)  ;# a better 
  place?
      } default {
  set tmpdir [pwd]
  catch {set tmpdir $::env(TMP)}
  catch {set tmpdir $::env(TEMP)}
      }
   }


tkt_uuid: 700829ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Invalid
title: Attempt to restart tkchat raises error
comment:
  I got the CVS head tkchat application from the
  activestate ftp site today.  I started it.  Later
  today, I received an email about an update, so I
  selected tkchat's retrieve script, followed by a
  restart.  The following error was raised (this is using
  tcl/tk 8.4.2):

  bad window path name ".refresh"
  bad window path name ".refresh"
      while executing
  "grid .ml .eMsg .post .refresh .mb -in .btm -sticky ews
  -padx 2 -pady 2"
      (procedure "CreateGUI" line 219)
      invoked from within
  "CreateGUI"
      (procedure "Init" line 104)
      invoked from within
  "Init"
      ("restart" arm line 7)
      invoked from within
  "switch -- $cmd {
  console {
      if {$::tkchat::_console} {
  console show
      } else {
  console hide
      }
  }
  reload {
      uplevel \#0 [list sou..."
      (procedure "Debug" line 2)
      invoked from within
  "Debug restart"
      ("reload" arm line 6)
      invoked from within
  "switch -- $cmd {
  console {
      if {$::tkchat::_console} {
  console show
      } else {
  console hide
      }
  }
  reload {
      uplevel \#0 [list sou..."
      (procedure "Debug" line 2)
      invoked from within
  "Debug reload"
      (procedure "Retrieve" line 32)
      invoked from within
  "Retrieve"
      ("retrieve" arm line 2)
      invoked from within
  "switch -- $cmd {
  console {
      if {$::tkchat::_console} {
  console show
      } else {
  console hide
      }
  }
  reload {
      uplevel \#0 [list sou..."
      (procedure "::tkchat::Debug" line 2)
      invoked from within
  "::tkchat::Debug retrieve"
      invoked from within
  ".#mbar.#mbar#dbg invoke active"
      ("uplevel" body line 1)
      invoked from within
  "uplevel #0 [list $w invoke active]"
      (procedure "tk::MenuInvoke" line 47)
      invoked from within
  "tk::MenuInvoke .#mbar.#mbar#dbg 1"
      (command bound to event)


tkt_uuid: 1280862fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: profiler
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: profiler - errorInfo modifiable in enter- & leaveHandler
comment:
  enterHandler and leaveHandler use catch statements to
  test for the existance of certain namespace varibales.

  if these catch statements fire, they modify errorInfo.

  catching an error, and trying to log errorInfo can log
  the wrong information if you are visiting a function
  for the first time.

  can't read
  "::profiler::descendants(process_message,::errlog)": no
  such element in array
      (reading value of variable to increment)
      invoked from within
  "incr ::profiler::descendants($caller,$name)"


  I added
     global errorInfo

      set origError $errorInfo

  to the beginning and

   set errorInfo $origError

  to the end of both enterHandler and leaveHandler.


tkt_uuid: 561391ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: error in ListBox::move
comment:
  Looks like a bug in ListBox::move: when you move an 
  item to "end", the screen messes up. Fix:

  change lines 392-396

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

  to
      set data(items) [linsert $data(items) $index $item]

  (effectively deleting 392-394, 396)

  in listbox.tcl (see attached file)


tkt_uuid: 1774859fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: sasl
priority: 5 Medium
foundin: None
resolution: Accepted
title: Process auth error in X-GOOGLE-TOKEN SASL mechanism
comment:
  Currently incorrect authentication using X-GOOGLE-TOKEN SASL mechanism returns strange error "can't read "g(SID)": no such variable".

  The attached patch allows to return more meanighful message.


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


tkt_uuid: 1464923fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: dependecy on mkinstalldirs not defined
comment:
  When bwidget comes from the CVS, an autoconf needs to
  occur to get a working configure. During that process,
  if the developer has only extracted the files for
  bwidget, the autoconf discovers that the config/tcl.m4
  fileis missing.  However, it doesn't check for the
  config/mkinstalldirs command, and configure doesn't
  check for it either. So the developer doesn't discover,
  until installation time, that bwidget has a dependency
  on it.

   


tkt_uuid: 3599955fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: themed Entry: Error "unknown command" on keyboard focus
comment:
  Error 'invalid command name ".#BWidget.#ttk::entry"' arises in themed mode when an Entry widget should get focus by the tab key.

  The temporary widget creation fails due to the "::" in the command name of ttk widgets.

  As a fix, any "::" is replaced by "__".

  The patch is attached, as the repository is not ready at the moment, due to fossil transition.


tkt_uuid: 3578420fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: generator
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: [exists] and colorful generator names
comment:
  [exists] is currently defined like this:

  proc exists generator { expr {[llength [info commands $generator]] != 0} }

  this could fail if $generator contains interpreted [string match] characters.  Also, the following fix is more performant (thanks kbk):

  proc exists generator { expr {[namespace which $generator] ne {}} }


tkt_uuid: 1007764fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tklib :: ctext
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ctext - Clarifications needed in the documentation
comment:
  I would like to point out a few missing details in the
  documentation of ctext:

  1. You need to use the command "hightlight" when the
  widget has been filled to get the colouring to show.
  (Presumably also after each new addClass command)

  2. You need to use unique tag names if you want more
  than one regular expression to work for the same
  colouring (e.g. alternative formats for comment)

  3. Line numbering could interfere with the -elide
  option. It appears possible to use the linemap
  facilities to make the two work together, but this has
  not been described in any detail.


tkt_uuid: 1416819fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tie
priority: 5 Medium
foundin: None
resolution: Fixed
title: tie: test suite bug
comment:
  with -debug 1:
  modules/tie/tie_file.test
  - tcllib::testutils 1.0
  - snit 1.1
  - tie 1.0.1
  * tie::std::file 1.0.1
  WARNING: removeFile removing
  "/local/src/tcllib/jtest/journal":
    not created by makeFile
  WARNING: removeFile removing
  "/local/src/tcllib/jtest/journal":
    not a file


tkt_uuid: 1150714fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: uuid
priority: 5 Medium
foundin: None
resolution: Fixed
title: uuid should not make socket calls
comment:
  ::uuid::generate_tcl contains the following code:

  set s [socket -server void -myaddr [info hostname] 0]

  Creating a server socket may be a privileged operation. 
  With certain firewalls, it may produce a warning 
  message, which is inappropriate for many applications 
  that might want to create UUIDs.


tkt_uuid: 1985214fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: Typos in Quick Help and command parser
comment:
  Hi Pat

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

  Patch attached.

  kind regards
  -- Matthias Kraft


tkt_uuid: 1645082fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tklib: plotchart
priority: 5 Medium
foundin: None
title: Add option to draw tick lines
comment:
  Keith Vetter wants to use the grid subcommand to generate  
  lines at the tickmarks. This would be easier if we add an option to draw ticklines instead of tickmarks.


tkt_uuid: 464560ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Fixed
title: ncgi::redirect request_uri
comment:
  In the ncgi::redirect procedure, a variable called 
  request_uri is created, depending upon whether or not 
  env(REQUEST_URI) exists.

  Later in the procedure, env(REQUEST_URI) is used as 
  part of a regexp evaluation, when instead, the 
  request_uri variable should be used. The request_uri 
  variable should be used because the env(REQUEST_URI) 
  variable may not exist. (the source makes a comment 
  w/regard to not all servers having the leading 
  protocol spec...)

  Thanks,


tkt_uuid: 823346ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Accepted
title: Minor updates to htmlparse
comment:
  The attached patch contains some minor updates to
  htmlparse, so that it uses string functions in some
  places where regexp/regsub isn't needed and simplifies
  some code.

  Changes:
  MapEscapes now uses string map where possible.
  DoMap eliminated
  parse now uses string last for detection of incomplete
  html, instead of the 10x slower regexp...
  CClass eliminated, and re rewritten with \s shorthands
  in parse
   
  Overall performance improvement is minor (1% vor 150k
  using debugCallback), but MapEscapes should be faster
  than before.


tkt_uuid: 479174ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Fixed
title: SMTP documentation unclear
comment:
  -recipients 
    A string containing one or more 822-style address specifications. 

  Space-separated? Comma-separated? Or is it really a list inside a
  string? 


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

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

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

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

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

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


tkt_uuid: 556077ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 3 Low
foundin: None
resolution: Fixed
title: Tree::see should only scroll vertically
comment:
  The Tree::see $n command scrolls both horizontally and
  vertically to bring the label for node $n in view. 
  However, if the label is too large to fit within the
  window, the horizontal scrolling obscures the tree
  controls (icons and checkboxes).

  The attached patch fixes this problem by removing the
  horizontal scroll entirely.


tkt_uuid: 1966608fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: ncgi example has 2 bugs
comment:
  To make the example on the ncgi page working:

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

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


tkt_uuid: 535066ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: tklib: request for new module
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: menu management module for tklib
comment:
  Attached (I hope) is a menu management package,
  ala BWidget MainFrame.
  README contains documentation. 


tkt_uuid: 2835712fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: statistics
priority: 5 Medium
foundin: None
resolution: Fixed
title: interval-mean-stdev Seems to have a hard-coded variable n
comment:
  set erf1    0.682689492137
  set scaled1StdDev  [::math::statistics::interval-mean-stdev $data $erf1]
  can't read "student_t_table": no such variable

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


tkt_uuid: 3598733fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Build System & Testing
priority: 9 Immediate
foundin: None
resolution: Fixed
title: Tcl 8.6.0 and tcllib 1.14 are not synced
comment:
  $ echo "package require struct" | tclsh
  version conflict for package "TclOO": have 1.0, need 0.6.1

  tcllib 1.14 and tcl 8.6.0 (not beta) are not playing nice together
  this is fixed in tcllib already, but they never bumped updated release, so my distro didn't receive it

  if someone responsible for tcllib is here, please bump another release of tcllib, this way users will get synced tcl and tcllib.

  I initially put in into Tcl bug tracker (https://sourceforge.net/tracker/?func=detail&aid=3598711&group_id=10894&atid=110894), but i was advised to move it here.


tkt_uuid: 1608820fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: ncgi
priority: 4
foundin: None
resolution: Not Applicable Here
title: Doc update for ncgi - examples needed
comment:
  A request on comp.lang.tcl revealed a lack of examples for basic usage of ncgi. Here's the basic example I replied with, but we probably need some others:

    #!/usr/bin/env tclsh
    package require ncgi
    ncgi::parse
    set pattern [ncgi::value vars "*"]
    puts "Content-Type: text/plain\n"
    puts "Environment Variables matching: $pattern"
    parray ::env $pattern


tkt_uuid: 1553919fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Duplicate
title: ftp::NList - incorrect result when spaces in filename (win)
comment:
  eg. ftp::NList $i_h_ftp $i_dir
  returns "Copy abc.txt of"

  =>Name of file on windows "Copy of abc.txt"

  On windows, files can contain spaces.
  All parts (split by spaces) of the filename are returned.


tkt_uuid: 674330ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: dns
priority: 5 Medium
foundin: None
resolution: Fixed
title: dns: Tcl requirement not specified
comment:
  package require Tcl $requiredVersion

  should be added to the package.  Would
  be nice to add checks to the index script
  (pkgIndex.tcl file) as in other tcllib packages
  as well.


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

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

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

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

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

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


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

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

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

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

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

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

  A patch will follow.


tkt_uuid: 1272730fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: asn
priority: 5 Medium
foundin: None
resolution: Invalid
title: asn - failed tests with Tcl 8.5
comment:
  With HEAD (Tcl 8.5a4):

    tclsh8.5 sak.tcl test asn

  shows failures on Solaris:

  ==== asn-2.19 integer FAILED
  ==== Contents of test case:

      binary scan [asn::asnInteger $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  8388608 02050000800000
  ---- Result should have been (exact matching):
  8388608 020400800000
  ==== asn-2.19 FAILED


  ==== asn-4.19 enum FAILED
  ==== Contents of test case:

      binary scan [asn::asnEnumeration $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  8388608 0A050000800000
  ---- Result should have been (exact matching):
  8388608 0A0400800000
  ==== asn-4.19 FAILED


  ==== asn-2.20 integer FAILED
  ==== Contents of test case:

      binary scan [asn::asnInteger $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  8388609 02050000800001
  ---- Result should have been (exact matching):
  8388609 020400800001
  ==== asn-2.20 FAILED


  ==== asn-4.20 enum FAILED
  ==== Contents of test case:

      binary scan [asn::asnEnumeration $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  8388609 0A050000800001
  ---- Result should have been (exact matching):
  8388609 0A0400800001
  ==== asn-4.20 FAILED


  ==== asn-2.21 integer FAILED
  ==== Contents of test case:

      binary scan [asn::asnInteger $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  16777216 02050001000000
  ---- Result should have been (exact matching):
  16777216 020401000000
  ==== asn-2.21 FAILED


  ==== asn-4.21 enum FAILED
  ==== Contents of test case:

      binary scan [asn::asnEnumeration $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  16777216 0A050001000000
  ---- Result should have been (exact matching):
  16777216 0A0401000000
  ==== asn-4.21 FAILED


  ==== asn-2.24 integer FAILED
  ==== Contents of test case:

      binary scan [asn::asnInteger $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  -8388609 0205FFFF7FFFFF
  ---- Result should have been (exact matching):
  -8388609 0204FF7FFFFF
  ==== asn-2.24 FAILED


  ==== asn-4.24 enum FAILED
  ==== Contents of test case:

      binary scan [asn::asnEnumeration $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  -8388609 0A05FFFF7FFFFF
  ---- Result should have been (exact matching):
  -8388609 0A04FF7FFFFF
  ==== asn-4.24 FAILED


  ==== asn-2.26 integer FAILED
  ==== Contents of test case:

      binary scan [asn::asnInteger $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  -2147483648 0205FF80000000
  ---- Result should have been (exact matching):
  -2147483648 020480000000
  ==== asn-2.26 FAILED


  ==== asn-4.26 enum FAILED
  ==== Contents of test case:

      binary scan [asn::asnEnumeration $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  -2147483648 0A05FF80000000
  ---- Result should have been (exact matching):
  -2147483648 0A0480000000
  ==== asn-4.26 FAILED


  ==== asn-2.27 integer FAILED
  ==== Contents of test case:

      binary scan [asn::asnInteger $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  2147483647 0205007FFFFFFF
  ---- Result should have been (exact matching):
  2147483647 02047FFFFFFF
  ==== asn-2.27 FAILED


  ==== asn-4.27 enum FAILED
  ==== Contents of test case:

      binary scan [asn::asnEnumeration $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  2147483647 0A05007FFFFFFF
  ---- Result should have been (exact matching):
  2147483647 0A047FFFFFFF
  ==== asn-4.27 FAILED


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

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

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

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

  package require tablelist

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

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

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

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

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

  pack .tl1 .tl2 .tl3 .b


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

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


tkt_uuid: 438748ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: Misc typo fixes in man pages
comment:
  Here are some fixes for the tcllib man pages.
  The typos fixed are pretty consistent.  The
  comment lines added allow Sun man command to format
  the pages.


tkt_uuid: 1272721fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: units
priority: 5 Medium
foundin: None
resolution: Fixed
title: failed tests
comment:
  As part of a complete

    tclsh sak.tcl test

  run:

  ==== units-9.1 non-SI calorie FAILED
  ==== Contents of test case:

      ::units::convert 1.0calorie joule

  ---- Result was:
  4.1867999999999999
  ---- Result should have been (exact matching):
  4.1868
  ==== units-9.1 FAILED


  ==== units-10.1 leading zero is not octal FAILED
  ==== Contents of test case:

      ::units::convert 09mm meter

  ---- Result was:
  0.0090000000000000011
  ---- Result should have been (exact matching):
  0.009
  ==== units-10.1 FAILED

  No failures from

    tclsh sak.tcl test units

  so there's a tcl_precision leak
  between test files that should be
  fixed, and the test should be
  robust against it anyway.


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

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

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

  (Thanks to davidw for helping to test this!)


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

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

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

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

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

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

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


tkt_uuid: 1234478fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: bibtex
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Add support for writing Bibtex files
comment:
  It would be nice if support for writing bibtex files
  was added to the module, for example to export bibtex
  from a database or providing cut&copy ready bibtex
  snippets on a web page (like the ones offered by
  citeseer for example)


tkt_uuid: 2822970fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: ScrollableFrame background
comment:
  Here's another small patch for ScrollableFrame.
  When the frame does not take up the whole canvas space, the canvas background shows through. This is more apparent when using ttk, because the canvas is not themed. However, here's an example without ttk:

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


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

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

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

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

  and similar for the MONTHS_SHORT array.

  Christopher


tkt_uuid: 746160ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Duplicate
title: hang on parsing
comment:
  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: 1009543fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Rejected
title: Better handling of up/down in text widgets
comment:
  This is in regards to the tk text windows.

  I find that the up/down keys do not work as one would
  expect in a text box that includes wrapped lines. It
  does not go to the character immediately above, rather
  goes to the character at the same index in the 'line'
  above which could actually be a number of lines up.

  Therefore I recommend changing the ::tk::TextUpDownLine
  to something more along the lines of below.

  Just a quick note it is not fully complete. I have not
  added the ::tk::Priv as before (which should be added)
  and there is a small bug with it when the cursor is at
  the very end of the line, although I believe that bug
  is due possibly to a bug in the return of [$inputbox
  bbox insert] when the character is at the end of the line.
  I also have it as 2 fucntions which could be
  reorganised to be 1 function as the old code.

  #///////////////////////////////////////////////////////////////////////////////
  # UpKeyPressed (inputbox)
  # Called by a window when the user uses the up key in
  a text box. It returns
  # the index of the character 1 line above the
  insertion cursor
  proc UpKeyPressed { inputbox } {
  $inputbox see insert

  set bbox [$inputbox bbox insert]
  set xpos [expr [lindex $bbox 0]+[lindex $bbox 2]/2]
  set ypos [lindex $bbox 1]
  set height [lindex $bbox 3]
  if { $ypos > $height } {
  return [$inputbox index "@$xpos,[expr $ypos-$height]"]
  } else {
  $inputbox yview scroll -1 units
  update
  set ypos [lindex [$inputbox bbox insert] 1]
  set height [lindex [$inputbox bbox insert] 3]
  if { $ypos > $height } {
  return [$inputbox index "@$xpos,[expr $ypos-$height]"]
  }
  }
  return [$inputbox index insert]
  }
  #///////////////////////////////////////////////////////////////////////////////


  #///////////////////////////////////////////////////////////////////////////////
  # DownKeyPressed (inputbox)
  # Called by a window when the user uses the down key
  in a text box. It returns
  # the index of the character 1 line below the
  insertion cursor
  proc DownKeyPressed { inputbox } {
  $inputbox see insert

  set bbox [$inputbox bbox insert]
  set xpos [expr [lindex $bbox 0]+[lindex $bbox 2]/2]
  set ypos [lindex $bbox 1]
  set height [lindex $bbox 3]
  set inputboxheight [lindex [$inputbox configure
  -height] end]
  if { [expr $ypos+$height] < [expr
  $inputboxheight*$height] } {
  return [$inputbox index "@$xpos,[expr $ypos+$height]"]
  } else {
  $inputbox yview scroll +1 units
  update
  set ypos [lindex [$inputbox bbox insert] 1]
  set height [lindex [$inputbox bbox insert] 3]
  set inputboxheight [lindex [$inputbox configure
  -height] end]
  if { [expr $ypos+$height] < [expr
  $inputboxheight*$height] } {
  return [$inputbox index "@$xpos,[expr $ypos+$height]"]
  }
  }
  return [$inputbox index insert]
  }
  #///////////////////////////////////////////////////////////////////////////////


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

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

  The attached patch solves this.


tkt_uuid: 480227ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Fixed
title: comm.n manpage needs update
comment:
  (per request)

  comm.tcl was updated to use namespaces during
  integration into tcllib, but the documentation was not
  updated to reflect this.

  (Also: we should probably remove comm.n.html from the
  CVS repository, since it was generated from comm.n.)

  (Also also: shouldn't  there be a 'Documentation'
  Tracker category?)


tkt_uuid: 1011831fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: should use the same code as http package
comment:
  ncgi should use the http package's mapReply command to
  do encoding instead of copying the code verbatim. 
  Promote code-reuse!

  Thanks
  Dave


tkt_uuid: 621331ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Allow delete of selected Tree nodes
comment:
  Hi,

  damon@unreality.com (Damon Courtney) reported a problem
  on CLT where deletion of selected nodes in a Tree
  widget failed. Attached is a new Tree::delete proc
  which fixes this problem.

  Jos.


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

  tclsh8.6 ./sak.tcl validate

  I get following error

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


tkt_uuid: 538922ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Enhance parseaddress to cope with spaces
comment:
  Bug 519594 noted that parseaddress can't cope with spaces.  The bug was closed with a note 
  that parseaddress does what it was designed to do: parse address lists in well-formed SMTP 
  headers.  It would be very helpful if parseaddress was enhanced (or supplimented by another 
  function) so user-ended addresses in e-mail clients could be parsed effectively.  The original bug 
  has some examples.


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

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


tkt_uuid: 720348ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
resolution: Accepted
title: patch to support drop in cgraph library
comment:
  Hi,

  adding this at the top of graph.tcl

  # Try to load the cgraph package
  if {![catch {
      package require cgraph 0.6
      }]} {
          # the cgraph package takes over, so we can return
          return
      }
  }

  Trivial patch to support cgraph as drop in replacement
  of ::struct::graph.

  I pushed cgraph to version 0.6.

  http://physnet.uni-oldenburg.de/~schlenkt/tcl/graph/

  Michael


tkt_uuid: 1961881fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 6
foundin: None
resolution: Fixed
title: mime - termination string missing error
comment:
  See bug 631314 for some past history of this.

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

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

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


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

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


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


tkt_uuid: 416799ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Accepted
title: A new datastructure, matrix
comment:
  The attached archive provides documentation, testsuite
  and code for an addition to the "struct" module, a
  matrix object.


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

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


tkt_uuid: 1800608fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: dtplite html output: title, meta keywords + description
comment:
  The HTML output from dtplite should include meta keywords and description in the head of the document. The title should reflect the contents of the page.

  Here's a current example:

  http://naviserver.sourceforge.net/n/naviserver/files/ns_return.html


  The HTML title is:

    ns_return - NaviServer Built-in Commands

  It should be:

    ns_return - Return a complete HTTP response

  There are many commands in the same section, but they all have different descriptions, and this useful info should be presented first to users/search engines.


  The meta-keywords should be:

  <meta name="keywords" content="ns_return, ns_returnfile, ns_returnfp, ns_respond, charset, encoding, response, return, status">

  i.e. it should include all the commands which are documented on that page, and they should appear before the words in the 'keywords' section of the man page. None of the 'see also' entries should be present.



  The meta-description should be:

  <meta name="description" content="These commands are used to construct a complete HTTP response and return it to the requesting client. The response may be transcoded into a different encoding, compressed and/or sent in chunks as automatically negotiated by the client and server settings.">

  i.e. it should be the first paragraph of the 'description' section of the man page.


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


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

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

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

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


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

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

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

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

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

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

  Thanks in advance.


tkt_uuid: 913149ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: log
priority: 7 High
foundin: None
resolution: Fixed
title: log package should not start log by default
comment:
  merely requiring the log package and using the
  statements cause logging to occur.  I think there
  should be distinct individual commands between
  declaring the *use* of the log package and actually
  wanting logging to occur.

  At a minimum, logging levels debug to warning should
  not log by default.


tkt_uuid: 2055837fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: jpeg
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Bad InteropIFD directory causes crash
comment:
  Some of my images crash the GetExif function with the following error:

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

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

  exiftool 7.30 reports a warning "Bad InteropIFD directory".

  I added a length check as a hot fix:

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

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

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


tkt_uuid: 940651ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
resolution: Fixed
title: error in ::csv::read2matrix
comment:
  in csv.tcl (line132)
  has to be a '5' instead a '4'.

  case '4' occures twice!


   switch -exact -- [llength $args] {

  .
  .
  .
  5 { 
      foreach {a b c d e} $args break
              if {![string equal $a "-alternate"]} {
                  return -code error "wrong#args: Should
  be ?-alternate? chan m ?separator? ?expand?"
              }
              set alternate 1

              set chan    $b
              set m       $c
              set sepChar $d
              set expand  $e
          }
  .
  .
  .
  }


tkt_uuid: 701288ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Accepted
title: Version 1.26 mods cause NList to fail
comment:
  Following simple example works in version 1.25, but
  fails in 1.26 & 1.27:

  package require ftp
  set s [ftp::Open ftp.marine.csiro.au anonymous \
  Harvey.Davies@csiro.au -mode passive]
  ftp::NList $s

  Following patch fixes problem (reverts line 2754 to
  version 1.25)

  2754c2754
  <     switch -- $ftp(State) {
  ---
  >     switch -regexp -- $ftp(State) {


tkt_uuid: 614591ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::namespace::cmd vs namespace::cmd
comment:
  In some modules - control and mime, for instance,
  commands don't start with a leading '::'.  In most of
  the rest of them, :: is used.  This should be
  consistent throughout.


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

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



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



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

  SSYYNNOOPPSSIISS
         package require ipExtension



  AAUUTTHHOORRSS
         Aamer Akhter / aakhter@cisco.com


  SSUUPPPPOORRTT
         aakhter@cisco.com


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


  RREEQQUUIIRREEMMEENNTTSS
         package require logger
         package require ip



  NNOOTTEESS
         1.



  PPRROOCCEEDDUURREESS
         ::ip::prefixToNative




                convert from dotted from to native (hex) form




                       prefixToNative <prefix>



                Options:



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



                Return values:



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



                Examples:



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




         ::ip::nativeToPrefix




                convert from native (hex) form to dotted form




                       nativeToPrefix <native>



                Options:



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



                Return values:



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



                Examples:



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




         ::ip::intToString




                convert from an integer/hex to dotted form




                       intToString <integer/hex>



                Options:



                       <integer>
                           ip address in integer form



                Return values:



                       ip address in dotted form



                Examples:



                       ip::intToString 4294967295
                       255.255.255.255




         ::ip::ToInteger




                convert dotted form ip to integer




                       ToInteger <ipaddr>



                Options:



                       <ipaddr>
                           decimal dotted from ip address



                Return values:



                       integer form of <ipaddr>



                Examples:



                       % ::ip::ToInteger 1.1.1.0
                       16843008




         ::ip::ToHex




                convert dotted form ip to hex




                       ToHex <ipaddr>



                Options:



                       <ipaddr>
                           decimal dotted from ip address



                Return values:



                       hex form of <ipaddr>



                Examples:



                       % ::ip::ToHex 1.1.1.0
                       0x01010100




         ::ip::MaskToInt




                convert mask to integer




                       MaskToInt <mask>



                Options:



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



                Return values:



                       integer form of mask



                Examples:



                       ::ip::MaskToInt 24
                       4294967040




         ::ip::broadcastAddress




                return broadcast address given prefix




                       broadcastAddress <prefix>



                Options:



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



                Return values:



                       ipaddress of broadcast



                Examples:



                       ::ip::broadcastAddress 1.1.1.0/24
                       1.1.1.255

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




         ::ip::MaskToLength




                converts dotted or integer form of mask
  to length




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



                Options:



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



                Return values:



                       prefix length



                Examples:



                       ::ip::MaskToLength 0xffffff00
                       24

                       % ::ip::MaskToLength 255.255.255.0
                       24




         ::ip::LengthToMask




                converts mask length to dotted mask form




                       LengthToMask <maskLength>



                Options:



                       <maskLength>
                           mask length



                Return values:



                       mask in dotted form



                Examples:



                       ::ip::LengthToMask 24
                       255.255.255.0




         ::ip::nextNet




                returns next an ipaddress in same
  position in next network




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



                Options:



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



                Return values:



                       ipaddress in same position in next
  network in hex




         ::ip::isOverlap




                checks to see if prefixes overlap




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



                Options:



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



                Return values:



                       1 if there is an overlap



                Examples:



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

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




         ::ip::isOverlapNative




                checks to see if prefixes overlap
  (optimized native form)




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



                Options:



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



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

                Return values:



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



                Examples:



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

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




         ::ip::IpToLayer2Multicast




                converts ipv4 address to a layer 2
  multicast address




                       IpToLayer2Multicast <ipaddr>



                Options:



                       <ipaddr>
                           ipaddress in dotted form



                Return values:



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



                Examples:



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




         ::ip::IpHostFromPrefix




                gives back a host address from a prefix




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



                Options:



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



                Return values:



                       ip address



                Examples:



                       %::ip::IpHostFromPrefix  1.1.1.5/24
                       1.1.1.1

                       %::ip::IpHostFromPrefix  1.1.1.1/32
                       1.1.1.1




         ::ip::reduceToAggregates




                finds nets that overlap and filters out
  the more specifc nets




                       ::ip::reduceToAggregates <list of
  ipprefixes>



                Options:



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



                Return values:



                       non-overlapping ip prefixes



                Examples:




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




         ::ip::longestPrefixMatch




                given host IP finds longest prefix match
  from set of prefixes




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



                Options:



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



                Return values:



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



                Examples:



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




         ::ip::cmpDotIP




                helper function for dotted ip address for
  use in lsort




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



                Options:



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



                Return values:



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



                Examples:



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








  ATS                                  Cisco            
       ipExtension.tcl(l)


tkt_uuid: 3612645fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: aes
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: aes decrypt fails with -in option
comment:
  platform details: 

  1. Tcl - 8.5.14 
  2. Tcllib - 1.15
  3. aes - 1.1

  Test program: 

      package require aes 

      set key [binary format a32 0123456789012345678901234567890123456789] 

      # Encrypt 
      set outfl [open /tmp/aes.out wb+] 
      aes::aes -key $key -out $outfl "Hello World Tcl" 
      close $outfl 

      # Decrypt 
      set infl [open /tmp/aes.out rb] 
      set outfl [open /tmp/decrypt.txt w+] 
      aes::aes -dir decrypt -key $key -in $infl -out $outfl 
      close $infl 
      close $outfl 


  Issue: 

  When I open the decrypt.txt, I get extra garbage after the text "Hello World Tcl".
  It works fine if I give the data to decrypt without -in option (ie., [read $infl]


tkt_uuid: 1429405fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 6
foundin: None
resolution: None
title: bwidget - Incorrect pkgIndex.tcl
comment:
  The package index of bwidget refers to a non-existent
  file "ctrlframe.tcl".

  {ctrlframe.tcl source {ControlFrame
  ControlFrame::create ControlFrame::use}}


tkt_uuid: 833486ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pop3
priority: 8
foundin: None
resolution: Fixed
title: Can't delete messages one at a time
comment:
  There are three messages in my test mailbox.  For each,
  I try to retrieve it and then delete it.  After each
  deletion, STAT reports one fewer message in the
  mailbox, as specified in RFC I believe. 
  ::pop3::retrieve and ::pop3::delete override the
  (default or user-specified) "end" index with the STAT
  message count if $end > $count.   This causes the
  retrieval/deletion to fail. 

  Here's a trimmed-down sequence showing the problem:
  % set s [::pop3::open localhost user password]
  % ::pop3::delete $s 1
  debug     pop3 sock1872 >>> STAT
  debug     pop3 sock1872 <<< +OK 3 2661
  debug     pop3 sock1872 >>> LAST
  debug     pop3 sock1872 <<< +OK 0
  debug     pop3 sock1872 >>> DELE 1
  debug     pop3 sock1872 <<< +OK Message 1 deleted
  % ::pop3::delete $s 2
  debug     pop3 sock1872 >>> STAT
  debug     pop3 sock1872 <<< +OK 2 1774
  debug     pop3 sock1872 >>> LAST
  debug     pop3 sock1872 <<< +OK 1
  debug     pop3 sock1872 >>> DELE 2
  debug     pop3 sock1872 <<< +OK Message 2 deleted
  % ::pop3::delete $s 3
  debug     pop3 sock1872 >>> STAT
  debug     pop3 sock1872 <<< +OK 1 887
  debug     pop3 sock1872 >>> LAST
  debug     pop3 sock1872 <<< +OK 2
  % ::pop3::close $s
  debug     pop3 sock1872 >>> QUIT
  debug     pop3 sock1872 <<< +OK localhost POP3 server
  closing connection

  Note that all messages would be deleted if the order of
  deletion was instead 3, 2, 1.


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

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

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

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

  Michael


tkt_uuid: 952391ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
title: Add new optimisation and statistics procedures
comment:
  The work by myself and others as published on the Wiki
  should be added to the math module:
  - Optimisation procedures
  - Interpolation techniques
  - Cluster analysis
  - Discrete and Fast Fourier Transform
  - Linear regression (not on the Wiki yet)
  - Complex numbers 

  The work involved:
  - Clean up the code
  - Define clear test cases
  - Write up the documentation

  NOTE: This is just a reminder for myself, as I am 
  willing to prepare the addition.


tkt_uuid: 494388ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
title: Section references & Example sections
comment:
  Extend the format of doctools manpages to allow for 
  markup of section references and example 
  sections/paragraphs.


tkt_uuid: 528433ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
resolution: Duplicate
title: Update for "calculus" module
comment:
  Sorry, I am not quite sure how to upload new versions
  of the source code, so I use the bug tracking system
  for this.

  The attached file is an update for the calculus module:
  improved sources, improved documentation.


tkt_uuid: 1664626fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: blowfish
priority: 5 Medium
foundin: None
resolution: Accepted
title: s/token/Key/ in blowfish::Chunk
comment:
  The blowfish::Chunk procedure has the line
   upvar #0 $token state
  but is not actually passed a token argument. Instead, it seems the Key argument should be used:
   upvar #0 $Key state

  The attached minimal patch fixes this (apply from within the modules/blowfish dir).


tkt_uuid: 909104ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: tkchat - interface: can't send errors to /dev/null
comment:
  Debug->Error Logging->To File... has trouble setting
  destination to /dev/null

  complains about overwriting an existing file.


tkt_uuid: 1474629fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Duplicate
title: BWidget::place wrong placement when above or left
comment:
  BWidget::place (used, for example, by ComboBox) does
  the wrong thing when something has to be placed above
  or to the left. Instead of placing as expected, the
  placement is made somewhere off the top or left-hand
  side of the screen.

  This seems to be because the calculation for left or
  above placement is wrong. Instead of $x0-$sw and
  $y0-$sh, respectively, the calculations should be
  $x0-$w and $y0-$h. The former takes the position of the
  reference widget and subtracts from it the dimension of
  the screen. This is incorrect. The latter takes the
  position of the reference widget and subtracts from it
  the dimension of the widget being placed, resulting in
  correct placement.

  This mistake appears several times throughout the
  BWidget::place procedure.

  Bug submitted by Mario Becroft <mb@gem.win.co.nz>


tkt_uuid: 1753433fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: math
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Code and man page for lognormal income distribution library
comment:
  Hello,

  I was invited by Arjen Markus to submit my code for a lognormal income distribution library. Thanks for asking! I'm uploading a copy of the source (released under a BSD license or whatever will make it compatible with tcllib).

  In the zip file I'm also including: a non-groffed man page (plain ascii), a test suite (comparing results to results obtained from Excel), and an example application file.

  Eric


tkt_uuid: 1145523fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: bwidget - progressbar divide by zero
comment:
  BWidget version 1.7
  progressbar.tcl line ~152 in proc ProgressBar::_modify

  Where the "max" is determined from the widget's option
  "-maximum". It is possible if the user configured the
  -maximum to be 0, that you will get a divide by zero error.

  While this shouldn't happen often, it is reasonable to
  assume that the user might try to set this value to 0.
  The progress bar should either throw an error
  immediately when the user configures the widget to have
  -maximum that is unacceptable or the progress bar
  should handle the value.

  adding

    if {$max == 0} { set max 1}

  just after [Widget::getoption $path -maximum] call
  fixes this the divide by 0 error.


tkt_uuid: 1234831fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: runtime-error when owner of file is wrong
comment:
  Hi,

  I do a anonymous ftp from a UNIX machine to a "windows
  2000 server" (in passive mode):

  The owner of the file is Administrator, i try to
  overwrite it
  with anonymous account (i-user on windows).

  This should give a ftp error 550 instead I get 
  the error at the end of this post.

  After deleting the files and re-creating them with
  anonymous account my problem was solved, small
  non-blocking issue for me...

  Regards,

  Christophe

  :<<
  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 -
  2 {
                      set ftp(State) put_close
                  }
                  default {
              ..."
      ("put_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 78)
      invoked from within
  "::ftp::StateHandler 0 sock5"
  >>


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

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

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

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

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


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

  Suitable syntax for alternatives would be

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

  e.g.

    [alt [arg boolean] [const auto]]

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

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

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

  In line with that, repetition could have the syntax

    [rep {word} ...]

  and be naively implemented as

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

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

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

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

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

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

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


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

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

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

  In LaTeX, I'd write the above as

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

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

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

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


tkt_uuid: 996569ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 7 High
foundin: None
resolution: None
title: BWidget 1.7: ComboBox: autocomplete problem w/upper case
comment:
  The autocomplete function in the BWidgets 1.7.0
  ComboBox has problems matching when the list has values
  that are all upper case.  By doing either a string
  tolower or string totitle on the list entries, the
  autocomplete works very well.


tkt_uuid: 609835ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtpd
priority: 5 Medium
foundin: None
resolution: Fixed
title: rcpt to and mail from fails under stupid
comment:
  If you specify two addresse to RCPT TO: or MAIL FROM:,
  "service" (specified by fileevent) raises a bgerror and
  hangs, because ::mime::parseaddress returns a valid
  list containing of two elements, each representing a
  list suited for a following "array set" which, in turn,
  expects one single list.

  I know that this is not conforming to RFC 821, which 
  requires a singe recipient for each RCPT TO: command,
  but it would be easy to fix:

  # diff smtpd.tcl patched_smtpd.tcl

  403c403,409
  <     eval array set addr [mime::parseaddress $from]
  ---
  >     set fromlist [mime::parseaddress $from]
  >     if {[llength $fromlist] != 1} {
  >         log::log debug "MAIL failed - syntax error"
  >         puts $channel "501 Syntax error in parameters
  or arguments"
  >         return
  >     }
  >     eval array set addr $fromlist
  441c447
  <         log::log debug "RCPT received \"$line\""
  ---
  >         log::log debug "RCPT failed received \"$line\""
  444c450,457
  <     eval array set addr [mime::parseaddress $to]
  ---
  >     set tolist [mime::parseaddress $to]
  >     if {[llength $tolist] != 1} {
  >         log::log debug "RCPT failed - syntax error"
  >         puts $channel "501 Syntax error in parameters
  or arguments"
  >         return
  >     }
  >
  >     eval array set addr $tolist


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


tkt_uuid: 917798ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Invalid
title: No redraw during scrolling
comment:
  I'm on Mac OS 10.3.3 , TCL-TK 8.4.6 with BWdiget 1.70 and TKAqua

  package require BWidget
  proc test_scroll {} {
  toplevel .test
  ScrolledWindow .test.sc
  ScrollableFrame .test.sc.f
  .test.sc setwidget .test.sc.f
  set path [.test.sc.f getframe]

  for {set i 0} {$i < 20 } {incr i} {
  checkbutton $path.b$i -text "Probando probando" -variable 
  prueba
  checkbutton $path.c$i -text "HOLY HOLY" -variable prueba
  pack $path.b$i -side top
  pack $path.c$i -side top

  }
  pack .test.sc
  }

  With this script, when I scroll, the content into the frame is not 
  redraw. The content of the frame is not updated until I stop 
  scrolling.
  Do you know how can I fix that? 


tkt_uuid: 1871959fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ::ncgi::query breaks encoding
comment:
  Lines 210-211 of ncgi.tcl say:

  ## added by Steve Cassidy to try to fix binary file upload
  fconfigure stdin -translation binary -encoding binary

  but, by doing this it breaks chararcter encoding


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

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

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

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

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

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

  2)
  ::ftpd::fsFile::fs

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

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

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


tkt_uuid: 439779ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: eval required in tkcon support code
comment:
  In ftp.tcl (v0.9 from cvs) at line 2776 can I humbly suggest that an eval is added after the "["

  foreach i [eval ::ftp::List_org $args] {

  When using 
  ftp::List connection dir

  under tkcon the connection and dir get merged into one parameter.


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


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

  * spf 1.1.0
  test name 'spf-1.3' re-used; prior use in
  /local/src/tcllib/modules/dns/spf.test
  test name 'spf-2.4' re-used; prior use in
  /local/src/tcllib/modules/dns/spf.test


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


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


tkt_uuid: 2124523fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Fixed
title: ldapx.man warning from sak
comment:
  When I run sak.tcl nroff, the following warning is produced:

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

  This is from the latest CVS head of tcllib.


tkt_uuid: 3183064fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pt (parsetools)
priority: 5 Medium
foundin: None
resolution: Fixed
title: package provide statement not correct.
comment:
  When generating a parser for snit or TclOO the final substitution of the parser package name is not correctly substituted into the package provide statement on the second to last line of the output.


tkt_uuid: 1750655fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
title: expanded info about dealing with test suite
comment:
  I'd like to request that more information about the test suite be added to a README or some other doc. Somewhere, information on the steps a developer should take when a "make test" displays a FAILS or ERR output should be added.

  Information should include specific commands to execute to get additional information, the URL for tcllib.sf.net's bug reports, etc.


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

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


tkt_uuid: 700781ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: tkchat - Hide Users doesn't scroll userlist
comment:
  when I pop up the Visibility->Hide Users menu, the
  result is a huge series of checkboxes so large that the
  list proceeds off screen, unable to access them all.

  Either a scrollbar is needed for the list, or something
  other than a menu popup is needed.

  Also, if hide users doesn't hide IRCbridge users, then
  that functionality probably should be fixed.  That was
  what I was looking for in fact when I discovered the
  problem ...


tkt_uuid: 3496110fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: amazon-s3
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ::S3 missing "Host:" header
comment:
  ::S3 does not send a "Host:" header.
  This causes "HTTP/1.1 400 Bad Request" to be returned by some transparent proxies.
  (e.g. when using Telstra 3G through the telstra.iph APN).

  The patch below sets the host header.

  --- /System/Library/Tcl/tcllib1.12/amazon-s3/S3.tcl.orig2012-02-25 15:32:45.000000000 +1100
  +++ /System/Library/Tcl/tcllib1.12/amazon-s3/S3.tcl2012-03-02 09:13:07.000000000 +1100
  @@ -252,6 +252,7 @@
       if {${content-type} != ""} {
   dict set headers content-type ${content-type}
       }
  +    dict set headers host s3.amazonaws.com 
       set xamz ""
       foreach key [lsort [dict keys $headers x-amz-*]] {
   # Assume each is seen only once, for now, and is canonical already.


tkt_uuid: 3027371fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Build System & Testing
priority: 5 Medium
foundin: None
resolution: Fixed
title: incorrect module name added to modules.tcl
comment:
  When I attempted to install the cvs head of tcllib today, obtained from the cvs ftp site at activestate, the attempt failed. The problem was that the support/installation/modules.tcl file had the following line added to it:
  Module  imap        _tcl  _man  _null

  The correct line should have been

  Module  imap4        _tcl  _man  _null


tkt_uuid: 1537469fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: Installation
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: "make install" fails on cygwin
comment:
  tcllib installation fails on cygwin using ./configure;
  make install.  No error messages noted during
  installation, but afterward
   
  "package require fileutil" 
  returns "cant't find package fileutil"

  Nevertheless, installation succeeds by the alternate
  installation method, simply calling installer.tcl

  Windows XP Home Edition v. 5.1 Build 2600 Service Pack 2
  cygwin DLL version 1.5.19
  ash 20040127-3
  bash 3.0-14
  tcltk 20030901-1


tkt_uuid: 1008797fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: log
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: bad multiple calls to logging command in log::log
comment:
  When the text to log consists of multiple lines, this
  results in calling the logging command as many times as
  there are lines.

  After inspecting the code, I saw that around line 672
  (in tcllib release 1.6), a change has been introduced
  to correctly handle log texts that consist of multiple
  lines.

  The relevant code snippet is:

  foreach line [split $text \n] {
       eval [linsert $cmd end $level $line]
  }

  This causes the logging command to be called repeatedly
  for a  single log text (which did not happen in the log
  extension that resided in tcllib release 1.3 for example).


tkt_uuid: 983197ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: comm
priority: 5 Medium
foundin: None
resolution: None
title: bgerror not getting a chance
comment:
  I am sending a command form a tcl application (client)
  to another tcl application (server). If an error is
  caught on the server side, this is not getting handeled
  by the ::bgerror procedure on the server side. This
  used to be the behaviour in the tcllib1.4. Now the
  error is being thrown back to the client side.


tkt_uuid: 521590ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: textutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: tabify2/untabify2 fails on empty string
comment:
  textutil::untabify2 and textutil::tabify2 both fail on
  the empty string, due to an uninitialized variable.  

  Attached patch fixes the bug and adds this test to the
  test suite.

  On an unrelated note: are 'tabify' and 'untabify'
  really needed?  They don't do anything useful (or that
  couldn't be accompished with [string map] or [regsub]
  in the unlikely event that someone does want this
  behaviour); they should probably be replaced with the
  tabify2/untabify2 implementations.


tkt_uuid: 2840180fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tar
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Incorrect prefix/name split?
comment:
  While digging around, I encountered a discrepancy between what the tar package does and how the tar file format is documented here:
  http://www.freebsd.org/cgi/man.cgi?query=tar&sektion=5&manpath=FreeBSD+8-current

  The problem is with how a filename is split between the name and prefix fields of the header, when the filename is longer than 100 characters. The tar package simply puts the last 100 characters in "name" and what comes before it in "prefix". That tar manpage rather says that the split _must happen at a slash_, and that a slash will be inserted between the prefix and name when joining the two up again.[Section "POSIX ustar Archives", description of "prefix"]

  I haven't been able to actually test what actual tar utilities do with name and prefix, however; some basic attempts (at tclsh prompt) of mine of making a tarfile with one item that has name "name" and prefix "prefix" just results in tar saying "This does not look like a tar archive" :-(


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

  modules/sha1/sha256.test
  - tcllib::testutils 1.0
  * sha256 1.0.1
  test name 'sha224-2.2' re-used; prior use in
  /local/src/tcllib/modules/sha1/sha256.test


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


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

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


tkt_uuid: 1328920fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: math
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Symbolic differentiation
comment:
  The attached is a symbolic differentiation package for
  Tcl.  It depends on the 'tclparser' module from TclPro.


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

  Application nnsd 

  fixes this bug. Corrected file attached.


tkt_uuid: 627960ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: smtpd
priority: 5 Medium
foundin: None
resolution: Accepted
title: welcome string hostname
comment:
  The welcome string is now "220 [info hostname] ..." also
  if you call "smtpd::start localhost" .

  This patch addresses this issue.


tkt_uuid: 3593689fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 9 Immediate
foundin: None
resolution: Fixed
title: Busyloop in [struct::list nextperm]
comment:
  If you do:

     package require struct::list 1.8.1
     struct::list nextperm {1 10 9 8 7 6 5 4 3 2}

  You get a script that takes an excessively long time to respond (and that will eventually produce a weird error; might take a *long* time!). The problem is that there is a loop that has the wrong condition, using '>=' as an ordering relation directly on values (that happen to be numeric) rather than using [string compare] to do the comparison.

  Change:

      while { $aj >= [set al [lindex $perm $l]] } {

  to:

      while { [string compare $aj [set al [lindex $perm $l]]] >= 0 } {

  This will fix the problem by making string comparison be used throughout.


tkt_uuid: 1016141fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pop3d
priority: 5 Medium
foundin: None
resolution: Fixed
title: pop3d test suite reports package version conflict
comment:
  platform: sparc solaris 8
  tcl: 8.5a2 cvs snapshot
  tcllib: latest cvs snapshot

  From: "Andreas Kupries" <andreask@activestate.com>

  > Module: pop3
  > modules/pop3/pop3.test
  > - tcltest 2.2.6
  > - pop3    1.6.1
  >
  > Module: pop3d
  > modules/pop3d/pop3d.test
  > skipped pop3d.test: conflicting versions provided for
  package
  > "md5": 2.0.1, then 1.4.3
  > modules/pop3d/pop3d_dbox.test
  > skipped pop3d_dbox.test: conflicting versions
  provided for
  > package "md5": 2.0.1, then 1.4.3
  > modules/pop3d/pop3d_udb.test
  > - pop3d::udb 1.1
  >
  > Any ideas what might be going on here?

  Something loaded the v1 md5, some other part wants md5
  v2, and the package
  system of the core balks at the conflict. Bug.


tkt_uuid: 849829ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: AutoScroll not set in TK 8.5a0
comment:
  When Tk 8.5a0 is used to run tkChat 1.128,
  the chat area does not scroll to make
  new messages visible.

  Further examination shows that
  $Options(AutoScroll) is false, so
  apparently [tkchat::scroll_set] is
  failing to enable it.

  This probably traces back to a flaw
  in Tk 8.5a0, but the tkchat maintainer
  is probably best to continue the analysis.


tkt_uuid: 1014795fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: base64
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: tcl crashes when I b64 encode files
comment:
  I have a few files I want to encode into base64. Some are small, others are around 4 or 5 Mb. It takes so long to encode the large ones that I just kill the process and give up.

  But my attention caught the fact that one particular file always crasheed wish or tclsh. It is a 4,731,340-byte ZIP file. The file is OK, I can open it like any other. Whenever I try to encode it with ::base64::encode, however, I get this window title...

  Fatal Error in Wish

  ... and this error message:

  unable to realloc 5857536 bytes

  It also occurs with tclsh, except for the "Fatal Error in Wish" title, of course.

  So I went after a few 4 or 5-Mb zip files in my disk, did some more testing and saw that roughly 7 out of every 10 files make wish.exe crash.

  Intrigued by the "5857536" figure, I went after bigger files: 7 Mb, 8 Mb, 15 Mb, 24 Mb and 65 Mb. About 10 of them. Sometimes I get a different figure, "9326961" appeared twice, but "5857536" still is the most frequent one.

  I stil can use Cygwin-based b64.exe. No problems with that one.

  Now I am using ActiveTcl 8.4.7, but I also saw the problem in 8.4.6.

  My OS is Windows 98 SE.


tkt_uuid: 861277ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Fixed
title: htmlparse.tcl: backslashes in content
comment:
  htmlparse::parse fails if backslashes appear in content:

  htmlparse::parse "<p>\\</p>"
    ==> error "Missing close-brace"


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


tkt_uuid: 1480703fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Accepted
title: console support for platforms without native support
comment:
  TkChat only provides console support if either tkcon is 
  available or the platform is non-unix and has a console 
  built in. This patch (adopted from http://wiki.tcl.tk/
  786) makes the Tk console available also if there is no 
  native ::console command.

  Note that the patch is for the version 1.334 since I 
  can not currently fetch the most current version (due 
  to sourceforge outage ...)


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

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

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

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

  My fix for the problem is attached.


tkt_uuid: 2123233fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: yaml
priority: 5 Medium
foundin: None
resolution: Fixed
title: bad [string first|last] syntax?
comment:
  This code in [::yaml::_getFoldedString]
  looks suspcious:

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


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

   string first $needle $haystack

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


tkt_uuid: 693194ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: textutil
priority: 5 Medium
foundin: None
title: string map vs regsub (textutils)
comment:
           ./textutil/tabify.tcl:94:    regsub -all --
  $str $string "\t" string
           ./textutil/tabify.tcl:102:    regsub -all --
  "\t" $string $str string
   
  These two lines can probably be redone with string map,
  which will speed the code up significantly.


tkt_uuid: 1254937fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Duplicate
title: Binary files get an extra line feed at the end
comment:
  Binary mime parts get an extra line feed at the end,
  before the border.

  I have submitted patch 1254934 as a proposal to fix
  this problem.


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

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

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

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

  Thanks,

  Ric


tkt_uuid: 582828ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: exif
priority: 5 Medium
foundin: None
resolution: Accepted
title: Patches exif.tcl for Digital IXUS
comment:
  I've been trying to use the tcllib Exif parser to process
  pictures taken with my Canon Digital IXUS camera.
  It turns out that the IXUS's image files contain a
  »makerNote« field which doesn't have various fields
  used by other Canon cameras. The attached patch
  upgrades the »makerNote« procedure to do some
  more checks for non-existing fields and such.


tkt_uuid: 1078504fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 3 Low
foundin: None
resolution: Out of Date
title: application generates error
comment:
  Attempt to startup tkchat today results in this error
  being raised:

   $ tkchat.tcl
  Error in startup script: can't find package jlib
      while executing
  "package require jlib            "
      (procedure "logonChat" line 13)
      invoked from within
  "logonChat"
      (procedure "::tkchat::Init" line 202)
      invoked from within
  "::tkchat::Init"
      ("eval" body line 1)
      invoked from within
  "eval [linsert $argv 0 ::tkchat::Init]"
      invoked from within
  "if {![info exists ::URLID]} {
      eval [linsert $argv 0 ::tkchat::Init]
  }"
      (file "/projects/xopsrc/bin/tkchat.tcl" line 6560)

  What is jlib and where does one get it to install it?
  Seems like either tkchat should come with it, or it
  should come in tcllib or the tcl distribution if tkchat
  is going to depend on it.
  I don't even see a README in the tclapps distribution
  that references the library.

  There is, however, a note about irbridge being
  dependent on jlib.


tkt_uuid: 3288793fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Accepted
title: ftp::List does not work inside tkcon
comment:
  the proposed fix is to replace:
  proc ::ftp::__ftp_ls {args} {
          foreach i [eval ::ftp::List_org $args] {
              puts $i
          }
      }
  with:
      proc ::ftp::__ftp_ls {args} {
          set rc [eval ::ftp::List_org $args]
          foreach i $rc {
              puts $i
          }
          return $rc
      }

  in ftp.tcl file.


tkt_uuid: 1171533fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Rejected
title: ScrolledWindow/Notebook widgets result in hang
comment:
  Hi,

  The following code results in a "hang" state with
  BWidget1.7 on solaris2.8/tcl8.4 when "update idletasks"
  is called. 

      package require BWidget
      set swg [ScrolledWindow .swg]
      set wg [NoteBook $swg.nb]
      pack $wg -fill both -expand 1 ;# use of grid
  instead of pack resolves this issue
      update idletasks ;# it hangs here

  The same code works fine with BWidget1.4.1. After some
  debugging, I found out that the problem sees to occur
  due to changes commited to 1.5 version of scrollw.tcl file:

  ----------------------------
  revision 1.5
  date: 2003/02/25 09:51:03;  author: hobbs;  state: Exp;
   lines: +108 -180
          * scrollw.tcl: complete rewrite of
  ScrolledWindow widget to
          address infinite loop scrollbar problems.  This
  one is much
          simpler and does not suffer the infinite loop.
   There still seems
          to be an issue with shrinking smaller than one
  scrollbar width /
          height in size, but that's not common (nor
  fatal).  Addresses
          [Patch #671821, #520903] [Bug #472718, #564691]
  ----------------------------

  Am I facing the shrinking issue mentioned in this log
  message?


  Hemang.


tkt_uuid: 532677ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: new tkchat smiley proposed
comment:
  I would like to submit this diff for adding the blush
  smiley.  The image is from the tik tcl/tk aol IM
  browser, but is similar to the h2h one, etc.

  The code is a bit messy because of the } that I used in
  the ascii smiley.  There are inconsistent variations
  for expressing a blush - I chose a set from I think a
  java class I found while googling.


tkt_uuid: 603953ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Duplicate
title: Scrolledframe on Mac OSX - 10.1.5
comment:
  It looks like scrolled frames/windows don't work properly under 
  Mac OSX 10.1.5. The scrollbars appear but cannot be moved. I 
  see the same behaviour in the demos provided with BW and my 
  own code.

  Thanks


tkt_uuid: 710658ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Focusproblem with Widget::focusOK
comment:
  We have some internally developed widgets which return
  an empty string on unknown commands/options. This
  causes problems for Widget::focusOK in widget.tcl,
  which uses cget -editable:

  Errorinfo: can't use empty string as operand of "!"
      while executing
  "if {($code == 0) && !$value} {
          return 0
      }"
      (procedure "focusOK" line 27)
      invoked from within
  "focusOK $cur"
      (procedure "Widget::focusNext" line 36)
      invoked from within
  "Widget::focusNext .apar2"
      invoked from within
  "focus [Widget::focusNext .apar2]"
      (command bound to event)

  May I suggest that line 1301 in widget.tcl is changed from:

      if {($code == 0) && !$value} {

  to:

      if {($code == 0) && $value == 0} {

  which is not only safer, but also easier to read, imo.


tkt_uuid: 443613ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pop3
priority: 5 Medium
foundin: None
resolution: Fixed
title: new binary translation breaks pop3::send
comment:
  Just downloaded ActiveTcl 8.3.3.2 and found pop3's new 
  binary translation mode breaks the send proc...

  Connecting to some of my email accounts now hangs my 
  email script (indefinitely?). Things worked fine with 
  the old tcllib 0.8...

  I believe the problem lies in the fact that the send 
  proc now (i.e. in the new binary mode) only appends LF-
  s to commands it "puts" to the POP3 server. If I'm not 
  mistaken the official line termination sequence for 
  POP3 is CRLF. And POP3 servers expecting this may 
  therefore wait awhile before sending anything back...

  A solution might be to change the channel translation 
  command (in ::pop3::open) into:

      fconfigure $chan -translation binary crlf

  I hope this helps.

  -- AH.


tkt_uuid: 729709ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 6
foundin: None
resolution: Fixed
title: tkchat no longer pops to top or beeps on alerts
comment:
  somewhere in the last change or two, tkchat at least
  for me has lost the functionality of alerting me when
  someone whispers to my login id.

  I am running sparc/solaris 2.8, with tcl/tk 8.4.2
  installed and the latest tcllib from cvs.

  Up until the past few weeks, if I had tkchat running,
  then opened netscape, dtmail, or dtterm windows on top
  of tkchat, a whisper would result in a beep sound and
  the window raising.

  This no longer is the case.

  from $HOME/.tkchatrc, I see:

  array set Options {
  Alert,ACTION 1
  Alert,ALL 0
  Alert,ME 1
  Alert,NORMAL 1
  Alert,RAISE 1
  Alert,SOUND 1
  Alert,TOPIC 0
  AnimEmoticons 1
  AutoConnect 1
  AutoScroll 1

  plus more.

  It _appears_ to be configured properly - the menus have
  the appropriate check boxes highlighted.


tkt_uuid: 514475ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 8
foundin: None
title: request to add listx to tcllib
comment:
  listx is a project by one or more of the Tcl community
  to create an integrated list handling command for tcl.
  It would consist of a superset of (all?) commonly
  existing extension Tcl list handling functions.  See
  http://www.purl.org/net/akupries/tcltk.html for details
  .


tkt_uuid: 868315ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: Dialog widget hangs in BWidget 1.7
comment:
  When I issue the "draw" command to a Dialog widget in
  BWidget 1.7, the entire application hangs.  

  I am using ActiveTcl 8.4.5 on WinXP Pro.

  The code below illustrates the error.  Switching to
  BWidget 1.6 makes it work.
   

   # DialogTest.tcl
   #
   # A test of the BWidget Dialog widget.

   package require -exact BWidget 1.7

   button .b -text "Dialog" -command {ShowDialog}
   pack .b

   proc ShowDialog {args} {
  Dialog .prompt \
  -title {???} \
  -parent .b \
  -place above

  label .prompt.label -text "This is a dialog!\nDid it
  work?"

  pack .prompt.label

  .prompt add -text Okay -command {.prompt enddialog Okay}
  .prompt add -text Cancel -command {.prompt enddialog
  Cancel}

  set Prompt [.prompt draw]

  destroy .prompt
   }
   


tkt_uuid: 1813193fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ftp - FXP - cross server transfer not going through client
comment:
  Is it possible to add FXP support? RFC959 describes the implementation of FXP as follows:

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

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

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


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


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

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

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


tkt_uuid: 638236ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: BWidget: Entry "-state disabled" doesn't gray
comment:
  There is a difference between TK's entry and BWidget's
  Entry
  concerning the -state disabled option.

  % package require BWidget
  1.4.1
  % pack [label .l1 -text "Tk entry"]
  % pack [entry .e1]
  % pack [label .l2 -text "BWidget Entry"]
  % pack [Entry .e2]

  # Make both entries yellow ==> okay
  % .e1 configure -bg yellow
  % .e2 configure -bg yellow

  # Disable both entries ==> !!! .e1 becomes gray, .e2
  stays yellow
  % .e1 configure -state disabled
  % .e2 configure -state disabled

  # Disable both entries ==> okay, yellow
  % .e1 configure -state normal
  % .e2 configure -state normal 

  # Get -disabledbackground option==> BWidget fails
  %  .e1 cget -disabledbackground 
  SystemButtonFace
  %  .e2 cget -disabledbackground
  unknown option "-disabledbackground"
  %  .e2 cget -disabledforeground
  SystemDisabledText


tkt_uuid: 1660234fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: ico
priority: 5 Medium
foundin: None
resolution: Fixed
title: Bugs in ico::getFileIcon
comment:
  There are a few errors in ico.tcl which stop ico::getFileIcon from working correctly for me. I've put a revised copy of it below, with the changes commented, and the problems I was getting without those changes...

  proc ::ico::getFileIcon {file args} {
      set ext [file extension $file]
      if {[catch {registry get HKEY_CLASSES_ROOT\\$ext ""} doctype] || \
          [catch {registry get HKEY_CLASSES_ROOT\\$doctype\\DefaultIcon ""} icon]} {
          set icon "%SystemRoot%\\System32\\shell32.dll,0"
      } ;# (1)
      set index [lindex [split $icon ,] 1]
      set icon [lindex [split $icon ,] 0]
      if {$index == ""} { set index 0 }
      set icon [string trim $icon "@'\" "]
      while {[regexp -nocase {%([a-z]+)%} $icon -> var]} {
          set icon [string map [list %$var% $::env($var)] $icon] ;# (2)
      }
      set icon [string map [list %1 $file] $icon]
      if {$index < 0} {
          if {![catch {eval [list getIconByName $file [string trimleft $index -]] $args} output]} {
              return $output
          }
          set index 0
      }
      return [eval [list getIcon $icon [lindex [icons $icon] $index]] $args] ;# (3) and (4)
  }


  (1) There was an extra period before the $ext in the if which caused it to fail to find all file extensions
  (2) The patterns to map were quoted, instead of using [list], which caused backslashes in the paths to be removed, breaking them and preventing the files from being found correctly later on
  (3) The [list] was closed after the $args, instead of before, so the $args didn't expand properly, and getIcon was throwing errors like 'unknown option "res 32"'
  (4) Changed both uses of $file to $icon, otherwise you get "unsupported file type <type>" errors for everything but .exe, .ico and .dll (ie, files which actually contain icons themselves, rather than having an icon registered for them in the registry)

  With those changes, it works without any problems (tested with a half-dozen different file types, including files containing icons (.exe and .ico), and ones which don't (.tcl, .txt, .pub, .hlp, .fakeFileType), all of which showed the right icon, with no options and with -res 32). All of this is on Windows XP Home SP2, incidently:

  % parray tcl_platform
  tcl_platform(byteOrder) = littleEndian
  tcl_platform(machine)   = intel
  tcl_platform(os)        = Windows NT
  tcl_platform(osVersion) = 5.1
  tcl_platform(platform)  = windows
  tcl_platform(user)      = User
  tcl_platform(wordSize)  = 4

  Hope that's some help,
  Mike Griffiths (talvo@talvo.com)


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

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

  make install works smoothly.

  man.macros is in place.

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

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

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

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

  (see target install-doc).


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


tkt_uuid: 2192812fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: inifile
priority: 5 Medium
foundin: None
resolution: Out of Date
title: commentchar function not defined in ini namespace
comment:
  man page for inifile has the commentchar function as 

  ini::commentchar ?char? 

  but code has 

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

  need to change the above line to : 


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

  in inifile.tcl


tkt_uuid: 626819ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: incomplete doc for tree
comment:
  In the docs for tree the "widget command" 
  for "pathName find findInfo ?confine?" (an interesting and 
  needed function) and
  "pathName line node" (if that is public function?) is 
  missing.


tkt_uuid: 769871ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: 2 apparent protocol violations
comment:
  These may not matter but as I'm troublshooting
  obscure failures they come to my attention.

  Disclaimer: I haven't coded much with smtp/mime so my 
  authority for these claims is the O'Reilly 
  book "Programming Internet Email", David Wood.

  1. Wood says the headers for MIME parts should never 
  contain the MIME-version header. Yet they do appear.

  2. Boundary strings should never include '=' yet they do.

  Woods also comments that Content-ID is optional and 
  rare and must be world-unique. Is there value in tcllib 
  mime generating this header?

  Thanks for any clarification,
  Roy Terry
  (still stuck with premature socket close when reloading 
  the mime parts from a file)


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

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

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

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

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

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

      catch {repeat a} msg
      set msg

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

      catch {repeat 0 b} msg
      set msg

  ---- Result was:

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

  ---- repeat-4.5 start

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

      catch {repeat -1 b} msg
      set msg

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


tkt_uuid: 1104059fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: pop3
priority: 3 Low
foundin: None
resolution: Not Applicable Here
title: Allow easy use of TLS with pop3
comment:
  As more and more services allow to use POP3 with
  SSL/TLS it would be a nice move to support SSL within
  the POP3 package.

  For SSL enabled servers listening only on an SSL port
  this is trivial, just use the tls::socket instead of
  the normal one for the connect.

  Using the POP3 STLS Command (StartTLS), is a bit more
  complex, but not that hard to do, its just an extra
  step in authentification and some logic to do a
  tls::import on the open channel.

  Michael


tkt_uuid: 511689ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Duplicate
title: man page formatting problem found
comment:
  the mime map page had a formatted command inside of a
  line of text, where it was not being observed.
  I am attempted to append a patch for the problem.


tkt_uuid: 717594ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: dns
priority: 8
foundin: None
resolution: Fixed
title: bgerror in dns::TcpEvent
comment:
  if a dns reply comes back that is too short (e.g.,
  server doesn't wait for tcp connection to gracefully
  drain, the call to "binary scan" won't create variable
  "id" and "flags", which will cause a bgerror to get
  thrown when those variables are references a few lines
  later.


tkt_uuid: 1385688fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: pop3
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: pop3 - New retrieval method + minor performance improvement
comment:
  Attached is the entire pop3.tcl with the proposed 
  changes.  I took the liberty of bumping up the 
  version from 1.6.3 to 1.7.  Note that this code has 
  actually been in operation for almost two years.

  First a minor performance improvement in RetrFast - 
  don't spend time splitting potentially large message 
  if not doing any debug logging.

  Second is a new retrieval method - tofile.
  Since POP3 messages can be very large, with 
  attachments that may never need to be processed in 
  tcl, to minimize memory usage, it may be best to 
  write the retrieved message to a temp file and return 
  the temp filename instead of the entire message.

  # Alex Hisen (alex@am.net) 2005-12-18:
  # In order to provide support for the new tofile 
  retrieval method
  # we need a way to generate temporary file 
  paths/names.
  # We first try to use an AOLserver command if 
  available.
  # If not we try to see if our version of Tcl supports
  # the file tempfile subcommand (see TIP #210:
  # http://www.tcl.tk/cgi-bin/tct/tip/210.html )
  # Finally we fallback to the tcllib fileutil package.
  # Note that our package require fileutil is caught, 
  so even
  # if you don't have any of the three methods, this 
  package
  # will work fine as long as you don't use tofile 
  retrieval.
  #
  # The Tempfile proc we create in our namespace 
  operates
  # the way TIP #210 prescribes - it opens the file for 
  write,
  # returns the open file channel, and sets the 
  supplied variable
  # to the full path and name of the created temporary 
  file. 


tkt_uuid: 3035014fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: uuid
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: "uuid::generate" returns binary data
comment:
  UUID 1.0.1 returns binary data and not a string representation of the UUID:
          % package require uuid
          1.0.1
          % uuid::generate
          ß4:GjK@QÐ2E`Á

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


tkt_uuid: 792619ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Duplicate
title: tk binding problem in Gnome and Ximian
comment:
  I am having a problem binding the double click event to 
  a tk listbox
  which is embedded in BWidget frames. The code works in 
  KDE and in a
  VNC viewer, however. When I double-click, it does 
  nothing but highlight the selected item
  in the listbox. When I change the binding event in my 
  code to
  single-click, it works correctly, however. I tried to move 
  the custom
  bindtag before the class bindings, however I'm receiving 
  the same
  behavior.


  Code snippet ...
  ...
  ...

  #! /usr/bin/wish

  set rt [catch {set version [package require BWidget]} 
  err]
  if {$rt != 0 } {
   tk_messageBox -icon error -type ok -title "Missing 
  BWidgets" -message
  \
    "Missing BWidgets package."
   exit
  }
   
  set tlist [list  "element1" "element2"]
  set mainframe [MainFrame .mainframe]
   
  # NoteBook creation
  set frame    [$mainframe getframe]
  set notebook [NoteBook $frame.nb]

  # Create Top-level tab frames 
  set components_frame [$notebook insert end tab1 -
  text "Tab1"]
  # Create subordinate tab frames
  set components_nb [NoteBook 
  $components_frame.components_nb]
  set frame [$components_nb insert end tab2 -text "Tab2"]
  set topf  [frame $frame.topf]

   # Paned Windows
  set pw1   [PanedWindow $topf.pw -side top]
  set pane  [$pw1 add ]
  set pw2   [PanedWindow $pane.pw -side left]
  set tpane [$pw2 add -weight 3]

  # Major subframes
  set tbox [TitleFrame $tpane.tbox -text "Widgets"]

  # Placing layout frames and major subframes
  pack $tbox -padx 2 -side left -fill both -expand yes
  pack $pw1 -fill both -expand yes
  pack $pw2 -fill both -expand yes 
  pack $topf -fill both -expand yes 

  # Types listbox
  set sw_t       [ScrolledWindow [$tbox getframe].sw -
  auto both]
  set tlistbox [listbox [$sw_t getframe].lb -height 18 -
  width 20 \
   -highlightthickness 0 -listvar ::tlist] 
  $sw_t setwidget $tlistbox
  bindtags $tlistbox [linsert [bindtags $tlistbox] 3 
  tlist_Tag]  
  bind tlist_Tag <Double-Button-1> {puts HI}

  pack $sw_t -fill both -expand yes

  $notebook compute_size
  pack $notebook -fill both -expand yes -padx 4 -pady 4
  $notebook raise [$notebook page 0]

  $components_nb compute_size
  pack $components_nb -fill both -expand yes -padx 4 -
  pady 4
  $components_nb raise [$components_nb page 0]

  pack $mainframe -fill both -expand yes


tkt_uuid: 643337ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: html
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::html::textInput does not process args
comment:
  The documentation for ::html::textInput reads:

  ::html::textInput name args
  Generate an INPUT form tag with type TEXT. This uses
  ::html::formValue. The args is any additional tag
  attributes you want to put into the INPUT tag.

  However, it takes args as the value of the text entry.

  For example: 

      ::html::textInput foo width=40

  generates:

      <input type="text" name="foo" value="width=40"
  size="45">

  Instead of:

     <input type="text" name="foo"  size="45"width=40>


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


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

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

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


tkt_uuid: 1242740fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: Error in tkcat::addAction
comment:
  In the wild, with tkchat v1.301 I got abrupt the error:


  can't read "tags": no such variable
  can't read "tags": no such variable
      while executing
  "$w insert $mark "\n" $tags"
      (procedure "::tkchat::addAction" line 38)
      invoked from within
  "::tkchat::addAction .txt $color $nick $msg $mark
  $timestamp $opts"
      (procedure "::tkjabber::parseMsg" line 47)
      invoked from within
  "::tkjabber::parseMsg $from $m(-body) $color end
  $timestamp"
      ("groupchat" arm line 23)
      invoked from within
  "switch -- $type {
          chat {
              set from $m(-from)
              set w .txt
              set name $from
              if { [regexp {([^/]+)/(.+)} $m(-from) ->
  conf name] } {
                  i..."
      (procedure "::tkjabber::MsgCB" line 42)
      invoked from within
  etc.


  Can't say, what triggered this, but it seems, that
  tkchat::addAction is too credulous. In the line 

    $w insert $mark "\n" $tags

  it depends on the variable tags to exist. But this
  variable is only set within this foreach loop in the proc:

      foreach { str url } [parseStr $str] {
         ....
      }

  which will run 0 times, if [parseStr] returns the empty
  list (which is possible, as a look at that proc shows
  and the error msg demonstrates), let tags unset.

   


tkt_uuid: 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: 3565267fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: errorCode : no such variable
comment:
  in routine ::mime::buildmessage line 10, the global variable may be undefined when passed to eroor. Should add something like
  if {! [info exists errorCode]} {set errorCode ""}


tkt_uuid: 1512038fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: uri
priority: 5 Medium
foundin: None
resolution: None
title: uncomplete process
comment:
  while going back in the path, there are missing steps
  while exceding double dots.

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

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


tkt_uuid: 2569848fffffffffffffffffffffffffffffffff
type: Bug
status: 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: 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: 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: 557040ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: None
title: timeout immediately on large messages
comment:
  sendmessage timeout value grows ridiculously large as
  the size of the message (mime part) increases.

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

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

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

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


tkt_uuid: 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: 3541628fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: logger
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::logger::init has side-effects
comment:
  expect:/tmp$ package require logger
  0.9
  expect:/tmp$ set lvl "My private variable."
  My private variable.
  expect:/tmp$ ::logger::init foo
  ::logger::tree::foo
  expect:/tmp$ set lvl
  trace
  expect:/tmp$ 

  a trace on lvl shows a "foreach lvl" in "namespace eval tree::foo"...

  ==> http://wiki.tcl.tk/1030 gives a workaround; insert this line:
  logger.tcl:646: variable lvl ;# prevents foreach using global lvl if it exists


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

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

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

  Jos.


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

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

  Please let me know if you need anything else.

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

  Jean-Luc


tkt_uuid: 1843712fffffffffffffffffffffffffffffffff
type: RFE
status: 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: 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: 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: 1310623fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
resolution: Duplicate
title: tie file implementation broken
comment:
  The following script:

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

  Gives me an error:

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


tkt_uuid: 1085174fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: socket failure
comment:
  (Looks like a server problem to me - this worked fine
  until yesterday, I did not upgrade).

  At app startup (v 1.239) I get an error and no history
  selector, but tkChat works fine after that. The
  errorInfo is:

  couldn't open socket: connection refused
  couldn't open socket: connection refused
      while executing
  "::http::geturl $url  -headers [buildProxyHeaders]"
      (procedure "GetHistLogIdx" line 10)
      invoked from within
  "GetHistLogIdx logsize"
      (procedure "tkchat::LoadHistory" line 13)
      invoked from within
  "tkchat::LoadHistory"


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: 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: 704187ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: doctools - manpage_begin doc error re args
comment:
  The doc I have says:
  manpage_begin command section version 
  This command begins a manpage. Nothing is allowed to 
  precede it. Arguments are the name of the command 
  described by the manpage, the section of the manpages 
  this manpages lives in, the version of the module 
  containing the command, the name of the module itself 
  and two descriptions, one short for the command and 
  one a bit longer for the module. Both have to fit on one 
  line.

  NOTICE: the descriptive verbiage calls out "two 
  descriptions" which the summary line does not show.
  Seems a contradiction; either the summary or the 
  verbiage needs changing.


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: 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: 780704ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: Clear value of combobox
comment:
  When a BWidget ComboBox has an empty list of values,
  the value can no longer be cleared. This patch addes an
  'clearvalue' proc.

  Jos.


tkt_uuid: 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: 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: 1613224fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: too much braced message header values (::mime::getheader)
comment:
  Hello,

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

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

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

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

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

  IMHO this is a misbehaviour, a bug.

  Thanks,

  Martin Lemburg


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

  I'm attaching a patch.


tkt_uuid: 3584574fffffffffffffffffffffffffffffffff
type: RFE
status: 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: 900041ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Fixed
title: htmlparse does not supprt empty elements
comment:
  htmlparse 1.3 (as well as 2.0) does not support
  empty elements of the form:

  <e ... />

  I think this is supported in the HTML standard.

  e.g.
  <list name="List1" />
  <list name="List2" />
  results in
     list {} {name="List1"} {}
     list {} {name="List2"} {}
  rather than
     list {} {name="List1"} {}
     list {/} {} {}
     list {} {name="List2"} {}
     list {/} {} {}

  The first case results in havoc for 2Tree.

  A quick fix is to perform the cmd substitutions in
  2 passes (a necessary evil?)

  htmlparse 1.3 change (I think the Class code was
  removed in later versions):

  set w " \t\r\n";# white space
  set exp1 <(/?)([CClass ^$w>]+)[CClass $w]*([CClass 
  ^/>]*)>
  set exp2 <(/?)([CClass ^$w>]+)[CClass $w]*([CClass 
  ^/>]*)/>

  set sub1 "\}\n$cmd {\\2} {\\1} {\\3} \{"
  set sub2 [concat $sub1 "\}\n$cmd {\\2} \{/\} \{\} \{"]  

  regsub -all -- $exp1 $html $sub1 html
  regsub -all -- $exp2 $html $sub2 html

  Any comments?

  Tony Grimm
  grimmt@agilent.com


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: 532246ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: NoteBook tabs text not entirely visible
comment:
  Using BWidget 1.4.0 NoteBook widget:

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

  The text should appear in its entirety on all tabs.


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


tkt_uuid: 3601313fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: stack
priority: 5 Medium
foundin: None
resolution: Fixed
title: Simplify version requirement for TclOO
comment:
  Since tcloo is available only for 8.5+ and 8.5 already provides enhanced package version handling, the version requirement can be shortened to [package require TclOO 0.6.1 1] or [package require TclOO 0.6.1-] (to accept any newer version). Applies to both ::struct::queue and ::struct::stack.


tkt_uuid: 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: 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: 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: 1266792fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: Wrong option added to database by Widget::tkinclude.
comment:
  Widget::tkinclude of BWidgets adds $option to the
  option database, but it should add $realopt. Compare
  for example with Widget::addmap.


tkt_uuid: 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: 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: 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.


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

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

  Kind regards,

  Jos.


tkt_uuid: 1224203fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Rejected
title: Tree widget substitutes wrong path for %W in command binding
comment:
  If you put %W in the command bound to an action on a
  Tree widget you expect to get the path of the tree
  widget in its place when the command is invoked. But
  instead you get a canvas called c which is a child of
  the tree widget, as in this simple example...

  [jaspert@nacho Simile]$ wish
  % package require BWidget
  1.7
  % pack [Tree .t]
  % .t insert end root foo -text FOO
  foo
  % proc putall {args} {puts $args}
  % .t bindText <Button-1> "putall %W"
  % # now click on the text FOO...
  % .t.c foo
  .t.c foo
  .t.c foo


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

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



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


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


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

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

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

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


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

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


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


tkt_uuid: 917877ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Add state readonly for Entry (and LabelEntry)
comment:
  The Entry and LabelEntry widgets don't support the
  readonly-state like entry in pure Tk. This state is a
  perfect mix between normal and disabled because it can
  handle user events without changing its value.


tkt_uuid: 1507713fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: Documentation error: -opencmd option for Tree widget
comment:
  According to the documentation of the -opencmd option
  for he Tree widget the path to the tree widget and the
  node that was opened are both appended to the command.

  However, in the "current" implementation (1.7 as
  delivered with ActiveTcl 8.4.12) only the node is appended.

  It is probably best to adapt the documentation, not the
  code:
  - The value for -opencmd is a "command prefix" 
  - The node that was opened is appended
  - To get the tree widget use something like:
   
    -opencmd "mycmd .tree"


tkt_uuid: 1416760fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: bignum :: float
priority: 5 Medium
foundin: None
resolution: Fixed
title: bigfloat: test suite bugs
comment:
  with -debug 1:

  * math::bigfloat 1.2
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-add-1.0' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sub-1.1' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mul-1.2' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-div-1.3' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-div-1.3' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-div-1.3' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-div-1.3' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-div-1.3' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-div-1.3' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-div-1.3' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-div-1.3' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mod-1.4' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mod-1.4' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mod-1.4' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mod-1.4' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mod-1.4' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mod-1.4' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mod-1.4' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-mod-1.4' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-round-2.6d' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-round-2.6e' re-used; prior use in
  /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.1.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.1.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.1.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.2.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.2.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.2.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.3.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.3.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.3.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.4.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.4.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.4.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.1.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.1.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.1.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.2.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.2.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.2.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.3.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.3.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.3.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.4.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.4.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.4.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.1.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.1.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.1.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.2.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.2.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.2.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.3.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.3.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.3.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.4.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.4.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.4.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.1.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.1.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.1.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.2.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.2.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.2.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.3.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.3.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.3.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.4.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.4.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.4.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.1.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.1.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.1.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.2.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.2.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.2.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.3.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.3.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.3.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.4.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.4.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.4.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.1.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.1.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.1.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.2.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.2.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.2.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.3.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.3.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.3.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.4.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.4.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.4.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.1.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.1.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.1.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.2.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.2.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.2.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.3.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.3.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.3.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.4.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.4.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.4.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.1.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.1.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.1.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.2.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.2.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.2.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.3.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.3.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.3.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-cosh-4.7.4.0.0' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-sinh-4.7.4.0.1' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test
  test name 'bigfloat-tanh-4.7.4.0.2' re-used; prior use
  in /local/src/tcllib/modules/math/bigfloat.test


tkt_uuid: 1307714fffffffffffffffffffffffffffffffff
type: Bug
status: 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: 1392879fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: inifile
priority: 5 Medium
foundin: None
resolution: None
title: inifile: docs and code at odds
comment:
  The inifile docs for the open command say "Opens an INI
  file and returns a handle that is used by other
  commands. Mode has the same types as the open command.
  The default mode is r+."  But the code only allows
  r/w[+], not append mode.  


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

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


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


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


tkt_uuid: 1935658fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Accepted
title: Minor issue on a change the font settings
comment:
  Hello,

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

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

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

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

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

  Thanks.

  Sergei Gavrikov


tkt_uuid: 1312869fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Duplicate
title: Fix locale problems (Bugs #911580 and #1276561)
comment:
  This patch fixes mime::parsedatetime such that 
  it doesn't rely on the user locale. 
   
  mime::parsedatetime is used for protocol 
  elements in SMTP and MIME.  These 
  should always be locale independent i.e. in 
  English. 
   


tkt_uuid: 1501874fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Can't change selectmode after ListBox creation
comment:
  If a ListBox widget is created with a certain
  selectmode, then a different selectmode is desired, the
  configure command fails actually to switch modes, and
  one is stuck with the original selectmode.

  % package require BWidget 1.7
  1.7
  % set lb [ListBox::create .lb -selectmode single]
  .lb
  % $lb configure -selectmode multiple
  % $lb cget -selectmode
  single


tkt_uuid: 701077ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclbench
priority: 9 Immediate
foundin: None
resolution: Fixed
title: normbench can't process newest runbench output
comment:
  normbench.tcl fails to process the results of the latest 
  runbench.tcl, with this stack trace.

  TCL_INTERP: 1:8.4.2 2:8.4.2
  STARTED 2003-03-10 12:42:02 (runbench.tcl v1.15)
  Benchmark 1:8.4.2 ./tclkit-cc/tclsh8.4
  bbccdeeeffghkllmmmmpprrssstuvw 00:04:28 elapsed
  can't read "format": no such variable
      while executing
  "switch -exact -- $format {
              text { puts stdout [normalize-text $norm $line] }
              list { puts stdout [normalize-list $norm $line] }
              csv  {
          ..."
      (procedure "normalize" line 22)
      invoked from within
  "normalize $opts(norm) [read -nonewline $opts(fid)]
  "
      (file "./normbench.tcl" line 202)


  The offending line in the runbench.tcl output is 
    251591 milliseconds
  which passes the header-skipping [string match] at the 
  top of the 'normalize' proc, but it doesn't fall into any of 
  the version detection cases.

  You could fix this by changing the output format from 
  runbench, so that this line doesn't have numeric first 
  characters.

  A better solution might be to improve the header 
  detection section to check for string matches against 
  the format patterns.  For example (untested)

    set format "unknown"
    foreach line $lines {
        if {$format=="unknown"} {
            switch -glob -- $line {
                "0,VER*" {set format csv}
                ....
            }
        continue
        }
       ....


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


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

  % package require struct
  2.1

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

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

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

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


  nathan/grarp
  ndparrish@yahoo.com


tkt_uuid: 782367ffffffffffffffffffffffffffffffffff
type: Bug
status: 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: 1942472fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: doctools test hardcode author <aku>
comment:
  Some of the doctools tests fail for latex output because the authorname is hardcoded to aku.

  Seen this for the doctools tests 13.x 


tkt_uuid: 1443461fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: ListBox delete doesn't cleanup in help.
comment:
  ListBox items can have a helptext argument. In
  _set_help namespace variable "help" gets filled. In
  delete the content of array help is however not updated.
  If you add "Widget::getVariable $path help" after
  "upvar 0 $path data" and
  "array unset help $item" after " data(items) [lreplace
  $data(items) $idx $idx]" then this bug is fixed.

  m.d.nauta@hetnet.nl


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

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

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

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

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

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

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

  msg1}

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

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

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

  msg1
  }
  ==== mime-3.4 FAILED


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


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

  foo}

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

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

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

  foo
  }
  ==== mime-3.6 FAILED


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

  This is with BWidget 1.6


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

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

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

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

  instead current variable,correct information is returned.


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

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

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


tkt_uuid: 3061815fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 3 Low
foundin: None
resolution: Fixed
title: Docs: Example mixes up alternate
comment:
  CSV Dokumentation section "Examples".
  The result boxes are exchanged. The alternate format should result in the empty string for d).


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: 459186ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: stats - deprecated
priority: 4
foundin: None
resolution: Out of Date
title: counter & stats modules are almost same
comment:
  A cursory look at the diffs of counter.tcl and stats.tcl files
  gives the impression that both are essentially the same.
  Moreover, the ChangeLog file under counter module says:

  2000-10-02  Brent Welch <welch@ajubasolutions.com>

          * NAME CHANGE from "stats" to "counter"
          * counter.tcl: Changed shading of histogram labels.


  I think having two such modules with almost the same 
  functionality can lead to several problems, including confusing
  users on which module to use as well as code maintenance.

  Therefore, it would be best to delete one of the two modules
  -- I don't care which one. It it is not possible to delete one of the
  modules then the procs common to both should be merged into
  a single new library module and then both the modules should 
  refer/call the procs in the new library module.


tkt_uuid: 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: 1522881fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib
priority: 5 Medium
foundin: None
resolution: Fixed
title: widget::panelframe add method generates an error
comment:
  Fix: the line

  foreach {ipadx ipady} [_padval $opts(-pad)] { break }

  in widget::panelframe method add should be

  foreach {ipadx ipady} [$self _padval $opts(-pad)] { break }


tkt_uuid: 1106375fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Fixed
title: Widget Error on failed object's construction
comment:
  ** Widget Error: when an object's constructor fails, the 
  object is not destroyed **


     Let's take the following example.
     Here's a widgetadaptor providing an extension of 
  the 'label' widget.

  package require snit 0.97
  ::snit::widgetadaptor mylabel {
     
     delegate method * to hull
     delegate option * to hull 

     constructor {args} {
        installhull using label
        $win configurelist $args
        puts "** $win created"
     }

     destructor {
        puts "** $win destroyed"
     }
  }   

     when I (wrongly) create an instance 
     (for example, I use an unsupported option),
     the instance is not not destroyed !
    
  mylabel .myL -strangeoption xyz

     the following error is correctly raised
    
  ** .myL destroyed
  Error in constructor: unknown option "-strangeoption" 
   
     but the ".myL" object still exists !
     This is in contrast with 'standard' widgets, because if 
  you write:
    
  label .myL -strangeoption xyz
    
     then an error is raised and the object is not created.

  I also experimented with 'widgetadaptor' ... the 
  behaviour is still wrong.
  Finally I experimented with 'type' ... the behaviour is 
  correct. 


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

  * struct::matrix 1.2.1
  test name 'matrix-0.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.8' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.9' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.10' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.11' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.12' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-0.13' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-1.0' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-1.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-1.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-1.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-1.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-1.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-2.0' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-2.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-2.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-2.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-2.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-2.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-2.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-2.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-3.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-3.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-3.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-3.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-3.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-3.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-3.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-3.8' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-3.9' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-4.0' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-4.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-4.1a' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-4.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-4.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-4.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-4.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-4.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-4.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-5.0' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-5.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-5.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-5.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.0' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.8' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.9' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.10' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.11' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.12' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.13' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.14' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.15' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.16' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.17' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.18' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.19' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.20' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.21' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.22' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.23' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.24' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.25' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.26' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.27' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.28' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.29' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.30' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.31' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.32' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.33' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.34' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.35' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.36' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.43' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-6.44' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-7.0' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-7.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-7.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-7.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-7.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-7.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-7.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-7.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-7.8' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-7.9' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-7.10' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.0' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.8' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.9' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.10' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.11' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-8.12' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.0' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.8' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.9' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.10' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.11' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.12' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.12a' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-9.13' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name '10.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name '10.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name '10.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name '10.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name '10.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name '10.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name '10.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name '10.8' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.9' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.10' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.11' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.12' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.13' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.14' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.15' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.16' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.17' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.18' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.19' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.20' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-10.21' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.0' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.8' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.9' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.10' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.11' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.12' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.13' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-11.14' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-12.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-13.1' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-12.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-13.2' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-12.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-13.3' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-12.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-13.4' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-12.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-13.5' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-12.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-13.6' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-12.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test
  test name 'matrix-13.7' re-used; prior use in
  /local/src/tcllib/modules/struct/matrix.test


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

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


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


tkt_uuid: 453983ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: Integrate 'comm' into tcllib
comment:
  Add the 'comm' extension by John Robert LoVerso
  to tcllib. 'comm' provides socket-based 'send'
  operations. A simple RPC paradigma.


tkt_uuid: 687923ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: stooop
priority: 6
foundin: None
resolution: Fixed
title: tcllib.sourceforge.net/doc/stooop.html points to itself
comment:
  At the end of the document above, a link points to the
  full HTML documentation for stooop.
  Unfortunately, it points to the current document, which
  is the HTML version of the manual page, instead of the
  large HTML document shipped with stooop.
  As the author, is there anything I can do to help
  resolve this issue?

  Many thanks in advance,  Jean-Luc (jfontain@free.fr)


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

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

  -- Possibly doubled, but I got an error message the
  first time


tkt_uuid: 1859693fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
title: Submission: Poisson distribution
comment:
  Hi,

  I'm submitting a file that implements the standard 3 functions for a Poisson distribution:

  pdf-poisson (*)
  cdf-poisson
  random-poisson

  (*) For discrete distributions, this is properly a probability mass function (pmf). Would it be helpful or annoying to call this pmf-poisson?

  The random-poisson function implements a pair of methods for generating Poisson-distributed random variates so it's reasonably fast at both small and large mu.

  The pdf-poisson function has a very direct implementation.

  The cdf-poisson function uses the incomplete gamma function that I submitted in a separate submission. I can re-send it if you like.

  Thanks!
  Eric


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

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


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


tkt_uuid: 433147ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: None
title: csv man page term needs clarified
comment:
  The csv man page mentions the word "values" as an
  argument to, for instance, ::csv::join .  What should
  be mentioned there though is that it is a single
  argument.  I don't know if this argument must be in a
  list format, but I suspect so.  If so, that too should
  be mentioned.

  When I try 
  package require csv
  set a [::csv::join 1 2 3]

  expecting that, passing values, I would get 1,2,3 ,
  instead I get an error.


tkt_uuid: 883573ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ftp change directory problems
comment:
  There is a problem changing to directories with some
  special
  characters.

  I checked the ftp with gftp client and the directories
  are accessible.

  Roi


tkt_uuid: 2220159fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Missing in snitfaq: limitiation on names for options
comment:
  The snitfaq documentation is lacking documentation on
  the allowed names of options. I found out that there 
  are such limitations when I tried to use 
  "transformBefore" as the name.


tkt_uuid: 1491894fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: comm "-listen 0" causes race conditions
comment:
  I observed this behavior using comm 4.3 as delivered with ActiveTcl 
  8.4.11.

  Today for the first time I tried creating multiple comm channels in
  one program.  (Hitherto I'd just used comm::comm directly.)  According
  to the man page, if you do this:

      comm::comm new mychan -listen 0

  you get a channel with an ID of "0".  You can send out with it, but
  there's no listening socket, so you can't connect to it; it has to
  connect out.  Well and good; I thought that was what I wanted.

  So suppose I send a command to a comm(n) channel at port 10001:

     mychan send 10001 {some command}

  The receiver sees the command as coming from sender with id 0.  In
  short, the receiver can't distinguish between commands coming from
  multiple senders which specify -listen 0 (assuming they are all on
  the same host).

  This is a problem for me at the application level, because I want to
  distinguish between the different clients who connect to my server.
  But it also appears to be a problem for comm as well: if I
  start up several clients with channels that use -listen 0, my server
  starts outputting ugly messages like "commIncoming race condition: 
  0".

  The work around is simply to use "-listen 1"....but it makes me
  wonder whether "-listen 0" is actually useful for anything.

  William.H.Duquette@jpl.nasa.gov


tkt_uuid: 3606620fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
resolution: Fixed
title: test strangeness - math-12.1 !error reading
comment:
  Running test on math module I get following error:

  ++++ math-11.1 PASSED
  ---- math-12.1 start
  error reading package index file ./lib/pkgIndex.tcl: permission denied
  error reading package index file ./pkgIndex.tcl: permission denied
  error reading package index file $p(:573:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:572:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:571:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:570:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:569:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:568:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:567:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:566:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:565:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:564:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:563:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:562:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:561:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:560:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:559:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:558:)/pkgIndex.tcl: not allowed to invoke subcommand exists of file
  error reading package index file $p(:556:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:555:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:554:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:553:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:552:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:550:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:549:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:548:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:547:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:546:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:545:)/pkgIndex.tcl: no such file or directory


tkt_uuid: 3167248fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: Release file tcllib-1.13.tar.gz is corrupt
comment:
  The distribution file tcllib-1.13.tar.gz is corrupt. After downloading, trying to unpack yields
  $ tar zxf tcllib-1.13.tar.gz 

  gzip: stdin: unexpected end of file
  tar: Unexpected EOF in archive
  tar: Unexpected EOF in archive
  tar: Error is not recoverable: exiting now

  Same error with different mirrors (ufpr and switch)
  The file tcllib-1.13.tar.bz2 unpacks correctly.


tkt_uuid: 1473699fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: cmdline
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: -? and -help broken
comment:
  cmdline lists the Options -? and -help per default but
  they doesn't work with the dash.

  Example Script:
  #!/bin/sh
  #\
  exec tclsh "$0" "$@"
  #
  package require cmdline
  #
  set options {
     {h              "print this message"}
  }
  #
  # set usage string
  set usage ": name \[options\] \[value\]"
  #
  # parse commandline arguments into array
  array set cmdopt [::cmdline::getoptions argv $options
  $usage]
  #
  #EoF

  Gives errors:
  ./example_script.tcl -?
  ./example_script.tcl -help

  Works as expected:
  ./example_script.tcl ?
  ./example_script.tcl help


tkt_uuid: 587533ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: tree
priority: 5 Medium
foundin: None
resolution: Fixed
title: lappend error message misquoted.
comment:
  In the ::struct::tree::_lappend routine, when the incorrect 
  number of arguments is supplied, the error message 
  states

  "wrong # args: should be tree set node ?-key key? value"

  I think that what should be in this error message is

  "wrong # args: should be tree lappend node ?-key key? 
  value"


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: 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: 899207ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Fixed
title: snit test failures
comment:
  In the tcllib 1.6 release,
  with Tcl/Tk 8.4.6 on Solaris 9:

  - snit 0.93

  ==== install-2.2 Delegate option * for a shadowed
  option.  Foreground is declared
      as a non-delegated option, hence it will pick up
  the option database
      default.  -foreground is not included in the
  "delegate option *", so
      the text widget's -foreground option will not be
  set from the
      option database. FAILED
  ==== Contents of test case:

      cleanup

      widget myframe {
          option -foreground white
          delegate option * to text

          typeconstructor {
              option add *Myframe.foreground red
          }

          constructor {args} {
              install text using text $win.text
          }

          method getit {} {
              $text cget -foreground
          }
      }

      myframe .frm
      set a [.frm cget -foreground]
      set b [.frm getit]
      destroy .frm
      tkbide

      list $a $b

  ---- Result was:
  red #000000000000
  ---- Result should have been (exact matching):
  red Black
  ==== install-2.2 FAILED


  ==== widgetclass-1.6 implicit widgetclass applied to
  hull FAILED
  ==== Contents of test case:

      cleanup

      widget dog { 
          typeconstructor {
              option add *Dog.background green widgetDefault
          }

          method background {} {
              $hull cget -background
          }
      }

      dog .dog
      
      set bg [.dog background]

      destroy .dog
      
      set bg

  ---- Result was:
  #FF00D6009000
  ---- Result should have been (exact matching):
  green
  ==== widgetclass-1.6 FAILED


  ==== widgetclass-1.7 explicit widgetclass applied to
  hull FAILED
  ==== Contents of test case:

      cleanup

      widget dog { 
          widgetclass DogWidget

          typeconstructor {
              option add *DogWidget.background green
  widgetDefault
          }

          method background {} {
              $hull cget -background
          }
      }

      dog .dog
      
      set bg [.dog background]

      destroy .dog
      
      set bg

  ---- Result was:
  #FF00D6009000
  ---- Result should have been (exact matching):
  green
  ==== widgetclass-1.7 FAILED


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


tkt_uuid: 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: 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: 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: 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: 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: 492563ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: relative domain when parsing email addresses
comment:
  I am submitting a request for a feature for
  mime::
  package.
  If I do mime::parseaddress on some addresses,
  I am getting them parsed against the machine name.
  But I have a very complicated server with a lot of
  domain names pointed to it. I need an option for
  mime::parseaddress to parse addresses relative
  not to machine name but to domain directly provided.
  for example
  set zinfo [mime::parseaddress -mydomain qq.com
  "addr1@qq.com"]
                                  Thank you
                                  Denis Medvedev
  P.S. where is a distribution of tcllib1.1?
  I can't download it from sourceforge - bad requests...
  If you can, please update the distribution of tcllib
  on ftp.scriptics.com - there is only  version 0.8


tkt_uuid: 3382519fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: bwidget 1.x
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: "Font" option configuration for selected page of NoteBook
comment:
  In documentation for BWidget it is stated that with "itemconfigure" command user can query/modify any option that can be used during NoteBook widget creation.
  With current version of BWidget (1.9.5) there is no possibility to change "-font" option for single page.
  I've made few modifications to file "notebook.tcl", and right now it is possible to do that.
  Modified file is attached to this report - maybe it is worth to include it in official release.

  Best regards to all,
  Michal.


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

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


tkt_uuid: 527114ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: Import pop3 demon in Pool
comment:
  Import the pop3 demon in package
  Pool_Net into tcllib, possibly
  modified. This will make testing
  the pop3 client possible. And it
  completes the pop3 implementation.


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: 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: 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: 833034ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: ScrolledWindow fails after managed widget is destroyed
comment:
  ScrolledWindow should be more robust, when the managed
  widget is destroyed, like it was for BWidget 1.5.

  Application background:
  -----------------------
  (1) After creating a ScrolledWindows $sw it has no
  widget and displays a gray background.
  (2) After assigning a widget [$sw setwidget $w] it
  manages the widget $w.
  (3) With 1.6 's not possible anymore to return to state
  (1).

  With BWidget 1.5 it was possible to destroy the widget $w.
  But BWidget 1.6 fails to display anything even after a
  fresh     
  [$sw setwidget ...].

  It would also be nice to have a
      $sw setwidget {}
  making the ScrolledWindow $sw manage no widget.

  Script illustrating the problem
  (runs with 1.5, fails with 1.6):
  -----------------------------
  catch {console show}
  package require -exact BWidget 1.6

  set sw [ScrolledWindow .sw -scrollbar both -auto both]
  pack $sw -fill both -expand yes
  wm geometry . 400x600

  for {set i 0} {$i < 2} {incr i} {
      text .text$i
      .text$i insert end [string repeat "This is text
  window $i\n" 5]
  }

  puts "The ScrolledWindow has no widget"
  after 3000 {$sw setwidget .text0; puts "Set widget 0"}
  after 6000 {destroy .text0; puts "Destroy widget 0"}
  after 9000 {$sw setwidget .text1; puts "Set widget 1"}


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: 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: 737162ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Accepted
title: prevent infinite loop on unterminated multipart
comment:
  in mime.tcl, change
  set line "--$boundary--"
  to
  set x [string length [set line "--$boundary--"]]
  (apparently works, and not setting x is obviously faulty)

  however, since missing MP boundaries are very frequent
  in spam and very rare in legitimate mail, I'd suggest
  to remove the comment sign from the preceeding line
  error "termination string missing in $state(content)"
  (or make it a config option)


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: 1007934fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: None
title: Typo in man page for struct::pool
comment:
  Example 2 for the struct::pool extension mentions:

      set fd {open "|backendApplication" w+}

  Of course, this should be:

      set fd [open "|backendApplication" w+]


  I probably had the "Caps Lock" on when typing this,

  Greetings,

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


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

  Here's a patch to workaround the problem.


tkt_uuid: 1854986fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 7 High
foundin: None
resolution: None
title: repeat-4.x test suite failures
comment:
  Using the cvs head for tcllib and tcl, I am seeing:

  ---- repeat-4.1 start

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

      catch {repeat} msg
      set msg

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

  ---- repeat-4.2 start

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

      catch {repeat a} msg
      set msg

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

  As one last error - despite these failures, the end of the test run reported :
  @@ End 1198158410
  all.tcl:        Total   4       Passed  4       Skipped 0       Failed  0
  Sourced 1 Test Files.
  Sourced 0 Test Files.
  Passed   14828 of  15016
  Skipped    185 of  15016
  Failed       3 of  15016
  #Errors      0

  which is really confusing - there are FAILed tests, yet 0 errors...


tkt_uuid: 595240ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
title: patch for mime & mbot example files
comment:
  andreas - attached are two files

  1. a small patch to mime.tcl that makes it more robust with 
  respect to a common mime encoding error

  2. some new files that go under modules/mime/examples/

  thanks!

  /mtr


tkt_uuid: 2376321fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: bug in fileutil::TempDir
comment:
  I believe I spotted a bug in fileutil::TempDir for $tcl_platform(platform) eq macintosh. Here is the excerpt:

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

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

  macintosh {
      lappend attempdirs $env(TRASH_FOLDER)
  }


tkt_uuid: 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: 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: 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: 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: 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: 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: 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: 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: 1362899fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: ButtonBox does calculate homogenous sizes correctly
comment:
  Given a ButtonBox with -homogeneous 1 and -orient
  horizontal, it is possible for buttons to be
  incorrectly sized.  The [_redraw] procedure attempts to
  determine the maximum button width and then sets the
  columns' minsize.  However, it has not scanned /all/ of
  the buttons and thus only knows the maximum size up to
  that point; there could be an even larger button later
  in the list.

  The following code was tested under Linux/x86, Tk 8.4,
  and BWidgets 1.7:

  % package require BWidget
  1.7
  % Dialog .test -homogeneous 1
  .test
  % .test add -text "ok" ; .test add -text "really long
  cancel button"
  .test.bbox.b1
  % puts [grid columnconfigure .test.bbox 0 -minsize];
  puts [grid columnconfigure .test.bbox 2 -minsize]
  44
  169
  % .test draw

  Attached to this bug report is a patch that correctly
  calculates button widths.  It should work for all cases.


tkt_uuid: 433970ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: frink/procheck results
comment:
  Applied frink 2.1.1 and procheck to the script code in
  tcllib. The enclosed patch is the results, fixing bugs,
  warnings, partially supressing warnings which are
  bogus.


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: 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: 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: 548224ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: hpupdate status incorrectly displays
comment:
  The idea in this demo is that one will, on a
  regular basis, update a series of files and then upload
  them via ftp to an http server.

  It depends on a proc called Touch to update a file's
  update date , which then it uses to determine which
  files were changed since that date.

  On my SPARC Solaris 8, using Tcl/Tk 8.4, the Touch
  proc does NOT update the file.  This results in the
  demo program not functioning properly.

  The strange thing is that I don't see a reason for it
  to fail.  And in fact, no errors occur - but the file's
  date never changes.

  I will continue searching for a solution.


tkt_uuid: 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: 2915921fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
title: Add commands for extended punctuation (em-dash, en-dash)
comment:
  It would be convenient to have a set of markup commands which would produce special punctuation signs on output.
  Of most interest are "wide dashes", namely, em-dash and en-dash.
  Such commands could be named as [mdash] and [ndash] respectively, and produce:
  [mdash]: &mdash; in HTML and \(em in nroff;
  [ndash]: &ndash; in HTML and \(en in nroff.

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


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


tkt_uuid: 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: 3094654fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: http :: autoproxy
priority: 3 Low
foundin: None
resolution: Fixed
title: Autoproxy man page - before options
comment:
  On the man page, section "Options": some options have a "-" as first character, some dont.
  IMHO they all should have one (or none, as the - is given in the configure method description)


tkt_uuid: 984407ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tklib :: ctext
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Hang in ctext with regexp match
comment:
  Just been playing with ctext and I ran into a bug which causes an 
  endless loop on my system. The problem came from trying to 
  highlight Tcl comments, using:

  ctext::addHighlightClassForRegexp $win comment navy 
  {#[^\n]*\n}

  Then if I add the following to the text widget:

  This is a test
  # This is a test
  foo


  Then position the cursor somewhere in the comment, and press 
  backspace - endless loop occurs in ctext::highlight - the third while 
  1 loop. Problem seems to be that the [$win search..] stuff is 
  passed indices like 4.0 3.15  (i.e. start is after end), and it return 
  3.0 bizarrely (this may be a bug in the text widget, or possibly in 
  the Mac OS X implementation - I haven't followed up yet). The fix 
  was to add these lines after the {"" == $res} check:

  # If result given is less than the start index (can happen), then
  # break out
  foreach {l1 c1} [split $res .] {l2 c2} [split $si .] { break }
  if {$l1 < $l2 || ($l1 == $l2 && $c1 < $c2)} { break }


  Everything seems to work again after adding that in. I would 
  upload a patch, but I'm very busy at present. Hassle me by email 
  if you really really want a patch!


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

  FIX: 

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

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

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

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

  ...


tkt_uuid: 3308051fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 5 Medium
foundin: None
resolution: Accepted
title: struct::list equal is not commutative in special case
comment:
  tclsh Session:
  % struct::list equal [list [list a]] {{a}}
  0
  % struct::list equal {{a}} [list [list a]]
  1

  Looks like a bug to me;)

  Proposed patch attachted.


tkt_uuid: 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: 516723ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: doctools - javadoc like application
comment:
  Add library/application which does javadoc like 
  processing of .tcl files and thus auto-generates 
  documentation.


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

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

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

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

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


tkt_uuid: 1566488fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: bignum :: float
priority: 5 Medium
foundin: None
resolution: Invalid
title: failed tests with Tcl 8.5 (64-bit)
comment:
  Using Tcl HEAD (8.5a5) on a
  64-bit system:

  ==== bigfloat-fromdouble-2.1f Some floating-point
  computations related to command fromdouble FAILED
  ==== Contents of test case:
  return $resultat
  ---- Result was:
  0
  ---- Result should have been (exact matching):
  1
  ==== bigfloat-fromdouble-2.1f FAILED


  ==== bigfloat-int2float-2.9.2.3 Some integer
  computations related to command int2float FAILED
  ==== Contents of test case:
  uplevel 1 $code
  ---- Result was:
  -29127.3114
  ---- Result should have been (exact matching):
  5000000000.0000
  ==== bigfloat-int2float-2.9.2.3 FAILED


  ==== bigfloat-cos-4.4.1.0 Some floating-point
  computations related to command cos FAILED
  ==== Contents of test case:
  return $resultat
  ---- Result was:
  0
  ---- Result should have been (exact matching):
  1
  ==== bigfloat-cos-4.4.1.0 FAILED

  ---- bigfloat-sin-4.4.1.1 start


  ==== bigfloat-sin-4.4.1.1 Some floating-point
  computations related to command sin FAILED
  ==== Contents of test case:
  return $resultat
  ---- Result was:
  0
  ---- Result should have been (exact matching):
  1
  ==== bigfloat-sin-4.4.1.1 FAILED

  ---- bigfloat-cos-4.4.2.0 start


  ==== bigfloat-cos-4.4.2.0 Some floating-point
  computations related to command cos FAILED
  ==== Contents of test case:
  return $resultat
  ---- Result was:
  0
  ---- Result should have been (exact matching):
  1
  ==== bigfloat-cos-4.4.2.0 FAILED

  ---- bigfloat-sin-4.4.2.1 start


  ==== bigfloat-sin-4.4.2.1 Some floating-point
  computations related to command sin FAILED
  ==== Contents of test case:
  return $resultat
  ---- Result was:
  0
  ---- Result should have been (exact matching):
  1
  ==== bigfloat-sin-4.4.2.1 FAILED


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


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

  set host test
  package require uri
  puts $host

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

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

  package require uri
  puts $host

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

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

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


tkt_uuid: 886385ffffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: control
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Enhanced do...while|until [prefix] [suffix] Control Structur
comment:
  This one came out of my customer demand! Pat Thoyts 
  and Donal K. Fellows suggested me to submit it here.

  The submission is in form of a TIP. Please search 
  for "sample implementation" to get to the code.

  Please also see at the end of it, untried version of tests. 
  Please search for "tests for do" to get to the code

  TIP 
  Title 
  Enhanced do...while|until [prefix] [suffix] Control 
  Structure 
  Version 
  $Revision: 1.4 
  Author 
  Bhushit Joshipura 
  State 
  Draft 
  Type 
  Project 
  Vote 
  Pending 
  Created 
  20-Jan-2004 
  Keywords 
  control structure, do, while, until, prefix, suffix 
  ~ Abstract 
  This TIP proposes the introduction of an enhancement 
  on do...while|until control structure already present in 
  TCLLib. It proposes to add prefix statement list and 
  suffix statement list to prepend and append to 
  statement body of do...while|until for the "while" part 
  (second loop onwards) of the loop. 
  ~ Rationale 
  Theoretically only two controls - if and goto - are 
  sufficient to implement all algorithms. However, 
  languages provide more control structures for better 
  representation of algorithms. 
  do...while|until is a useful structure in itself for parsing, 
  file reading etc. With little pain, a while loop does the 
  job too. However, when it comes to nesting, 
  do...while|until into another, equivalent while loop starts 
  becoming clumsier. 
  In situations where do...while|until is used in testing, if 
  the statement body of do...while|until changes state of 
  entity being tested, next iteration is bound to have side 
  effects. At that time, proposed prefix and suffix 
  statements come handy. 
  While it is still possible to handle all of these in a while 
  loop, nesting becomes a nightmare. 
  Proposed solution is more elegant, in spirit of 
  do...while|until's spirit of treating first pass specially. 
  ~ Implementation in Other Languages 
  C, C++, Java, Pascal have do...while. Perl has 
  do...while|until. Python does not have any equivalent. 
  ~ Grammar and Behavior 
  |do { 
  | 
  |} while|until { } [ prefix { }] [suffix { statements2>}] 
  1. are executed 
  2. while|until is evaluated 
  3. while associated are true ( or until are false ) 
  3.1 are executed 
  It is necessary to specify one and only one of "while" 
  or "until" with proper condition block following it. 
  ~Sample Invocations 
  set x 1 
  |do { 
  |    puts "Hello world!" 
  |    incr x 
  |} until { $x > 3 } prefix { 
  |    puts "prefix begin" 
  |    puts $x 
  |    puts "prefix end" 
  |} suffix { 
  |    puts "suffix begin" 
  |    puts $x 
  |    puts "suffix end" 
  |} 
  ~Contrast 
  Contrast above code with its while loop equivalent 
  |set x 1 
  |set firsttime "yes" 
  |while { $x <= 3 } { 
  |    if { $firsttime == "no" } { 
  | puts "prefix begin" 
  | puts $x 
  | puts "prefix end" 
  |    } 
  |    puts "Hello world!" 
  |    incr x 
  |   if { $firsttime == "no" } { 
  | puts "suffix begin" 
  | puts $x 
  | puts "suffix end" 
  |    } 
  |    set firsttime "no" 
  |} 
  ~Sample Implementation 
  |# do.tcl -- 
  |# 
  |#        Tcl implementation of a "do ... while|until" loop. 
  |#        Once first iteration gets over, body can be 
  augmented using prefix or suffix 
  |# 
  |# Originally written for the "Texas Tcl Shootout" 
  programming contest 
  |# at the 2000 Tcl Conference in Austin/Texas. 
  |# 
  |# Copyright for TCLLib implementation was 
  |# Copyright (c) 2001 by Reinhard Max 
  |# 
  |# Added prefix and suffix by Bhushit Joshipura, 
  December 15, 2003 
  |# Bhushit does not know what happens to copyrights 
  |# 
  |# See the file "license.terms" for information on usage 
  and redistribution 
  |# of this file, and for a DISCLAIMER OF ALL 
  WARRANTIES. 
  |# 
  |# 
  |namespace eval ::control { 
  | 
  |    proc do {body args} { 
  | 
  | # 
  | # Implements a "do body while|until test [ [prefix | 
  suffix] bodyparts ]" loop 
  | # 
  | # It is almost as fast as builtin "while" command for 
  loops with 
  | # more than just a few iterations. 
  | # 
  | 
  | set len [llength $args] 
  | if {$len != 6 && $len != 4 && $len !=2 && $len != 0} { 
  |     set proc [namespace current]::[lindex [info level 0] 
  0] 
  |     return -code error "wrong # args: should be \"$proc 
  body\" or \"$proc body \[until|while\] test\" or \"$proc 
  body \[until|while\] test \[ \[ prefix | suffix \] bodyparts 
  \]" 
  | } 
  | set test 0 
  | set bodyprefix "" 
  | set bodysuffix "" 
  | set whileOrUntil "" 
  | 
  | foreach { argument value } $args { 
  |     switch -exact -- $argument { 
  | "while" { 
  |     if { $whileOrUntil == "" } { 
  | set whileOrUntil $argument 
  | set test $value 
  |     } else { 
  | return -code error \ 
  |     "\"$argument\" found after \"$whileOrUntil\"" 
  |     } 
  | } 
  | "until" { 
  |     if { $whileOrUntil == "" } { 
  | set whileOrUntil $argument 
  | set test !($value) 
  |     } else { 
  | return -code error \ 
  |     "\"$argument\" found after \"$whileOrUntil\"" 
  |     } 
  | } 
  | "prefix" { 
  |     # last of prefix will be considered 
  |     set bodyprefix $value 
  | } 
  | "suffix" { 
  |     # last of suffix will be considered 
  |     set bodysuffix $value 
  | } 
  | default { 
  |     return -code error \ 
  | "bad option \"$whileOrUntil\": must be until, while, 
  prefix or suffix" 
  | } 
  |     } 
  | } 
  | 
  | # the first invocation of the body 
  | set code [catch { uplevel 1 $body } result] 
  | 
  | # decide what to do upon the return code: 
  | # 
  | #               0 - the body executed successfully 
  | #               1 - the body raised an error 
  | #               2 - the body invoked [return] 
  | #               3 - the body invoked [break] 
  | #               4 - the body invoked [continue] 
  | # everything else - return and pass on the results 
  | # 
  | switch -exact -- $code { 
  |     0 {} 
  |     1 { 
  | return -errorinfo [ErrorInfoAsCaller uplevel do]  \ 
  |     -errorcode $::errorCode -code error $result 
  |     } 
  |     3 { 
  | # FRINK: nocheck 
  | return 
  |     } 
  |     4 {} 
  |     default { 
  | return -code $code $result 
  |     } 
  | } 
  | 
  | set body [ format "%s\n%s\n%s" $bodyprefix $body 
  $bodysuffix ] 
  | 
  | # the rest of the loop 
  | set code [catch {uplevel 1 [list while $test $body]} 
  result] 
  | if {$code == 1} { 
  |     return -errorinfo [ErrorInfoAsCaller while do] \ 
  | -errorcode $::errorCode -code error $result 
  | } 
  | return -code $code $result 
  | 
  |    } 
  |} 
  ~Copyright 
  This document is placed in public domain. 


  Tests for do

  # do.test --
  #
  #         Tests for [control::do]
  # 
  # RCS: @(#) $Id: do.test,v 1.6 2003/05/01 22:40:13 
  patthoyts Exp $
  #

  package forget control
  catch {namespace delete control}

  # Direct loading of provide script -- support testing even
  # when not installed.  And be sure we test the local copy
  # and not some later version that may be installed.
  source [file join [file dirname [info script]] control.tcl]
  namespace import ::control::do

  package require tcltest
  namespace import -force 
  tcltest::test ::tcltest::cleanupTests

  # This constraint restricts certain tests to run on tcl 
  8.3+
  if {[package vsatisfies [package provide tcltest] 2.0]} {
      # tcltest2.0+ has an API to specify a test constraint
      ::tcltest::testConstraint tcl8.3plus \
          [expr {[package vsatisfies [package provide Tcl] 
  8.3]}]
  } else {
      # In tcltest1.0, a global variable needs to be set 
  directly.
      set ::tcltest::testConstraints(tcl8.3plus) \
          [expr {[package vsatisfies [package provide Tcl] 
  8.3]}]
  }

  # ----------------------------------------
  test {do-1.0} {do ... while} {
      set x 0
      do {incr x} while {$x < 10}
      set x
  } 10

  # ----------------------------------------
  test {do-1.1} {do ... until} {
      set x 0
      do {incr x} until {$x > 10}
      set x
  } 11

  # ----------------------------------------
  test {do-1.2} {break} {
      set x 0
      do {
  incr x
  if {$x == 5} {break}
      } until {$x == 10}
      set x
  } 5

  # ----------------------------------------
  test {do-1.3} {continue} {

      set x 0
      set xx [list]
      do {
  incr x
  if {$x == 5} {continue}
  lappend xx $x
      } until {$x == 10}
      set xx
  } {1 2 3 4 6 7 8 9 10}

  # ----------------------------------------
  test {do-1.4} {error} {
      catch {
  set x 0
  do {
      incr x
      if {$x == 5} {foo}
  } while {$x < 10}
      } result
      list $x $result
  } {5 {invalid command name "foo"}}

  # ----------------------------------------
  test {do-1.5} {return} {
      proc foo {} {
  set x 0
  do {
      incr x
      if {$x == 5} { return $x }
  } while {$x < 10}
      }
      set result [foo]
      rename foo ""
      set result
  } 5

  # ----------------------------------------
  test {do-1.6} {break in the first loop} {
      set x 0
      do {
  break
  incr x
      } while {$x < 10}
      set x
  } 0

  # ----------------------------------------
  test {do-1.7} {continue in the first loop} {
      set x 0
      set xx [list]
      do {
  incr x
  if {$x == 1} {continue}
  lappend xx $x
      } until {$x == 10}
      set xx
  } {2 3 4 5 6 7 8 9 10}

  # ----------------------------------------
  test {do-1.8} {error in the first loop} {
      set x 0
      catch {
  do {
      foo
      incr x
  } until {$x == 10}
      } result
      list $x $result
  } {0 {invalid command name "foo"}}

  # ----------------------------------------
  test {do-1.9} {[do ... while] with false condition} {
      set x 0
      do {
  incr x
      } while 0
      set x
  } 1

  # ----------------------------------------
  test do-1.10 {[do ... until] with true condition} {
      set x 0
      do {
  incr x
      } until 1
      set x
  } 1

  # ----------------------------------------
  test do-1.11 {third arg is neither while nor until} {
      set x 0
      catch {
  do {
      incr x
  } foo 1
  set x
      } result
      list $x $result
  } {0 {bad option "foo": must be until, or while}}

  # ----------------------------------------
  test do-1.12 {stack traces for errors in the first 
  iteration} {
      proc a {} b
      proc b {} {do c while 1}
      proc c {} d
      catch a
      set ::errorInfo
  } {invalid command name "d"
      while executing
  "d"
      (procedure "c" line 1)
      invoked from within
  "c"
      ("do" body line 1)
      invoked from within
  "do c while 1"
      (procedure "b" line 1)
      invoked from within
  "b"
      (procedure "a" line 1)
      invoked from within
  "a"}

  # ----------------------------------------
  test do-1.14 {stack traces for errors in subsequent 
  iterations} tcl8.3plus {
      proc a {} b
      proc b {} {
  set i 10
  do {
      incr i -1
      c $i
  } while {$i}
      }
      proc c {i} {if {$i==5} e}
      catch a
      set ::errorInfo
  } {invalid command name "e"
      while executing
  "e"
      (procedure "c" line 1)
      invoked from within
  "c $i"
      ("do" body line 3)
      invoked from within
  "do {
      incr i -1
      c $i
  } while {$i}"
      (procedure "b" line 3)
      invoked from within
  "b"
      (procedure "a" line 1)
      invoked from within
  "a"}

  # ----------------------------------------
  test do-2.0 {one-shot do} {
      set x 0
      do {incr x}
      set x
  } 1

  # ----------------------------------------
  test do-2.1 {one-shot do with break} {
      set x 0
      do {incr x; break; incr x}
      set x
  } 1

  # ----------------------------------------
  test do-2.2 {wrong no of arguments} {
      set x 0
      set res [catch {do {incr x} foo} ret]
      list $x $res $errorInfo
  } {0 1 {wrong # args: should be "::control::do body" 
  or "::control::do body [until|while] test"
      while executing
  "do {incr x} foo"}}

  # ----------------------------------------
  test do-2.3 {wrong no of arguments} {} {
      set res [catch do]
      if {[string match \
       {no value given for parameter "body" 
  to "do"*} \
       $::errorInfo]
      } then {
  set ::errorInfo {wrong # args: should be "do 
  body args"
      while executing
  "do"}
      }
      list $res $::errorInfo
  } {1 {wrong # args: should be "do body args"
      while executing
  "do"}}

  # ----------------------------------------
  test do-2.4 {one-shot do with error} {
      set x 0
      set res [catch {do {
  incr x
  foo
  incr x
      }}]
      list $x $res $::errorInfo
  } {1 1 {invalid command name "foo"
      while executing
  "foo"
      ("do" body line 3)
      invoked from within
  "do {
  incr x
  foo
  incr x
      }"}}

  cleanupTests

  if {[info exists ::argv0] && $::argv0 == [info script]} {
      # a proc that wastes some time
      proc something {n} {
  for {set i 0} {$i < $n} {incr i} {}
      }
      
      proc main {} {
  # run it for the first time to get it byte compiled
  something 1

  set payload {
      something 10
      incr x
  }
  puts "\nComparing performance of do-while, do-
  until and builtin while..."
  set format "%-8s : %20s for %4d iteration(s)."
  foreach c {1 10 5000} {
      puts ""
      foreach {descr script} {
  {do while} {do $payload while {$x < 
  $c}}
  {do until} {do $payload until {$x == 
  $c}}
  {while} {while {$x < $c} $payload}
      } {
  set x 0
  puts [format $format $descr [lrange 
  [time $script 1] 0 1] $x]
      }
  }
      }
      main
  }

  # Local variables:
  # mode: tcl
  # End:


tkt_uuid: 3423097fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: smtp lacks -timeout option
comment:
  There's a need for such option, to assure reliability for scipts using smtp client package. I made a simple "experiment": while sending a few mails simply pulled ethernet plug out of the socket - the script went "frozen" for several minutes (didn't measure...), until I plugged it in again. IMHO there should be possibility to give up ("-timeout x", where "-timeout 0" could mean "keep trying unlimited time"), And perhaps it could be improved a bit: to keep the entire script responsible, even in the case of network problems, like loss of connectivity?


