# ticket

tkt_uuid: 1731101fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Works For Me
title: ScrollableFrame invalid scrollbar
comment:
  Hi,
  I've had quite an annoying bug with Bwidget's ScrollableFrame. Whenever we have data in the frame that doesn't need a scrollbar, at first, there is no scrollbar, but if we resize the window to give it a smaller size, then a scrollbar appears even though it is still not needed. Clicking on the scrollbar will make it disappear instantly. 
  In other words, you create a toplevel of size 500x500, you put a ScrollableFrame in a ScrolledWindow in it, you put widgets in the ScrollableFrame where the internal frame takes 100x100, no scrollbar needed, if we resize the toplevel to 400x400 for example, then a scrollbar appear even though it shouldn't until the size gets under 100x100. Clicking on the scrollbar makes it disappear, if we resize again to 300x300, it appears again. If we resize to 500x500, no scrollbar, if we resize again to 400x400, still no scrollbar.

  I found out the reason behind this. It's pretty simple. The ScrollableFrame is in fact a canvas which contains a frame. This allows the scrollbar to work with the canvas. ScrollableFrame creates the frame and adds a binding on its <Configure> which calls ::ScrollableFrame::_frameConfigure 
  That proc checks the [winfo width] and [winfo height] of the frame and takes the maximum width/height between the width/height of the frame and the width/height of the canvas and sets that as the -scrollregion of the canvas.

  In other words, in the above example, the width/height of the frame is 100x100 and the one of the canvas is 500x500, so the -scrollregion of the canvas becomes [list 0 0 500 500].

  Once we resize the window to 400x400 the scrollregion being [list 0 0 500 500] the scrollbar appears. And the reason why the -scrollregion doesn't get modified is that the frame doesn't get <Configured> since we resize to 400x400 and the frame is in 100x100 so its boundaries aren't touched, so the frame is not <Configured> so the ::ScrollableFrame::_frameConfigure doesn't get called, which is why the scrollregion isn't changed and the scrollbar appears.

  I hope this isn't too confusing.. Anyways, my solution was to simply replace the _frameConfigure proc by a one lines : 
  $canvas:cmd configure -scrollregion [$canvas:cmd bbox all]
  This makes the scrollregion of the canvas be set to the frame's width/height so when we resize, the scrollbar doesn't appear, and if we resize to let's say 99x99, then the scrollbar appears because of the [$canvas:cmd bbox all]. If the frame's size is modified, then you get the <Configure> and the bbox will report the new size of the scrollregion.

  Can you please make sure this patch gets into the next version of bwidget. 

  p.s.: sorry if it's too long and difficult to understand, I'm not very good at explaining things...


  Thank you,
  KaKaRoTo


tkt_uuid: 533025ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 7 High
foundin: None
resolution: Accepted
title: sendmessage: response too short
comment:
  smtp::sendmessage can return the error "response too 
  short" when sending through a mail server that 
  responds very quickly.
  This is due to smtp::readable not handling the "no 
  full-line available" condition.
  I have attached a fix that works for me, in the form 
  of a diff against smtp.tcl from tcllib0.6.1.

  Regards
  Simon Scott


tkt_uuid: 630381ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: Cannot save multi-part MIME
comment:
  I am using the ActiveTcl 8.4.1 which I downloaded and installed yesterday
  on a Windows ME machine

  Trying to save a multi-part MIME with the command
      mime::copymessage $multiT $stream
  I get this error message:

  cannot open libcrypt
  cannot open libcrypt
      while executing
  "md5 -- $key"
      (procedure "mime::copymessageaux" line 62)
      invoked from within
  "mime::copymessageaux $token $channel "
      invoked from within
  "mime::copymessage $multiT $stream"

  It occurs to me that this might be something to do with US export controls
          --Jasper


tkt_uuid: 466850ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: cmdline
priority: 5 Medium
foundin: None
resolution: Fixed
title: cmdline::getoptions comments improvement
comment:
  Part of the comments for the getoptions proc read:

  #optlistA list-of-lists where each element specifies an option
  #in the form:
  #flag default comment
  #If flag ends in ".arg" then the value is taken from the
  #command line. Otherwise it is a boolean and appears in
  #the result if present on the command line. If flag ends
  #


  This is misleading because it says that the "default"
  field is required, even if the flag takes no arg.

  Please change the comments to read:

  #optlistA list-of-lists where each element specifies an option
  #in the form:
  #(where flag takes no argument)
  #flag comment
  #(or where flag takes an argument)
  #                               flag.arg default comment
  #If flag ends in ".arg" then the value is taken from the
  #next token present in the command line. Otherwise it is a 
  #boolean and appears in the result if present on the command line. 


tkt_uuid: 744109ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 8
foundin: None
title: easier help access for dtp
comment:
  It's not very easy for a tcl beginner to access to dtp help: no 
  manual or help file is given so you have to use dtp embeded 
  help. But it's not so easy to get it, you have to call dtp with a wrong 
  arg if you want a *real* subcommand list. Adding available 
  subcommands list to dtp (with no arg) output might be a good 
  thing.

  I've also notice that "dtp help" doesn't list wiki as 
  possible output format, but it works with the dtp.kit I've 
  recently downloaded from sdarchive.

  Last thing, I 
  think a ascii screen output format using something like unix or 
  dos more utility would be very fine.


tkt_uuid: 1102131fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: log
priority: 8
foundin: None
resolution: Fixed
title: logger: does not print full service name
comment:
  Hi,

  If I create a logger service name called "foo::bar", it
  simply prints "foo" in the log message instead of the
  full service name. See below:

  godel:144> cat foobar.tcl
  #!/bin/sh
  # \
  exec tclsh "$0" ${1+"$@"}


  package require logger

  namespace eval ::foo {

      namespace export {[a-z]*} ;# export all commands
  begining with lower case.
      variable _foo             ;# array containing foo
  runtime globals

      set log [logger::init foo]
      logger::import -all -namespace log foo
      log::setlevel notice
      puts "foo level = [log::currentloglevel]"

  }

  namespace eval ::foo::bar {

      set log [logger::init foo::bar]
      logger::import -all -namespace log foo::bar
      log::setlevel info
      puts "foo::bar level = [log::currentloglevel]"

  }

  proc ::foo::x args {
      log::warn   "foo::x warn"
      log::debug  "foo::x debug"
  }
  proc ::foo::bar::y args {
      log::warn   "foo::bar::y warn"
      log::info   "foo::bar::y info"
      log::debug  "foo::bar::y debug"
  }

  ::foo::x
  ::foo::bar::y

  godel:145> tclsh foobar.tcl
  foo level = notice
  foo::bar level = info
  [Fri Jan 14 01:47:04 EST 2005] [foo] [warn] 'foo::x warn'
  [Fri Jan 14 01:47:04 EST 2005] [foo] [warn]
  'foo::bar::y warn'
  [Fri Jan 14 01:47:04 EST 2005] [foo] [info]
  'foo::bar::y info'
  godel:146> 

  I would have expected the above output to be as follows:

  [Fri Jan 14 01:47:04 EST 2005] [foo] [warn] 'foo::x warn'
  [Fri Jan 14 01:47:04 EST 2005] [foo::bar] [warn]
  'foo::bar::y warn'
  [Fri Jan 14 01:47:04 EST 2005] [foo::bar] [info]
  'foo::bar::y info'

  Without full service name, it is difficult to
  distinguish/debug as to which module the message is
  comming from.

  Hemang.


tkt_uuid: 524712ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: md5
priority: 5 Medium
foundin: None
resolution: Invalid
title: md5::md5 fails with Trf2.1p2 (tcllib1.2)
comment:
  In tclsh (8.3):

  % package require tcllib
  1.2
  % md5::md5 507
  ::hex: wrong # args, all options require an argument

  I have Trf 2.1p2 installed, which means the following
  code is executed from md5.tcl:
  -------------------------------------------
  # Trf is available, so implement the functionality
  provided here
      # in terms of calls to Trf for speed.

      proc ::md5::md5 {msg} {
  string tolower [::hex -mode encode [::md5 $msg]]
      }
  -------------------------------------------

  The reason for the failure is that [::md5 $msg] returns
  a binary result starting with '-', which causes the
  ::hex to think there is another option.
   
  The fix is to insert "--" following the "encode":

  -------------------------------------------
      proc ::md5::md5 {msg} {
  string tolower [::hex -mode encode -- [::md5 $msg]]
      }
  -------------------------------------------

  There is at least one other occurrence of the same bug
  in md5.tcl, and I would imagine this could also occur
  where ::hex or other encoding functions are called.

  I'm willing to fix this bug.


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


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

  ---- repeat-4.1 start

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

      catch {repeat} msg
      set msg

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

  ---- repeat-4.2 start

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

      catch {repeat a} msg
      set msg

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


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

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

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

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

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

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

  I haven't found a simple workaround yet.

  mailto:M.Hoffmann@hmk.info


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

  Something like 

  option -thisOrThat

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

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

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

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

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

  option -thisÄtschThat

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

  string is upper Ä
  ==> 1


tkt_uuid: 3107937fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: http :: autoproxy
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Manual/Modification: when is autoproxy hooked to http
comment:
  IMHO, the following fact is:
  - not very handy
  - not clearly expressed in the manual
  The autoproxy module only hooks into the http module by:
  http::config -proxyfilter [namespace origin filter]
  when:
  - autoproxy::init is called
  - and a proxy is found in the system or specified to the command

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

  Bug or feature ?

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

  See this clt-thread for the discussion:

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

  Thanks to Alexandre to work this out !!!

  Harald


tkt_uuid: 3497592fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: ListBox problem (at least with V1.9.5)
comment:
  The options selectfill and autofocus are read-only, This should be documented or modified to support write access after widget creation.


tkt_uuid: 860753ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: textutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: plain justification does not work with hyphenation
comment:
  the script

  package require textutil

  ::textutil::adjust::readPatterns
  /usr/lib/tcllib1.4/textutil/dehypht.tex

  puts stdout [::textutil::adjust " ein test strin ein
  test string  ein test string  ein test string  ein test
  string  ein test string  ein test string  ein test
  string  ein test string  ein test string  ein test
  string  ein test string  ein test string  ein test
  string  ein test string  ein test string  ein test
  string  ein test string g  ein test string 
  " -length 76 -hyphenate true -strictlength true
  -justify plain]

  generates the following error:

  can't read "words(1)": no such element in array
      while executing
  "eval list $i $words($i) 1 "
      (procedure "Justification" line 80)
      invoked from within
  "Justification $line [incr numline] words"
      (procedure "Adjust" line 138)
      invoked from within
  "Adjust text newtext"
      (procedure "::textutil::adjust" line 8)
      invoked from within
  "::textutil::adjust " ein test strin ein test string 
  ein test string  ein test string  ein test string  ein
  test string  ein test string  ein test str..."
      invoked from within
  "puts stdout [::textutil::adjust " ein test strin ein
  test string  ein test string  ein test string  ein test
  string  ein test string  ein test string ..."
      (file "textutil.tcl" line 5)

  plain justification without hyphenation works,
  hyphenation with left, center, right justification works


tkt_uuid: 628041ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget Tree node names with brackets
comment:
  Hi,

  On CLT is was mentioned nodes names with brackets
  caused problems with the BWidget::Tree widget. This was
  caused by the Tree widget using lsearch without a
  search mode specified. By default lsearch user 'string
  match' style matching where characters between brackets
  hhave a special meaning. This patch add -exact to each
  use of lsearch.

  Jos.


tkt_uuid: 548354ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: base64
priority: 5 Medium
foundin: None
resolution: Fixed
title: yenc testsuite trouble
comment:
  The yencode testsuite does not work if a build 
  directory outside of the tcllib source tree is chosen.
  It will not find its datafile.


tkt_uuid: 776010ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: list
priority: 8
foundin: None
title: Add set operations.
comment:
  Date: 22 Jul 2003 17:46:51 GMT
  From: lvirden@yahoo.com
  Newsgroups: comp.lang.tcl
  Subject: Re: common elements in list of list


  According to Michael A. Cleverly <michael@cleverly.com>:
  :On 22 Jul 2003, Sasi wrote:
  :
  :>        How can get the list of common elements in
  the list of list? eg:
  :> set x {
  :>        {1 2 3 4 5 6}
  :>        {6 7 8 9 5 1}
  :>        {1 2 7 5 8 9}
  :>       }
  :>
  :> the common elements in this list of list are 1 & 5
  :> is there any easy way to extract them?
  :
  :Here's a solution off the top of my head:

  Michael, would you consider possibly adding this
  solution, or a derivation, to the struct::list module
  of tcllib?


tkt_uuid: 856280ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
title: Add deletion callbacks to logger
comment:
  At the moment there is no (public) way to do a clean
  shutdown of the logger system. If one uses a custom
  logproc that opens files etc. it is not possible to
  detect the correct time a logfile should be closed etc. 

  So a mechanism to associate a destructor with the
  logging service would be very nice to cleanup things,
  without extra bookkeeping.

  Either a new subcommand of ${log} or as an option to
  logger::init, the procs should be called when a delete
  operation is performed, walking the tree from the
  children to the root of the tree.

  Michael 


tkt_uuid: 767522ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: tree
priority: 8
foundin: None
title: add tree command list processing
comment:
  NOTE: This builds on the use of the "-key ?Pattern?" 
  enhancement request that I made earlier.


  I think it would be very useful to allow ::struct::tree 
  commands to hadle and return list inputs based on either 
  a ::struct::tree command or another tcl 
  command/variable that a user may wish to use.

  EXAMPLE GOAL: Extract a set of keys from a node, 
  extract all of the key-names/values to an array

  array set myArray [myTree getall [myTree get %n -key 
  paramValue*]]

  The point here is 3 fold:
  1) extract a group of keys by a pattern match
  2) get key values based on a list of keys
  3) getall keys/values based on a list of extracted node 
  keys and put into an array.


  As you can see, if the above example was implemented, 
  there would be significantly less coding required to 
  extract simple or complex ::stree::tree keys or values 
  (or both) as compared to several processes/variables to 
  track the same things.

  I realize that a user could simple convert the entire 
  structure into an array, but that is not the goal, 
  the ::struct::tree has the potential to be more 
  functional and useful if it had the abilities to truely 
  loop/break and had filtering capabilities.

  Questions?

  Dave Bigelow


tkt_uuid: 548540ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ftp::Put success on control timeout
comment:
  On numerous Tcl versions (up to 8.3) and ftp
  library versions (1.2, 2.2, 2.3) we have
  experienced false successes for ftp::Put.
  Recently, we have noticed that these occur when
  ftp::Put encounters the error:
  "Timeout of control connection"

  If a sequence of files are being sent by ftp::Put,
  then subsequent files after the erroneous success
  will have their data written to the wrong file name.

  E.g.

  ftp::Put A is OK

  ftp::Put B times out

  ftp::Put C sends C's contents to the file B!

  As a work-around I set a flag in the
  ftp::DisplayMsg procedure within the error
  branch.  If this flag is set despite ftp::Put
  indicating success, then I treat this as a 
  failed ftp::Put.  I then quit the connection
  to try again.

  Additionally, a couple of times after experiencing
  these false-positive results when we have attempted
  to quit the connection, we have encountered an
  inifinite loop:

  bgerror failed to handle background error.
      Original error: Unknown state "quit_sent"
      Error in bgerror: invalid command name "bgerror"
  bgerror failed to handle background error.
      Original error: too many nested calls to 
  Tcl_EvalObj (infinite loop?)
      Error in bgerror: too many nested calls to 
  Tcl_EvalObj (infinite loop?)

  (This is using ftp_lib.tcl 2.3 with Tcl 8.3 on
  Solaris)


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

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

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

  Steve


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

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

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

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

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


tkt_uuid: 1791379fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil :: magic
priority: 5 Medium
foundin: None
resolution: Fixed
title: Documentation error "::fileutil::magic::mime"
comment:
  Hi,

  I have trouble running "::fileutil::magic::mime" command from within the script. I don't know if anyone else had the same problem. The same command runs fine if called from within the interpreter directly (tclsh shell interactively). In both cases I included "package require fileutil::magic::mimetype".

  I run "ActiveState ActiveTcl 8.4.15.0" on Windows XP Pro Sp2. Is this a bug, or am I doing something wrong?

  Thank you,

  Vlad.


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

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


tkt_uuid: 1156611fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 7 High
foundin: None
resolution: Fixed
title: Error raised by <iq> processing.
comment:
  Caused by a request for user info (actually version info):

  iqhook ::tkjabber::on_iq_version failed: 1
  expected boolean value but got ""
      while executing
  "if {$isempty} {
          append rawxml "/>"
      } else {
          append rawxml ">"
          
          # Call ourselves recursively for each child
  element. 
          # There is an arbitrary ..."
      (procedure "createxml" line 9)
      invoked from within
  "createxml $child"
      (procedure "wrapper::createxml" line 17)
      invoked from within
  [.....]


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

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

  is converted to this dict snippet 

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

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

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

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

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


tkt_uuid: 2850031fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Tk hangs when creating MessageDlg with very long message
comment:
  On my ActiveTcl 8.4.19 Windows Machine the following code freezes wish:

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

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


tkt_uuid: 446799ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
title: add suspend/resume API to profiler
comment:
  In addition to ::profiler::reset functionality, the
  profiler module should also contain ::profiler:suspend
  and ::profiler::resume API.

  I am attaching the patch for its implementation code as
  well as for the docs.

  Hemang.


tkt_uuid: 2907556fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: importFile fails, if the client filename contains a ;
comment:
  The problem is in parseMimeValue. It's to simple to split by ;

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


tkt_uuid: 1445219fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget Notebook memory leak?
comment:
  I'm using the BWidget NoteBook widget, and having a
  problem with memory. When I open a new tab, wish takes
  more memory (that's fine). But when I close the tab,
  wish also takes more memory. I would have expected it
  to release memory (or at least stay constant, although
  that's not desirable), but instead, the memory
  footprint grows.

  I'm working in Windows XP using ActiveTcl 8.4.10.1.
  [And I'm looking at the "virtual memory" size in the
  Task Manager (which gives a pretty reliable reading),
  and not "Memory Usage" (which is inaccurate). It seems
  to be a real effect, and not just a problem with the
  way Windows calculates memory use.]


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

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


tkt_uuid: 440046ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 3 Low
foundin: None
resolution: Fixed
title: latest md5 test suite fails
comment:
  Note that the category list is missing the md5 module.

  I downloaded the nightly cvs snapshot on the scriptics
  ftp site on July 10, 2001 around 9:30 AM EDT.

  When I am in the top level of the tcllib directory and
  do a make test I get this error for the md5 library:

  Module: md5
  modules/md5/md5.test
  md5 1.4 (pure Tcl)

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

      catch {::md5::md5} result
      set result

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

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

      catch {::md5::hmac} result
      set result

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

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

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

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


tkt_uuid: 460230ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct
priority: 5 Medium
foundin: None
resolution: None
title: there should be an 'exists -key xyz'
comment:
  There is no way to tell whether a node's key exists or
  not.  If you try and get it and it doesn't exist, it
  fails with an error.  There ought to be a command that
  you can use to see if it exists or not.


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

  Module:profiler
  modules/profiler/profiler.test

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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


tkt_uuid: 1733442fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: elements of htmlparse param list cannot be accessed
comment:
  Here's an example of a tag that has an attribute containing line breaks.

  set html {<select onChange="

                                                                  processFieldChanged(this);
                                                          " onFocus="gotFocus(this,'Y');" onBlur="gotFocus(this,'N');"></select>}
  <select onChange="

                                                                  processFieldChanged(this);
                                                          " onFocus="gotFocus(this,'Y');" onBlur="gotFocus(this,'N');"></select>


  Printing the param list causes no issues:

  (bin) 122 % htmlparse::parse $html
  ==> hmstart {} {} {}
  ==> select {} {onChange="

                                                                  processFieldChanged(this);
                                                          " onFocus="gotFocus(this,'Y');" onBlur="gotFocus(this,'N');"} {}
  ==> select / {} {}
  ==> hmstart / {} {}


  But trying to access elements of the param list, which is what the build_data command in the run below does, yields an error:

  (bin) 124 % htmlparse::parse -cmd build_data $html
  list element in quotes followed by "gotFocus(this,'Y');"" instead of space


tkt_uuid: 3066026fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Development Tools
priority: 5 Medium
foundin: None
resolution: Fixed
title: testutilities.tcl presumes tcltest loaded
comment:
  From the definition and description of [testsNeedTcltest] in testutilities.tcl, it is clear that we want to allow for the case that the tcltest package has not yet been loaded; this procedure has a branch that does the necessary [package require].

  However, on line 145 one finds the command

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

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

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

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

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


tkt_uuid: 920974ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: nntp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Add support for async requests to nntp
comment:
  The NNTP package doesn't currently support asynchronous 
  requests. As NNTP commands may take a long time to run, it 
  would be useful to be able to do these asynchronously. The ability 
  to get a progress callback would also be useful (similar to the http 
  package).


tkt_uuid: 501339ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 6
foundin: None
resolution: Accepted
title: CRC32 from Wiki - Call for comments.
comment:
  I've tcllib-ized the CRC32 Cyclic Redundancy Check
  implementation that is available from
  http://mini.net/tcl/2259.tcl by Wayland Augur and
  posted by Arjen Markus. We currently have sha, md5 and
  base64 modules so keeping with this style I propose a
  new crc module with the attached code etc.

  What does everyone think?


tkt_uuid: 1826418fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: None
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Various syntax errors
comment:
  Attached file tcllib.tar.gz holds the results of a procheck anaysis on all tcllib scripts.

  As you will undoubtedly notice, some errors are reported because my version of procheck is outdated. However, some of the errors are indeed syntax errors.

  It is easy to compensate for the procheck version mismatch by rerunning the script procheck.tcl with a recent version.

  Erik Leunissen

  Attached file: tcllib.tar.gz (containing: procheck.tcl, procheck.out, procheck.err)


tkt_uuid: 1313173fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct
priority: 9 Immediate
foundin: None
resolution: Fixed
title: Crash in htmlparse tests with critcl struct package
comment:
  On Windows XP with the current CVS head of tcllib and
  tcl 8.4.11, if we first build the critcl package and
  then run the test suite we get a crash caused by a
  string buffer overflow raise from tcl. In the stack
  trace above I see functions from tcllibc and I believe
  it is the struct module. As I dig into this I'll add
  details here.

  To reproduce:
   tclsh sak.tcl critcl
   tclsh sak.tcl test htmlparse

  Stack trace is:
   MSVCRTD.DLL!strlen Line 78
   tcl84g.dll!UpdateParseVarName ...
   tcl84g.dll!Tcl_GetString ...
   tcl84g.dll!Tcl_ObjSetVar2 ...
   tcllibc!0175ed51()
   tcllibc!0175f06e()
   ...
   tcl84g.dll!TclEvalObjInternal...

  AFAICT the tcl proc actually being run here is
  htmlparse::2tree


tkt_uuid: 905132ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Accepted
title: time.tcl (version 1.8) fails to catch TCP connection timeout
comment:
  time.tcl fails to catch a timeout on the TCP socket
  connect, though it handles the UDP situation correctly.
   When used in TCP mode, either without the UDP package
  loaded or by specifying -protocol tcp, if there is
  nothing listening on the port of the specified server,
  the program ends with "connection refused".

  Also - this package is MISREPRESENTED. It does NOT
  implement the Network Time Protocol, RFC 1305, port
  123, nor does it claim to. It implements RFC 868, the
  system-independent time protocol, port 37, often
  implemented with other "simple server" protocols, like
  echo, chargen, and so forth (on Unix-derived systems,
  right in inetd). Whoever registered this within the tcl
  offering as NTP didn't do their homework.

  To make matters worse, if you really connect this thing
  to the REAL ntp on port 123, it doesn't recognize the
  fact, and it returns a WRONG VALUE. If I get time, I'll
  see if I can get it to return an error instead of a
  wrong value, but with the early, simple protocols,
  that's not always practical. I will also see how
  difficult it would be to get a value from the REAL NTP,
  though I'm not going to attempt to implement the
  convergence algorithms, just grab the time - though
  that isn't quite what it was intended for.


tkt_uuid: 693009ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 7 High
foundin: None
resolution: Works For Me
title: ScrolledWindow infinite loop
comment:
  Bug #472718 ScrollWindow update idletask

  This bug was closed so I could not attach a patch. 
  Here is the code which triggers the bug.

  ScrolledWindow .textbox -auto none
  text .textbox.text -wrap no -height 2 -width 6
  .textbox setwidget .textbox.text
  pack .textbox -fill both -expand yes
  .textbox.text insert 0.0 "Line 1\nLine 2\nLong line 3"

  I put together a patch involving a lock and an update
  idletask so that if you add a scroll bar then it will
  ignore any request to remove it.
  Not very nice, but much nicer than an infinite loop.


tkt_uuid: 1528614fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: tree
priority: 9 Immediate
foundin: None
resolution: Fixed
title: Using the C version of struct::tree crashes Tcl 8.4.13
comment:
  Hello out there,
  all of a sudden I got the error message 'malformed
  bucket chain in Tcl_DeleteHashEntry'.
  The only significant change I could think of was the
  introduction of tcllib's tree module, so I started
  investigating a bit.
  The attached file demonstrates the bug.

  I only observed it on Win98 (because my XP machine runs
  Tcl 8.4.9) and on 8.4.9 the bug doesn't happen. Also,
  it is limited to the C(ritcl) version - the pure Tcl
  version is clean. So I got a workaround and am still a
  happy camper.

  Best regards and keep up the good work
  Helmut Giese


tkt_uuid: 514494ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: uri
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Information about uri schemes
comment:
  The following place lists existing uri schemes
  and specifications.

  http://www.w3.org/Addressing/schemes


tkt_uuid: 2426988fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: struct :: matrix
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: linking to array variable problem
comment:
  version: 2.0.1 . 
  Platform windows. 
  ActiveTcl distribution .
  linking to array variable issue.

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

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

  Regards
  valli
  valli@ezorder.in


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

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

  Tom Krehbiel


tkt_uuid: 2999764fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 2
foundin: None
resolution: Fixed
title: ListBox: icon out of view on keybord select
comment:
  Test script:
  ListBox::create .l -multicolumn 0 -selectmode single -width 5 -redraw 1
  pack .l
  .l insert end list:#auto -text 1 -image [Bitmap::get file]
  .l insert end list:#auto -text 2 -image [Bitmap::get file]
  .l insert end list:#auto -text 1234567890 -image [Bitmap::get file]
  .l insert end list:#auto -text 4 -image [Bitmap::get file]

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


tkt_uuid: 1018733fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: record
priority: 8
foundin: None
resolution: Fixed
title: nesting record more than 1 level deep fails
comment:
  nesting sets of record more than 1 level deep fails cf:

  record define fitParams {
      amp
      unmod
      jcoup
      t2star
  }

  record define fitData {
      delays
      values
  }

  record define fitInput {
      {reps 30}
      {sdev 0.1}
      {seed 12345}
      {record fitParams params}
      {record fitData data}
  }

  record define fitXYData {

      silent
      verbose
      macro
      confidence
      
      {record fitInput input}
   }

  set fitXYInputData [fitXYData #auto ]
      
      $fitXYInputData.silent true
      $fitXYInputData.verbose true
      $fitXYInputData.macro $jmod
      $fitXYInputData.confidence  0.9
      puts [record show values $fitXYInputData]

  gives

     Error in startup script: can't read
  "_defn(::fitXYData0.input)": no such element in array
      while executing
  "set ns $_defn($record_)"
      (procedure "::struct::record::Show" line 46)
      invoked from within
  "::struct::record::Show values ${record_}.${inst}"
      (procedure "::struct::record::Show" line 59)
      invoked from within
  "::struct::record::Show values ::fitXYData0"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 ::struct::record::${cmd_} $args"
      (procedure "record" line 9)
      invoked from within
  "record show values $fitXYInputData"
      (procedure "fitRawData" line 12)
      invoked from within
  "fitRawData $fitInputData"
      invoked from within
  "set fitData [fitRawData $fitInputData]"
      (file "./doJmodFit.tcl" line 588)


  from garyt@bmb.leeds.ac.uk


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

  This behaviour has appeared since BWidget 1.3.1 at 
  least. 


tkt_uuid: 446997ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: sha1
priority: 5 Medium
foundin: None
resolution: Fixed
title: sha1 fails on 64-bit platform
comment:
  % package require sha1
  1.0
  % sha1::sha1 abc     
  integer value too large to represent as non-long
  integer
  % set errorInfo
  integer value too large to represent as non-long
  integer
      while executing
  "format %0.8x%0.8x%0.8x%0.8x%0.8x $H0 $H1 $H2 $H3 $H4"
      (procedure "sha1::sha1" line 112)
      invoked from within
  "sha1::sha1 abc"


tkt_uuid: 586708ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: mclistbox
priority: 5 Medium
foundin: None
resolution: Duplicate
title: comcmd itemconfigure, few options added
comment:
  Command itemconfigure index column list ?list 
  Allows one to configure any given cell of a 
  mclistbox. The arguments index and column specify a
  cell to be configures. 
  list  argument is a set of option-value pairs as in the
  listbox command itemconfigure.

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

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

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


tkt_uuid: 578465ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: Wrong conversion of <> and " (HTML)
comment:
  The characters <, >, and " are converted to
  &amp;lt;, &amp;gt;, and &amp;quot; in the
  final generated HTML, and not &lt;, &gt;, &quot;

  Reported by Andy Ziegelbein <andy@packetz.org>.


tkt_uuid: 3292977fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 3 Low
foundin: None
resolution: Fixed
title: Error when Themed Label foreground changed
comment:
  An error arises when foreground color of a themed label widget is changed.
  Use -foreground instead -fg for ttk::label.

  This was corrected on CSV.


tkt_uuid: 1862246fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: None
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: tcl tutorial
comment:
  You should not start a sentence with Tcl command names because that "may" confuse a non-english reader.

  On http://www.tcl.tk/man/tcl8.5/tutorial/Tcl2.html:

  "Set always returns the contents..."

  "The set command always returns the contents..."

  and:

  "Set can also be invoked with only one argument. When called with just one argument, it will return the contents of that argument."

  "The set command can also be invoked with only one argument. When called with just one argument, it will return the contents of that argument."

  BTW...there is no category for the "Tcl Tutorial".


tkt_uuid: 1323146fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: dns
priority: 9 Immediate
foundin: None
resolution: Fixed
title: dns: ip test fail on 64-bit systems
comment:
  Did this testing with Tcl 8.4.11-cvs
  to avoid any question whether bignum
  bugs were at fault.

  These tests fails on a 64-bit system:

  ==== ::ip:maskToInt-2 dotted form FAILED
  ==== Contents of test case:

          ::ip::maskToInt 255.255.255.255
      
  ---- Result was:
  -1
  ---- Result should have been (exact matching):
  4294967295
  ==== ::ip:maskToInt-2 FAILED


  ==== ::ip:nextNet-7 1.1.1.1/32 -> 1.1.29.0 by 2 FAILED
  ==== Contents of test case:

          ip::nextNet 1.1.1.1 255.255.255.255 2
      
  ---- Result was:
  0xffffffff01010103
  ---- Result should have been (exact matching):
  0x01010103
  ==== ::ip:nextNet-7 FAILED


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

  - Matthias

  mlange_lists(at)yahoo.de

  --> This is a repost because I missed the checkbox for
  the file upload ...


tkt_uuid: 1784843fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Documentation
priority: 5 Medium
foundin: None
resolution: Accepted
title: minor spelling corrections to devdocs files
comment:
  There may be content-oriented updates needed to these files ... this patch is not that.

  All I am doing here is correcting several typos I encountered while running ispell over the files.


tkt_uuid: 458306ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Out of Date
title: BWidget ComboBox (1.3.1)
comment:
  BWidget 1.3.1 has changed the way ComboBox handles
  focus and selection, compared to the latest Unifix release, 1.2.1.

  First of all, option -entryfg removed,breaking older code.
  Why not -entryfg to be re-inserted as a synonym of -foreground,
  so as to maintain backward compatibility?

  Also, when the user selects a value from the drop-down list (or
  simply closes it without selecting anything), then the focus
  is set to the entry widget. This is perhaps ok if the ComboBox
  is editable, but when the ComboBox is not editable, there is no point
  in it: the user cannot type anything in there and an insertion cursor appears.
  This visually unpleasant, having an insertion cursor in an entry you cannot
  type.
  Also, it cannot be turned off with the various -insert* options, that seem to
  not work in order to make the insertion cursor invisible...

  Also regarding the selection, ComboBox obviously tries to mimic the combo box
  behaviour under windows, so along with the focus, the selection is also set.
  Again, under windows when you click outside the combo box, the selection is
  removed. This is not happening to the BWidget combo box. In my opinion,
  there should be an option to avoid also seting the selection in the changed
  value, as there are situations where this behaviour is not wanted.
  (but perhaps setting the selection bg/fg to the default entry fg/bg can solve
  this problem, although I have not tested it...)


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

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

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

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

    All these errors occurred after I successively
  created the
  node!

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

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

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

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

  Regards,

  Arjen Markus


tkt_uuid: 1469593fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: csv
priority: 5 Medium
foundin: None
resolution: Accepted
title: csv - Add delimiter support beyond double-quotes
comment:
  The CSV package that comes with tcllib only accepts
  double-quotes as the delimiter character when parsing
  input data or when generating output.

  I have changed it to accept any character as delimiter.
   The delimiter can be specified as an optional extra
  argument. 


  Sample:

  % package req csv

  % ### use single quote as delimiter
  % set line "1,'abc , def',ttt,20.5"


  % csv::split $line , '
  1 {abc , def} ttt 20.5

  % ### join the list back again with @ as delimiter
  % ### and : as separator
  % set line2 [csv::join [csv::split $line , '] : \@]
  @1@:@abc , def@:@ttt@:@20.5@

  % ### get back the original list
  % csv::split $line2 : @
  1 {abc , def} ttt 20.5


tkt_uuid: 827643ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: tree
priority: 5 Medium
foundin: None
resolution: Fixed
title: Root node for walk-thru
comment:
  It is not documented that the node called "root" can be
  used with the [walk] subcommand to tell it to start
  from the root. Indeed, it would probably be wise to
  separately document that the root node is actually
  called "root" and can be used anywhere any other node
  can be used.


tkt_uuid: 2381524fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
title: RFE: [logger] print all arguments passed to logger API
comment:
  The logger package currently prints only the last argument passed to the logger API call. See below:

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

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


tkt_uuid: 1445692fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Out of Date
title: parsedatetime month wrong
comment:
  mime::parsedatetime -now proper determines the wrong
  month. Same is with lmonth and month.

  Here's a diff to a correctly working mime.tcl:

  diff -c /usr/local/lib/tcllib1.8/mime/mime.tcl.orig
  /usr/local/lib/tcllib1.8/mime/mime.tcl
  *** /usr/local/lib/tcllib1.8/mime/mime.tcl.orig     
  2005-10-04 20:47:37.000000000 +0200
  --- /usr/local/lib/tcllib1.8/mime/mime.tcl 2006-03-08
  16:29:33.000000000 +0200
  ***************
  *** 3256,3264 ****
            variable WDAYS_LONG   [list Sunday Monday
  Tuesday Wednesday Thursday \                          
             Friday Saturday]

  !         variable MONTHS_SHORT [list Jan Feb Mar Apr
  May Jun \
                                        Jul Aug Sep Oct
  Nov Dec]
  !         variable MONTHS_LONG  [list January February
  March April May June July \
                                        August Sepember
  October November December]  }
    proc ::mime::parsedatetime {value property} {
  --- 3256,3264 ----
            variable WDAYS_LONG   [list Sunday Monday
  Tuesday Wednesday Thursday \                          
             Friday Saturday]

  !         variable MONTHS_SHORT [list "" Jan Feb Mar
  Apr May Jun \
                                        Jul Aug Sep Oct
  Nov Dec]
  !         variable MONTHS_LONG  [list "" January
  February March April May June July \
                                        August Sepember
  October November December]  }
    proc ::mime::parsedatetime {value property} {
  ***************
  *** 3275,3281 ****

            lmonth {
                variable MONTHS_LONG
  !             return [lindex $MONTHS_LONG [clock format
  $clock -format %e]]
            }

            lweekday {
  --- 3275,3281 ----

            lmonth {
                variable MONTHS_LONG
  !             return [lindex $MONTHS_LONG [string
  trimleft [clock format $clock -format %m] 0]]
            }

            lweekday {
  ***************
  *** 3297,3303 ****

            month {
                variable MONTHS_SHORT
  !             return [lindex $MONTHS_SHORT [clock
  format $clock -format %e]]
            }

            proper {
  --- 3297,3303 ----

            month {
                variable MONTHS_SHORT
  !             return [lindex $MONTHS_SHORT [string
  trimleft [clock format $clock -format %m] 0]]
            }

            proper {
  ***************
  *** 3314,3320 ****
                variable WDAYS_SHORT
                set wday [lindex $WDAYS_SHORT [clock
  format $clock -format %w]]
                variable MONTHS_SHORT
  !             set mon [lindex $MONTHS_SHORT [clock
  format $clock -format %e]]

                return [clock format $clock \
                              -format "$wday, %d $mon %Y
  %H:%M:%S $zone"]
  --- 3314,3320 ----
                variable WDAYS_SHORT
                set wday [lindex $WDAYS_SHORT [clock
  format $clock -format %w]]
                variable MONTHS_SHORT
  !             set mon [lindex $MONTHS_SHORT [string
  trimleft [clock format $clock -format %m] 0]]

                return [clock format $clock \
                              -format "$wday, %d $mon %Y
  %H:%M:%S $zone"]


tkt_uuid: 2023543fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: amazon-s3
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: S3.test and xsxp.test fail during tcllib make test
comment:
  I'm using Tcl/Tk 8.5.3, and the latest tcllib cvs snapshot from the activestate ftp site.

  When I do the make test, I get this failure:

  @@ Module amazon-s3
  @@ Testsuite modules/amazon-s3/S3.test
  - tcllib::testutils 1.1
      Aborting the tests found in "S3.test"
      Error in xsxp.tcl: can't find package xml
  SETUP Error (Support): 
  SETUP Error (Support):     while executing
  SETUP Error (Support): "useLocal xsxp.tcl xsxp"
  SETUP Error (Support):     ("uplevel" body line 3)
  SETUP Error (Support):     invoked from within
  SETUP Error (Support): "uplevel 1 $script"
  @@ Testsuite modules/amazon-s3/xsxp.test
  - tcllib::testutils 1.1
      Aborting the tests found in "xsxp.test"
      Error in xsxp.tcl: can't find package xml
  SETUP Error (Testing): 
  SETUP Error (Testing):     while executing
  SETUP Error (Testing): "useLocal xsxp.tcl xsxp"
  SETUP Error (Testing):     ("uplevel" body line 2)
  SETUP Error (Testing):     invoked from within
  SETUP Error (Testing): "uplevel 1 $script"

  @@ End 1216643966

  Perhaps there is a dependency not specified?


tkt_uuid: 1229352fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct
priority: 8
foundin: None
title: add unget to queues
comment:
  It would be useful to have an 'unget' operation
  available for queues, having the functionality of
  inserting items at the head of the queue.  The main
  purpose for this would be exception handling:


  while {[$q length] > 0} {
      if {[catch {
          set i [$q get] 
          process-item $i
      }]} {
          $q unget $i
      }
  }

  The same functionality can easily be achieved using
  peek initially and then using get to discarding the
  item in success cases, but to me handling it as an
  exceptional case reads cleaner.


tkt_uuid: 1747885fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: des
priority: 5 Medium
foundin: None
resolution: Fixed
title: des 1.0.0 loses what 0.8.1 could
comment:
  ActiveTcl 8.4.14:
  % packa re des
  1.0.0
  % set x [DES::des -mode encode -key SeCrEt "hello world"]
  can't use integer value too large to represent as operand of "^"

  while in ActiveTcl 8.4.9 it works well:
  % packa re des
  0.8.1
  % set x [DES::des -mode encode -key SeCrEt "hello world"]
  ?½??I-}????j??'?
  % DES::des -mode decode -key SeCrEt $x
  hello world


tkt_uuid: 466011ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: option rc file saved w/open permissions
comment:
  when tkchat creates its $HOME/.tkchatrc file , tkchat
  should probably do something about setting the files
  permissions to rw------- / 600 on unix.


tkt_uuid: 1272836fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: bignum :: float
priority: 5 Medium
foundin: None
resolution: None
title: math::bigfloat - failed tests with Tcl 8.5
comment:
  ==== bigfloat-round-1.0 eval : 'tostr [round [fromstr
  $x]]' FAILED
  ==== Contents of test case:
  uplevel 1 $code
  ---- Result was:
  1
  ---- Result should have been (exact matching):
  0
  ==== bigfloat-round-1.0 FAILED


  ==== bigfloat-round-1.0 eval : 'tostr [round [fromstr
  $x]]' FAILED
  ==== Contents of test case:
  uplevel 1 $code
  ---- Result was:
  -1
  ---- Result should have been (exact matching):
  0
  ==== bigfloat-round-1.0 FAILED


tkt_uuid: 686065ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: popups!
comment:
  When the multi-line entry is used
  to enter an action message
  (one that begins /me) and that
  message spans multiple lines,
  tkchat pops up a window for 
  each line.


tkt_uuid: 1099162fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: autoproxy::init fails
comment:
  autoproxy::init (version 1.2.0) fails under WinXP Pro 
  when the following line of code:

  registry get $winregkey "ProxyServer"

  returns a value like:

  ftp=quantex:8080;gopher=quantex:8080;http=quantex:8
  080;https=quantex:8080

  instead of a value like:

  quantex:8080

  This happens whenever "Control Panel | Internet 
  Options | Connections | LAN
  Settings | Advanced" | "Use the same proxy server for all
  protocols" *is not* checked, and instead, each protocol 
  is defined independently.

  The attached autoproxy.tcl has been patched to fix the 
  problem for my case, though I don't know enough about 
  this domain to be confident that the patch is generally 
  safe.  Specifically...

  1. Is it safe to parse this key (in the general case) using 
  [split]?
  2. Is the key always semi-colon separated?
  3. Am I always after the "http" portion of the key?

  Jeff


tkt_uuid: 1446320fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib
priority: 5 Medium
foundin: None
resolution: Out of Date
title: widget::dialog -modal local option does not work
comment:
  Specifying the "-modal local" option to a
  widget::dialog does not make the dialog modal. It
  actually would generate an error because of invalid
  -local option to grab but the offending line is under a
  catch so the error gets ignored.
  A patch to fix this is:

  195c195,201
  <           catch {grab -$option(-modal) $win}
  ---
  >           catch {
  >                 if {$options(-modal) eq "local"} {
  >                     grab $win
  >                 } else {
  >                     grab -$option(-modal) $win
  >                 }
  >             }

  /Ashok


tkt_uuid: 631314ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: mime
priority: 9 Immediate
foundin: None
resolution: Not Applicable Here
title: infinite loop on bad data
comment:
  The while {$moreP} loop in mime::parsepart will loop
  forever when fed bad data such as the file attached,
  which is a spam email.  I'm sure it's formatted badly,
  but that should cause an error, not an infinite loop.


tkt_uuid: 2113728fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: "$type info instances" corrupted after object-creation error
comment:
  = VERSION and PLATFORM
   snit 2.2.1
   tclkit 8.5.2  - Windows XP


  = HOW TO REPRODUCE ERROR

  Let's take the simplest snit-widget:

    snit::widget myWidget {
    }

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

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

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

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

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

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

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


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


tkt_uuid: 1172938fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: profiler
priority: 7 High
foundin: None
resolution: Fixed
title: profiler does not store descendent time
comment:
  I am a little confused about the tcllib profiler
  package.  I am using
  the 8.4.9 distribution on Windows XP, which includes
  profiler 0.2.2.

  Here is my elaborate test program.

     package require profiler
     ::profiler::init
     proc c1 { a } { for {set i 0} {$i<2000} {incr i} {;} }
     proc c2 { a } { for {set i 0} {$i<2000} {incr i} {;} }
     proc parent { } { for {set i 0} {$i<2000} {incr i} {
  c1 $i ; c2 $i }
  }

     parent
     ::profiler::dump ::parent

  The output is:

     ::parent {callCount 1 callerDist {GLOBAL 1}
  compileTime 2816000
     totalRuntime 2816000 averageRuntime 0 stddevRuntime 0
     covpercentRuntime 0 descendantTime 0
  averageDescendantTime 0
     descendants {}}

  The descendants data I would expect is like {c1 2000 c2
  2000}.
  The time reporting also seems wrong; how can all the
  time be
  reported as compile time with zero descendant time? 
  All the
  time is spent in the children.

  Am I missing something, or is this output completely
  wrong? 


tkt_uuid: 2054498fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Race condition in ftp::Get -variable
comment:
  While using the METAR package by Jos Decoster (http://wiki.tcl.tk/19635) I frequently get an error from the ftp package:

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

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

  Here's the log with VERBOSE and DEBUG on:

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

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

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


tkt_uuid: 527716ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 7 High
foundin: None
title: add [usage] support
comment:
  The library seems to be designed for documenting 
  packages, but is missing something for doing man pages 
  of individual commands. Or maybe I don't quite 
  understand how it works. Specifically, it appears that 
  the only way to get something into the automatically 
  generated SYNOPSIS section is to first put it in a 
  [call] statement inside a definition list. Anyone know 
  if that is a true statement?

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

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

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

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

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


tkt_uuid: 3439693fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pki
priority: 5 Medium
foundin: None
resolution: Out of Date
title: ::pki::x509::parse_cert error
comment:
  While parsing a cert, a bug comes when reviving strings on the issuer and subject objects.  The problem comes in proc ::pki::x509::_dn_to_list as some certs has UTF8String instead of PrintableString.  My solution was to replace

  ::asn::asnGetPrintableString curr_part value

   by:

  set a $curr_part
  ::asn::asnPeekByte a b
  switch -- $b {
  19 {::asn::asnGetPrintableString curr_part value}
  12 {::asn::asnGetUTF8String curr_part value}
  default {::asn::asnGetPrintableString curr_part value}
  }

  Hope that helps

  Regards

  -=Raul=-


tkt_uuid: 1242629fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: smtp
priority: 7 High
foundin: None
resolution: Accepted
title: Fix of CRAM-MD5
comment:
  Hi Marshall,

  today I tried to use the smtp modul to send mail
  to an authenticating MTA (qmail) using CRAM-MD5.
  That didn't work.
  Looking at the logs, I found the response to the
  challenge 4 char too short. The base64::encode
  proc folds this long response into 2 lines (which
  is coorect), but qmail is not able to digest a
  2 line response. Maybe other MTA's have the same
  problem. A simple removal of the newline char
  fixed the problem (see patch).
  I'm not sure if it's a bug of tcllib or if qmail
  is to blame. Regardless, now it works. Would you
  (or someone else) please check it against other
  MTAs?

  Best regards

  Ulrich


tkt_uuid: 923942ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Rejected
title: BWidget dynamic help problem
comment:
  Hi, 
   
  When using the BWidget DynamicHelp to add balloon tips to an 
  application, the balloons are only removed from the screen when 
  you move the mouse pointer out of the widget the balloon was 
  registered for. You can move the mouse inside the widget without 
  the balloon being removed. Use this test script to see the desired 
  effect: 
   
  package require BWidget 
   
  text .t 
  pack .t 
  DynamicHelp::register .t balloon "Testing dynamic help" 
   
   
  Hold the mouse pointer inside the text widget and the balloon help 
  will show. Now move the mouse pointer inside the text widget. The 
  balloon won't disappear. 
   
   
  The balloon help should also be removed when moving the mouse 
  cursor inside the widget the balloon was registered for. To obtain 
  this, replace the 
   
   DynamicHelp::_motion_balloon 
   
  function by the attached one. 
   
  Kind regards, 
   
  Jos. 
   


tkt_uuid: 723426ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ntp
priority: 8
foundin: None
resolution: Fixed
title: Testsuite failures
comment:
  I ran the testsuite of ntp using a tclsh 8.3.4 and a tclkit 
  8.4.1. In both cases I got failures, but different. Enclosed 
  the log files.


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


tkt_uuid: 2845453fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: MessageReceiver fails to read sequence byte on empty socket
comment:
  A simple LDAP/SSL search query (objectclass filter, returning around 20 results) failed with the following message:
    Protocol error: Error reading SEQUENCE response for handle

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

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

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

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

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


tkt_uuid: 1566389fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: tests fail in fileutil 1.9
comment:
  @@ Tcl 8.4.14
  @@ MatchTests *
  @@ SkipFiles l.*.test
  @@ MatchFiles *.test
  @@ Start 1159368646
  @@ Module fileutil
  @@ Testsuite modules/fileutil/fileutil.test
  - tcllib::testutils 1.1
  - cmdline 1.2.5
  * fileutil 1.9]

  ...

  ==== install-2.1 install a directory FAILED
  ==== Contents of test case:

      list [catch {
          fileutil::install [file join installSrc subdir]
  installDst
          set result [lsort [glob -tails -directory [file
  join installDst subdir] [file join . / *]]]
          file delete -force installDst
          set result
      } err] $err

  ---- Result was:
  0 {/subfile1 /subfile2 /subfile3}
  ---- Result should have been (exact matching):
  0 {subfile1 subfile2 subfile3}
  ==== install-2.1 FAILED

  ---- install-2.2 start

  ==== install-2.2 install a directory FAILED
  ==== Contents of test case:

      list [catch {
          fileutil::install [file join installSrc subdir]
  installDst
          set result [lsort [glob -directory [file join
  installDst subdir] [file join . / *]]]
          file delete -force installDst
          set result
      } err] $err

  ---- Result was:
  0 {installDst/subdir//subfile1
  installDst/subdir//subfile2 installDst/subdir//subfile3}
  ---- Result should have been (exact matching):
  0 {installDst/subdir/subfile1
  installDst/subdir/subfile2 installDst/subdir/subfile3}
  ==== install-2.2 FAILED


tkt_uuid: 954328ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 8
foundin: None
resolution: Fixed
title: require md5 then mime, throws error
comment:
  From a clean CVS install of tcllib:

  tclsh 
  % package require md5 
  2.0.0 
  % package require mime 
  version conflict for package "md5": have 2.0.0, need 1.0 
  %  

  whereas the opposite order works:

  tclsh 
  % package require mime 
  1.4 
  % package require md5 
  1.4.3 
  %


tkt_uuid: 444172ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Function key accelerators in menus
comment:
  The BWidget Mainframe allows a menu with an item
  of the form:

      "&Help" {} {} 0 {
          {command "&Contents" {} "Help" "F1" \
                  -command ::help}
          {command "&About" {} "About" {} \
                  -command ::about}
      }

  The "F1" key does not work.  In general any function
  key doesn't work as a menu item.  This patch at
  least lets the F1 work as it is:


tkt_uuid: 3477684fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: crc
priority: 5 Medium
foundin: None
resolution: Fixed
title: CRC of binary string: bad parsing
comment:
  Calculating the CRC of a binary string can break the library.
  This happens when the input binary string includes the ASCII code for text symbol '-'.
  The proc parsing the input data breaks the input binary string into options because of '-'
  See attached file with example.


tkt_uuid: 1566475fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: pop3
priority: 2
foundin: None
resolution: Not Applicable Here
title: pop3-6.1 fails sometimes
comment:
  Only on Solaris system do I see this.

  And only when running the whole tcllib
  test suite.  Testing the pop3 module alone
  doesn't cause the failure:

  ==== pop3-6.1 uidl FAILED
  ==== Contents of test case:

      dialog::dialog_set uidlFailed
      set psock [pop3::open localhost ak smash
  [dialog::listener]]
      catch {pop3::uidl $psock} msg
      pop3::close $psock
      dialog::waitdone
      set msg

  ---- Result was:
  POP3 UIDL ERROR: 
  ---- Result should have been (exact matching):
  POP3 UIDL ERROR:  unknown command 'UIDL'
  ==== pop3-6.1 FAILED


tkt_uuid: 1778143fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: bench
priority: 5 Medium
foundin: None
title: Make bench usable to benchmark extensions.
comment:
  ATM, bench is only easy to use, if you want to benchmark different tcl core versions against a suite of bench files.

  To benchmark different versions of a tcl extension with a  tcl core version (or with different tcl core verions) need some nasty handwork.

  I propose another option to ::bench:run: -pkgdirs. If this option isn't given, ::bench::run behaves as it does now. 

  If the option is given, it expects a list of dirs as argument. Then every interpreter in the run is setup to have every dir out of the -pkgdirs list as first dir in the auto_path variable. Every combination of interpreters  and dirs out of the -pkgdirs list will be reportet side by side. The empty list ({} or [list]) as one element of the -pkgdirs list let the interpreters use the (respective) 'default', installed extensions versions.

  See the attached patch against tcllib head.

  The patch misses doc updates (and version increment). If the idea itself and the implementation is accepted, I'll offer an enhanced patch.


tkt_uuid: 2910682fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: yaml
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: yaml's dict package needs
comment:
  Testing tcllib-1.12 with Tcl 8.4.19, I see:

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

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

  Also, the stanza,

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

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


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

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

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

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

  The error stack is

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

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

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


tkt_uuid: 1627868fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: term
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: RFE term::vt100 control sequences
comment:
  Hi,

  Terminal control: could you add term::vt100 control sequences.

  see http://local.wasp.uwa.edu.au/~pbourke/dataformats/vt100/


tkt_uuid: 454718ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: control
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Semephore
comment:
  With packages that provide a call back mechanism, it is
  possible to have many essentially background processes.
  Take the http:: package. It is possible to have many
  http::geturl requests running simultaneously, but there
  is really no default way to coordinate the call backs for
  the various open requests.

  A semephore package with the ability to wait on any
  number of call backs is desirable. Using a generic
  waitany routine would require that I be aware of the
  internal variables of the http package to wait on
  changes of these variables. Implimenting all of this in
  a single semephore package allows the same
  functionality without the need to have knowledge of the
  internals of a package.

  As a staring point I submit the following. There may
  have to be changes due to multi-threaded tcl code, but
  its a start none the less.

  #  semephore.tcl
  #  Impementation of semephores
  #
  #  Semephore::Signal token
  #  Semephore::Wait   ?pattern?   - returns token
  #  Semephore::Reset  token

  package provide SemephorePkg 2.1

  # 2.1 - October 22, 2000
  #     - fixed a bug that would result in a very slow
  memory leak

  namespace eval Semephore {
    variable SemData
    array set SemData {}
    variable SemAny 0

    namespace export Signal Wait Reset
  }


  # -------------------------------------------------
  Signal ----
  # Signal a semephore
  proc Semephore::Signal { SemToken } {
    variable SemData
    variable SemAny

    if {![info exist SemData($SemToken)]} then {
       set SemData($SemToken) 1
    } else {
       incr SemData($SemToken)
    }
    incr SemAny
  }

  # -------------------------------------------------
  Wait ----
  # Wait for a semephore
  # Note: Resetting a semephore does not signal it.

  proc Semephore::Wait { args } {
    variable SemData
    variable SemAny

    set Pattern [lindex $args 0]
    if {"$Pattern" == ""} then { set Pattern "*" }
    set FoundFlag 0
    set FoundName ""
    if {$SemAny != 0} then {
      foreach n [array names SemData $Pattern] {
        if {$SemData($n) > 0} then {
          set FoundName $n
          set FoundFlag 1
          break
        }
      }
    }
    while {!$FoundFlag} {
      vwait Semephore::SemAny
      foreach n [array names SemData $Pattern] {
        if {$SemData($n) > 0} then {
          set FoundName $n
          set FoundFlag 1
          break
        }
      }
    }
    if {[incr SemData($FoundName) -1] == 0} then {
      unset SemData($FoundName)
    }
    incr SemAny -1
    return $FoundName
  }

  # -------------------------------------------------
  Reset ----
  # Reset a semephore
  # Note: Resetting a semephore does not signal it.

  proc Semephore::Reset { SemToken } {
    variable SemData
    variable SemAny

    if {[info exist SemData($SemToken)]} then {
      incr SemAny -$SemData($SemToken)
    }
    set SemData($SemToken) 0
  }


tkt_uuid: 3603702fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: clock
priority: 7 High
foundin: None
resolution: Fixed
title: clock::iso8601 test error
comment:
  the test clock-iso8601-2.1 fails because the expected result is TZ-dependent. The attached patch fixes it by re-formatting the timestamp back to %D.


tkt_uuid: 2993200fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: base64
priority: 7 High
foundin: None
title: ascii85 encode/decode implementation in pure tcl
comment:
  When working with postscript files sometimes the need arises to work with ascii85 encoded strings as described in the Postscript Language Reference Manual.
  Here is an implementation on pure Tcl for inclusion on tcllib.


tkt_uuid: 1892687fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Build System & Testing
priority: 5 Medium
foundin: None
resolution: Fixed
title: sak.tcl test shell add fails
comment:
  I tried to add a shell for testing to sak.tcl but get a not so informative stack trace:
  (this is inside msys/mingw, using AS Tcl shells)

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


tkt_uuid: 564691ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: bad interaction: PanedWindow ScolledWind
comment:
  Sometimes the sash disappears when you make a window 
  pane the wrong size.  I have a short hunk of code 
  which exhibits and a varient which does not.

  Here is the packing structure in both variants:

   PanedWindow
   +-ScrolledWindow
   | +-widget1
   +-widget2

  If widget1 is a child of the scrolled window it
  succeeds, otherwise it sometimes fails (widget1
  overwrites the sash and the start of widget2) when
  the pane is small.

  The problem can be seen in 8.3.4 (Windows and SGI),
  but not in 8.3.1 (Linux).

  The attached file exhibits the problem when I drag
  to the top of the "2".


tkt_uuid: 1512671fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Improved delete for StatusBar
comment:
  When deleting the first item of a StatusBar an obsolete
  seperator is left at the front. This patch deletes this
  obsolete seperator when deleting the first item of a
  StatusBar. I've attached the patch as well as an
  example script to show the improved delete.


tkt_uuid: 1526641fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: find mishandles "hidden" files on Win
comment:
  fileutil::find has two separate implementations for
  Windows and Unix... the Windows implementation
  incorrectly uses a glob pattern intended for Unix which
  assumes that filenames starting with "." need explicit
  matching, leading to files so named being listed twice
  in the result.

  In the Windows implementation, the line:

      set filenames [glob -nocomplain * .*]

  should be:

      set filenames [glob -nocomplain *]

  ####
  fileutil version 1.6.1


tkt_uuid: 457498ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
title: Extended log module
comment:
  The current 'log' module only consider the criticality
  of a message when deciding wether to log the message
  and where.

  The next generation should allow to specify a message
  category as well. In contrast to criticality categories
  are highly application dependent. This means that we
  will need interfaces to define, configure and
  introspect categories. Criticalities required only a
  configuration interface.

  An example application for the log module could be
  one listening on one or more sockets and displaying
  the incoming messages in one or more text widgets.
  A generalized message console.


tkt_uuid: 1254934fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: mime
priority: 7 High
foundin: None
resolution: Fixed
title: mime - Extra line feed removed from output
comment:
  The following patch fixed a problem with extra line
  feeds in mime attachments in code to upload binary
  files to a web page. I imagine that the extra line feed
  is not noticed with text files.

  A line feed is output before the border, making this
  line-feed unneccessary. 

  This problem is mentioned on http://wiki.tcl.tk/13675

  I have only tested the fix with my code - it should be
  tested to verify that it does not cause problems in
  other situations.

  The patch file is generated with cvs diff -u, I hope
  that's ok (I wasn't sure what the standard way of doing
  this was.


tkt_uuid: 486572ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: testsuite failure with cvs head version
comment:
  platform: sparc solaris 2.6 sun c compiler tcl 8.4a4
  and latest tcllib from cvs head of tue, nov 28, 2001

  after building and installing the latest tcl and tcllib
  I get the following fileutil errors when running the
  tcllib test suite:

  Module: fileutil
  modules/fileutil/fileutil.test
  fileutil 1.2

  ==== find-2.2 find by pattern FAILED
  ==== Contents of test case:

      lsort [::fileutil::findByPattern $dir -glob {fil*}]

  ---- Result was:
  /vol/tclsrcsol/tcl84/tcllib/find1/file1
  /vol/tclsrcsol/tcl84/tcllib/find1/find2/
  file2 /vol/tclsrcsol/tcl84/tcllib/modules/fileinput
  /vol/tclsrcsol/tcl84/tcllib/
  modules/fileutil
  /vol/tclsrcsol/tcl84/tcllib/modules/fileutil/fileutil.n
  /vol/tc
  lsrcsol/tcl84/tcllib/modules/fileutil/fileutil.tcl
  /vol/tclsrcsol/tcl84/tcllib/m
  odules/fileutil/fileutil.test
  ---- Result should have been (exact matching):
  /vol/tclsrcsol/tcl84/tcllib/find1/file1
  /vol/tclsrcsol/tcl84/tcllib/find1/find2/
  file2
  ==== find-2.2 FAILED

  ==== find-2.3 find by pattern FAILED
  ==== Contents of test case:

      lsort [::fileutil::findByPattern $dir -regexp
  {.*1$}]

  ---- Result was:
  /vol/tclsrcsol/tcl84/tcllib/examples/oreilly-oscon2001
  /vol/tclsrcsol/tcl84/tcll
  ib/find1 /vol/tclsrcsol/tcl84/tcllib/find1/file1
  /vol/tclsrcsol/tcl84/tcllib/mod
  ules/sha1
  ---- Result should have been (exact matching):
  /vol/tclsrcsol/tcl84/tcllib/find1
  /vol/tclsrcsol/tcl84/tcllib/find1/file1
  ==== find-2.3 FAILED


tkt_uuid: 754920ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: text/html file content causes socket error
comment:
  My original experimental code combined three MIME 
  parts into a single message and used SMTP to send 
  successfully. The parts where a plain text file, a binary 
  file and an html file.

  When I moved the html file to the beginning of the 
  -parts list, I started getting 

  400: error writing "sock248": invalid argument

  out of mime::copymessageaux

  On further trials, I've simplfied the issue and it seems 
  related to the *contents* of a file.

  The following script will trigger the error. (file is 
  attached)

  # 14Jun03RT - experimental mime/smtp coding
  package require mime
  package require smtp

  proc mb {} {
      # Build a mime thingy
      set TO royterry@earthlink.net
      set FROM royterry@earthlink.net
      set SUBJ "Mime [clock format [clock seconds] -
  format "%m%d-%T"]"

         set hfile mime-bad.htm

      # Start making mime parts
       # The error also occurs if "text/html" is used
      set hpart [mime::initialize -canonical text/plain  -file 
  $hfile]

      # Put them all together
      # The error also occurs if 2 or 3 parts are combined 
  as long as $hpart is the first in the list.
      set allparts [mime::initialize -canonical 
  multipart/mixed \
          -parts [list $hpart ] ]


      # Send it!
      set sres [smtp::sendmessage $allparts      \
          -header [list From $FROM]    \
          -header [list To $TO]        \
          -header [list Subject $SUBJ] \
          -servers mail.earthlink.net ]

  }


tkt_uuid: 717921ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 4
foundin: None
resolution: Rejected
title: v1.6 BWidget LabelEntry fails (was id 712028)
comment:
  The attached file, when sourced twice in a row, fails
  to create the LabelEntry widget.

  (NOTE: I had submitted this previously under 712028 but
  HOBBS response suggested that he had not seen it.
  712028 was closed and consequently I was unable to
  respond to add a comment to that affect. Hence the new
  bug submission.)


tkt_uuid: 553773ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: calculus
priority: 5 Medium
foundin: None
resolution: Fixed
title: calculus: define and doc scope of funcs
comment:
  The commands math::calculus::* take "func" arguments,
  Tcl commands that accept and return numeric values.

  The scope for these commands needs to be defined.
  Currently, the command name passed in is just called
  within the procs, effectively seeking the commands
  in the ::math::calculus and :: namespaces.

  Reasonable alternatives would be to look in only ::,
  or in only the caller's context.

  I think I favor using the caller's context via
  [uplevel].

  Whatever choice is made, it should be documented.


tkt_uuid: 519189ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Combobox bugs (and patch)
comment:
  Hello,

  the combobox has some small bugs I included a patch
  for:

  1. the selection is not cleared when the widget loses
  the focus
      (resulting in weird colour display when explicitly
  setting colours 
       other than the default)
  2. the dropdown list does not honour the the colours
  requested for      the entry widget (always displayed
  in dark grey).

  I have included a diff as well as the complete new
  combobox source.

  Regards,
            Bastien


tkt_uuid: 2691870fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: plotchart
priority: 5 Medium
foundin: None
resolution: Fixed
title: determineScale with close numbers
comment:
  Hi,
  With Plotchart 1.6.1, used in Tcl 8.4.

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

  The cause is in the computation of nicemin :

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

  Here the value of the factor is very low :

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

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

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

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

  The patched version is in attachment of the bug report.

  Best regards,

  Michael


tkt_uuid: 2999846fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: plotchart
priority: 5 Medium
foundin: None
resolution: None
title: createHorizontalBarchart: wrong order of args
comment:
  Call of createHorizontalBarchart:
  Help file says:
  ::Plotchart::createHorizontalBarchart w ylabels xaxis noseries
  However, the proc demands a different order:
  proc ::Plotchart::createHorizontalBarchart { w xscale ylabels noseries }

  Oliver


tkt_uuid: 1007396fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: graph
priority: 3 Low
foundin: None
resolution: Fixed
title: incomplete options checking on arcs and nodes subcommand
comment:
  I got the following report for cgraph, but the same is
  true for at least tcllib struct::graph v1, maybe v2.

  The problem ist the bad option check on the arcs and
  nodes subcommand that do not check for multiple -key
  occurances of an option, they just take that last one
  without throwing an error. Testsuite should be enhanced
  and either an error thrown or multiple key/values
  should be supported.

  set g [::struct::graph::graph]

  foreach n {n1 n2 n3} {
     $g node insert $n
  }

  foreach source {n1 n2} target {n2 n3} {
      set arc [$g arc insert $source $target]
      $g arc set $arc -key contain $source
  }

  # setup other keys
  $g arc set arc1 -key foo v1
  $g arc set arc2 -key bar v2

  #
  # a useful feature colud be the selections of arcs (and
  nodes) that 
  match multiple keys, as in the following example
  #
  # that, incidentally, work as expected, but I think
  simply use the last 
  key/value pair to do the selection ...
  #
  #
  $g arcs -key contain -value n1 -key foo -value v1

  # this work as expected, it returns arc1
  $g arcs -key contain -key foo

  #
  # this doesnt work, it returns a void list
  #
  $g arcs -key contain -value n1 -key foo

  #
  # this returns a void list, it is right?
  #
  #  peraphs an error should be throwed ...
  #
  $g arcs -value n1


tkt_uuid: 806420ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Fixed
title: comm uses wrong fconfigure options
comment:
  Comm loses unicode chars on the way.

  This originates from a bug in the configuration of the
  channel, it is configured with:

  proc ::comm::commNewConn {chan id fid} {
      ...
      fconfigure $fid -trans binary -blocking 0
      ...
  }

  which kills all unicode chars above ascii, as encoding
  is set to binary, which strips high bytes from unicode
  chars.

  This should really be:
      fconfigure $fid -translation lf -encoding utf-8
  -blocking 0


tkt_uuid: 459197ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: Fixed
title: More fixes in ftpd for the export of the public API
comment:
  On further examination wrt [456255], I found out that the 
  ftpd.tcl file had few more "namespace export *" stmts in it
  which I had missed earlier. Here's a patch for the same.

  godel:47> cvs diff ftpd.tcl 
  Index: ftpd.tcl
  ===================================================================
  RCS file: /cvsroot/tcllib/tcllib/modules/ftpd/ftpd.tcl,v
  retrieving revision 1.10
  diff -r1.10 ftpd.tcl
  108d107
  <     namespace export fsFile::docRoot fsFile::fs
  658c657,659
  <     namespace export *
  ---
  >     namespace export ABOR APPE CDUP CWD DELE HELP LIST MDTM MKD NOOP
  >     namespace export NLST PASS PORT PWD QUIT REIN RETR RMD RNFR RNTO
  >     namespace export SIZE STOR STOU SYST TYPE USER
  1627c1628
  <     namespace export *
  ---
  >     namespace export docRoot fs
  godel:48>


tkt_uuid: 3495049fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: doctools-text-15.4 test failure
comment:
  The only difference I see between 'expected' and 'result':
  Expected:
  |        Example Block  More Lines
  Result:
  | Example Block  More Lines


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

  * rc4 1.1.0
  > pure Tcl - array based
  > pure Tcl - list based
  WARNING: cleanupTests deleting
  /local/src/tcllib/rc4test.data...
  WARNING: cleanupTests deleting
  /local/src/tcllib/rc4test2.data...


tkt_uuid: 1868088fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: jpeg
priority: 5 Medium
foundin: None
resolution: None
title: floating point too large in formatExif
comment:
  For tcl version 8.4 running under Windows XP, the ::jpeg::formatExif routine gave the following error message for one of my jpeg files:

  (PersonalProjects) 27 % set errorInfo
  floating-point value too large to represent
      while executing
  "expr {2 * (log($val) / log(2))}"
      ("MaxApertureValue" arm line 2)
      invoked from within
  "switch -exact -- $tag {
                  UserComment {set val [string trim [string range $val 8 end] \x00]}
                  ComponentsConfiguration {bi..."
      (procedure "::jpeg::formatExif" line 10)
      invoked from within
  "::jpeg::formatExif $exif"
      invoked from within
  "if [file isdirectory $fullf] {
      lappend stack $bname
  } else {
      set ext [string toupper [file extension $item]]
      puts "item = $item ex..."
      (procedure "rename_photos" line 30)
      invoked from within
  "rename_photos ../Personal"

  Posted by S. Vavasis, vavasis@math.uwaterloo.ca


tkt_uuid: 861801ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: cmdline
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Add a new option parser routine tailored for functions
comment:
  Hey, I find the cmdline library particularly useful for
  script writing. I usually define a custom
  getFunctionsOpts routine that is a slight twist on the
  getKnownOptions routine (no support for -?/-h/-help)
  for new Tcl projects. The attached cmdline.tcl file
  contains the getFunctionOptions procedure -- I would
  like to submit this as a feature request for the next
  release of tcllib.

  Thanks for all the great utils!

  -Ian Chesal


tkt_uuid: 3396661fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: yaml
priority: 9 Immediate
foundin: None
resolution: Fixed
title: Failure to parse valid YAML, the 2nd
comment:
  The inlined YAML

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  foo: []
  some: value
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  contains valid YAML, as per http://yamllint.com/

  The yaml package fails on this. For this one I managed to find a fix.
  The huddle package is actually at fault. The following code

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          strip {
              foreach {src nop} $args break
  **         foreach {val} $src {
                  lappend result [strip $val]
              }
              return $result
          }
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  is not initializing the 'result' variable. This is in the procedure "::huddle::_list_setting". It needs a

      set result {}

  to handle the possibility of an empty list in $src.


tkt_uuid: 827436ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: smtp::sendmail does not send correct ending sequence
comment:
  I've been using the smtp::sendmail and mime types to
  send attachements (base64 encoded). The system I use is
  Windows 2000. 

  I use the SMTP server which comes with Windows 2000
  IIS. When ending a SMTP mail the server expects the
  sequence 

  <CR><LF>.<CR><LF>

  the sent sequence is just "."

  If I change line 1254 in smtp.tcl from:

  set result [talk $token $secs .]

  to 

  set result [talk $token $secs "\r\n.\r\n"]

  the SMTP server correctly registers the end sequence
  and sends the mail. 

  Now I'm not sure that this is a bug with the SMTP
  server deviating from the standards or the tcl module
  not listening to what the end sequence should be. 


tkt_uuid: 1007766fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: tklib: ctext
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Add a case-insensitive matching option to ctext
comment:
  For my editor of Fortran code I would like to be able
  to use case-insensitive matching of keywords. E.g.
  "subroutine" would match "Subroutine" as well as
  "SUBROUTINE" and any other variations.


tkt_uuid: 511700ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Chat window enhancement?
comment:
  It would be wonderful if i could :

  split the chat window

  run a search or read history in one window while
  watching the existing discussion in the other


tkt_uuid: 509776ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: None
priority: 6
foundin: None
resolution: Not Applicable Here
title: Locale dependant test failures
comment:
  Several test scripts asume ::argv0 to always be there,
  which is not the case for a slave interpreter. The
  tests run fine by themselves but fail from under the
  all.tcl harness... This one-line patch addresses the
  problem.

  -mi

  P.S. Some other tests (mime decode/encode) fail because
  they assume the C/iso-8859-1 locale. To pass they must
  run with LANG=C set...


tkt_uuid: 2431506fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: nntp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Event based nntp, plus cleanups
comment:
  FYI ...

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



  Hello Jeff,

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

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

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

  Regards,

  Igor


tkt_uuid: 1846943fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
title: Gamma distribution
comment:
  Hello,

  I'm submitting code for gamma-distributed random variables. It uses the file "incgamma.tcl" for the incomplete gamma function that I recently submitted.

  The provided functions are:
    cdf-gamma
    pdf-gamma
    random-gamma

  I've tested some values for the cdf & pdf against the corresponding functions pgamma & dgamma in R. For the random deviates, I looked at the histogram output (also provided in the package) and eyeballed the correspondence with plots of the gamma distribution.

  Eric


tkt_uuid: 531231ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 2
foundin: None
resolution: Invalid
title: Error not caught: sendmessage, bad args
comment:
  George@Orwellian.Org writes:

  I constructed smtp::sendmessage arguments without
  including an originator/From, which is an error.

  I was running smtp::sendmessage via 'catch' and got:

  ****errmsg='can't read "aprops(error)": no such element
  in array'.

  Which means the smtp code blew up rather than
  report the error.

  Here is where the error occurred in proc sendmessage:

  puts  $::fd_Trace "Originator='$originator'."
          set addrs [mime::parseaddress $originator]
  puts $::fd_Trace "addrs='$addrs'."
          if {[llength $addrs] > 1} {
              error "too many mailboxes in $who:
  $originator"
          }
          array set aprops [lindex $addrs 0]
  puts $::fd_Trace "Here#1, array names aprops = [array
  names aprops]"
          if {$aprops(error) != ""} {
              error "error in $who: $aprops(error)"
          }

  Here is my runtime diagnostic: 

  Originator=''.
  addrs=''.
  Here#1, array names aprops =
  ****Error: Build_SMTP2='smtp::sendmessage $part -debug
  0 -servers {mx02.earthlink.net}   -header {Subject
  {Email from Somebody}}   -header {To {"The Somebody
  Meister" <Somebody@earthlink.net>}}'.

  ----

  I'd also like to note a "gotcha".

  I first was sending email to two recipients,
  one at Road Runner NYC, one at Earthlink.

  It blew up because I was pointing to RR's SMTP server,
  and it wouldn't "relay" for the Earthlink address.

  I looked at the doc for smtp::sendmessage, saw that
  the -servers option would take a list of SMTP servers,
  and ran it again with both the RR and Earthlink SMTP
  servers specified.

  Same error.

  So, the description of the -servers option is useless
  in telling the programmer what it's for.

  I had to look at the source code to see what it
  actually did.

  It would be convenient to be able to either pair
  recipients with their server, or --- best --- be able
  to give an option saying to use DNS to get MX records
  for the recipient.

  One should not have to hard-code SMTP server names
  into their scripts. That's a ticking time-bomb.


tkt_uuid: 718985ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: irc
priority: 8
foundin: None
resolution: Accepted
title: Potential infinite loop
comment:
  The Tcllib IRC module is capable of going into an
  infinite loop if the IRC server closes the socket
  unexpectedly.

  The problem is that the GetEvent procedure in irc.tcl
  doesn't make any attempt to close the socket once [eof]
  has been received, and [gets] does not generate an
  error when you try to read from a remotely-closed
  socket (it just retrieves an empty string and returns
  -1).  Hence if the socket enters the [eof] state
  through premature closure by the remote end, the Tcl
  end never gets closed; the fileevent handler returns
  with the socket in the eof state and gets immediately
  reinvoked (becaused part-closed sockets are always
  readable; the underlying read() calls don't block,
  since they can definitely return that no data was
  available.)

  I suggest this version of that routine instead (which
  is mostly just reordering):

    proc GetEvent { } {
       variable linedata
       variable sock
       array set linedata {}
       if {[catch {
          gets $sock line
       } err]} {
          close $sock
          ${irc::log}::error \
                  "Error receiving from network: $err"
          return
       }
       # Since we're using blocking sockets, testing the
       # result of [gets] is sufficient to detect EOF
       if {$err < 0} {
          if {[info exists dispatch(EOF)]} {
             $dispatch(EOF)
          }
          close $sock
       }
       if {[string match :* $line]} {
          DispatchServerEvent [string range $line 1 end]
       } else {
          # Should this command get an empty string on
          # end-of-file?  If not, add a return after
          # the close above.
          DispatchServerCmd $line
       }
    }


tkt_uuid: 1668587fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget MessageDlg, -type user overrides default buttonwidth
comment:
  The MessageDlg overrides user defined defaults when used with the option: -type user. For example:

  % option add *Button.width 10 100
  % MessageDlg .msgdlg -type user -buttons {ok cancel} \
        -message "whatever"

  then these defaults are picked up, but overridden by the message box to become -width 0, as testifies:

  % .msgdlg.bbox.bo configure -width
  -width width Width 10 0


tkt_uuid: 3062782fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
resolution: Invalid
title: graphops.test fail
comment:
  ==== modules/struct/graphops.test graphop-ttcl-gtcl-stcl-sttcl-qtcl-bipartite-3.2 FAILED =========
  ==== Contents of test case:

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

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

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


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

  Actual bug appears to be in queue_oo.tcl ?


tkt_uuid: 585455ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Accepted
title: MIME::initialize speedup
comment:
  This patch speeds up mime::initialize, it adds three
  state variables to the token state, lines (a list),
  lines.current (the current line) and lines.count (the
  number of lines in the list. It changes the way lines
  are processed by splitting the entire message into a
  list and fetching new lines from the list as needed. 

  From what I've gathered from the MIME RFC documents,
  there are no valid encodings in use that would break
  the [split $string \n] method. 


tkt_uuid: 822850ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 8
foundin: None
resolution: Fixed
title: incorrect eval use in various modules
comment:
  As pointed out by Jeff Hobbs on TCLCORE, eval is used
  in incorrect and unsafe ways in various modules. This
  should be fixed.

  Michael


tkt_uuid: 731759ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Accepted
title: line endings wrong for buildmessage
comment:
  Using buildmessage and therefore buildmessageaux to generate a 
  mime message results in the headers and boundaries having LF as 
  their line ending. According to RFC2045 these should be CRLF. 

  This may also apply to copymessage/copymessageaux also although 
  it may be using channels to do the translation I'm not sure.

  I have attached a suggested patch for mime.tcl

  Thanks

  Matthew


tkt_uuid: 1301707fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: sha1
priority: 8
foundin: None
resolution: Accepted
title: TIP 237 compatibility patch
comment:
  TIP 237 proposes for Tcl integer
  computations to support an
  unlimited integer range.

  The sha1 package does its
  computations assuming a
  fixed-size buffer of at least
  32-bits.

  Doing unlimited range calculations
  won't exactly be wrong, but it will
  mean computing with truly
  enormous numbers, spending an
  ever-increasing amount of time,
  only to throw away all but the
  lowest 32-bits.

  Better to use the int(.) function
  to explicitly but the modular
  nature of the calculation in place.

  Here's a patch.


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

  There is an error in:

  ::math::linearalgebra::angle

  instead of:

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

  it should be:

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

  or also:

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

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

   Regards,


tkt_uuid: 3252952fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: coroutine
priority: 5 Medium
foundin: None
resolution: Fixed
title: Coroutine package overwrites core ::coroutine command
comment:
  The coroutine package creates a new command (via [namespace ensemble create]) which clashes with the core ::coroutine command.
  Possible solutions:
  * Move the original ::coroutine command to the ::coroutine namespace first.
  * Use the -command option of [namespace ensemble create] to change the name of the created ensemble.
  * Rename the ::coroutine namespace altoghether.


tkt_uuid: 472010ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Invalid
title: "smtp::sendmessage" and "header"
comment:
  he procedure "smtp::sendmessage" does not recognice the
  "header"
      data provided with the "mime::setheader" command.

  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  package require mime
  package require smtp

  set TEXT    {Hallo Otto}

  set M1      [ ::mime::initialize -canonical
  "Text/plain" -string $TEXT]

  mime::setheader $M1 To "Dev1Usr <dev1usr@linux02>"
  mime::setheader $M1 From "Andreas Otto
  <dev2usr@linux02>"
  mime::setheader $M1 Subject "test ..."

  #smtp::sendmessage $M1  -header [ list To "Dev1Usr
  <dev1usr@linux02>" ] \
  #                       -header [ list From "Andreas
  Otto <dev2usr@linux02>" ] \
  #                       -header [ list Subject "test
  ..." ]

  smtp::sendmessage $M1

  # clean everything up

  mime::finalize $M1
  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

  generate

  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><
  need -header "To ..."
      while executing
  "error "need -header \"$toM ...\"""
      (procedure "smtp::sendmessage" line 176)
      invoked from within
  "smtp::sendmessage $M1"
      (file
  "/home/dev1usr/Project/Compiler2/bin/Mail.tcl" line 33)
  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


tkt_uuid: 2123397fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ip
priority: 5 Medium
foundin: None
resolution: Accepted
title: bad [string first] in [::ip::version]
comment:
  In the proc ::ip::version, I see:

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

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


tkt_uuid: 1042987fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: treeql
priority: 5 Medium
foundin: None
resolution: Fixed
title: Extra list layers on output of get
comment:
  Here is one unexpected behavior I found.  There seem to
  be extra list layers on elements of the list returned
  by get when that list element contains spaces or square
  braces.

      package require treeql
      package require struct::tree
      package require tcltest
      namespace import tcltest::*
      set t [struct::tree]; ::treeql q -tree $t
      test get.1 {attributes with special characters} {
          $t insert root end n1 n2 n3
          $t set n1 title hello
          $t set n2 title "hello there"
          $t set n3 title {[hello]}
          q query root children get title
      } [list hello {hello there} {[hello]}]
      $t destroy; q destroy

  Output:

   ---- Result was:
   hello {{{hello there}}} {{{[hello]}}}
   ---- Result should have been (exact matching):
   hello {hello there} {[hello]}
   ==== get.1 FAILED


tkt_uuid: 1403369fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
title: Fix non-standard usage of TLS
comment:
  Well, I am not sure if we have a standard, actually. I
  know that SMTP can use TLS, with graceful fallback if
  TLS is not available.

  The ldap package also has code using TLS, but it was
  done differently and there is no graceful fallback.

  Please have a look at ldap and see if it can be
  (re)done similarly to SMTP.


tkt_uuid: 1492527fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Rejected
title: bwidget - Dialog uses tk_messageBox: frozen gui.
comment:
  Executing the attached code on wish from ActiveState 8.
  4.[11,13] results
  on an unresponsive gui when the user does something of 
  this:

  * click the Dialog's button labeled as "click me!". 
  Then click the ok
    button on the messagebox. [Win2KSP4, ActiveState Tcl/
  Tk 8.4.11].

  * click the dialog's button labeled as "click me!", 
  then click the
    Dialog's title bar, the click the Ok button on the
    messagebox. [WinXPSP2, ActiveState Tcl/Tk 8.4.13].

  * click the dialog's button labeled as "click me!", the 
  click the Ok
    button on the messagebox, click again the "click me!" 
  button, click
    again the messagebox Ok button [WinXPSP2, ActiveState 
  Tcl/Tk 8.4.13].

  The OS/Tcl version combination is just the setup 
  available to
  me. Nothing beyond that was tested.


tkt_uuid: 990937ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: uri
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: why is [eval] required for identity split->join?
comment:
  % package require uri
  1.1.1
  % set url http://some.site.invalid/some/path
  % set theUrl [uri::join [uri::split $url]]
  list must have an even number of elements
  % set theUrl [eval uri::join [uri::split $url]]
  http://some.site.invalid/some/path


  Surely uri::join should be written so that the eval is
  not required.  Merely stop using the "args" argument in
  the proc definition so that uri::join must be passed a
  list and not several parameters.

  proc uri::join parts {
      array set components $parts
      return [eval [list Join[string totitle
  $components(scheme)]] $parts]
  }


tkt_uuid: 1695123fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: doctools - Rework to use snit
comment:
  doctools currently uses a custom OO-like code base. Rewrite it to use snit instead for future manageability.

  This can be done before or after the internals have been changed to the use of pluginmgr (see RFE 1695122).


tkt_uuid: 564674ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Rejected
title: dns::resolve time out
comment:
  On a Windows NT system running behind a fireware the dns::resolve always times out.

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

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

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


tkt_uuid: 3427030fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: md5crypt
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Memory leak in md5crypt::aprcrypt in tcllib 1.13
comment:
  There is a memory leak somewhere in the md5crypt::aprcrypt implementation in tcllib
  1.13.

  Steps to repeat:

  $ tclsh 
  % parray tcl_platform
  tcl_platform(byteOrder)   = littleEndian
  tcl_platform(machine)     = i686
  tcl_platform(os)          = Linux
  tcl_platform(osVersion)   = 2.6.33
  tcl_platform(platform)    = unix
  tcl_platform(pointerSize) = 4
  tcl_platform(user)        = work
  tcl_platform(wordSize)    = 4
  % puts $tcl_patchLevel
  8.5.5
  % package require md5crypt
  1.1.0
  % for {set i 0} {$i < 1000000} {incr i} { ::md5crypt::aprcrypt blah [ ::md5crypt::salt ] }

  Watch memory usage of tclsh in top or another monitor.  It will grow over time as the for loop iterates.


tkt_uuid: 731457ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
title: results are lost for send -async calls
comment:
  The documentation suggests that the results of RPC and
  remote errors are lost when -async option is specified
   with comm::comm send.

  Is there an API which will allow me to wait and/or
  retrieve those values of an async invocation? If not,
  would it be possible to add such an API to this
  package. It would make it really useful to be able to
  submit async cmds to more than 1 interps and then wait
  for the results at a later point.

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

  Hm. This requires a number of changes in comm I
  believe. If I remember my look at the code correctly
  The sender tells the remote side if he is interested in
  the results of the call, and if not (i.e. -async) the
  remote side does not even make an effort to send this
  data back.

  ... so the sender has to pretend 'no async' to the
  remote side, but claim async for itself.

  Is there truly a need to wait for the result on your
  own ? How about allowing the specification of a
  'result' callback instead. Automatically called when
  the results return.

  The problem I have with waiting later is that comm does
  some fairly tricky things with 'vwait' to ensure that
  the sender is able to process incoming requests etc.
  even while waiting for the result of a synchronous
  [send], and this part is not completely understood by
  me (yet). Adding callbacks OTOH hand seems simpler to
  me. It would also fit into the general model of Tcl for
  such a situation.

  Andreas

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

  I would think that the API would be something like
  -asyncvar foo, and foo gets set with the data (probably
  a list of completion code and result) when completed. 
  Perhaps -variable instead, understood to be async, not
  to overdo the -async name.

  Jeff
  ----------------------------------------------------------------------


tkt_uuid: 1560851fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Development Tools
priority: 5 Medium
foundin: None
resolution: Fixed
title: sak fails with Tcl 8.5
comment:
  /usr/local/bin/tclsh8.5 `echo ./sak.tcl` test run
  command "::tie::std::file::normalize" already exists
      while executing
  "error "command \"$name\" already exists""
      (procedure "::snit::RT.type.typemethod.create" line 22)
      invoked from within
  "::snit::RT.type.typemethod.create ::tie::std::file
  normalize ~/.Tcllib/Registry"
      ("uplevel" body line 1)



  with lots more stack trace to follow.
  Will post if it helps.


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


tkt_uuid: 1414589fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 7 High
foundin: None
resolution: Fixed
title: [package require snit] stomps on $::dir
comment:
  % set dir "Important Data"
  Important Data
  % package require snit     
  1.1
  % set dir
  /local/src/tcllib/modules/snit


  Stay in your own namespace, snit!


  :)


tkt_uuid: 2906751fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: plotchart
priority: 5 Medium
foundin: None
resolution: Fixed
title: right and left axes confused
comment:
  If I create an XYplot with a right axis, the data are displayed in the correct locations, but the left axis's ticks show the scale of the right axis.  The right axis's ticks show the correct scale, but there doesn't seem to be any way to set their format.

  The attached script demonstrates the problem.


tkt_uuid: 3317772fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: ListBox does not allow scrolling to last line on Windows 7
comment:
  Hi,

  Example below shows the issue:

  catch {destroy .x}
  toplevel .x
  ScrolledWindow .x.w
  pack .x.w -fill both -expand 1
  ListBox .x.w.l -deltay 25
  wm geometry .x 400x169
  for {set i 0} {$i < 10} {incr i} {
      .x.w.l insert end i$i -text TEST$i
  }
  .x.w setwidget .x.w.l

  When using scrollbar, you can't scroll down to see entire last entry. Works fine on Linux, not sure about other platforms.


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

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


tkt_uuid: 517595ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: control
priority: 5 Medium
foundin: None
resolution: Fixed
title: test suite bug in control/do.test
comment:
  using the very latest tcllib, and running make test, I
  see the following error:


  Module: control
  modules/control/do.test

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

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

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


tkt_uuid: 3609346fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Installation
priority: 7 High
foundin: None
resolution: Accepted
title: /usr/bin/dia: filename clash
comment:
  Hi!

  The newly released tklib 0.6 installs the dia application into /usr/bin/. Though there is another dia (http://projects.gnome.org/dia/). It's unfortunate that two applications have the same name. Could you rename it somehow?


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

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

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

  This only happen when we use ftp in asynchronous 
  mode.

  My Email:
  champdog_s1977@hotmail.com


tkt_uuid: 2499641fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: stripPath does not correctly handle mixed case paths
comment:
  stripPath does not correctly handle mixed case paths on Windows. See console session below

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

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

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

  /Ashok


tkt_uuid: 1582535fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: Infinite loop in StateHandler
comment:
  Hello,

  I have discovered a series of events which cause the 
  StateHandler proc to be called in an infinite loop. A 
  possible scenario to trigger this is the following:
   - open a ftp connection and start a get
   - make sure the control connection times out because 
  of network errors
   - try the ftp::Close proc and notice the "infinite 
  number of loops" exception of tcl.

  The reason for this to happen is that the 
  StateHandler passes through the [eof $ftp(CtrlSock)] 
  branch, where it goes back to vwait in 'WaitComplete 
  $s 0', without taking away the cause of the event. 
  Meaning the ftp(CtrlSock) is still readable, and so 
  the StateHandler is called again, and again, ...

  I have added a patchfile for this against revision 
  1.43 of ftp.tcl.

  Greetings,
  Guy


tkt_uuid: 523036ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: 'make install' errors
comment:
  $ make install
  ...
  Installing doctools in
  /usr/local/lib/tcllib1.2/doctools
  /usr/bin/install: ./modules/doctools/*.tcl: No such
  file or directory
  ...
  Installing documentation for calendar
  sed: can't read ./modules/calendar/*.n: No such file or
  directory
  /usr/bin/install: installing multiple files, but last
  argument (/usr/local/man/mann/wm.n) is not a directory
  Try `/usr/bin/install --help' for more information.
  ...
  Installing documentation for doctools
  sed: can't read ./modules/doctools/*.n: No such file or
  directory
  /usr/bin/install: installing multiple files, but last
  argument (/usr/local/man/mann/wm.n) is not a directory
  Try `/usr/bin/install --help' for more information.
  ...


tkt_uuid: 944995ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Fixed
title: xml content/type
comment:
  Reported as tclhttpd bug '[ 698549 ] direct url getting
  xml content/type' at
  http://sourceforge.net/tracker/index.php?func=detail&aid=698549&group_id=12884&atid=112884

   when using in ie ActiveXObject("Microsoft.XMLHTTP");
  to get xml from a direct_url the is a server 500 error.
  the problem is the content-type:
  Unknown Content-Type: text/xml
  while executing
  "ncgi::nvlist"(procedure "ncgi::parse" line 8)


  this is because ncgi package does not reconize test/xml
  type.
  adding it to ncgi solves the problem:

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

  I'm handpassing this to you.


tkt_uuid: 2798450fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: uri
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: uri::split provides no user and pwd without (default) scheme
comment:
  Hello,

  following code shows the bug:

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

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

  Best regards,

  Martin Lemburg


tkt_uuid: 500655ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
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: 449531ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: Package to iterate over lines of files
comment:
  Here is a package I've been working on that I
  would like to offer for Tcllib. It is basically
  a Tcl-only clone of the Python fileinput module,
  i.e., it contains syntactic sugar for iterating
  over the lines of a number of files, with
  optional in-place editing and backups. This
  allows code like

    # Number lines
    package require fileinput
    ::fileinput::foreach line $argv {
        puts [format "%d %s" [::fileinput::lineno] $line
    }

  I have included a manual page for the package.
  Please let me know if this is acceptable or if
  there is anything I ought to change.


tkt_uuid: 674334ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: stats - deprecated
priority: 5 Medium
foundin: None
resolution: Invalid
title: stats: 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: 3610478fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: json
priority: 5 Medium
foundin: None
resolution: None
title: json conversion fails on help example
comment:
  Tested in Tcl 8.5.14, WinXP

  Working with the example given in the tcllib help file (tcllib/embedded/www/tcllib/files/modules/json/json.html)

  dict2json:
  set j [json::dict2json {Image {IDs {116 943 234 38793} Thumbnail {Width 100 Height 125 Url http://www.example.com/image/481989943} Width 800 Height 600 Title {View from 15th Floor}}}]
  {"Image": IDs {116 943 234 38793} Thumbnail {Width 100 Height 125 Url http://www.example.com/image/481989943} Width 800 Height 600 Title {View from 15th Floor},
  }

  the same json2dict:
  json::json2dict $j
  unexpected token "116" at position 5; expecting STRING

  I put the example into http://jsoneditor.net/ which does not complain, but compresses it a little bit.
  set j {"Image":{"Width":800,"Height":600,"Title":"View from 15th Floor","Thumbnail":{"Url":"http://www.example.com/image/481989943","Height":125,"Width":100},"IDs":[116,943,234,38793]}}

  but the conversion to dict gives:
  json::json2dict $j
  Image



  thx


tkt_uuid: 548832ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: Tcl version of mime::qp_encode broken
comment:
  The mime package has a preference for Trf's
  quoted-printable command, but falls back to a pure Tcl
  implementation when Trf is not present.

  In tcllib 0.8 (mime package version 1.2 iirc),
  mime::qp_encode correctly encoded the equal sign as
  =3D.  Currently in tcllib 1.2 (mime package version
  1.3.1) mime::qp_encode does NOT encode the equal sign. 
  This causes the quoted-printable output of the mime
  package to not be decodable by many other programs
  (such as pine).

  A (rather simple) patch is attached.


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


tkt_uuid: 2926387fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
resolution: Fixed
title: csv::read2queue mishandles embedded newlines
comment:
  Just a typo.  read2queue correctly buffers incomplete lines, but then calls split on the last line read rather than on the buffered multiline data.  


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

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


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


tkt_uuid: 981545ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: better -exportselection behavior
comment:
  The following patch was sent to me as a recommendation
  for better behavior on unix.  It looks OK to me, but
  someone should double-check that it doesn't look too
  funky on unix (where is has more noticeable effect):

  I tried to turn off the -exportselection option for the
  ComboBox.  The result was the entry text was still
  selected, but now it did not deselect even if other
  places in the app grabbed the selection.  There appear
  to be now way to get rid of the selection after this.

  The following patch to ActiveTcl fixes this problem.

  --- lib/bwidget1.7/combobox.tcl.dist2004-05-26
  09:23:49.000000000 +0200
  +++ lib/bwidget1.7/combobox.tcl2004-05-26
  09:34:08.000000000 +0200
  @@ -599,7 +599,9 @@
           }
       }
       $path.e selection clear
  -    $path.e selection range 0 end
  +    if {[$path.e cget -exportselection]} {
  +        $path.e selection range 0 end
  +    }
   }


tkt_uuid: 1206941fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 5 Medium
foundin: None
resolution: Duplicate
title: struct::list flatten throws error for valid list
comment:
  this script throws error:
  %set a [list \[a\] \[b\]]
  {[a]} {[b]}
  %  struct::list flatten $a
  invalid command name "a"

  this is the errorInfo:
  invalid command name "a"
      while executing
  "a"
      invoked from within
  "::lappend result [a]"
      ("eval" body line 1)
      invoked from within
  "eval [::list ::lappend result] $item"
      (procedure "::struct::list::Lflatten" line 26)
      invoked from within
  "::struct::list::Lflatten {{[a]} {[b]}}"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 [linsert $args 0 ::struct::list::$sub]"
      (procedure "struct::list" line 15)
      invoked from within
  "struct::list flatten $a"


tkt_uuid: 714214ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 1 Zero
foundin: None
resolution: Fixed
title: test failures: fileutils module
comment:
  Test platform: tcl 8.4.2 on intel Windows 2000

  Module:fileutil
  modules/fileutil/fileutil.test
  fileutil 1.4

  ==== fileType-1.14 test binary graphic png FAILED
  ==== Contents of test case:

      set f [file join $dir fileTypeTest pngFile]
      set res [catch {fileutil::fileType $f} msg]
      list $res $msg

  ---- Result was:
  0 binary
  ---- Result should have been (exact matching):
  0 {binary graphic png}
  ==== fileType-1.14 FAILED


  ==== fileType-1.21 test binary compressed gzip FAILED
  ==== Contents of test case:

      set f [file join $dir fileTypeTest gzipFile]
      set res [catch {fileutil::fileType $f} msg]
      list $res $msg

  ---- Result was:
  0 binary
  ---- Result should have been (exact matching):
  0 {binary compressed gzip}
  ==== fileType-1.21 FAILED


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

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


tkt_uuid: 2903927fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Development Tools
priority: 5 Medium
foundin: None
resolution: Fixed
title: tklib test suite failure on CVS head
comment:
  I configure and install tklib, then I type:

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

      test -- Execute testsuites

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

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

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


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

  All a user has to do to make use of secure irc, after this patch, is to specify ircs:// in the URL rather than irc://.

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

  The patch also includes requisite updates to the manual page.


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

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

  --willdye ("BobaFudd" on tkchat)


tkt_uuid: 3574004fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: aes
priority: 5 Medium
foundin: None
resolution: Fixed
title: decrypt/encrypt fails for data beginning with '-'
comment:
  % set data_block -[string repeat \\0 15]
  -\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
  % aes::aes -hex -mode cbc -dir encrypt -key $nil_block $data_block
  bad option "-\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0": must be one of -chunksize, -dir, -hex, -in, -iv, -key, -mode, -out

  The last item in the args list is always the data (or the in stream name).
  It is never a "-" option and should not be treated as one even if it starts with a "-".

  I have a server system that has been running for more than a year before happening to have some data beginning with a "-".
  Very hard to test for unless you already know what the problem is.

  Suggested fix: terminate argument processing when the args list length gets to 1...

  --- tcllib-1.14.orig/modules/aes/aes.tcl2012-07-25 10:53:21.000000000 +1000
  +++ tcllib-1.14/modules/aes/aes.tcl2012-10-03 12:19:44.000000000 +1000
  @@ -519,7 +519,7 @@
       set opts(-iv) [string repeat \0 16]
       set modes {ecb cbc}
       set dirs {encrypt decrypt}
  -    while {[string match -* [set option [lindex $args 0]]]} {
  +    while {[llength $args] > 1 && [string match -* [set option [lindex $args 0]]]} {
           switch -exact -- $option {
               -mode      { set opts(-mode) [SetOneOf $modes [Pop args 1]] }
               -dir       { set opts(-dir) [SetOneOf $dirs [Pop args 1]] }


tkt_uuid: 577678ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Add the package tkmisc to tklib
comment:
  I have formalised a small set of procs that handle
  toplevel windows:
  - Show a logo window at start-up
  - Show a window that fills the entire screen without
  decorations
  The attached file contains the source code, some
  documentation and test cases.


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

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

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

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


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


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

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


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

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

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

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

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

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


  Any Questions?

  David Bigelow
  davidhbigelow@compuserve.com


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

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

  call with:

     diff2 ab "a b"

  and it dies with

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

  Hope this is enough info.

  Regards,

  Ashley Sanders a.sanders@mcc.ac.uk


tkt_uuid: 514486ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: textutil
priority: 5 Medium
foundin: None
title: request textutil snd-like comparisons
comment:
  I would like to request procs that implement string
  comparisons of soundex, extended soundex, metaphone,
  double metaphone be added to tcl.

  Text::Soundex, Text::Metaphone, Text::DoubleMetaphone
  are perl modules which implement 3 of these algorithms.

  When searching google for the above, I noticed
  http://www.linguistlist.org/~ask-ling/archive-1998.4/msg00854.html
  which claims to have some algorithm info for
  non-english languages.


tkt_uuid: 3508577fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: json
priority: 5 Medium
foundin: None
resolution: Duplicate
title: json: pretty-printing a dictionary
comment:
  Based on json.tcl (1.1.2)
  I added a new proc named "json2prettydict"

  Aim of this proc is to return a "pretty-printed" tcl-dictionary.

  I think this proc could be useful for documentating complex nested dictionaries.

  - Internal Notes -
  "json2prettydict" is heavily based on existing json2dict and json::parseXXX procs.
  I slightly changed the internal code of all json::parseXXX procs, so that
  these procs, may be called in two ways: for getting a (traditional) tcl-dict
  or for getting a pretty-printed tcl-dict.

  [Source code is attached]

  -------------------------------------
  Here is a demo:

  set jsonStr { \
   { "photos": { "page": 1, "pages": "726", "perpage": 3, "total": "7257", 
      "photo": [
        { "id": "6974156079", "owner": "74957296@N08", "secret": "005d743f82", "server": "7197", "farm": 8, "title": "Kenya Watamu \"Deep Sea Fishing\" \"Indian Ocean\" \"Blue Marlin\"", "ispublic": 1, "isfriend": 0, "isfamily": 0 },
        { "id": "6822988100", "owner": "52857411@N08", "secret": "56630c18e8", "server": "7183", "farm": 8, "title": "Gedi Ruins, Local Guide", "ispublic": 1, "isfriend": 0, "isfamily": 0 },
        { "id": "6822909640", "owner": "52857411@N08", "secret": "f4e392ea36", "server": "7063", "farm": 8, "title": "Local Fisherman, Mida Creek", "ispublic": 1, "isfriend": 0, "isfamily": 0 }
      ] }, "stat": "ok" }
  }
  # First, just for comparision, call json2dict
  set d1 [json::json2dict $jsonStr]
   # result is the following
  if {0} {

  photos {page 1 pages 726 perpage 3 total 7257 photo {{id 6974156079 owner 74957296@N08 secret 005d743f82 server 7197 farm 8 title {Kenya Watamu "Deep Sea Fishing" "Indian Ocean" "Blue Marlin"} ispublic 1 isfriend 0 isfamily 0} {id 6822988100 owner 52857411@N08 secret 56630c18e8 server 7183 farm 8 title {Gedi Ruins, Local Guide} ispublic 1 isfriend 0 isfamily 0} {id 6822909640 owner 52857411@N08 secret f4e392ea36 server 7063 farm 8 title {Local Fisherman, Mida Creek} ispublic 1 isfriend 0 isfamily 0}}} stat ok

  }
   # Then create a pretty printed dictionary
  set d2 [json::json2prettydict $jsonStr]
   # result is the following
  if {0} {

  photos {
  page 1
  pages 726
  perpage 3
  total 7257
  photo {
  {
  id 6974156079
  owner 74957296@N08
  secret 005d743f82
  server 7197
  farm 8
  title {Kenya Watamu "Deep Sea Fishing" "Indian Ocean" "Blue Marlin"}
  ispublic 1
  isfriend 0
  isfamily 0
  }
  {
  id 6822988100
  owner 52857411@N08
  secret 56630c18e8
  server 7183
  farm 8
  title {Gedi Ruins, Local Guide}
  ispublic 1
  isfriend 0
  isfamily 0
  }
  {
  id 6822909640
  owner 52857411@N08
  secret f4e392ea36
  server 7063
  farm 8
  title {Local Fisherman, Mida Creek}
  ispublic 1
  isfriend 0
  isfamily 0
  }
  }

  }
  stat ok

  }

  # -- end


tkt_uuid: 1000716fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: tree
priority: 8
foundin: None
resolution: Fixed
title: Unset of last attribute followed by delete results in error
comment:
  Unsetting the last attribute of a node and then
  deleting that node results in an error.

  Here is a unit test that shows this behavior:

  test tree-2.6.6 {unset followed by node delete} {
      tree mytree
      set     result [list]
      set n [mytree insert root end]
      mytree set $n foo bar
      mytree unset $n foo
      mytree delete $n
      set result [mytree exists $n]
      mytree destroy
      set result
  } 0

  Here is the result when executed:
  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: can't unset "::mytree::": no such variable
      while executing
  "unset ${name}::$attribute($node)"
      (procedure "KillNode" line 12)
      invoked from within
  "KillNode $name $node"
      (procedure "::struct::tree::_delete" line 27)
      invoked from within
  "::struct::tree::_delete ::mytree node1"
      ("_delete" body line 1)
      invoked from within
  "mytree delete $n"
      ("uplevel" body line 7)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== tree-2.6.6 FAILED

  One fix that causes the above test to pass without
  breaking any of the other unit tests in tree.test is to
  change the line in ::struct::tree::_unset that says:

  set attribute($node) {}

  to

  unset attribute($node)


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

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


tkt_uuid: 1435941fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: Hanging problem with ComboBox in Dialog
comment:
  I am encountering a strange problem using BWidget
  (1.7).  I am using a
  ComboBox inside of a Dialog.  I can make one choice
  with the ComboBox,
  but when I try to make a *second* choice, things
  'hang'.  It seems to be
  a problem involving focus, but I am not sure I
  understand it (things are
  hanging in BWidget::focus).


  I have uploaded a fairly striped down version of the
  code which has this
  problem to 

  ftp://ftp.deepsoft.com/pub/deepwoods/Other/BWBroken-1.0.0.tar.gz
  (the above is also attached to this bug report)

  I am doing this on a RH 7.3 system, using both the
  'stock' Tcl/Tk
  (8.3.3), but it is also broken with ActiveState Tcl
  8.4.12, so it is not
  a function on an 'old' version of Tcl/Tk.

  Other version info:

  sauron.deepsoft.com% rpm -q XFree86
  XFree86-4.3.0-2.90.55
  sauron.deepsoft.com% rpm -q glibc
  glibc-2.2.5-42
  sauron.deepsoft.com% uname -a
  Linux sauron.deepsoft.com 2.4.18-3 #1 Thu Apr 18
  07:31:07 EDT 2002 i586 unknown
   


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

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


tkt_uuid: 741653ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Duplicate
title: hooks not installed when channel namespaced
comment:
  If the chan arg to comm::comm new is namespace 
  qualified, 
  e.g  comm::comm new ::mychan
  or even
  comm::comm new ::comm::mychan
  then hooks don't get properly installed.
  parray on comm::comm shows most members with 
  the specified chan, e.g
  ::comm::comm(::comm::mychan,listen)    = 1
  but the hooks are shown as:
  ::comm::comm(mychan,hook,incoming)   = {...
  and they don't fire.
  Maybe one just isn't supposed to supply anything 
  other than a simple name to comm::comm new, in 
  which case I guess this is just a doc issue.

  On a related note, it'd be nice if comm::comm new 
  actually returned the fully qualified name of the 
  channel it just built so you don't have to 
  guess/know where it puts it.
  Seems strange that channels are listed unqualified 
  by 'comm::comm channels'.
  Maybe I'm a bit confused - but something appears 
  wrong.


tkt_uuid: 3601995fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ncgi
priority: 8
foundin: None
resolution: Fixed
title: Wrong utf-8 handling in ncgi::decode
comment:
  ncgi::decode uses regular expressions to handle utf-8 characters. However, the patterns are wrong. They do not cover all utf-8 sequences and also cover illegal sequences.

  #These are wrong:
  #    regsub -all -- {%([A-Fa-f][A-Fa-f0-9])%([A-Fa-f][A-Fa-f0-9])%([A-Fa-f][A-Fa-f0-9])} \
  $str {[encoding convertfrom utf-8 [DecodeHex \1\2\3]]} str
  #    regsub -all -- {%([A-Fa-f][A-Fa-f0-9])%([A-Fa-f][A-Fa-f0-9])} \
  $str {[encoding convertfrom utf-8 [DecodeHex \1\2]]} str

  #These are right:
      regsub -all -- {%([Ee][A-Fa-f0-9])%([89ABab][A-Fa-f0-9])%([89ABab][A-Fa-f0-9])} \
  $str {[encoding convertfrom utf-8 [DecodeHex \1\2\3]]} str
      regsub -all -- {%([CDcd][A-Fa-f0-9])%([89ABab][A-Fa-f0-9])} \
  $str {[encoding convertfrom utf-8 [DecodeHex \1\2]]} str


tkt_uuid: 955446ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 7 High
foundin: None
resolution: Fixed
title: 227 reply non-recommended - causes failures
comment:
  ftpd.tcl (tcllib1.6) currently sends:
  227 Entering Passive Mode. 192,168,1,100,13,209

  The recommeded standard is
  227 Entering Passive Mode (192,168,1,100,13,209).

  Note the added parens. and the move of period to
  end of string.

  When I made this change my client, a Linux-based ROM-
  disk DVR (Digital Video Recorder) started working. So not
  much chance to change things on client.

  Seems in this case it's just a better idea to 
  exactly match the recommendation rather than
  vary slightly.


tkt_uuid: 2433410fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: plotchart
priority: 5 Medium
foundin: None
resolution: Fixed
title: tklib build process reports plotchart doc problem
comment:
  Generating /projects/sprs_lwv/tcl86/man/mann/plotchart.n
  DocTools Warning (sectambig): In macro at line 2332, column 0:
  DocTools Warning (sectambig): (Sub)Section title "RESIZING" causes ambiguous section references.


tkt_uuid: 723318ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: tree
priority: 8
foundin: None
title: struct::tree -- Report maxdepth of struct from node
comment:
  myTree depth $node -- Depth of Current Node
  myTree size $node -- Returns number of Children for 
  that Node


  How about a:

  myTree maxdepth $node -- Return the maximum depth 
  from that node to the last branch within it.

  root
   1
   2
   3
     \
      4
      5
      6
       \
        7
        8
        9
        10

  For Example:

  myTree maxdepth root
  ---> 3

  myTree maxdepth 6
  ---> 3

  myTree maxdepth -relative -- 6
  ---> 1


  the -relative option would be used to adjust the response 
  from the command to show the depth from the current 
  node.

  Any Questions?

  David Bigelow
  davidhbigelow@compuserve.com


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

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

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

  proc main { } {

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

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

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

  main
  wm geom . [wm geom .]


tkt_uuid: 2159700fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: tablelist
priority: 5 Medium
foundin: None
resolution: Rejected
title: Bug in tablelist when interacting with gridplus
comment:
  Hello,
  I noticed an intriguing bug when gridplus and tablelist interact. See the following suite of commands.

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

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

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

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


tkt_uuid: 2986744fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: sha1
priority: 5 Medium
foundin: None
resolution: Fixed
title: issue with tcllib sha256 on 64bit systems
comment:
  Having compiled Tcltk on a 64bit system I could not open databases which were encrypted with the sha256 algorithm. Before I used only 32bit versions of ActiveState binaries. Debugging the sha256.tcl file I found the reason:

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

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

  Now everything works fine. 

  Zbigniew Diaczyszyn


tkt_uuid: 1861700fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: math
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Submission: Beta dist and Incomplete Beta Function
comment:
  Hi,

  I've implemented the Beta distribution and also provided an implementation of the incomplete Beta function (which is the CDF for the Beta distribution).

  I've tested the incomplete Beta function quite a bit (as shown), and think that it is now robust. However, I probably didn't make the most efficient implementation. An alternative would be the collection of algorithms in DCDFLIB (http://people.scs.fsu.edu/~burkardt/f_src/dcdflib/dcdflib.html), but it is quite involved -- if this implementation is sufficient, so much the better.

  Eric


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

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

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

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

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

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

  - Harald


tkt_uuid: 436340ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Twoline patch for bwidget passwddlg
comment:
  The password dialog does not support an option 



    -logineditable



  which would work like e.g. -passwdeditable



  This might be important for cases where the login was already chosen previouslyu and one doesn't want the user to change it again.



  Anyway, implementing this is quite easy: in the actual CVS remove "-editable" in the following lines (at the very top of the file):

  Widget::bwinclude PasswdDlg LabelEntry .frame.lablog \
      remove [list -command -editable -justify -name -show -side ...

  and add it in this line

      prefix [list login -helptext -helpvar -label -text \ ...

  So that it now reads:

  Widget::bwinclude PasswdDlg LabelEntry .frame.lablog \
      remove [list -command -justify -name -show -side ...

  and

     prefix [list login -editable -helptext -helpvar -label -text \ ...


  Salut,
            Bastien

  PS: Documentation should be changed.
  PPS: perhaps automatically activate the passwdentry when doing this, I din't find the place yet :/


tkt_uuid: 1166235fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Out of Date
title: NoteBook delete reindexing
comment:
  version 1.7

  In NoteBook::delete

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

  needs to be 

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


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

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

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


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

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

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


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

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

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


tkt_uuid: 1451784fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Out of Date
title: Bwidget notebook highlight looks bad on OS X
comment:
  The Bwidget notebook on OS X has a glitch in which the notebook tab, 
  when it has focus, turns black and obscures the label. I went into 
  notebook.tcl and added a switch statement with a specific color 
  (LightSkyBlue) for OS X. Diff and before/after screenshots attached.


tkt_uuid: 979487ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Out of Date
title: SelectColor widget locks up on MacOS
comment:
  Hi,

  The SelectColor widget locks up under Mac OS X. I'm
  using BWidget v1.7.

  If I remove the 3 "update" calls in SelectColor::menu, 
  everything works fine.

  I tried substituting with "update idletasks" but that
  didn't work.

  Email me at ssNO@SPAMaao.gov.au if you need more
  info or patches tested.

  SCoTT. :)


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

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


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

  Use resources to define the label properties.  

  Have label wrap at 3i.


tkt_uuid: 839469ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 9 Immediate
foundin: None
resolution: Fixed
title: entry doesn't work in 8.3
comment:
  In entry.tcl, the package vcompare should be more 
  clearly:

  if {![package vsatisfies [package provide Tk] 8.4]}

  but most importantly that still doesn't work for 8.3.


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

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

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

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


tkt_uuid: 1050377fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: SMTP AUTH problems.
comment:
  A sourceforge viewer contacted me about not being able to
  get -username/-password to work in tcllib-1.7 smtp.tcl.

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

  Here's the problem.

  The SMTP server responded:

  250-AUTH LOGIN CRAM-MD5 PLAIN

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

  535 authorization failed.(#5.7.0)

  Once that failed, no further AUTHs would work.

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

  502 unimplemented (#5.5.1)

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

  I had the user edit this line:

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

  to be:

  foreach mech [list LOGIN PLAIN] {

  And he reported it was working.

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

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


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

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

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

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


tkt_uuid: 2124508fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: textutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: textutil::string man page overwrites tcl's string man page
comment:
  When I install tcllib, the textutil::string man page overwrites the string man page from the tcl core. I suspect the textutil::split does the same thing - I reinstalled tcl's doc now so I can't say for certain.


tkt_uuid: 528298ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pop3
priority: 8
foundin: None
resolution: Fixed
title: Pop3 eof (".\r") failure: self destruct
comment:
  Submitted by George@Orwellian.Org.

  This code frag reads most of a message
  that's coming in via "RETR <msg#>",
  then it loops line-by-line until it gets
  the <period> termination.

  (Bug work-around shown.)

  ----

  proc ::pop3::RetrFast {chan size} {
      # Bug here.
      # set msgBuffer [read $chan $size]
      # Bug work-around here:
      set msgBuffer [gets $chan]

      # We might have read not enough because of
  .-stuffed lines.
      # Read the possible remainder in line by line
  fashion!
      #
      # get the terminating "."
      # sometimes the gets returns nothing,
      # need to get the real terminating "."

      while {[set line [gets $chan]] != ".\r"} {
          append msgBuffer $line
      }

  ----

  After running it through a popboxen of 14Mb
  of over 900 messages, I hit a failure.

  The "read $chan $size" managed to read in
  most of the message, and this happened to
  land just before the period that ended a
  sentence.

  The next "gets" then received a ".\r" causing
  early termination of the message, and worse:
  it caused the pop3 code to get out-of-sync
  with talking to the pop server.

  I spent a lot of time putting in debug 'puts'
  to find this bleeping problem.

  ---- Trace of it dying

  Valley Stream, NY  11581
  if you send a postal money order , i will ship the same
  day it arrives.
  Please be sure to add shipping charges and include your
  name and street
  address, as well as listing the item/s you've won.
  I also accept Bidpay'
  **** line='.' (last line)
  QUIT
  **** Got to here #2.
  ::pop3::retrieve: got to here #11.
  ::pop3::retrieve: got to here #15.
  ::pop3::retrieve: got to here #16.
  ::pop3::retrieve: got to here #1.
  ::pop3::retrieve: index=138, cstate='list'.
  ::pop3::retrieve: got to here #4.
  ::pop3::send: cmdstring='LIST 138'.
  ::pop3::send: popRet='thank'.
  No messages? ='k'.
  Exit 1

  ---- The full end of the pop message:

  Valley Stream, NY  11581
  if you send a postal money order , i will ship the same
  day it arrives.
  Please be sure to add shipping charges and include your
  name and street
  address, as well as listing the item/s you've won.
  I also accept Bidpay.
  thank
  you
  charles
  (l as letter l, not #1)

  ----

  I would also suggest changing this 'error' command
  to return the full line, not "4 end":

  proc ::pop3::send {chan cmdstring} {
     global PopErrorNm PopErrorStr debug

     if {$cmdstring != {}} {
        puts $chan $cmdstring
     }

     set popRet [string trim [gets $chan]]

     if {[string first "+OK" $popRet] == -1} {
         error [string range $popRet 4 end]
     }


tkt_uuid: 3604129fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: imap4
priority: 5 Medium
foundin: None
resolution: Accepted
title: added imap "copy" command
comment:
  I've added a proc for the imap "copy" function, which is needed if you want to move a message from one mailbox to another.  Currently, it's not possible to move messages between folders with the imap4 library. This proc fixes that problem.

  To add this feature, paste the following proc below the "proc expunge" function in imap4.tcl

  May I ask that you add this patch to the imap library ?

  Thanks!

  -john



     # copy : copy a message to a destination mailbox
     proc copy {chan msgid mailbox} {
         if {[simplecmd $chan COPY SELECT [list $msgid $mailbox]]} {
             return 1
         }
         return 0
     }


tkt_uuid: 704175ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 7 High
foundin: None
resolution: Not Applicable Here
title: doctools - generalize: doctool .GT. manpage tool
comment:
  I would like to see alternatives to manpage_*. Or at least 
  do not require all the arguments.

  - "section" is a unixism that should not be required in a 
  general package. It just clutters and confuses those who 
  don't know what it means.

  - "version" is nice but ought to be optional

  - "command" is ok for manpage_begin but there should 
  be other ways of starting a page as it would make the 
  doctools package more generic which would be a good 
  thing.

  Thanks for this very useful tool! - Roy Terry


tkt_uuid: 3007168fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: tklib: ico
priority: 5 Medium
foundin: None
resolution: Fixed
title: correct alignment for 24x24 icons
comment:
  When tklib::ico reads and writes *.ico, *.dll, *.exe files, it uses the code like ($w*$h+$h*($w%32)) in a number of places, to calculate extra padding required for AND mask. It turned out that the result for 24x24 icons is incorrent; when used with this size, tklib::ico may corrupt executable files and generate incorrect *.ico files (still accepted by some software, but e.g. icotool warns about the incorrect size and about garbage skipped).

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

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


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

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


tkt_uuid: 1805192fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: linearalgebra
priority: 5 Medium
foundin: None
resolution: None
title: ::math::linearalgebra::eigenvectorsSVD does not work
comment:
  ::math::linearalgebra::eigenvectorsSVD does not work coz of a $matrix variable not defined.. maybe it should be the $A matrix instead 

  from danielfisico@gmail.com


tkt_uuid: 476731ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
title: replace ftp displaymsg with log calls
comment:
  andreas kupries asked me to log a feature request to
  replace ftp's displaymsg calls with calls to the tcllib
  log module.


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



  ---- dtypemethod-1.6a start

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

      type dog {
          delegate typemethod * to stringhandler

          typeconstructor {
              set stringhandler string
          }
      }

      dog foo bar

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

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

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

          delegate method * to stringhandler
      }

      dog create spot
      spot foo bar

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


tkt_uuid: 1011102fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: counter
priority: 9 Immediate
foundin: None
resolution: Not Applicable Here
title: counter - dependent on ncgi & html, not in code, nor docs
comment:
  The HTML generation facilities of the counter package
  depend on the html and ncgi packages, but do not
  require them or check if they are present.

  Either the html generation code should be moved out of
  the counter package or be protected with appropriate
  checks/lazy pkg requires if html generation is used.


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


tkt_uuid: 484117ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: html
priority: 5 Medium
foundin: None
resolution: Accepted
title: new html function
comment:
  I attached a new function for the html module. This
  function creates a bulleted list of links given a list
  of label, URL pairs. 

  Result: A <ul><li><a...><\li>.....<\ul> fragment


tkt_uuid: 1300795fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: struct :: prioqueue
priority: 5 Medium
foundin: None
resolution: Accepted
title: fix for prioqueue binary serach
comment:
  === patch ===

  --- prioqueue.tclFri Sep 23 13:28:13 2005
  +++ new/prioqueue.tclFri Sep 23 13:28:21 2005
  @@ -417,6 +417,7 @@
              } elseif {$test > 0 } {
                   # search lower section
                   set upper $pivot
  +                set bound $upper
                   set pos -1
              } else {
                   # search upper section 

  === testcase ===

  ::struct::prioqueue -integer testI

  testI put 1 1
  testI put 2 5
  testI put 3 7
  testI put 4 6
  testI put 5 0

  puts "[testI get]   =   3"
  puts "[testI get]   =   4"
  puts "[testI get]   =   2"
  puts "[testI get]   =   1"
  puts "[testI get]   =   5"

  Submitted by:
  Krzysztof Ska&#322;ecki <krys@dacsystem.pl>
  Tomasz Kosiak <tk@dacsystem.pl>


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


    [section Arguments]
    [list_begin arguments]

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

    An opaque SLS slot handle.


  Produces this HTML output:


    ARGUMENTS

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



  Which is correct. The nroff output looks like this:


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


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


tkt_uuid: 3313923fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: http :: autoproxy
priority: 7 High
foundin: None
resolution: Fixed
title: configure -authProc does not grab the correct argument
comment:
  package require autoproxy
  autoproxy::init
  autoproxy::configure  ; # show what was found
  autoproxy::configure -authProc defAuthProc
  autoproxy::configure  ; # see the BUG?
  autoproxy::cget -authProc  ; # see the BUG more clearly!

  The last command returns "-authProc" whereas it should return "defAuthProc"

  Fix:
  Line 106 of autoproxy.tcl should read:
              -authProc { set options(authProc) [Pop args 1] }
  instead of:
              -authProc { set options(authProc) [Pop args] }


tkt_uuid: 783878ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: FTP library responding WAY to slow on ftp connect timeout.
comment:
  I am currently programming a tcl script for an 
  eggdrop(www.egghelp.org) which shall tell me if a list of 
  ftp's are up and running or not. For making the coding a 
  lot more easy for me I am using the FTP library package 
  and I am running TCL 8.4.4 (did also try with 8.3.4). It is 
  a really great library and all seems to work ok, but a 
  rather large problem occurs when I am trying to connect 
  to a server which ends up with a timeout. It takes just 
  way to long time for the tcl library to give me the right 
  response: "-1".

  When I connect to this server in FlashFXP in Windows it 
  says;
  Connecting to 123.456.789.123
  Connection failed (Connection timed out)
   
  This is what I type & get in tcl cmd line;
  % ftp::Open 123.456.789.123 username password 
  -timeout 2 -port 12345 -mode passive
  -1
   
  As you can see, this works in theory, but it takes several 
  minutes before I get the "-1" response, even though I've 
  set the "timeout" setting.
   
  Those minutes causes my eggdrop to totally "crash" for 
  some minutes and usually disconnects from the IRC 
  server because of this... In short; I need it to tell me 
  MUCH faster if the ftp is responding or not...
   
  If this is not a bug in the tcl library, how can/shall I solve 
  my problem? If it is a bug, would it be possible for any of 
  you guys to give me a 
  fix? A fix is appreciated!
   
  Thanks!


tkt_uuid: 2881739fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: interpolate
priority: 5 Medium
foundin: None
resolution: Fixed
title: Cubic spline interpolation is wrong
comment:
  Hi,

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

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

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

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

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

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

  I suggest that somebody should check the algorithm implementation.

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

  Best regards,
  JM


tkt_uuid: 2995969fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: ListBox: No multiple drag
comment:
  A BWidget listbox with multiple selection may not do multiple drag and drop.

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

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

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

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


tkt_uuid: 1191854fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: profiler
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: profiler - No sense to clutter output when total calls = 0
comment:
  This is a kind of enhancement.
  I changed my local version by moving the piece 
  if { !$callCount($name) } {
      append result "\n"
      continue
  }
  in ::profiler::print towards the beginning of foreach loop. 
  Of course I removed the line append result "\n"


tkt_uuid: 1263071fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: -configuremethod
comment:
  Things like:

      option -text      -configuremethod [list SetText 1]
      method SetText {num option value} {
  $win.lbl$num configure -text $value
  set options($option) $value
      }

  wont work. Perhaps the callback should be concatenated 
  (uplevel) when executed.

  snit 1.0


tkt_uuid: 1191607fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: Multi-line ftp messages are lost
comment:
  In ::ftp::StateHandler multilines messages are not
  handled correctly, only the first messageline is kept.

  The loop :
  while { [string equal $multi_line "-"] } {
  --> Throws away the 'buffer' variable

  eg. When I do a manual ftp via UNIX ftp I get:
  ftp> put timesheet.xml
  200 PORT Command successful
  150 ASCII Data Connection
  550- Error Response
  ORA-31038: Invalid boolean value: "False"
  550 End Error Response
  ftp>


  --> In ::ftp::DisplayMsg the msg inputparameter
  only contains " Error Response " and not the 2 next lines
  with more info (I want to log this errors).


  I think the multiline text should be concatenated in
  msgtext.

  Regards,
  Christophe De Clercq


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

  However its seems like the expand tag is lost
  somewhere.


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

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

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

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

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

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


tkt_uuid: 2898640fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Fixed
title: "info instances" method fails
comment:
  If a snit::type or snit::widget's type namespace has a child namespace other than the instance namespaces, then the call "$type info instances" will fail with the following error:

      can't read "instance": no such variable

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

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


tkt_uuid: 3581373fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: base64
priority: 2
foundin: None
resolution: Fixed
title: "::base64::encode -maxlen 0" not documented
comment:
  Documentation of tcllib command "::base64::encode"

  It should be explicitly documented, that a value of "0" of the parameter "-maxlen" would disable the insertion of wrap characters.


tkt_uuid: 567326ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 8
foundin: None
resolution: Fixed
title: install.tcl script fails
comment:
  Platform: SPARC Solaris 2.6
  Tcl / Tk 8.4a5
  tcllib-20020610.tar.gz from ftp.activestate.com

  When attempting to make use of the new install.tcl
  script, I get
  this error:
  $ ./install.tcl
  /usr/tcl84/bin/tclsh ...
  Tcl script library at      /usr/tcl84/lib/tcl8.4
  Installing Tcllib 1.3 into /usr/tcl84/lib/tcllib1.3
  error copying "pkgIndex.tcl": no such file or directory
      while executing
  "file copy pkgIndex.tcl $installdir"
      (file "./install.tcl" line 30)

  Also, the INSTALL.txt file mentions an install.sh and
  install.bat file which do not appear in the tar file.


tkt_uuid: 1774302fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Fixed
title: error in CommRunHook error handling
comment:
  In proc ::comm::CommRunHook there is a block of code that looks like this:

      if {<something> {
  set code [catch {interp eval $interp $cmd} res]
      } else {
  set code [catch {uplevel 1 $cmd} res]
      }

      switch -exact -- $code {
  0 {}
  1 {
      return -errorinfo $::errorInfo -errorcode $::errorCode -code error $result
  }
  3 {return}
  4 {}
  default {return -code $code $res}
      }


  Notice that the first few lines set the variable "res" as the result of the catch, but the "1" case in the switch tries to use the variable $result.


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

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

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

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

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


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

  The patch is simple, in ncgi.tcl:

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


tkt_uuid: 2798448fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: uri
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: uri::split makes host to path without scheme
comment:
  Hello,

  following code shows the bug in tcllib 1.11.1:

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

  Best regards,

  Martin Lemburg


tkt_uuid: 3433470fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Development Tools
priority: 9 Immediate
foundin: None
resolution: Fixed
title: Expired certificates
comment:
  The certificates 'receiver.crt' and 'transmitter.crt' have expired, causing test failures in modules 'comm' and 'pop3' if 'tcltls' is installed at the time the test suite is run.
  Also, the README in the devtools directory mentions that only the 'pop3' tests use these files, which is not true, as noted above.
  Please regen these certs with much later expiry dates.


tkt_uuid: 1730868fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: None
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: install as Tcl Modules
comment:
  Following the instructions in
  INSTALL.txt installs the packages
  in a [tclPkgUnknown]-compatible
  install scheme.

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

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


tkt_uuid: 539952ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 3 Low
foundin: None
resolution: Fixed
title: odd mime/smtp/Trf interaction
comment:
  in using Tcl 8.3.2nb2 and Trf2.1 with the current 
  tcllib, two odd things happen.

  first, trf sends a create/read and a delete/read on 
  the outgoing smtp channel, which smtp.tcl isn't 
  expecting.

  second, one of the my applications generates a CTE of 
  8bit, which the mime serializer complains about.

  patches attached.

  /mtr


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

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

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


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

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


  Any Questions?

  David Bigelow
  davidhbigelow@compuserve.com


tkt_uuid: 3381002fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: Tkchat announces wrong hash in XEP-0115 Entity Capabilities
comment:
  Patch that fixes missing "<" :

  Index: tkchat.tcl
  ===================================================================
  RCS file: /cvsroot/tcllib/tclapps/apps/tkchat/tkchat.tcl,v
  retrieving revision 1.486
  diff -u -r1.486 tkchat.tcl
  --- tkchat.tcl  17 May 2011 23:27:19 -0000      1.486
  +++ tkchat.tcl  28 Jul 2011 12:37:38 -0000
  @@ -8475,7 +8475,7 @@
       # extended feature processing as well (order counts)
       append S "urn:xmpp:dataforms:softwareinfo<"
       append S "os<$tcl_platform(os)<"
  -    append S "os_version<$tcl_platform(osVersion)"
  +    append S "os_version<$tcl_platform(osVersion)<"
       append S "software<tkchat<software_version<$tkchatver<"
       return [base64::encode -maxlen 0 [sha1::sha1 -bin $S]]
   }


tkt_uuid: 1002143fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct
priority: 5 Medium
foundin: None
resolution: Fixed
title: struct::set difference broken under >=Tcl 8.4
comment:
  struct::set difference [list Maryland DC Virginia]
  [list DC Virginia]
  returns -> Maryland

  However,
  struct::set difference [list "Washington, DC (District
  of Columbia)" Maryland Virginia] [list "Washington, DC
  (District of Columbia)" Virginia]
  returns -> Maryland {Washington, DC }

  Any list element with parens seems to have the parens
  stripped. This doesn't happen under the alternate
  definition of "proc" for Tcl 8.[23]


tkt_uuid: 1798420fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Documenting C functions
comment:
  Here's an example:

  http://naviserver.sourceforge.net/3/naviserver/files/Ns_Sls.html
  http://naviserver.cvs.sourceforge.net/naviserver/naviserver/doc/src/man3/Ns_Sls.man?view=markup


  - In the Synopsis and Functions sections there are no parentheses around the function arguments. They don't look like C functions.


  - The argument names are listed, but not their types. It's not clear from the doctools docs how to identify pointers, arrays etc.


  - How do do you make doctools arrange it so that when the man pages are installed and a user types

      $ man Ns_SlsAlloc

  the Ns_Sls man page appears, which documents all the sls functions?


tkt_uuid: 1105778fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: ProgressDlg -stop button bug
comment:
  In V1.7.0, using ProgressDlg with -stop option, the
  click events for the button are not processed.

  This worked fine in V.1.4.1 and can be solved replacing
  the "update idletasks" into "update" at line 181, file
  progressbar.tcl, like was in V1.4.1.

  Example Tcl code:
  --------------
  package require -exact BWidget 1.7.0


  proc cbLdCancel {} {
    puts "Click"
  }

  set Progress 0
  set Action "Loading files..."

  ProgressDlg .loading -parent . -title "Loading" -type
  normal \
    -textvariable Action -variable Progress -maximum
  20000 -stop "Cancel" \
    -command cbLdCancel

  for {set x 0} {$x<20000} {incr x} {
    incr Progress
  }
  --------------


tkt_uuid: 3556779fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: widget
priority: 5 Medium
foundin: None
resolution: Out of Date
title: No calendar in August
comment:
  I use widget_calendar with this command:
  widget::calendar .z5fd.app.frdia.date -dateformat "%Y-%m-%d" -language de -textvariable zAr_uiDia(exposureDate)  -command z5ui_selectedDate

  In July all works fine  ..  today, Index 08 = August ???
  Executing the script i get:

  bad index "08": must be integer?[+-]integer? or end?[+-]integer? (looks like invalid octal number)
  bad index "08": must be integer?[+-]integer? or end?[+-]integer? (looks like invalid octal number)
      while executing
  "lindex $LANGS(mn,$lang) $month"
      (procedure "::widget::calendar::Snit_methodformatMY" line 9)
      invoked from within
  "$self formatMY $data(month) $data(year)"
      (procedure "::widget::calendar::Snit_methodRefresh" line 42)
      invoked from within
  ".z5fd.app.frstor.date Refresh"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 [linsert $args 0 $self]"
      invoked from within
  "::snit::RT.CallInstance ::widget::calendar::Snit_inst1 Refresh"
      ("after" script)
  bad index "08": must be integer?[+-]integer? or end?[+-]integer? (looks like invalid octal number)
  bad index "08": must be integer?[+-]integer? or end?[+-]integer? (looks like invalid octal number)
      while executing
  "lindex $LANGS(mn,$lang) $month"
      (procedure "::widget::calendar::Snit_methodformatMY" line 9)
      invoked from within
  "$self formatMY $data(month) $data(year)"
      (procedure "::widget::calendar::Snit_methodRefresh" line 42)
      invoked from within
  ".z5fd.app.frstor.date Refresh"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 [linsert $args 0 $self]"
      invoked from within
  "::snit::RT.CallInstance ::widget::calendar::Snit_inst1 Refresh"
      ("after" script)

  I got this error both - on a linux-System and on win7, 
     active-tcl 8.5.11,  tklib 0.5

  well, i hope, you can help
  regards Bernd


tkt_uuid: 1167797fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: tklib: ctext
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: 8.5 speed improvement via -all
comment:
  Date: Thu, 10 Feb 2005 12:24:38 -0400
  From: Andrew Black <ablack@arva.net>
  To: GeorgePS@XMission.com
  Subject: ctext patch
  Parts/Attachments:
     1 Shown     14 lines  Text
     2   OK    ~7.4 KB     Text
  ----------------------------------------
  Hi George, Ive attached a patch to ctext.  It includes
  a highlight85 proc
  which uses the -all flag for searching (according to
  time I am seeing an
  average of 36% increase in speed)  And an overhaul of
  the linemap.  I did a full height widget with all
  linenumbers, and linked the yviews of the two text
  widgets.  There is also a change to use a tile frame if
  tile has been loaded.
   There were a couple of other minor tweaks, but they
  were purely personal, so review the patch carefully. 
  Mainly, I turned off quote matching and increased the
  flash time for bracematching.  Hope this helps.

  --
  Andrew J. Black
  Chief Engineer
  Automatic Rolls of Virginia
      [ Part 2, Text/X-PATCH (Name: "ctext.tcl.patch") 
  127 lines. ]

  ----
  The linemap changes may not handle images, or wrapping
  lines... -GPS


tkt_uuid: 772535ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: snit
priority: 3 Low
foundin: None
title: snit: implementation of mymethod command
comment:
  To deal with renaming of objects snit provides the 
  command [mymethod] to create code which can be 
  given to callback handlers.

  The generated code essentially refers to the variable 
  $Snit_instance in the unchanging private namespace of 
  the object, which contains the current name of the 
  intance = instance command.

  Example:
       mymethod foo
  generates
       "$Snit_instance foo"

  This is variable reference is a bit problematic. The code 
  executing the callback __must not__ any list command 
  when adding additional arguments to the callback. Which 
  is usual. The moment a list command is used, for 
  example [linsert], or [lappend] to build up the full cllback 
  command the variable reference will be quoted in braces, 
  and the final command will look like:

       "{$Snit_instance} foo arg1 arg2 ..."

  [eval]'ing this fails.

  Example stacktrace

  invalid command 
  name "$::ttable::ttable::Snit_inst1::Snit_instance"
      while executing
  "{$::ttable::ttable::Snit_inst1::Snit_instance} 
  NColChanged 0 3"
      ("uplevel" body line 1)
      invoked from within
  "uplevel #0 [linsert $options(-ncolcommand) end 
  $oldncols $ncols]"
      (procedure "Snit_configure-data" line 42)
      invoked from within

  You see how the command is constructed, and the 
  additional quoting generated by this.

  The big problem is that the usage of list commands to 
  construct an eval'able callback is the usual way of doing 
  this.


tkt_uuid: 3606619fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pt (parsetools)
priority: 5 Medium
foundin: None
resolution: Fixed
title: test fail - pt-peg-to-json-3* *-ultracompact
comment:
  ==== pt-peg-to-json-3.0.0 pt::peg::to::json, basic arithmetic-ultracompact, ok FAILED
  ==== Contents of test case:

      pt::peg::to::json convert $data
  running 

  tclsh8.6 sak.tcl test run -v pt

  on 4e66a372368bfccb80d68fa6cc80f58e205e0c2c I get following error. Same hapens for 1.15 release.


  ---- Result was:
  {\"pt::grammar::peg\":{\"rules\":{\"AddOp\":{\"is\":\"/ {t -} {t +}\",\"mode\":\"value\"},\"Digit\":{\"is\":\"/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}\",\"mode\":\"value\"},\"Expression\":{\"is\":\"/ {x {t (} {n Expression} {t )}} {x {n Factor} {* {x {n MulOp} {n Factor}}}}\",\"mode\":\"value\"},\"Factor\":{\"is\":\"x {n Term} {* {x {n AddOp} {n Term}}}\",\"mode\":\"value\"},\"MulOp\":{\"is\":\"/ {t *} {t /}\",\"mode\":\"value\"},\"Number\":{\"is\":\"x {? {n Sign}} {+ {n Digit}}\",\"mode\":\"value\"},\"Sign\":{\"is\":\"/ {t -} {t +}\",\"mode\":\"value\"},\"Term\":{\"is\":\"n Number\",\"mode\":\"value\"}},\"start\":\"n Expression\"}}
  ---- Result should have been (exact matching):
  {\"pt::grammar::peg\":{\"rules\":{\"AddOp\":{\"is\":\"\\/ {t -} {t +}\",\"mode\":\"value\"},\"Digit\":{\"is\":\"\\/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}\",\"mode\":\"value\"},\"Expression\":{\"is\":\"\\/ {x {t (} {n Expression} {t )}} {x {n Factor} {* {x {n MulOp} {n Factor}}}}\",\"mode\":\"value\"},\"Factor\":{\"is\":\"x {n Term} {* {x {n AddOp} {n Term}}}\",\"mode\":\"value\"},\"MulOp\":{\"is\":\"\\/ {t *} {t \\/}\",\"mode\":\"value\"},\"Number\":{\"is\":\"x {? {n Sign}} {+ {n Digit}}\",\"mode\":\"value\"},\"Sign\":{\"is\":\"\\/ {t -} {t +}\",\"mode\":\"value\"},\"Term\":{\"is\":\"n Number\",\"mode\":\"value\"}},\"start\":\"n Expression\"}}
  ==== pt-peg-to-json-3.0.0 FAILED


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

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

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

  Eric


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

  The following script consumes ever increasing amounts of memory:

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

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


tkt_uuid: 1800411fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: Missing CSS class names
comment:
  The following doctools markup:

    [cmd ns_logctl] [arg hold]


  Produces the following HTML:

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


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

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

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


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


tkt_uuid: 553980ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: struct
priority: 8
foundin: None
resolution: Accepted
title: skiplist struct
comment:
  Code for a skiplist implementation, from Keith Vetter:

  "I'd like to submit a module for tcllib to be part of
  the ::struct group. The module implements skip lists
  which a data structure similar to balanced trees but
  which are faster and simpler."


tkt_uuid: 1348430fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: None
title: math doc should hint at child namespaces
comment:
  http://tcllib.sourceforge.net/doc/math.html gives no 
  indication that there are sub-namespaces
  math::bignum - Arbitrary precision integer numbers
  math::bigfloat - Arbitrary precision floating-point numbers
  math::constants - Mathematical and numerical constants
  math::statistics - Basic statistical functions and 
  procedures
  math::calculus - Integration and ordinary differential 
  equations
  math::calculus::romberg - Romberg integration
  math::linearalgebra - Linear Algebra
  math::optimize - Optimisation routines
  math::fourier - Discrete and fast fourier transforms
  math::fuzzy - Fuzzy comparison of floating-point 
  numbers
  math::combinatorics - Combinatorial functions in the Tcl 
  Math Library
  math::geometry - Geometrical computations
  math::interpolate - Interpolation routines
  math::complexnumbers - Straightforward complex 
  number package
  math::polynomials - Polynomial functions
  math::special - Special mathematical functions 

  One only finds out when looking at 
  http://tcllib.sourceforge.net/doc/

  I suggest to put links to these on the math page.
  Richard.Suchenwirth-Bauersachs at siemens.com


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

  For Example:

  ARRAY NAMES:  array get names *NAME_*

  New Key Name Extraction: 

  myTree keys %n *NAME_*

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

  Any Questions?

  David Bigelow


tkt_uuid: 2025485fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: uevent
priority: 5 Medium
foundin: None
resolution: Fixed
title: uevent::unbind typo in variable name
comment:
  Missing category for tcllib: uev or uevent

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

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


tkt_uuid: 3105665fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget 1.x
priority: 5 Medium
foundin: None
resolution: Fixed
title: bwidget menu white on white
comment:
  Using BWidget v1.8.0 or v1.9.2 on Mac OS X 10.6.4, menu item text is white, on a white background! & only visible when the mouse cursor highlights the menu item. Key accelerators are in black however, & therefore visible.


tkt_uuid: 1779624fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: log
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Execute a command only when debug is active.
comment:
  e.g display the results of info script when debug is active. 

  something like:
   
  ::log::lvSuppressLE emergency 0

  ::log::log debug [ info script ]


tkt_uuid: 547245ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 8
foundin: None
resolution: Fixed
title: Tree widget -selectcommand
comment:
  This option is not documented.

  Usage of this option (see method selection) is 
  incomplete. IOW, we currently cannot use it to track 
  all changes to the selection.

  A patch will be supplied ...


tkt_uuid: 3316478fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: simulation::random
priority: 7 High
foundin: None
resolution: Fixed
title: prng_rectangle is overwritten by prng_block implementation
comment:
  he implementation of prng_Block is mis-named as prng_Rectangle, overwriting the prng_Rectangle procedure coming just before it.
  Making both Rectangle and Block unusable.


tkt_uuid: 1739359fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ip
priority: 5 Medium
foundin: None
resolution: Fixed
title: "ip::version" is too permissive
comment:
  ip::version 1.2.3.4.example.com  returns "4" when it should return 0.

  tcl>package require ip
  1.1.1
  tcl>ip::version 1.2.3.4.example.com
  4

  Additional arguments to support the theory that this is a bug and not intentional behaviour:

     ip::version only seems to accept dotted-quad notation for IPv4 addresses.  "1.2.3.4.example.com" is not in dotted-quad format.

     If you use the hostname "1.2.3.4.example.com" elsewhere in Tcl where an IP or hostname is accepted, it is treated as hostname (which will be resolved via the system resolver and may not have the IP address "1.2.3.4")


tkt_uuid: 410106ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Accepted
title: Fix for bug #410104
comment:
  Under unix ::fileutil::find now does a stat on each
  file/directory it encounters and records their
  device/inode information. If we happen to come to the
  file again it will be skipped.


tkt_uuid: 3168761fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Themed widgets cause Tcl errors
comment:
  Multiple widgets - including Entry, LabelFrame and LabelEntry cause errors when used after [Widget::theme 1] was called.

  Included are fixes I made against 1.9.4 release.


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

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


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


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

  * counter 2.0.4
  test name 'counter-avg' re-used; prior use in
  /local/src/tcllib/modules/counter/counter.test
  test name 'counter-lastn' re-used; prior use in
  /local/src/tcllib/modules/counter/counter.test
  test name 'counter-lastn' re-used; prior use in
  /local/src/tcllib/modules/counter/counter.test
  test name 'counter-hist' re-used; prior use in
  /local/src/tcllib/modules/counter/counter.test


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

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


tkt_uuid: 1824212fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: md5
priority: 5 Medium
foundin: None
title: add proc to generate salt
comment:
  this would be really handy to have included as part of the module, for generating passwords. here is my version:

  proc salt {len {chars abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/.}} {
      set salt {}
      set size [string length $chars]
      while {$len > 0} {
          append salt [string index $chars [expr {int(rand() * $size)}]]
          incr len -1
      }
      return $salt
  }

  set enc_pass [::md5crypt::aprcrypt [salt 8] $pass]


tkt_uuid: 639036ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: uri
priority: 5 Medium
foundin: None
resolution: Accepted
title: resolve doesn't work with url like ?N=D
comment:
  If you look at a page such as

  http://www.dedasys.com/freesoftware/patches/

  The HTML sources provide links like ?N=D which change
  the behavior of how Apache displays the file listings.
   These url's are valid.

  The problem is that 'resolve' doesn't handle these well:

  uri::resolve
  http://dedasys.com/freesoftware/patches/?M=A ?N=D
  http://dedasys.com/freesoftware/patches/?M=A?N=D

  This is not how a browser resolves these url's.


tkt_uuid: 1909681fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: md5crypt
priority: 5 Medium
foundin: None
resolution: Works For Me
title: Tcl version of md5crypt::aprcrypt error for some values
comment:
  Tested with 
    tcl8.5a4 & tcllib 1.8.01 
    &
    tcl8.5.2b1 & tcllib 1.10

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

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

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


  When tcllibc is present the error doesn't occur.


tkt_uuid: 1950457fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Invalid
title: hierarchical methods are not delegated
comment:
  Hi,

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

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

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

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

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

  kind regards
  -- Matthias Kraft


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


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

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

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

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


tkt_uuid: 2801896fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: jpeg
priority: 5 Medium
foundin: None
resolution: Accepted
title: jpeg package: adds support for GPS Exif tags
comment:
  I needed something to interpret GPS tags in Exif headers, so I found the jpeg package and added it.  Nice job whoever wrote the _exif routine--it was very easy to extend.  I haven't done a patch before, so I'm probably doing it all wrong--I'm attaching the whole file I updated, and just put comments in the vicinity of my changes (I didn't comment the place where I added an optional argument...)--look for "mdp".


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

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

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

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

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

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

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


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

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

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

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

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

  After reverting to tcllib 1.8 the problem goes away:

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

  # cat dup-bug.log
  test


tkt_uuid: 609750ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Out of Date
title: Makefile.in should support --libdir
comment:
  tcllib (and TEA in general) should support the --libdir 
  configure option to set its $(pkglibdir), it currently hardcodes 
  this to $(prefix)/lib , which breaks on Mac OS X where libdir is 
  completely unrelated to prefix.

  The following patch fixes this and shouldn't break anything 
  on other platforms since the default for $(libdir) is precisely 
  $(prefix)/lib :

  Index: Makefile.in
  ===============================================
  ====================
  RCS file: /cvsroot/tcllib/tcllib/Makefile.in,v
  retrieving revision 1.79
  diff -u -r1.79 Makefile.in
  --- Makefile.in 19 Aug 2002 18:28:05 -0000      1.79
  +++ Makefile.in 16 Sep 2002 03:20:26 -0000
  @@ -177,7 +177,7 @@
   
   DESTDIR =
   
  -pkglibdir = $(prefix)/lib/@PACKAGE@@VERSION@
  +pkglibdir = $(libdir)/@PACKAGE@@VERSION@
   
   top_builddir = .
   


tkt_uuid: 2695513fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: linearalgebra
priority: 5 Medium
foundin: None
resolution: Fixed
title: MkBorder may be wrong
comment:
  Hi,

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

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

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

  Notice that the last value is 0 instead of 1.

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

  The following version of MkBorder tries to fix the bug :

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

  Best regards,

  Michaël


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

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

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

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

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

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

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

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

  all the best
  -gustaf


tkt_uuid: 469855ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
resolution: Fixed
title: Bug in ::csv::split
comment:
  Small test sample:

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

  The output is:

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

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


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

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

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


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

  I am using this test snipplet:


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

  and what I get is:

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


  This is on a Mac Show Leopard and Tcl 8.6.

  /Fredrik


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


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

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

  set msgBuffer [read $chan $size]

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

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

  The patch below (seems to) fix both problems.

  I apologize for my poor english.

  Thanks in advance,

  Edesio
  edesio@ieee.org


tkt_uuid: 462015ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 8
foundin: None
resolution: Rejected
title: find names not prefixed with pwd
comment:
  @ashland [~/download/tcl] $ find |less
  .
  ./CVS
  ./CVS/Root
  ./CVS/Repository
  ./CVS/Entries
  ./compat
  ./compat/CVS
  ./compat/CVS/Root

  @ashland [~/download/tcl] $ find `pwd` |less

  /home/davidw/download/tcl
  /home/davidw/download/tcl/CVS
  /home/davidw/download/tcl/CVS/Root
  /home/davidw/download/tcl/CVS/Repository
  /home/davidw/download/tcl/CVS/Entries
  /home/davidw/download/tcl/compat
  /home/davidw/download/tcl/compat/CVS
  /home/davidw/download/tcl/compat/CVS/Root

  tcllib's find does not exhibit this behaviour - it
  *always* prefixes [pwd] to the results.


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

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

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

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

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


tkt_uuid: 2848168fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: crc
priority: 9 Immediate
foundin: None
resolution: Not Applicable Here
title: signmask incorrect in ::crc::Crc and ::crc::Crc32_tcl
comment:
  Both crc16.tcl and crc32.tcl use a variable named "signmask", that is constructed from another variable named "signbit".

  For 32-bit data, signbit is 0x8000000.

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

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

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

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


tkt_uuid: 466094ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: tkchat 'logging' info move
comment:
  Currently tkchat produces logging info to stdout .
  An option to either log it to a file or to
  a tk window would be a useful addition.


tkt_uuid: 2860843fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
resolution: Fixed
title: csv.man typos
comment:
  There are two minor typos in the csv.man file - the string "spcified" should be "specified" and the string "an representatation" should be "a representation".

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


tkt_uuid: 1048995fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::fileutil::find filtercmd needs cwd
comment:
  ::fileutil::find should have been perfect for me to use in 
  traverse a directory with tens of thousands of files. The 
  problem is filtercmd only gets the rootname of the file 
  making it useless to do any processing. The alternative 
  of not using a filter and walking the resulting list is 
  unworkable due to the large number of files.

  I'd like to request either fully qualifying the filename or 
  passing in $cwd.


tkt_uuid: 3536133fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Build System & Testing
priority: 5 Medium
foundin: None
resolution: Accepted
title: Installation fails...
comment:
  Installing tklib in a cross-compilation environment fails. The problem is in Makefile.in, where the option -app-path is not used.

  The following:
  install:
  $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/installer.tcl` \
  -no-examples -no-html \
  -pkg-path   $(DESTDIR)$(pkglibdir) \
  -nroff-path $(DESTDIR)$(mandir)/mann \
  -no-wait -no-gui

  Must be changed to:

  install:
  $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/installer.tcl` \
  -no-examples -no-html \
  -pkg-path   $(DESTDIR)$(pkglibdir) \
  -app-path   $(DESTDIR)$(bindir) \
  -nroff-path $(DESTDIR)$(mandir)/mann \
  -no-wait -no-gui


tkt_uuid: 531531ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: smtpd
priority: 5 Medium
foundin: None
title: Redo backend, use mime token
comment:
  This feature request comes from a chat discussion Dan, 
  Larry, and I had with Gerald W. Lester solving a 
  problem he had with a small smtpd proxy and the smtp 
  module itself.

  smtpd delivers the message as list of lines. smtp 
  expects the message as mime token, which is 
  initialized with a string!

  We believe it would be better if smtpd would deliver
  the incoming message directly as a mime token.

  We actually believe that all front-ends (for example 
  the upcoming pop3 server) should use mime tokens to 
  transfer mail data to and from their backends.


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

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


  The following code demonstrates the problem:


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

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


tkt_uuid: 485717ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
title: add csvdiff to examples directory
comment:
  during the development of the csv module, the author,
  andreas kupries, wrote a csvdiff application that
  demonstrates yet again the usefulness of the
  application.


tkt_uuid: 1429377fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: syntax error in expression " $ftp(State) ne "quit_sent" "
comment:
  The ftp package require for Tcl is 8.2 but the use of
  "ne" to compare strings invalidates this. The "ne"
  keyword was not available till 8.4.  Should either make
  the package require for tcl 8.4 or replace "ne" with
  "string equal"

  Thanks,

  John Mercogliano III
  Contractor, TekSystems
  Systems Integration
  Sentara Health Care
  jxmercog@sentara.com


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

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

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


tkt_uuid: 1774995fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Duplicate
title: error in comm error processing
comment:
  (I woulda sworn I submitted this once; sorry if it's a duplicate)

  In comm there is this code in proc CommRunHook. Notice how catch saves its output in "res" but the return statement for case 1 uses $result:

      ...
  commDebug {puts stderr "<$chan> /interp $interp"}
  set code [catch {interp eval $interp $cmd} res]
      } else {
  commDebug {puts stderr "<$chan> /main"}
  set code [catch {uplevel 1 $cmd} res]
      }

      # Perform the return code propagation promised
      # to the hook scripts.
      switch -exact -- $code {
  0 {}
  1 {
      return -errorinfo $::errorInfo -errorcode $::errorCode -code error $result
  }
  3 {return}
  4 {}
  default {return -code $code $res}
      }


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

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

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

  thx


tkt_uuid: 782735ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Fixed
title: import file
comment:
  documentation refers to [importFile] but implementation 
  still has [import_file]

  attempt to invoke import_file gives
  invalid command name "pre"

  which is not surprising


tkt_uuid: 1733094fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tklib: khim
priority: 5 Medium
foundin: None
title: Misc fixes + RU, PL and UK msg catalogs
comment:
  Short summary of changes:

  1. Added title to KHIM help window. It's translated where appropriated.

  2. Colors of character picker made more consistent.

  3. Added check for existence of character map window -- closes the bug occuring on, say, triple strikes of composition key.

  4. Added Russian, Polish and Ukrainian message catalogs.

  Note: unified diff is UTF-8.


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


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

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


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

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


tkt_uuid: 1376323fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Duplicate
title: large message size causes error
comment:
  I reported this issue to ActiveState. You can 
  reference it by going to 
  http://bugs.activestate.com/show_bug.cgi?id=42067

  Basically, when using a remote server, sending a 
  message that is greater than ~9000 bytes on a windows 
  XP pro platform causes the function to crash.

  Since I don't want to upload everything all over 
  again please get the info at ActiveState.

  This issue is really limiting what I'm trying to do.


tkt_uuid: 1482266fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Rejected
title: rejection of unknown "/..." commands
comment:
  If you mistype a command in TkChat starting with a 
  slash, you data will be sent straight to the server and 
  are visible to all. This is not good if the message was 
  intended to be a whisper of a private message. It is 
  easy to prevent these messages to come through.

  In the proc ::tkchat::checkCommand are two switch 
  statements that check for the different commands. If we 
  insert a new case in the second switch just before the 
  'default' arm (line 3234 in version 1.334 of tkchat.
  tcl), we can reject unknown commands. Here would be the 
  context with the new arm '^/.?':

        {^/back} {
      set status [string range $msg 5 end]
      tkjabber::back $status
  }
  {^/.?} {
      addSystem .txt "Unknown command: $msg"
  }
  default {
      if {![checkAlias $msg]} then {
  # might be server command - pass it on
  switch $Options(ServerLogging) {
      none {
  tkjabber::msgSend "/nolog $msg" -
                     attrs [list nolog 1]
      }
      default {
  tkjabber::msgSend $msg
      }
  }
      }
  }


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

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

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

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

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

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

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


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

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

  Best regards,

  Stefan Witt


tkt_uuid: 1173444fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: dns
priority: 5 Medium
foundin: None
resolution: Fixed
title: dns::resolve says - can't read "tok": no such variable
comment:
  From: bbame@umm.edu

  I've been exec-ing nslookup (and digging through the 
  result) to do dns lookups in one of my tcl apps for quite 
  a while.  Obviously that's not ideal, so I wanted to 
  replace that code with calls to the dns package.

  Below is tclsh output that shows the problem I've been 
  having...

  [note: the nameserver address and the name of the host 
  I tried to resolve have been replaced by bogus info.  Rest 
  assured that when I tried it both were valid and correct.]

  % package require dns
  1.2.1
  % dns::configure -nameserver 1.2.3.4
  % set xyz [dns::resolve some.host]
  can't read "tok": no such variable
      while executing
  "Finish $tok "Event error: $err""
      (procedure "::dns::TcpEvent" line 35)
      invoked from within
  "::dns::TcpEvent ::dns::1"

  Thinking this might be a behavior specific to 1.2.1 I tried 
  the version in the "stock" tcllib 1.7 package (1.2.0) and 
  got the same error.  Finally I attempted to use 1.1 but 
  still got the same error.

  My second theory was that this might be a Solaris-
  specific bug, so I loaded tcllib 1.7 on my Mandrake 
  Linux box (version 10.0).  Got the same error there too.

  Finally I took a look at dns.tcl and noticed that the 
  variable name should probably be $token not $tok, so I 
  modified the code accordingly (by changing all 
  occurances of "Finish $tok" to "Finish $token".  After 
  the changes this is what happened...

  % package require dns
  1.2.1
  % dns::configure -nameserver 1.2.3.4
  % set xyz [dns::resolve some.host]
  ::dns::1
  % dns::address $xyz
  can't read "hdr": no such variable

  I could probably debug and fix this error, too.  Perhaps 
  another variable was renamed without touching all 
  occurances, but instead I thought it might be a better 
  idea to simply report this as a bug and see what 
  happens.

  In the mean time I guess I'm stuck with "exec nslookup".

  Thanks!

  bbame@umm.edu


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

  The Lpermutations proc contains this check

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

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


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


tkt_uuid: 1800338fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: dtplite can't find it's matching tcllib if --prefix used
comment:
  Installing tcllib from CVS head with a prefix:

    ./configure --prefix=/home/me/local/tclllib-HEAD
    make install

    $ ~/local/tcllib-HEAD/bin/dtplite


  If no other tcllib is installed then dtplite errors out -- it can't find a tcllib (this is the case e.g. on sourceforge)

  If there's a tcllib installed on the system then dtplite prefers that, making testing of new version tricky.


  Can the utility commands that ship with tcllib always link against the version of tcllib they ship with?


tkt_uuid: 1119460fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 9 Immediate
foundin: None
resolution: Fixed
title: Insert node with Tree -state disabled causes wish to crash
comment:
  Insert node with Tree -state disabled causes wish to 
  crash  -- This is obviously avoidable -- if you don't 
  disable. 
  The following script to reproduce: 
  # info patchlevel 
  # 8.4.6
  # BWidget v == 1.7 
  lappend auto_path [file join [pwd] .. lib bwidget1.7]  
  package require BWidget 
  set tree [Tree .a] 
  pack .a 
  $tree configure -state disable 
  foreach n {a b c} { 
  $tree insert end root $n -text Hello$n -
  drawcross allways   
  # wish crashes  
  } 
  # end of script 


tkt_uuid: 3603562fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tklib: crosshair
priority: 7 High
foundin: None
title: confine crosshair::crosshair to a canvas area
comment:
  Hi,

  Sorry but I could not find a crosshair category.

  Currently the Tklib crosshair::crosshair  creates the crosshair in the whole canvas. To make this more flexible it would be better to have the ability to confine the crosshair to a location in the canvas (or a series of locations in a canvas).

  In my case I am using PlotChart to create a series of plots. I would like to confine the crosshair in the plot area only. In other words I do not want the cross hairs to extend pass the axis of the graph and running over the plot labels and titles.

  This enhancement can easily be done by passing the BBox (llx lly urx ury) to crosshair. Store the bbox in a crosshair name space variable and when drawing the lines in the move procedure use the bbox boundary as the start and end points of the lines drawn.

  In the case of a series of locations in a canvas, the user can pass a list of BBoxes when the mouse pointer enters one of those areas the same approach will be done with the move procedure but in that case using the BBox associated with that area. Plotchart allows the user to put more than one plot in a canvas. Therefore this will be an even more versatil implementation of crosshair.

  Thanks in advance,
  Frank


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

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

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


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

  The following patch will resolve this problem:

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

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

  Hemang. 


tkt_uuid: 685270ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: README documentations requirement?
comment:
  the README, v 1.3 says:

  * the module should have both documentation (in XML,
  man, or HTML
    form) and a test suite (in the form of a group of
  *.test files in
    the module directory).


  the formats listed do not seem to include doctools -
  yet that _seems_ to be the preferred format these days.
   Should not that format be listed?


tkt_uuid: 795608ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: tk binding problem in Gnome and Ximian
comment:
  There seems to be a bug when a tk listbox is embedded 
  inside a BWidget paned window frame. I have tried 
  putting the listbox outside of the frame and it works 
  correctly. This problem does not occur in KDE or using a 
  vnc. Is this a tcl/tk bug or is there some default setting 
  in Gnome or Ximian that needs to be changed in order 
  for the double-click event to be recognized? 

  Don


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

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


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

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


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

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


  By pressing the button you get the following error 
  message:

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


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

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


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


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

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

  output for version 0.2:
  8.4.19
  0.2
  1.1.1.2

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

  Expected:
  no error in both cases

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

  Is this a bug or a feature?


tkt_uuid: 630405ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Duplicate
title: BWidget LabelEntry -textvariable option
comment:
  As reported on CLT, te change to the _LabelFrame_
  widget were the _-textvariable_, _-image_ and _-bitmap_
  option were added to the _LabelFrame_ widget now causes
  problems with the _LabelEntry_ widget. This patc will
  solve this by renaming the 3 options mentioned above.


tkt_uuid: 700327ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: base64
priority: 5 Medium
foundin: None
resolution: Fixed
title: uuencode/uudecode using Trf
comment:
  The following bug occurs when trying to uuencode a line
  beginning with '-' using the uuencode command in
  Trf(from base64/uuencode.tcl):

  Error: ::uuencode: wrong # args, all options require an
  argument

  Errorinfo: ::uuencode: wrong # args, all options
  require an argument
      while executing
  "::uuencode -mode encode $s"

  Using '--' to stop processing of arguments should fix it.

  tcllib1.3/base64/uuencode.tcl

  line 81:

   return [::uuencode -mode encode $s]

  should be:

    return [::uuencode -mode encode -- $s]

  Same with the call to uudecode.

  The bug was discovered using ActiveState Tcl 8.4.2, but
  also exists in the CVS repository as far as I can tell.


tkt_uuid: 532783ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: matrix
priority: 6
foundin: None
resolution: Fixed
title: Linked matrix not propagating changes
comment:
  The documentation for the ::struct::matrix operation implies 
  that after linking, changes to the matrix object will be propagated 
  to the linked array variable. However, it isn't happening. Here's a 
  simple test case run interactively:

  % package require 
  struct
  1.2
  % ::struct::matrix test
  test
  % test add columns 
  4
  % test add row {1 2 3}
  % test link arr
  % array get arr
  0,0 1 1,0 2 
  2,0 3 3,0 {}
  % test add row {a b c d}
  % array get arr
  0,0 1 1,0 2 2,0 3 
  3,0 {}

  Line 1245 of the source looks suspiciously like it has a 
  typo of the variable name "data":

  trace variable date  w  [list 
  ::struct::matrix::MatTraceOut $variable $name]

  However, 
  changing "date" to "data" in this line didn't work:

  % package 
  require struct
  1.2
  % ::struct::matrix test
  test
  % test add 
  columns 4
  % test add row {1 2 3}
  % test link arr
  % array get 
  arr
  0,0 1 1,0 2 2,0 3 3,0 {}
  % test add row {a b c d}
  can't set 
  "data(0,1)": can't set "array(0,1)": bad row index 1, row does not 
  exist


tkt_uuid: 2390890fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: exif
priority: 5 Medium
foundin: None
resolution: Duplicate
title: Unrecognized EXIF tags should not generate errors
comment:
  I don't know if the EXIF tags are out of date or what, but I'm getting Unrecognized EXIF tag on every EXIF standard and EXIF standard 2.2 JPEG image I've tried.  Such as:

  Unrecognized EXIF Tag: 34850 (0x8822)

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


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

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


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

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

  destroys the content of the global variable  "key". 


tkt_uuid: 1376637fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: textutil :: expander
priority: 7 High
foundin: None
resolution: Fixed
title: cpush/cpop failure
comment:
  While doing some HTML automatic generation, a problem
  appeared with the Context Stack:
   textutil::expander pc
   ::pc expand {[::pc cpush texte][::pc cpop texte]}

  creates an error:

   ::pc cget: char doesn't exist at that context (2)

  I fixed it by patching the Op_cpush proc like this :

  proc ::textutil::expander::Op_cpush {name cname} {
      # FRINK: nocheck
      incr [Var level]
      # FRINK: nocheck
      set [Var output-[Get level]] {}
      # FRINK: nocheck
      set [Var name-[Get level]] $cname
      # the first level is init'd elsewhere
      if {[set [Var level]]<2} {
          return
      }
      # important stuff here
      LocInit $cname
      catch {LocSet $cname [LocGet $name]}
      
  }

  and it did work then!


tkt_uuid: 1198361fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: None
title: comm calls bgerror in synchronous call and no event loop
comment:
  If "comm send" has any error, it calls ::bgerror which
  is undesirable in some cases. Consider the following
  program

  # start
  package require comm
  set s [comm::comm]
  comm::comm send $s {set x y z}
  # end

  This calls ::bgerror. However, there is no *background*
  error. This is just a plain error. Should the call be
  asynchronous in nature, then a background error would
  be appropriate.

  Suggested fix:

  In proc ::comm::commExec at the bottom, just before
  return, change the line
      if {$err ==1} {
           commBgerror $ret
      }

  to
     if {$err ==1 && ![string equal send $cmd]} {
          commBgerror $ret
     }


  Here is some additional test code:
  # start
  package require comm
  package require Tk
  set s [comm::comm self]
  after 1000 [list comm::comm send $s {set x y z}]
  # a bgerror will be thrown


tkt_uuid: 1886577fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: swaplist
priority: 5 Medium
foundin: None
resolution: None
title: swaplist fails if reorder == 0
comment:
  If option -reorder is set to 0, an error is thrown when the last item is moved to the right listbox.
  Example code:
  ============================
  package require swaplist

  if {[swaplist::swaplist .slist opts "1 2 3 4 5 6 7 8 9" "1 3 5" -reorder 0]} {
      puts "user chose numbers: $ops"
  }
  ============================
  Error message:
  can't read "new": no such variable
      while executing
  "foreach x $new {$to selection set $x}"
      (procedure "::swaplist::ShiftRNoReorder" line 12)
      invoked from within
  "::swaplist::ShiftRNoReorder .slist {1 2 3 4 5 6 7 8 9}"
      invoked from within
  ".slist.lr.right invoke"
      ("uplevel" body line 1)
      invoked from within
  "uplevel #0 [list $w invoke]"
      (procedure "tk::ButtonUp" line 22)
      invoked from within
  "tk::ButtonUp .slist.lr.right"
      (command bound to event)

  Patch attached.


tkt_uuid: 831496ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 9 Immediate
foundin: None
resolution: None
title: BWidget combobox popdown keyboard traversal broken
comment:
  In the combobox,  when the listbox is popped down,
  <Key-Up> and <Key-Down> could be used to change the
  selected item, and <Key-Return> would select it and
  unpost the listbox.

  Now (combobox r1.26),  pressing <Key-Up> or <Key-Down>
  immediately unposts the listbox after changing the
  selected item.


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


tkt_uuid: 2767679fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tar
priority: 5 Medium
foundin: None
resolution: Fixed
title: tar: uninitialized return value
comment:
  In some error situations the return value of tar::* functions are not initialized which leads to a runtime error when returning "return $ret".


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

  Nor are the new commands for semantic markup.


tkt_uuid: 2814771fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: TkChat - Color Settings dialog bug
comment:
  TkChat v1.470 Using Tcl/Tk 8.5.6 - The "Color Settings" dialog resizes the button box instead of the dialog body when stretched vertially.


tkt_uuid: 557520ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Accepted
title: smtp::sendmessage -maxsecs
comment:
  A patch to workaround bug #557040. Rather than automatically
  calculate a timeout for SMTP acknowledging acceptance of
  message body (DATA), allow the user to specify a 
  timeout (default 120 seconds).


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

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

      set msgBuffer {}

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

  Cheers,

  -- AH.


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

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

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

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

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

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

  Clicking on the text returns:

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

  But on the image, the result is:

  Returned Image gbind
  Returned Image gbind
  Returned Image gbind

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

  Where $t (the tags) are:

  img imgbind i:list:1 current

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

  Attached is a possible patch 


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

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


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


tkt_uuid: 2783019fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: scrollwindow bug - flickering scrollbar
comment:
  The attached example shows a problem with scrolledwindow in bwidget. The scrolledwindow gets into an infinite loop between xscroll and yscroll when we zoom in out on this example.

  Tcl/tk version : 8.5.3
  BWidget version : 1.8


  package require Tcldot
  package require BWidget

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

  set g [dotstring $graphstring]

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

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


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

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

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


tkt_uuid: 943145ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 7 High
foundin: None
title: doctools - [namespace] markup request
comment:
  Please add a [namespace] markup command
  to the doctools format for marking a namespace
  name in the documentation.


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


tkt_uuid: 939532ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: exif
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: exif read fails when subIFD has unknown tag
comment:
  The if/elseif/else for tag recognition in 
  proc ::exif::exifSubIFD ends with 'error "unknown 
  tag ..."'.

  I highly doubt the author intended this, as this renders 
  the exif unusable whenever a camera manufacturer adds 
  a new exif tag. 

  My suggestion: change 'error' to 'debug'. 


tkt_uuid: 3160150fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: cursor
priority: 5 Medium
foundin: None
resolution: Fixed
title: invalid command name "SpinBox::config"
comment:
  Error when doing:

  package re BWidget
  SpinBox .sb -text test
  package re cursor
  cursor::propagate . watch

  thx


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

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

  Bye
  Stephan


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

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


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

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

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


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


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

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

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

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


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

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


tkt_uuid: 620612ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: crc
priority: 5 Medium
foundin: None
resolution: None
title: Testsuite failures
comment:
  I ran the tcllib testsuite, using a tclsh 8.3.4 on a
  linux/ix86 system. The build directory was outside of
  the tcllib source directory, actually a direct sibling.
  Enclosed the log generated when testing crc.


tkt_uuid: 1047058fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: md5
priority: 5 Medium
foundin: None
resolution: Fixed
title: document end of options switch -- for md5 2
comment:
  The md5 package has trouble with strings containing -
  as first character, so there is support for -- as end
  of options...

  example:

  # this errors
  md5::md5 -hex -flabber
  # this does not
  md5::md5 -hex -- -flabber

  So everything is fine, but the switch isn't documented....

  Optionally it could be an idea to just interpret the
  last argument as string if neither -file nor -channel
  is given and only one argument is left, would safe md5
  from the classical nuisance we have with switch...


  Michael


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

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


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

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


tkt_uuid: 1852685fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: ip
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ::ip::isOverlap should support IPv6
comment:
  ::ip::isOverlap should support IPv6

  tcl>package require ip
  1.1.1
  tcl>::ip::isOverlap 10.35.1.0/24 10.35.1.5
  1
  tcl>::ip::isOverlap 2002:0a23:0100::/80 2002:0a23:0100::5 
  Error: expected integer but got "2002:0a23:0100::"


tkt_uuid: 1708350fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 6
foundin: None
resolution: Fixed
title: Async Get into -channel fails
comment:
  When I try to an async Get into an existing channel, I get:

  error | E: can't read "ftp(LocalFilename)": no such element in array

  Some debugging reveals the contents of errorInfo:

  can't read "ftp(LocalFilename)": no such element in array
      while executing
      "open $ftp(LocalFilename) w"

  This seems to be due to get:channel getting unset to early...

  (In general, I'm surprised, one has to specify "-async" at the Open time, rather than at the Get time.)


tkt_uuid: 1316040fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: grammar_fa
priority: 4
foundin: None
resolution: Fixed
title: grammar_fa/*.test prints extra info
comment:
  dacceptor.test, dexec.test, fa.test, and faop.test
  include gratuitous puts commands, cluttering the log.


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


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

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

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


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

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

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


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

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


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

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

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

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

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

  Arguments passed to the command are:

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


tkt_uuid: 447022ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: tcllib packages not immediately loadable
comment:
  With Tcl 8.2.3...

  Install tcllib 1.0.  Then try the demo in the
  ftp module:

  $ cd modules/ftp
  $ wish ftpdemo.tcl
  Error in startup script: can't find package ftp 2.0
      while executing
  "package require ftp 2.0"
      (file "ftpdemo.tcl" line 25)

  The problem is that tcllib doesn't install its
  constituent packages in a directory relative
  to the default $::auto_path where they will
  be loaded.

  After one failed [package require], the index
  script for "tcllib" itself will augment $::auto_path
  with an additional search directory, so the packages
  will be found on the second attempt.

  Later releases of Tcl (8.3.1+) have changed the
  default [package unknown] behavior so that it
  keeps searching for pkgIndex.tcl files as long
  as the value of $::auto_path keeps changing...

  ...but if tcllib's installation depends on that,
  then the whole tcllib collection ought to

  package require Tcl 8.3.1

  I think we want (most of) tcllib usable with Tcl 8.2.
  This can be accomplished with some special
  processing in tcllib's index script.


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

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


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

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

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


tkt_uuid: 1111153fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Duplicate
title: fileutil::findByPattern fails during recursive search on XP.
comment:
  fileutil::findByPattern fails during recursive search on 
  Windows XP.     


  () 143 % set fileList [ fileutil::findByPattern c:\\ * ]
  couldn't change working directory to "sys": no such file 
  or directory
  (bind) 144 % 

  bin) 74 % fileutil::findByPattern c:/ *
  couldn't change working directory to "sys": no such file 
  or directory
  (bind) 75 % 

  Stack trace. 

  couldn't change working directory to "sys": no such file 
  or directory
      while executing
  "cd $basedir"
      (procedure "find" line 12)
      invoked from within
  "find $filename $filtercmd"
      (procedure "find" line 34)
      invoked from within
  "find $filename $filtercmd"
      (procedure "find" line 34)
      invoked from within
  "find $filename $filtercmd"
      (procedure "find" line 34)
      invoked from within
  "find $filename $filtercmd"
      (procedure "find" line 34)
      invoked from within
  "find $filename $filtercmd"
      (procedure "find" line 34)
      invoked from within
  "find $filename $filtercmd"
      (procedure "find" line 34)
      invoked from within
  "find $basedir [list $cmd $patterns]"
      (procedure "fileutil::findByPattern" line 23)
      invoked from within
  "fileutil::findByPattern c:\\ * "
      invoked from within
  "set fileList [ fileutil::findByPattern c:\\ * ]"
      ("uplevel" body line 1)
      invoked from within
  "uplevel #0 {set fileList [ fileutil::findByPattern c:\\ * ]}"


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

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

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


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


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

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

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

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

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

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

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

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

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

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

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


tkt_uuid: 503336ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
title: Add no_softbreak flag to qp_encode
comment:
  Add the argument "no_softbreak" with a default value 
  of false to the argument list of mime::qp_encode.
  If this flag is set to true, the extra handling of 
  lines longer than 72 (shouldn't it be 76?) characters 
  should be skipped.

  Reason:  It is possible to qp_encode the subject 
  string. If you do this and the subject exceeds 72 
  characters, a soft break is inserted. This scrambles 
  the entire message at least if read with Outlook 
  Express. If the insertion of soft breaks is skipped, 
  it appears to work right with subject strings of 
  arbitrary length (tried with strings up to about 200 
  chars).


tkt_uuid: 601960ffffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: cmdline
priority: 5 Medium
foundin: None
resolution: None
title: New Proc: cmdline::parseargs
comment:
  Please see the attached cmdline.tcl file, which
  includes a new proc "cmdline::parseargs".

  Here is a usage example:

  cmdline::parseargs \
  {startPath.arg {safeFlag} port.arg {host.arg 127.0.0.1}} \
  {stuff {morestuff 0}} $argv

  This gives the proc the following cmdline:
  -startPath <path> -port <port> ?-safeFlag? ?-host?
  stuff ?morestuff?

  It's been a tremendously valuable proc for my own work.
  Enjoy -- it's yours. If possible, I'd appreciate
  inclusion of the credit line in the file head (see
  attached file) but you can take it out if you want.

  -Ed


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

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

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

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

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

  Thanks,

  Selina


tkt_uuid: 2831785fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: NoteBook page delete with destroyframe 0 has problems
comment:
  Using BWidget v1.8 via ActiveState teapot
  data($page,realized) should not be deleted if $destroyframe is 0

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


tkt_uuid: 1267178fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 8
foundin: None
title: Aes module for tcllib
comment:
  Hi,

  I've written a Tcl-Implementation of the Advanced
  Encryption Standard (AES) for my so-called "individual
  project" at university and thought it might be usefull
  for the tcllib.

  Since it's my first (real) program in Tcl, it may not
  be perfect, but I would be glad, if it would be
  considered helpful in some way.

  I've added a small manpage (in doctools format) and
  test-suite, but I'm not sure if I did it the way it is
  desired. So tell me if something is missing or can be
  improved.

  Thorsten 


tkt_uuid: 1643952fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Out of Date
title: CommRunHook evaluates event hooks twice
comment:
  It seems there was a change between the 4.3 and 4.4 versions to execute event hooks from CommRunHook instead of inside each of the individual event procs.  Inside CommRunHook, the event callback is executed using 'eval $cmd'.  Because of this, some of the variables advertised as being in scope for the callback script are not in scope (i.e. for a connect event fid, addr, and remport).  Replacing the 'eval $cmd' line inside CommRunHook with 'uplevel 1 $cmd' fixes this issue.


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

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

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

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

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

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

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

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

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

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

     }

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

     return $result
  }


  --Mark 


tkt_uuid: 714211ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Fixed
title: test failure: ncgi module
comment:
  Test platform: tcl 8.4.2, intel Windows 2000

  Multiple failure in the ncgi tests. I've attached the
  failure log as it's fairly large.


tkt_uuid: 1735135fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: math
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: tcllib math::linearalgebra additions (matrix stuff)
comment:
  you can find at the bottom of this page http://wiki.tcl.tk/778 additions made by me for linearalgebra package.

  I hope you can include it into the tree.

   (actually only matrix rank is missing, but it would require combinatory functions; matrix determinant is computed with cofactor expansion, that -yes- is cpu expensive. I'll do a better version using Gauss-Jordan elimination in the future)


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

  wrong # args: should be "open path"

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


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

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

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

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

  What do you think of that?

  Best regards
    Stefan


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

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

  if {!$MessageCounter} then { BookmarkAdd }

  et voila


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

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

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

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


tkt_uuid: 2059415fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: None
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ctext error when widget destroyed
comment:
  Hi,

  The following error message appears :

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

  This error is reported in background.

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

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

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

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

  namespace eval ctext {
      variable lastafterscript ""
  }

  One can store the after ID with :

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

  The Destroy method may contain :

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

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

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

  Regards,

  Michaël


tkt_uuid: 1196567fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Accepted
title: Automatic clean-up of the NickList
comment:
  This adds automatic removal of old nicks and 
  associated data (ie Color and Visibility) from the 
  resource file.
  Old nicks are removed after 30 days of non-usage, 
  except for your own. This is done through the 
  addition of a time stamp to the nick in the NickList.

  The 30 days is hard-coded but it should be easy 
  enough to make it into a configurable menu option.

  Old resource files are automatically updated to the 
  new format.


tkt_uuid: 1804388fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: uevent
priority: 7 High
foundin: None
title: uevent::get - feature request
comment:
  I'd like to see a "uevent::get" and/or a "uevent::list" command implemented. It would be nice to be able to query tag/event pairs for a list of tokens or commands bound to them.


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

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

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

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

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


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

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


tkt_uuid: 436386ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 3 Low
foundin: None
resolution: Works For Me
title: BWidget demo bug
comment:
       In the BWidget demo, choose the 'Dialog' tab, 
  then select 'Abort, Retry, Ignore' in the 'Message 
  Dialog' frame.  Click 'Show', and an error message 
  appears "Error: Bad default value "": must be...".  
  The stack trace is:

  bad -default value "": must be abort, retry, ignore, 
  ok, cancel, no, or yes
      while executing
  "tk_messageBox -icon info -default {} -message 
  {Message for MessageBox} -type abortretryignore -title 
  Information"
      ("eval" body line 1)
      invoked from within
  "eval tk_messageBox [array get tkMBoxArgs"
      (procedure "MessageDlg::create" line 80)
      invoked from within
  "MessageDlg::create .msgdlg -parent . -message 
  {Message for MessageBox} -type abortretryignore -icon 
  info -buttons {}"
      ("eval" body line 1)
      invoked from within
  "eval MessageDlg::create $path $args"
      (procedure "MessageDlg" line 1)
      invoked from within
  "MessageDlg .msgdlg -parent .  -message "Message for 
  MessageBox"  -type    $msg(type)  -icon    $msg
  (icon)  -buttons $msg(buttons)"
      (procedure "DemoDlg::_show_msgdlg" line 5)
      invoked from within
  "DemoDlg::_show_msgdlg"
      invoked from within
  ".mainframe.frame.nb.fdemoDlg.titf3.f.but invoke"
      ("uplevel" body line 1)
      invoked from within
  "uplevel #0 [list $w invoke]"
      (procedure "tkButtonUp" line 9)
      invoked from within
  "tkButtonUp .mainframe.frame.nb.fdemoDlg.titf3.f.but
  "
      (command bound to event)


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

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


tkt_uuid: 3315620fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: huddle
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Invalid JSON with values that begin with 0
comment:
  I think [huddle jsondump] should quote values with a beginning zero:

  ::json::json2dict [huddle jsondump [huddle create key 000000]]

  --> unexpected token "0" at position 5; expecting ","|"}"

  ::json::json2dict [huddle jsondump [huddle create key 1000000]]

  --> key 1000000

  PS
  The category huddle is missing!


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

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

  I have a simple implementation against Tcllib 1.9 ready.

  Thanks,
  Bogdan.
  rftghost@gmail.com


tkt_uuid: 2972571fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Fixed
title: comm send fails when the command ends in a backslash
comment:
  The "comm::comm send" command fails when the sent command ends in a backslash character. This can happen when the last argument to a command is a binary string that ends in 0x5C (the backslash character). In this case, the "send" command blocks indefinitely. This can easily be replicated by sending the command {puts \\}.

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


tkt_uuid: 1566460fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
resolution: Fixed
title: math-fuzzy-ManyCompares-1.1 fails with Tcl 8.5
comment:
  ==== math-fuzzy-ManyCompares-1.1 Compare fails due to
  missing braces FAILED
  ==== Contents of test case:

     set tol_eq 0
     set tol_ne 0
     set tol_ge 0
     set tol_gt 0
     set tol_le 0
     set tol_lt 0

     for { set i -1000 } { $i <= 1000 } { incr i } {
        if { $i == 0 } continue

        #
        # NOTE: The braces in the assignment for y are
  missing on purpose!
        #
        set x [expr {1.01/double($i)}]
        set y [expr (2.1*$x)*(double($i)/2.1)]

        if { [teq $y 1.01] } { incr tol_eq }
        if { [tne $y 1.01] } { incr tol_ne }
        if { [tge $y 1.01] } { incr tol_ge }
        if { [tgt $y 1.01] } { incr tol_gt }
        if { [tle $y 1.01] } { incr tol_le }
        if { [tlt $y 1.01] } { incr tol_lt }
     }
     set result [list $tol_eq $tol_ne $tol_ge $tol_gt
  $tol_le $tol_lt]
     set intended {2000 0 2000 0 2000 0}
     set equal 1
     foreach r $result i $intended {
        if { $r != $i } {
           set equal 0
        }
     }
     set equal

  ---- Result was:
  1
  ---- Result should have been (exact matching):
  0
  ==== math-fuzzy-ManyCompares-1.1 FAILED


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

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

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

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

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

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

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


tkt_uuid: 1040372fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
title: generalise ::fileutil::stripPwd to any prefix
comment:
  It would be useful if stripPwd was [stripPrefix
  $somepath $someprefix] which returned a path relative
  to $someprefix, instead of only [pwd].
   


tkt_uuid: 554475ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 6
foundin: None
resolution: Fixed
title: tcllib 'build' warning msgs
comment:
  the latest cvs head of tcllib, obtained from
  activestate's snapshot ftp site, generates the
  following warning during the tmml gen step:

  Gen (tmml):
  /vol/tclsrcsol/tcl84/tcllib/modules/html/html.man
  Warning: Cannot start context section dd li

  This occurs for quite a number of the man pages,
  including stoop, sha1, report, log, expander, smtpd,
  and more


tkt_uuid: 3091244fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: parsing doesn't respect pre tag & trims trailing whitespaces
comment:
  tcllib 1.11.1 - htmlparse 1.1.3:
  ========================

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

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

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

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


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

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

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


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

  Tested on Linux and FreeBSD.
  See attached patch.


tkt_uuid: 526833ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: Missing commands example_begin/_end
comment:
  In the current official release the commands
  "example_begin" and "example_end" are missing from the
  doctools module. These commands are available in the
  development branch, but as they provide the best means
  for showing code, they should be available in the
  release version.


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

  Thanks

  Matthew


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

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

  MyProc -help

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

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

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

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


tkt_uuid: 1567155fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: blowfish
priority: 5 Medium
foundin: None
resolution: Fixed
title: blowfish appending extra NULL chars
comment:
  It appears blowfish is appending some NULL characters 
  at the end of a string when decrypting a string.  I 
  noticed this when I couldn’t get a simple 
  encrypt/decrypt script to work.  Visually, the 
  strings do match but there are “hidden” NULL 
  characters appended to the decrypted string.  I was 
  able to tell that by writing out the string to a file 
  and then performing an octal dump.  Here is this 
  simple script and the result when I run it.


  Thanks

  Al Silverstein
  asilver@net-sense.com


  #!/usr/local/ActiveTcl/bin/tclsh

  package require blowfish
  package require base64

  set KEY abc

  set clear_text secret

  set enc_string [::blowfish::blowfish -dir encrypt -
  mode cbc -iv 12345678  -key $KEY $clear_text]

  set decr_string [::blowfish::blowfish  -dir decrypt -
  mode cbc -iv 12345678  -key $KEY $enc_string]


  puts "Encrypted String is <$enc_string>"

  if { "$clear_text" == "$decr_string" } {
          puts "Success"
  } else {
          puts "clear_text <$clear_text> is NOT equal 
  to decr_string <$decr_string>"
  }

  set aa [open clear_text.txt "w"]
  set bb [open decr_string.txt "w"]

  puts $aa $clear_text
  puts $bb $decr_string

  close $aa
  close $bb


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

  Here is what happens when I run the script:


  asilver@sys-1:~/tcl2> ./blowfish_test2.tcl

  Encrypted String is <Ã½Ã
  clear_text <secret> is NOT equal to decr_string 
  <secret>
  asilver@sys-1:~/tcl2>



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

  Here is the octal dump:

  asilver@sys-1:~/tcl2> od -h clear_text.txt
  0000000 6573 7263 7465 000a
  0000007

  asilver@sys-1:~/tcl2> od -h decr_string.txt
  0000000 6573 7263 7465 0000 000a
  0000011
  asilver@sys-1:~/tcl2>


tkt_uuid: 498104ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Invalid
title: Add -textvariable to ProgressBar
comment:
  We needed to include text above a progress bar (as there is a progress dialog) for "xx% complete", 
  etc.  This seemed a general enough need that we patched progressbar.tcl rather than write our 
  own wrapper.  Here's the patch.


tkt_uuid: 1798413fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Documenting related commands on one man page
comment:
  It's difficult to write a man page about multiple commands. Here's an example:

  http://naviserver.sourceforge.net/n/naviserver/files/ns_memoize.html
  http://naviserver.cvs.sourceforge.net/naviserver/naviserver/doc/src/mann/ns_memoize.man?view=markup


  - Each command is given a numbered anchor, so to link to ns_memoize_flush the link is: .../ns_memoize.html#2. This will change if commands are added, removed or reordered.


  - If you use the [cmd ...] markup, the name of the command becomes a link but only if it has the same name as the page current page.

  In the example above, ns_memoize is a link to itself. However ns_memoize_flush is not a link at all. Neither is ns_cache_eval, which is documented on another page (named ns_cache).

  What would be useful is if each mention of a command would link to it's definition, i.e. .../ns_cache.html#ns_cache_eval


  - Some commands are in the form of subcommands, like Tcl's 'string'. It would be useful to be able to refer to  a subcommand like: [cmd "string is"] and have it parse the space and link to the correct place.


tkt_uuid: 2819151fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Development Tools
priority: 5 Medium
foundin: None
resolution: Fixed
title: Link to SF webdav file upload form for releases
comment:
  The SF webdav file upload form for release archives is at.
  https://frs.sourceforge.net/webupload

  Save the info in the developer/release mgr docs.


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

  Thus, logger 0.1 ought to

    package require Tcl 8.2

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

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

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


tkt_uuid: 481161ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
title: put/get into channels
comment:
  The put and get methods currently read from a file or
  in-memory string, or write to a file or a variable.
  Both methods should support reading from and writing to
  a channel too.

  Both should also be able to give up ownership of such a
  channel so that it can be driven by someone else
  instead of only from the inside of the ftp module.


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

  ---- assign-4.4 start

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

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

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


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

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

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

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

  I have verified this on the W3C site:

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

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

  Robert Hicks

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


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

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

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

  Tim


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


tkt_uuid: 530907ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: exif
priority: 5 Medium
foundin: None
resolution: Fixed
title: exif 1.0 bug patch
comment:
  I found some bugs into exif 1.0.
  Maybe these are original bugs.
  I've improved on FlashPixVersion, ShutterSpeedValue,
  SubjectDistance, Flash and FlashMode.
  Here is a patch I've made.


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


tkt_uuid: 1969847fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: yaml
priority: 5 Medium
foundin: None
resolution: Fixed
title: Testsuite failures
comment:
  Attached a quick run of the testsuite.

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

  I.e. the code contains

      switch $ch

  and it should better be

     switch -- $ch


tkt_uuid: 953854ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: htmlparse
priority: 1 Zero
foundin: None
resolution: Accepted
title: Errors when parsing HTML to a tree
comment:
     Hello,

  In func

  proc ::htmlparse::mapEscapes

  line: return [subst $new]
  should change to:
     return [subst -nobackslashes -novariables $new]

  If not, if new has a backslash \, the subs breaks the 
  string (specially noted in paths on Windows)

  -------
  In func

  ::htmlparse::Reorder

  Lines:
      if {
         $sibling == {} ||
         (![string compare $tp [$tree get $sibling type]])
                   } {
                       break
                   }
  Should change to:
         if { $sibling == "" } { break }
         if { [lsearch "h1 h2 h3 h4 h5 h6 p li" [$tree get
                   $sibling type]] != -1 } {
      break
       }

    Second option is less agressive when reordering tags.

    Regards,

    Ramon Ribó
    ramsan@cimne.upc.es


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

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


tkt_uuid: 1274120fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: crc
priority: 5 Medium
foundin: None
resolution: Fixed
title: package overwrites ::v
comment:
  The crc packages writes to
  the variable "v" without
  resolution control.  This means
  if a variable ::v exists, it will be
  overwritten by the crc16 and
  crc32 packages.

  Attached patch corrects
  the problem.

  Patch also adds int(.)
  coercion protection to
  the calculation of signbit
  to avoid trouble if/when
  Tcl converts to supporting
  bignums.


tkt_uuid: 1513342fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tclunits
priority: 5 Medium
foundin: None
resolution: Fixed
title: tclapps - tclunit counts failures twice
comment:
  When using tclunit 0.1, failures in testcases are 
  counted twice. 

  This can be demonstrated by the following test file:

  ----

  package require tcltest

  tcltest::test double {Failures count double} {puts a} b

  ----

  When this is run with the current version (0.1), the 
  failure count is reported as 2 (incorrect) after 
  applying the patch below, the failure count is 1.

  --- patch ---

  C:\Tcl\bin>diff -u tclunit.old.tcl tclunit.new.tcl
  --- tclunit.old.tcl     Tue Jun 27 14:47:02 2006
  +++ tclunit.new.tcl     Tue Jun 27 14:47:53 2006
  @@ -217,6 +217,7 @@
       #  If we're saving up test results...
       if { $::cto(capturing) } {
          test_failed_continue $line
  +  return
       }

       #  Check for start, pass and fail lines


tkt_uuid: 879812ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
resolution: Accepted
title: Patch for FRE 879451
comment:
  An initial patch for better introspection and a new
  interface for logproc to optionally use an existing proc.


tkt_uuid: 575376ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: profiler
priority: 8
foundin: None
resolution: Accepted
title: use execution traces for tcl8.4+
comment:
  Module: profiler

  I am attaching a patch that makes use of [trace add execution ..] command
  available in tcl8.4 version for profiling. The changes are as follows:

   o The current API is _not_ modified, only few internal procedures 
      have been changed.
   o "if [package vsatisifies [package provide Tcl] 8.4] .. else .." 
      construct is used to support both versions of tcl: 8.3 & 8.4
   o The code inside proc Handler is split into two new procs:
      enterHandler and leaveHandler which are called by Handler.
      Handler proc is used with tcl8.3 only
   o  A new proc TraceHandler, used with tcl8.4+, is invoked by
      enter/leave execution traces on commands
   o proc profProc either sets up execution traces or proc renames
      based on tcl version
   o profiler package version is incremented to 0.2.1
   o Added a test constraint called tcl8.3only in profiler.test file.
     5 tests are skipped for tcl8.4+ version because these tests
     work with internals of profiler package -- these rely on fact
     that procs are renamed to <name>ORIG in tcl8.3 version.

  The following simple test shows some improvement in performance between
  tcl8.3 and tcl8.4 versions. Note however that this improvement could be simply
  because 8.4 version executes faster and not due to use of execution traces.

  godel:35> tclsh test.tcl
  tcl version = 8.3.4
  time        = 602 microseconds per iteration
  godel:36> /tmp/hlavana/tcltk/bin/tclsh8.4 test.tcl
  tcl version = 8.4b1
  time        = 472 microseconds per iteration
  godel:37> cat test.tcl 

  set auto_path [linsert $auto_path 0 /auto/vwsahr/cvs-sf/tcllib/modules/profiler]
  package require profiler

  ::profiler::init
  proc foo {} {}

  puts "tcl version = [info patch]"
  puts "time        = [time foo 10000]"
  godel:38> 

  In future, the profiler package can be updated to trace all commands as well.
  Currently, it can only trace functions defined using proc command. This may
  require some changes in APIs of profiling packages.


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

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

  Keith Vetter


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


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

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


  Tcllib 1.6

  Best regards
  Torben A. Hansen

  torben.arnt.hansen@sciatl.com

   


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


tkt_uuid: 861721ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: nntp
priority: 5 Medium
foundin: None
resolution: Fixed
title: NNTP is binary, yEnc is being corrupted
comment:
  Because of yEnc, binary must be downloadable.

  I have an 'expect' program to download a newsgroup,
  and I can make a lot of criteria choices based on the
  headers. The main purpose is to download pictures,
  then I use uudeview and xv next. I've used it forever,
  and wrote it before there was an nntp.tcl.

  95% of the yEncs were corrupted. I thought it was Usenet
  servers along the way doing the corruption. Recently I started
  downloading again, and now a high percentage of pictures are
  in yEnc format. Because I was getting almost nothing now, I
  investigated.

  I'm on a new dual-G5 running Unix. When I tried Netscape
  on this box, the yEncs were decoding. When I saved one of
  those to a file and compared it to my program's download,
  there was corruption alright. It apparently has to do with
  'expect' using Tcl's Unicode expectations. I tried adding
  'fconfigure's, but it didn't affect 'expect'.

  I decided to rewrite my program using the NNTP procs, and
  it was still corrupted. Then I added this line after the one
  'socket' command in nntp.tcl:

  fconfigure $sock -encoding binary

  Finally, yEncs were no longer being corrupted.

  tcllib 1.5 from TclTKAquaWithBatteries.


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

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

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

  tepam version 0.4.0


tkt_uuid: 3036124fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: math :: linearalgebra
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: determineSVD gives wrong dimensions in U for m<n
comment:
  Given an m-by-n matrix A, lassign "[::math::linearalgebra::determineSVD $A] U S V" will return an m-by-n matrix U.  While this is often what you want for overdetermined systems (m>n), this is not what you want for underdetermined systems (m<n) and is not consistent with any definition of the SVD I know of.  If (m<n), the S and V matrices should be truncated if truncation is desired.

  Incidentally, sometimes I don't want the U matrix to be truncated when m>n, for example when I am as interested in the residuals than the actual fit.


tkt_uuid: 1709566fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: crash during ftp::Get
comment:
  I sometimes see the following crash during a ftp::Get :

  can't read "ftp(Start_Time)": no such element in array
      while executing
  "expr {$stop_time - $ftp(Start_Time)}"
      (procedure "ElapsedTime" line 5)
      invoked from within
  "ElapsedTime $s [clock seconds]"
      (procedure "ftp::Get" line 87)


  I think this happens because the proc ftp::WaitOrTimeout (used at the endof ftp::Get) returns 1 on timeout i.s.o. 0. And so ftp::Get tries to calculate the elapsed time in ftp::ElapsedTime, while ftp(Start_Time) is not yet existing, resulting in a crash.
  I have looked at all usage of ftp::WaitOrTimeout, and the return code should be 1 on success, 0 on error. Therefore I suggest to change ftp::Timeout to put ftp(state.control) to 0.


tkt_uuid: 3163541fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: grammar_peg
priority: 5 Medium
foundin: None
resolution: Fixed
title: Possibly wrong call of ict_match_token
comment:
   in line 116 of grammar_peg/peg_interp.tcl:
              ict_match_token "Expected $ch"
  should read
              ict_match_token $ch "Expected $ch"

  See, e.g. <http://wiki.tcl.tk/15512> for more details


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

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

  should be before

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

  (thl@gedas.de)


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

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

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


  Kind regards,

  Jos.


tkt_uuid: 1483168fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Fixed
title: Namspaced snit objs are not commands in their ns
comment:
  package require snit
  namespace eval ns { }

  proc ns::someProc {msg} {
      puts "From $msg"
  }

  proc ns::anotherProc {} {
      someProc "ns::anotherProc"
  }

  snit::type ::ns::myObj {
      constructor {args} {
          someProc "::ns::myObj"
      }
  }

  ns::anotherProc
  ns::myObj foo


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

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

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


tkt_uuid: 694894ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: md5
priority: 3 Low
foundin: None
title: md5: modularize in order to use with chunks of data
comment:
  According to the md5 RFC, it's possible to use this
  algorithm with arbitrarily large chunks of data, and
  infact the C code that implements the algorithm is
  capable of loading a file a chunk at a time and
  processing it incrementally.  From what I can see, the
  Tcl code we have doesn't make this possible, which
  makes it impossible to use it with, for instance, large
  files (or other things - say data coming in off a socket).


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

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

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


