# ticket

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

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

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

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

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

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



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


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


tkt_uuid: 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: 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: 567428ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: problem with tmml documentation
comment:
  The following modules have a problem with the way their
  tmml documentation generates nroff:

  counter/counter.man
  fileutil/fileutil.man
  ftp/ftp.man
  ftpd/ftpd.man
  html/html.man
  irc/irc.man
  javascript/javascript.man
  log/log.man
  math/combinatorics.man
  math/math.man
  mime/mime.man
  mime/smtp.man
  ncgi/ncgi.man
  nntp/nntp.man
  pop3/pop3.man
  profiler/profiler.man
  report/report.man
  smtpd/smtpd.man
  stooop/stooop.man
  textutil/expander.man

  The nroff that gets generated starts out with:

  '\" -*- tcl -*- doctools manpage

  But that causes Sun's nroff to fail to format the man page.
  The error that is caused says:

  $ man -s n counter
  Reformatting page.  Wait...unknown preprocessor specifier -


tkt_uuid: 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: 2340320fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: Entry invoke is not reachable
comment:
  Hi (very) Dear Tcl maintainers !

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

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


  The _path_command should be updated to

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

  Best regards,

  Michaël


tkt_uuid: 3584575fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: cmdline
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Improved error messages
comment:
  Hi,

  At present, typedGetoptions does not mention which condition failed the argument processing and return the whole error message. It would be great to have   typedGetoptions return the condition which failed.

  -Amit


tkt_uuid: 3094654fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: http :: autoproxy
priority: 3 Low
foundin: None
resolution: Fixed
title: Autoproxy man page - before options
comment:
  On the man page, section "Options": some options have a "-" as first character, some dont.
  IMHO they all should have one (or none, as the - is given in the configure method description)


tkt_uuid: 1390477fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: snit can destroy errorInfo in some cases
comment:
    Sometimes snit functions can be called from
  exception processing code:

  if {[catch {some_code }]} {
          exception processing code
          here snit called
          ...
  }

    It's possible in non evident way, for example,
  then executed the following code:

  proc procedure1 {...} {
     set varname snit_object
     trace add variable varname {snit_object destroy}
     ....
  }

    (this technique used in oomk -- http://www.equi4.com)

    When error occurs in procedure1, trace code will be
  called, which invokes snit destructor. But SNIT CAN
  DESTROY ::errorInfo and ::errorCode GLOBAL VARIABLES
  in many cases. As for example, when snit calls any
  method, including destructor. And you get obscure
  error message. Because snit's code abound with
  constructions like following:

     if {[catch {set snit_var} result]} {
            blablabla...
     }

  Here, if snit_var is not defined, errorInfo will be
  corrupted with message like
  "Snit_typemethodCache($mehod) -- no such variable"...

    This patch *partially* corrects described problems.
  ("catch" not used there possible or ::errorInfo and
  ::errorCode there possible preserved).
  In some cases, then real error occurs in snit, there
  are no solution where old value of errorInfo can be
  stored. This is not snit bug, but tcl defect, as I
  think. :-(


tkt_uuid: 898774ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: html
priority: 5 Medium
foundin: None
resolution: Fixed
title: html - documentation for checkSet incomplete
comment:
  The docs for ::html::checkSet do not document the
  arguments key and sep.

  Diff included.

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

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

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


tkt_uuid: 540313ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: cmdline
priority: 5 Medium
foundin: None
resolution: Accepted
title: Add [getKnownOpt{ions}]
comment:
  >From "Melissa Chawla" <hershey@panasas.com>
  I've added 2 new procedures to the tcllib/cmdline package:

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

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

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


tkt_uuid: 984407ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tklib :: ctext
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Hang in ctext with regexp match
comment:
  Just been playing with ctext and I ran into a bug which causes an 
  endless loop on my system. The problem came from trying to 
  highlight Tcl comments, using:

  ctext::addHighlightClassForRegexp $win comment navy 
  {#[^\n]*\n}

  Then if I add the following to the text widget:

  This is a test
  # This is a test
  foo


  Then position the cursor somewhere in the comment, and press 
  backspace - endless loop occurs in ctext::highlight - the third while 
  1 loop. Problem seems to be that the [$win search..] stuff is 
  passed indices like 4.0 3.15  (i.e. start is after end), and it return 
  3.0 bizarrely (this may be a bug in the text widget, or possibly in 
  the Mac OS X implementation - I haven't followed up yet). The fix 
  was to add these lines after the {"" == $res} check:

  # If result given is less than the start index (can happen), then
  # break out
  foreach {l1 c1} [split $res .] {l2 c2} [split $si .] { break }
  if {$l1 < $l2 || ($l1 == $l2 && $c1 < $c2)} { break }


  Everything seems to work again after adding that in. I would 
  upload a patch, but I'm very busy at present. Hassle me by email 
  if you really really want a patch!


tkt_uuid: 1793855fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::ftp::geturl
comment:
  Problem: failure on certain addresses

  package require ftp 2.4.4
  package require ftp::geturl 0.2

  set url "ftp://cdaweb.gsfc.nasa.gov/pub/istp/"
  puts "BEGIN test 1"
  set current_html [::ftp::geturl $url]]
  puts $current_html
  puts " ************ END test Pass ****************"

  set url "ftp://nssdcftp.gsfc.nasa.gov/"
  puts "BEGIN test 2"
  set current_html [::ftp::geturl $url]]
  puts $current_html
  puts " ************ END test Fail ****************"

  Suggested solution (comp.tcl, Lester): 

  The fix is to replace the switch arm that starts at line 83 of
  ftp_geturl.tcl with:

          - {
              if {[string equal $ftp_file {}]} {
                  set contents [ftp::NList $fdc $ftp_file]
              } else {
                  ftp::Get $fdc $ftp_file -variable contents
              }
          } 


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

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

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

  ... and ...

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

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

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

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

  Best regards,

  Martin Lemburg


tkt_uuid: 685073ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: textutil :: expander
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: expander - Input stack
comment:
  textutil::expander currenty manages a context stack to
  temporiliy hold up output material before inserting it
  into the actual stream of output.

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

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


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

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


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


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


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

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


tkt_uuid: 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: 1416770fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: statistics
priority: 5 Medium
foundin: None
resolution: Fixed
title: statistics: test suite bug
comment:
  with -debug 1:

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


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

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

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

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

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

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

  A patch will follow.


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


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

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

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

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

  package require tablelist

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

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

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

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

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

  pack .tl1 .tl2 .tl3 .b


tkt_uuid: 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: 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: 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: 436762ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: BWidget tree and listbox binding bug
comment:
  Version: BWidget CVS nightly from 21.06.2001

  In BWidget version 1.2.1, the following code worked:

  Tree .t 
  bind .t <ButtonPress-3> {foo}
  ListBox .l
  bind .l <ButtonPress-3> {foo}

  This doesn't work anymore. Looking through the CVS for
  tree.tcl,
  I saw that somewhere between tree Rev1.1 (from
  BWidget-1.2.1) and tree Rev1.11 a change was made that
  broke the above code.

  Looking further, ericm tried out some fancy things in
  tree Rev 1.27 that made it work again, but has undone
  them in 1.28. (I suppose the same applies for
  listbox.tcl).

  I need that sort of things to get a popup menu on right
  mouseclick in the whole tree (listbox) area, not just
  when right-clicking on items or icons ( a la ".t
  bindText" and ".t bindImage".

  Any idea how to get this to work?

  Salut,
         Bastien


tkt_uuid: 1272754fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: counter
priority: 5 Medium
foundin: None
resolution: Fixed
title: counter - failed tests with Tcl 8.5
comment:
  ==== counter-avg counter::count FAILED
  ==== Contents of test case:

      counter::init avg
      counter::count avg 2.2
      counter::count avg 3.3
      counter::count avg 9.8
      counter::get avg -avg

  ---- Result was:
  5.1000000000000005
  ---- Result should have been (exact matching):
  5.1
  ==== counter-avg FAILED

  ==== counter-hist histogram average FAILED
  ==== Contents of test case:

      counter::init hist -hist 10
      counter::count hist 2.2
      counter::count hist 18.6
      counter::count hist 14.1
      counter::count hist 26.9
      counter::count hist 20.4
      counter::count hist 23.3
      counter::count hist 53.3
      counter::get hist -avg

  ---- Result was:
  22.685714285714283
  ---- Result should have been (exact matching):
  22.6857142857
  ==== counter-hist FAILED


tkt_uuid: 1414051fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: set
priority: 5 Medium
foundin: None
resolution: Fixed
title: struct::set include does not create variable like lappend
comment:
  The struct::set include command is documented to work
  like lappend for sets, but differs in its handling of
  non-existing variables.

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

  It should create the variable nosuchvar like lappend does.

  Michael


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

  Also converts bridged nick changes to system messages.

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

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

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


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

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

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


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

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

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

  I must check this!


tkt_uuid: 1699575fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: graph
priority: 3 Low
foundin: None
resolution: Fixed
title: criticl accelerators have wrong error msgs with Tcl 8.5
comment:
  The struct::graph testsuite throws a lot of errors due to wrong style error messages when using Tcl 8.5 and the critcl wrappers.


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


tkt_uuid: 3471474fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pop3
priority: 5 Medium
foundin: None
resolution: Fixed
title: pop3::open doesn't handle -socketcmd properly
comment:
  Documentation says -socketcmd option is a command prefix. However it doesn't handle it that way, but as a simple command.


tkt_uuid: 740478ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: make install fails due to a documentation bug
comment:
  while attempting to install the latest CVS snapshot for
  tcllib, I get this error, causing installation to cease:

  Generating /volws/lwv26/ldatae/man/mann/irc.n
  @--> invalid command name "target"
      while executing
  "::doctools::_format dt {[comment {-*- tcl -*- doctools
  manpage}]
  [manpage_begin irc n 0.4]
  [moddesc   {Low Level Tcl IRC Interface}]
  [titledesc {Creat..."
      ("eval" body line 1)
      invoked from within
  "eval [list ::doctools::_$cmd $name] $args"
      (procedure "::doctools::DoctoolsProc" line 15)
      invoked from within
  "dt format [get_input $f]"
      (procedure "_man" line 17)
      invoked from within
  "_man irc nroff n /volws/lwv26/ldatae/man/mann"
      ("eval" body line 1)
      invoked from within
  "eval $guide($m,$type) $m $args"
      (procedure "xinstall" line 4)
      invoked from within
  "xinstall doc nroff n    $config(doc,nroff,path)"
      (procedure "doinstall" line 18)
      invoked from within
  "doinstall"
      (procedure "main" line 11)
      invoked from within
  "main"
      (file "../installer.tcl" line 484)
  *** Error code 1
  make: Fatal error: Command failed for target `install'

  Seems like installation should continue even when an
  error like this had occurred.


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

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

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

  I would like to see this additions:

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

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

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

  And maybe:

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

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

  Michael


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


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

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

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

  (Thanks to davidw for helping to test this!)


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

  I made the following timings before and after my patch:

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

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

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


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

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

  The code consists of two packages:

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

   - davvfs is a VFS driver which uses the webdav package

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

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

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

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

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

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

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

  -jcw


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

    tclsh8.5 sak.tcl test asn

  shows failures on Solaris:

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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


tkt_uuid: 2686560fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: crc
priority: 8
foundin: None
resolution: Fixed
title: memleak in crc::cksum
comment:
  calling crc::cksum over and over causes a huge memleak.

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

  doing the same with crc::crc32 doesnt.


tkt_uuid: 1041229fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: A new splash screen widget?
comment:
  I think that a splash screen widget is currently missing 
  from BWidget. Although a splash screen is used only 
  once during the life of an application, it would be good if 
  such a widget was in BWidget, so as to not re-
  implement code for splash screens for  each new 
  application.

  I have also attached a sample implementation of the 
  widget. Its a simple toplevel that stays always on top, 
  without borders and can display an image, a BWidget 
  progressbar and text label.
  However, there is no manual page yet, but I can write 
  one if the widget gets finally approved :-)

  George


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


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

  - Matthias

  mlange_lists(at)yahoo.com


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

  The following patch will resolve this problem:

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

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

  Hemang. 


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

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

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

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

  (2) Password field is ignored when joining

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

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

  (4) geturl fails

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


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

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

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


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

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

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


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

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

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


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

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

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

  Cheers


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

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

  The following code shows the behaviour:

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

  The error is:

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

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

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

  The patch does the following:

  set parent [_node_name $path $parent]

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

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

  -- Roger

  PS: Thanks for the cool Tree widget!


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

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


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


tkt_uuid: 472718ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: ScrollWindow update idletasks
comment:
  I have noticed that in some rare cases the "update 
  idletask" command added into 
  ScrolledWindow::_set_hscroll and 
  ScrolledWindow::_set_vscroll procs enter into a 
  infinite loop.
  I think loop borns when _set_hscroll or _set_vscroll 
  changes the displayed portions of the contained widget
  (setwidget), thus "update idletask" reach a 
  <configure> binding on the contained widget wich call 
  again _set_hscroll or _set_vscroll.
  Sorry I can't provide a source example, but I'm using 
  Bwidget embedded into a commercial app.


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

  FIX: 

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

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

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

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

  ...


tkt_uuid: 2814771fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: TkChat - Color Settings dialog bug
comment:
  TkChat v1.470 Using Tcl/Tk 8.5.6 - The "Color Settings" dialog resizes the button box instead of the dialog body when stretched vertially.


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

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

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

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

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

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

      catch {repeat a} msg
      set msg

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

      catch {repeat 0 b} msg
      set msg

  ---- Result was:

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

  ---- repeat-4.5 start

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

      catch {repeat -1 b} msg
      set msg

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


tkt_uuid: 3308051fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 5 Medium
foundin: None
resolution: Accepted
title: struct::list equal is not commutative in special case
comment:
  tclsh Session:
  % struct::list equal [list [list a]] {{a}}
  0
  % struct::list equal {{a}} [list [list a]]
  1

  Looks like a bug to me;)

  Proposed patch attachted.


tkt_uuid: 1861565fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Fixed
title: comm: error msg not clear when server port is in use
comment:
  Hi,

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

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

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

  Hemang.


tkt_uuid: 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: 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: 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: 1053086fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: A new widget for scrolling many widgets with a ScrolledWidge
comment:
  Hi all,

  I recently needed the functionality of scrolling two 
  canvas widgets simultaneously, both of them embedded 
  in a ScrolledWindow widget. Of course there are 
  hundrends of references for doinh it in c.l.t., but not 
  easy to use code. So I decided it to write a BWidget 
  widget for doing exactly this.

  The attched code is a first implementation of such a 
  widget. Of course name/options are open to 
  discussion :-)

  The idea behind the new widget is simple: when a 
  new "MultipleScrollableWidgets" widget is created, only a 
  frame widget (without a border) is created. Then the 
  user is expected to create all the widgets that will be 
  scrolled as children of this frame. Also the user *must* 
  pack/place/grid the children onto the frame, in any way 
  he wants (i.e. like notebook pages).

  Then, each child widget must be declared to the 
  MultipleScrollableWidgets widget with 
  method "addwidget". Only declared widgets will be 
  scrolled. Finally a ScrolledWindow can be created, 
  having the MultipleScrollableWidgets widget as 
  its "scrollable" widget.

  The current implementation has also an option (-scroll) 
  to addwidget, for specifying whether each added widget 
  will scroll in the x & y direction. I.e,  you can add two 
  canvases both of which will be scrolled in the x 
  direction, but only the second will be scrollable in the y 
  direction (i.e. because the first holds some header items 
  we want always visible...)

  Any ideas are welcomed. Of course, the final target 
  should be to add such a widget in BWidgets :-)


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

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

  An example:

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

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

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

  Best regards,

  Martin Lemburg


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

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

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

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

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


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

      global runcmdrc runcmdout runcmderr

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

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

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

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

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

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

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

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

          # Wait for command to complete
          vwait $runcmdrcvar
      }

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

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

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

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

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

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

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


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

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

  -- Matthias Kraft


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


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


tkt_uuid: 723307ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: tree
priority: 8
foundin: None
title: Tree Walk: Add Break/Return/Error Support
comment:
  The struct::tree functions within tcllib work VERY well - 
  but during some recent development I realized that there 
  was no clean way to "stop" a tree walk when walking 
  the nodes of a tree (either direction or both directions).

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

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

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

  contact me with any questions.

  Dave Bigelow
  davidhbigelow@compuserve.com


tkt_uuid: 1566488fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: bignum :: float
priority: 5 Medium
foundin: None
resolution: Invalid
title: failed tests with Tcl 8.5 (64-bit)
comment:
  Using Tcl HEAD (8.5a5) on a
  64-bit system:

  ==== bigfloat-fromdouble-2.1f Some floating-point
  computations related to command fromdouble FAILED
  ==== Contents of test case:
  return $resultat
  ---- Result was:
  0
  ---- Result should have been (exact matching):
  1
  ==== bigfloat-fromdouble-2.1f FAILED


  ==== bigfloat-int2float-2.9.2.3 Some integer
  computations related to command int2float FAILED
  ==== Contents of test case:
  uplevel 1 $code
  ---- Result was:
  -29127.3114
  ---- Result should have been (exact matching):
  5000000000.0000
  ==== bigfloat-int2float-2.9.2.3 FAILED


  ==== bigfloat-cos-4.4.1.0 Some floating-point
  computations related to command cos FAILED
  ==== Contents of test case:
  return $resultat
  ---- Result was:
  0
  ---- Result should have been (exact matching):
  1
  ==== bigfloat-cos-4.4.1.0 FAILED

  ---- bigfloat-sin-4.4.1.1 start


  ==== bigfloat-sin-4.4.1.1 Some floating-point
  computations related to command sin FAILED
  ==== Contents of test case:
  return $resultat
  ---- Result was:
  0
  ---- Result should have been (exact matching):
  1
  ==== bigfloat-sin-4.4.1.1 FAILED

  ---- bigfloat-cos-4.4.2.0 start


  ==== bigfloat-cos-4.4.2.0 Some floating-point
  computations related to command cos FAILED
  ==== Contents of test case:
  return $resultat
  ---- Result was:
  0
  ---- Result should have been (exact matching):
  1
  ==== bigfloat-cos-4.4.2.0 FAILED

  ---- bigfloat-sin-4.4.2.1 start


  ==== bigfloat-sin-4.4.2.1 Some floating-point
  computations related to command sin FAILED
  ==== Contents of test case:
  return $resultat
  ---- Result was:
  0
  ---- Result should have been (exact matching):
  1
  ==== bigfloat-sin-4.4.2.1 FAILED


tkt_uuid: 3110860fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Documentation
priority: 5 Medium
foundin: None
resolution: Fixed
title: geometry man page conflicts with the Tcl core
comment:
  For version 8.6, a manpage named geometry.n was added to the Tk core, which conflicts with tcllib's existing manpage for the math::geometry package.


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


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


tkt_uuid: 1560822fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: blowfish
priority: 7 High
foundin: None
resolution: Fixed
title: decrypt (blowfish) doesn't always work
comment:
  set key "uP/AD/oGb6q/"
  set text "ececho clear"
  set foo [::blowfish::blowfish -mode ecb -dir encrypt
  -key $key $text]

  And when I am trying to decrypt that:

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

  Error:

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


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

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

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

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

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

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

  Clicking on the text returns:

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

  But on the image, the result is:

  Returned Image gbind
  Returned Image gbind
  Returned Image gbind

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

  Where $t (the tags) are:

  img imgbind i:list:1 current

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

  Attached is a possible patch 


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

  wrong # args: should be "open path"

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


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

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

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


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


tkt_uuid: 520903ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Duplicate
title: ScrolledWindow: 'jumping' wi
comment:
  Motivation:
  The ScrolledWindow widget has a problem when making it
  centered together with automanaged scrollbars: each
  time the displayed frame changes its size, the
  scrollbars might get gridded for a short time when they
  are not needed and consequently ungridded shortly after
  that, causing the inner frame to 'jump'.

  The following patch addresses this by adding an
  -autodelay option. If this is used, the widget will
  wait (-autodelay milliseconds) before it calls the
  routine the grids/ungrids the scrollbars and will
  always use the last values given to it so that multiple
  calls to the widget just get 'compressed' to one call,
  effectively using the last valid values.

  The attached tar contains the diff to the actual head,
  the complete new panedw.tcl source and the updated
  documentation in case the patch should be accepted.

  Effects to existing code:
  None. The default is to behave like no -autodelay was
  given.

  Bugs:
  None that I knew of.


tkt_uuid: 2499978fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tklib
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Infinite bug on widget::scrolledwindow
comment:
  On a dialog that contains a ttk::treeview  as the widget of a scrolledwindow, when the treeview has certain items, this errors happens:

  too many nested evaluations (infinite loop?)
      (procedure "::snit::RT.CallInstance" line 5)
      invoked from within
  "::snit::RT.CallInstance ::widget::scrolledwindow::Snit_inst1 _set_scroll hsb 0 0.00555556"
  too many nested evaluations (infinite loop?)
      (procedure "::snit::RT.CallInstance" line 1)
      invoked from within
  "::snit::RT.CallInstance ::widget::scrolledwindow::Snit_inst1 _set_scroll vsb 0 0.00403226"
  too many nested evaluations (infinite loop?)
      (procedure "Tree::_update_scrollregion" line 42)
      invoked from within
  "Tree::_update_scrollregion .i_form_1.sw.i_frame.frame.lf_2.sw.tree"
      (command bound to event)
  too many nested evaluations (infinite loop?)
      (procedure "::snit::RT.CallInstance" line 42)
      invoked from within

  (this repeats several times).

  Unneded horizontal and vertical scrollbars are displayed too.

  The problem goes away with this patch:

  Index: scrollw.tcl
  ===================================================================
  --- scrollw.tcl(revision 333)
  +++ scrollw.tcl(working copy)
  @@ -183,7 +183,7 @@
   if {!$realized} { return }
   # This is only called if the scrollbar is attached properly
   upvar 0 $varname sb
  -if {$sb(auto)} {
  +if {$sb(auto) && !$sb(lock)} {
       if {!$sb(lock)} {
   # One last check to avoid loops when not locked
   if {$vmin == $sb(lastmin) && $vmax == $sb(lastmax)} {

  (I didn't remove the second if, which is now redundant, for making clear the ciritical change).


tkt_uuid: 2359926fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: fileutil::tempdir on windows
comment:
  As the manual states, on windows, the following locations are checked in step 5 of the process in determining the location for temp files:
  "...C:\TEMP, C:\TMP, \TEMP, and \TMP are tried in that order..."
  I think, usually there are no such dirs on windows. If a process runs without a logged on user (in the system context), the directiory usually is %systemroot%\temp (which is c:\windows\temp or c:\winnt\temp, e.g.), otherwise, the temp dir is normally somewhere in the current user's profile path, to where the TMP-Var points. In generall, it's not 100% safe to rely on environment variables - I think it would be more foolproof to ask the system via API call about the right location... 


tkt_uuid: 578460ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: tree
priority: 5 Medium
foundin: None
resolution: Fixed
title: struct::tree move within same parent
comment:
  The documentation for the tree move command states:
  "Make the specified nodes children of parent, inserting them into 
  the parent's child list at the index given by index. "

  From this, I expect a node being moved to always end up with the 
  given index (assuming it is valid) after it is moved.

  Example:
  package require struct
  struct::tree mytree
  mytree insert root node0 node1 node2
  mytree move root 1 node0
  mytree children root

  Expected result:
  node1 node0 node2

  Actual result:
  node0 node1 node2


  There are several tests in the test suite that support the existing 
  behavior, so maybe I misunderstand the way it is supposed to 
  work.  If that's the case, then the documentation for this command 
  should be expanded to describe the behavior (and maybe why).


tkt_uuid: 1054636fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: general request
priority: 8
foundin: None
title: Enhance test suite to disable all accel pkgs even if present
comment:
  I think it would be useful for the tcllib test suite to
  either
  by default, or via some sort of extra makefile target, have
  the option of indicating that the user wishes the test
  suite
  to run only the tcl versions of modules through the test
  cases, rather than loading things like trf if present.

  Or maybe what is needed is a tcllib module option that
  allows the developer to do that very same thing when
  doing the package require?


tkt_uuid: 659238ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: ftp
priority: 6
foundin: None
resolution: Accepted
title: FTP Support for MDTM setting ModTime
comment:
  Some simple changes to allow setting of file modified 
  time on FTP servers that allow it (which apparently isnt 
  many)

  changes need to be made to file:
  tcl:/lib/tcllib1.3/ftp/ftp.tcl
  change is backward compatible & fails gracefully

  Also a simple change to tclVFS that requires the 
  change to the above ftp.tcl (I'll post it to the tclVFS 
  group)

  Note: ftpd's mdtm command should be patched to 
  support setting mdtm

  Sorry for the messy attached changes file, (and my 
  probably old files) I dont know a lot about CVS yet

  Also, I'm new to TCL, so someone should check my 
  work anyway.


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


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

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

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


tkt_uuid: 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: 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: 3041989fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: cmdline
priority: 7 High
foundin: None
title: Enhance documentation and help message
comment:
  The procedure "getoptions" aparently always understands "--" as "end of flags".

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

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

  Thank you,
  Harald


tkt_uuid: 410399ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Accepted
title: New module: html parser
comment:
  Another new module, a html parser based upon the core
  of Stephen Uhler's html_library + some utilities from
  my book scanning project.

  Anyone aware of tests for this parser ?


tkt_uuid: 3066872fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Fixed
title: comm server blocks indefinitely
comment:
  Bug reported by skipper600 on the wiki (http://wiki.tcl.tk/2507)

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

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

  /Ashok


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

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


tkt_uuid: 470273ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget: MainFrame menu inconsistency
comment:
  Motivation:
  -----------

  The BWidget MainFrame widget shows a slight
  inconsistency in the
  handling of menu (de-)activation when using multiple
  tags.

  Consider this small example:

  ------- snip
  package require BWidget
  set descmenu {
   "&File" all file 0 {
    {command "Exit 1" {tag_bla tag1} "" {} -command exit}
    {command "Exit 2" {tag_bla tag2} "" {} -command exit}
   }
  }
  set mainframe [MainFrame .mainframe -menu $descmenu]
  pack $mainframe -expand yes -fill both

  #$mainframe setmenustate tag1 normal
  ------- snap

  Start the program, both menuentries are active. Now,
  remove the comment #
  from the setmenustate line, start the program: the
  "Exit 1"-entry is
  suddenly _disabled_ instead of normal.


  Discussion:
  -----------
  Internally, BWidget uses the tags as boolean states
  whether a menu
  should be shown normal or disabled. Only if each and
  every tag is set
  to normal (1) the entry is displayed in normal state.

  Unfortunately, the default initialization of the
  entries is set to 0
  (disabled)! (The menues after the start do not reflect
  this, they are
  all normal).

  For the example given above, after init, one has this:

    tag_bla 0
    tag1    0
    tag2    0

  After the setmenustate, tag1 is 1, but tag_bla is still
  0, making the
  entry be displayed as disabled (0).

  Possible remedies:
  ------------------
  1) have MainFrame make a refresh of the Menudisplay
  according to the
      tags. This would probably break a great many
  existing applications
      that do not set the tags explicitly to normal.
  2) document this as a known quirk and have everyone
  maually set all
      the tags to normal with setmenustate when starting
  their program
  3) change the behaviour of the default initialization
  to 1 (normal).
      This *could* break existing programs who rely on
  this
      ... undocumented feature, but I doubt it.

  I'd tend to 3), as I see this as the expected
  behaviour. Anyway, I
  attached the patches for it (they fix the same problem
  for the menus
  themselves, too) in diff -c format.

  The line must be changed in 
    proc MainFrame::_create_menubar { path descmenu } 
  and 
    proc MainFrame::_create_entries { path menu bg
  entries } {


  Bastien


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


tkt_uuid: 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: 911580ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Duplicate
title: clock scan error in ::mime::parsedatetime
comment:
  Due to a "clock scan" bug this mime function fails when use german 
  (and probably all other) locales.

  Error message:

  unable to convert date-time string "07 Mär 2004 19:04:52"
      while executing
  "clock scan $gmt"
      ("proper" arm line 3)
      invoked from within
  "switch -- $property {
          hour {
              set value [clock format $clock -format %H]
          }
          lmonth {
              return [clock form..."
      (procedure "::mime::parsedatetime" line ...)

  Simple work around in "proper" arm taht works for me:

          proper {
              set m [lindex {Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov 
  Dec} \
                    [clock format $clock -format "%m"]]
              set gmt [clock format $clock -format "%d $m %Y %H:%M:%S" \
                             -gmt true]
              if {[set diff [expr {($clock-[clock scan $gmt])/60}]] < 0} {
                  set s -
                  set diff [expr {-($diff)}]
              } else {
                  set s +
              }
              set zone [format %s%02d%02d $s [expr {$diff/60}] [expr 
  {$diff%60}]]

              return [clock format $clock \ 
                            -format "%a, %d %b %Y %H:%M:%S $zone"]
          }


  Best regards,
  Christoph


tkt_uuid: 809821ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Accepted
title: tkchat 1.119 user info editor problem
comment:
  The tkchat user info editor dialog fails on my user
  info because some of it looks like Tcl code.  :^)

  Here's a patch to fix that.


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

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


tkt_uuid: 1230737fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: No cleanup after failure in bwidget::init
comment:
  I think there is a bug in Widget::init, line 66 (4th
  from below): set pathopt($option)
  [$Widget::_optiontype($type) $option $value [lindex
  $optdesc 3]].
  The command that gets executed can throw an exception
  for example if an invalid value for an Enum is passed.
  This exception should be caught to unset pathopt and
  pathmod. As it is now, I am tempted to call this a
  memory leak.

  Example run showing the bug:
  wish
  % package require BWidget
  1.7
  % LabelFrame .lblf -side foo
  bad side value "foo": must be left, right, top or bottom
  % namespace eval ::Widget::LabelFrame {puts stderr
  [lsort [info vars]]}
  .lblf:mod .lblf:opt argc argv argv0 auto_index
  auto_oldpath auto_path env errorCode errorInfo map
  map.f map.l map:cmd opt optionClass optionExports sync
  tcl_interactive tcl_libPath tcl_library tcl_patchLevel
  tcl_pkgPath tcl_platform tcl_rcFileName tcl_version
  tk_library tk_patchLevel tk_strictMotif tk_version

  Solution:
  if [catch {$Widget::_optiontype($type) $option $value
  [lindex $optdesc 3]} msg] {
          if { [info exists pathopt] } {
              unset pathopt
          }
          unset pathmod
          return -code error "$msg"
  } else {
          set pathopt($option) "$msg"
  }


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: 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: 1492211fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 7 High
foundin: None
resolution: Out of Date
title: NoteBook Tab Deletion Problems
comment:
  If you have 6 notebook tabs, and start deleting them 
  from the middle to the end (e.g. index 2 -> end), the 
  tabs will either not reorganize properly and the 
  final tab will throw an exception.

  If a middle tab is removed, the tabs should 
  automatically slide-down to take it's place.


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

  * math::calculus 0.6.1
  test name 'NewtonRaphson-2.1' re-used; prior use in
  /local/src/tcllib/modules/math/calculus.test


tkt_uuid: 1172924fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: tklib: ctext
priority: 4
foundin: None
resolution: Accepted
title: doctools style man for ctext
comment:
  Hi,

  attached you'll find a first cut at doctools style
  documentation for the ctext widget. Maybe it is a
  helpful start for using doctools to document ctext. 

  (I was annoyed that no docs for ctext could be found
  inside ActiveTcl...)


  Michael


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

  change lines 392-396

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

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

  (effectively deleting 392-394, 396)

  in listbox.tcl (see attached file)


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

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

  The text should appear in its entirety on all tabs.


tkt_uuid: 602726ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: None
title: Open -mode passive fails
comment:
  Hi all.

  I tried to download a file using the -mode passive
  option when 
  establishing the link. It connected, autenticated, sent the
  data transfer command, but hung on the actual transfer
  - just
  like active mode with a firewall.

  I captured the data stream, and didn't find the PASV
  exchange
  anywhere. To check it the server permitted passive mode, I
  did the exchange with the command-line ftp command - no
  problem. (And the data stream opened with the PASV cmd
  in this case)

  Suggestions?

  John


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

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


tkt_uuid: 1584235fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Nlist against win. IIS behaves bizar
comment:
  Hi,
  Tested with tcllib 1.9 (ftp 2.4.4)
  (Test cases perform different be also 'strange' with
  tcllib 1.8) AGAINST A WINDOWS IIS server! When I test
  against a Solaris machine everything works fine.

  ftp::NList handle ?directory? 
  When directory is passed I encountered following problems:

  Case1: directory has >1 node and NOT ending with a slash
  (eg. edidata/Catalog )The resulting files are prefixed
  with the entire directory. Correct I think BUT the
  filename portion is separared with a backslash (should
  be slash). The directory keeps his slash.

  Case2: When I append a slash to directory
  (edidata/Catalog/). This solves the problem.
  (This is the correct behaviour I think.)

  Case3: directory is only one node and NOT ending with a
  slash (eg. Catalog ) the resulting files are NOT
  PREFIXED with the directory name. (which should be I
  think, altough not documented)

  Case4: When I append a slash to directory
  (edidata/Catalog/). This solves the problem 
  (This is the correct behaviour I think.)


  Testcases:
  on ftp server directory structure:
  editdata/Catalog
  Catalog contains some files eg. 
  einpr45012023322_I.XML einpr45012023322_I.XML

  package require ftp

  set h_ftp [ftp::Open 10.17.100.239 myUser myPwd -port
  23 -mode active]

  # Case 1
  ftp::NList $h_ftp  edidata/Catalog

  # Case 2
  ftp::NList $h_ftp  edidata/Catalog/

  ftp::Cd $h_ftp edidata

  # Case 3
  ftp::NList $h_ftp  Catalog

  # Case 4
  ftp::NList $h_ftp  Catalog/


  Output AGAINST IIS ftp server WITH the option Directory
  listing style = 'MS-DOS':
  % package require ftp
  2.4.4
  %
  % set h_ftp [ftp::Open 10.17.100.239 myUser myPwd -port
  23 -mode active]
  0
  %
  % # Case 1
  % ftp::NList $h_ftp  edidata/Catalog
  {edidata/Catalog\einpr45012023322_I.XML}
  {edidata/Catalog\einpr47121440651_I.XML
  }
  %
  % # Case 2
  % ftp::NList $h_ftp  edidata/Catalog/
  edidata/Catalog/einpr45012023322_I.XML
  edidata/Catalog/einpr47121440651_I.XML
  %
  % ftp::Cd $h_ftp edidata
  1
  %
  % # Case 3
  % ftp::NList $h_ftp  Catalog
  einpr45012023322_I.XML einpr47121440651_I.XML
  %
  % # Case 4
  % ftp::NList $h_ftp  Catalog/
  Catalog/einpr45012023322_I.XML
  Catalog/einpr47121440651_I.XML

  Output (OK I think) AGAINST SOLARIS machine (ftpd daemon):

  % package require ftp
  2.4.4
  %
  % set h_ftp [ftp::Open srvdev myUser myPwd -port 21
  -mode active]
  0
  %
  % # Case 1
  % ftp::NList $h_ftp  edidata/Catalog
  edidata/Catalog/einpr45012023322_I.XML
  edidata/Catalog/einpr47121440651_I.XML
  %
  % # Case 2
  % ftp::NList $h_ftp  edidata/Catalog/
  edidata/Catalog/einpr45012023322_I.XML
  edidata/Catalog/einpr47121440651_I.XML
  %
  % ftp::Cd $h_ftp edidata
  1
  %
  % # Case 3
  % ftp::NList $h_ftp  Catalog
  Catalog/einpr45012023322_I.XML
  Catalog/einpr47121440651_I.XML
  %
  % # Case 4
  % ftp::NList $h_ftp  Catalog/
  Catalog/einpr45012023322_I.XML
  Catalog/einpr47121440651_I.XML

  Output AGAINST IIS with directory listing style = 'UNIX':
  % package require ftp
  2.4.4
  %
  % set h_ftp [ftp::Open 10.17.100.239 els.vedior
  mon23oct -port 23 -mode active]
  0
  % # Case 1
  % ftp::NList $h_ftp  edidata/Catalog
  edidata/Catalog/einpr45012023322_I.XML
  edidata/Catalog/einpr47121440651_I.XML
  %
  % # Case 2
  % ftp::NList $h_ftp  edidata/Catalog/
  edidata/Catalog/einpr45012023322_I.XML
  edidata/Catalog/einpr47121440651_I.XML
  %
  % ftp::Cd $h_ftp edidata
  1
  %
  % # Case 3
  % ftp::NList $h_ftp  Catalog
  einpr45012023322_I.XML einpr47121440651_I.XML
  %
  % # Case 4
  % ftp::NList $h_ftp  Catalog/
  Catalog/einpr45012023322_I.XML
  Catalog/einpr47121440651_I.XML

  THIS IS ALMOST CORRECT in "Case 3" the file is not
  prefixed with the directory.

  My Workarounds: 
  1) Avoid IIS
  2) If IIS: set directory listing to UNIX, and do not
  use single node directories (I added an extra directory
  level just to avoid this problem)


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


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

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

  make install

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

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


tkt_uuid: 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: 480227ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Fixed
title: comm.n manpage needs update
comment:
  (per request)

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

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

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


tkt_uuid: 466219ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: Extend handling of userinfo
comment:
  * display userinfo in a dialog box if asked.
  * optionally display the images (if registered)
    for the people recognized as online.


tkt_uuid: 1611929fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 8
foundin: None
resolution: Fixed
title: Suggestions for improving doctools documentation
comment:
  I recently put together a fairly large man page for my Amazon S3 library.
  In developing the library, I wrote all the documentation into a plain text file before writing the code. Then it came time to format the manual page in a way that would be easy to incorporate into Tcllib. I had trouble. :-)

  I recognise that Tcllib is a free resource maintained by many out of the goodness of their heart. I would like, in that spirit, to describe some of the things
  that gave me trouble in writing the manual pages, and to suggest some improvements.
  I do not intend this to be interpreted as demands, criticisms of past work, or ingratitude in any way. I would like this to be interpreted merely as suggestions
  on how the documentation could be more helpful to those in my situation: people trying to follow existing standards in developing new libraries for Tcl.

  Note too that I make a lot of rhetorical questions. Many of these I still don't know the answer to, but I don't expect any sort of specific reply to any of the
  comments, complaints, suggestions, or questions. I offer this purely in the spirit of "here is my experience, and if you'd like to improve that for others, I thank you for your time."


  I think there are two giant unobviousnesses from reading the doctools pages.

  1) What does a manual page look like?

  2) How do you process manual pages into readable documentation?

  As for the first part, let's look at doctools_fmt. (I haven't tried to do any directory or TOC work.)

  The new EBNF grammar is helpful, but confusing at the same time. *My* confusion comes perhaps from using EBNF in RFCs and such (which is where I assume the "EBNF" comes from), and having the EBNF shown here not follow the same rules. There is no literal "]" anywhere in the EBNF, so already it's obvious that something is "wrong" with the EBNF. THe "COMMENT" production yields "comment", but neither [comment] nor [comment here comes stuff] is a valid command. 

  It would be helpful to give a reference to how to interpret the EBNF, just in terms of the syntactic elements such as curly braces. (Since it looks like curly braces are the only "extended" feature, perhaps simply mentioning that it means "zero or more times" would be sufficient.)


  The block after the sentence "Then we define rules for all the keywords. Here we introduce our knowledge that some commands allow only whitespace after them." could be completely eliminated simply by using the same spelling for both sets of terms. Why equate EX_BEGIN to "example_begin" when you could just use "EXAMPLE_BEGIN"? It's also incorrect to state that some commands allow only whitespace after them, when what is really meant is they disallow non-whitespace text between the end of the command and the start of the next command. 
  It also looks, on first glance, the the block of EBNF after that already indicates where a "text_chunk" or a "regular_text" can appear. Indeed, the last chunk of EBNF is the only chunk that's notably useful. That the EBNF lacks the information about what arguments the formatting commands take 
  (which could have been in the second block) is also a stumbling block, inducing scrolling up and 
  down looking for the various details needed to type one line of manual.

  For example, in the second block you could just have
    BULLET ::= "[" "bullet" "]"
    SECTION ::= "[" "section" ARG "]"
  and then ARG could be defined as
    ARG ::= (all text except WHITE or "]") | QUOTE (all text except QUOTE) QUOTE
    QUOTE ::= (a literal " mark)

  Alternately, just giving a good example would clarify a lot of things, since the intent is to describe rather than prescribe.

  Those who work with other markup languages might find it surprising that when [comment] takes a single argument, [comment here is text] is illegal and must be [comment "here is text"]. That it takes Tcl-style quoting (with " or {} but not ') might be more surprising. (Or not, of course.)

  In understanding this stuff, it's often useful to have even a simple example, or a ferinstance, for unobvious manipulations of never-before-seen terms. "Vset varname value" - what's a "document variable"? Is it like a macro? Is it something that the processing engine plug-in uses?  Adding a comment like "Useful in the same way a global constant is in a program" or "helpful when a phrase that might change is repeated in several places in the manual" or some such might help.

  see_also doesn't describe the format of its arguments. If they're links, it's unobvious what format they need to be in. Similary for keywords. Funny enough, the "see also" on this page are *not* links, while the keywords *are* links, which would seem counterintuitive. The labels to see_also identifying the document don't identify the document; they give the human-readable name of the document, and assume the reader can identify the document from the name. (A URL, for example, would identify the document, or an argument that the processing engine could turn into a URL.) The statement that "each argument is a single keyword" confuses the fact that it's actually (in this document) an entire [uri] production it seems.

  It's not obvious what the difference between [arg] and [arg_def] is, given the description; similarly for other pairs of similar terms. For things like [arg] and [cmd], I would use the expression "formats the argument /text/ as the name of a command argument" rather than "declaring" something. Particularly given that [call] actually declares something in the sense that I (at least) think of as a declaration. I think programmers normally think of "declarations" as something you later refer back to, rather than simply formatting commands. The authors of the doctools probably think of it as declaring the text as something to the formatting engine, but I think that's confusing for users of the formatting engine. What does the "declaration" of a namespace imply, beyond simply formatting it a certain color? Does it show up anywhere else? I would think that only [call] and [section] actually declare something, as such. Possibly [keyword] and [see_also] as well, as they seem to move the text around some. Otherwise, [emph] would declare the word to be emphasised.

  All the different "declares that the argument /text/ is the name of ..." don't really say anything, in the same sense that {incr x ; # increment x} isn't a useful comment. It might be useful to have a call or two as an example, formatted, and show what the markup is for each element of the call. Have a Tcl proc with positional, optional, and -keyword based arguments, an expr function, a Tk widget creation call, a widget call, and a ITcl/Snit/whatever call, and show the markup for each in the example section. (See the next paragraph for why this would be helpful.)

  The documentation for list_begin is confusing, if for no other reason than it is unclear which half of the nested list the "what" refers to. Is it [list_begin arg] or [list_begin arg_def]? An example of each use would probably be helpful. Mentioning that it is the [call] tag that actually places the call in the list at the top of the man page would also be useful. A_LIST is confusing because it tells only half the story, and you have to go read the prose about the "list_begin" command (several screens away) to figure out there's an argument-matching condition. Does the list of options need to have [option] in it? That is, should it be [opt_def -possible] or should it be 
  [opt_def [option -possible]] or should it be 
  [opt_def [opt [option -possible]]]? Or is it just 
  [lst_item [option -possible]]?

  What's the difference between [cmd_def] and [call]? Impossible to guess from the documentation. Given the unobvious-to-the-uninitiated behavior of [call], the description of [usage] is even more incomprehensible.

  What's the difference between [para] and [nl]? Why is one permitted only inside lists and the other permitted only outside lists? Is there a user-interesting reason for this, or is it simply a restriction of the formatting engines?

  The "Example" section is useless. It should at a minimum mention where to get the source of man pages. While almost every possible construct is used here, I suspect they're not used correctly, since there is no actual documentation of (for example) tkoptions, args, etc. I.e., it may be an example of how the formatting looks, but not how it is supposed to be used.

  The description of everything is in a really difficult order. It's neither alphabetical, nor top-down, nor bottom-up. 

  As for the processing, giving an example of how to invoke dtp.kit would help. I'm not sure where I got mine (it was recently downloaded, tho), but simply double-clicking the .kit under Windows simply says it can't read "C:\Document", indicating it's not handling directory spaces correctly. Figuring out that it needs to be invoked from the command line as 
    tclsh dtp.kit doc html S3.man >S3.html
  was unnecessarily difficult. True, it's giving options for setting the processing engine and all, so it's understandable why it's difficult, but the documentation should address this, possibly in a section called "GETTING STARTED", so it's easy to find. Adding a -version flag/option/etc would probably be a good idea.

  I think that any or all of these four overhauls would make the documentation much more useful:

  1) Fix the EBNF to actually generate valid documents when expanded. Put in the work to deal with the literal text, the arguments, etc. Either that, or drop the first two blocks, since they're basically uninformative given the third block.

  2) Give a pointer to an example manual page that uses all the features in the correct way. Create a namespace called "docexample" and create in it a command with options and optional arguments, tk-style commands, and so on. Give people a skeleton framework from which to work.

  3) Give instructions on finding and using the latest version of the processing program, at least to the extent that a user can figure out whether what they've written matches what the program will process. If they can't even experiment, it's difficult to get right. Simply a URL to where the latest release is stored along with instructions on invoking it to generate (say) HTML, would be helpful. 

  4) Improve the error messages. I'm personally used to using systems that don't tell you where the error is, requiring adding text a paragraph at a time so you know what you changed since it last worked. Many aren't. I know it's difficult, tho, probably moreso with a plug-in architecture. Perhaps offer hints or, again, a skeleton to start with.

  My guess is that 2 and 3 are probably pretty easy for those currently in-the-know about this tool, and that they'd also produce the most bang for the buck.


tkt_uuid: 740499ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: Missing docu for suppressing a drag in the -draginitcmd
comment:
  Sometimes, it's very handy, to be able to suppress a
  drag in the -draginitcmd (say, for example, a tree
  widget has nodes, which are dragable and others, which
  are not, in the logic of the application). It seems,
  the current implemention allows this (see proc
  DragSite::_init_drag) --- if the -draginitcmd returns
  {} instead of the expected 3 elements lists, there is
  no error raised, but some explicte cleanup. The
  documentation doesn't mention this. I propose, to add
  something like

  "If the command returns an empty string, the drag will
  be suppressed."

  at the end of the DragSite:register -draginitcmd
  documentation.


tkt_uuid: 505299ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget errors with multiple screens
comment:
  While trying the BWidget 1.3.1 demo on Windows 2000 
  with Tcl 8.3.3 (the ActiveState 8.3.3 release) I found 
  a problem with the ComboBox widget when run on the 
  second monitor of a multi-screen windows system.

  Running the demo app on screen 2, when I select the 
  ComboBox button to show the list, the list appears on 
  the primary monitor! Running the app on the primary 
  monitor is OK.

  A similar problem occurs with the dialog demos. The 
  color picker, font selector, progression, and password 
  dialogs all appear on the wrong monitor. The message 
  box appears on the _correct_ monitor but not the 
  template dialog.

  Finally the tree page doesn't work at all if run on 
  the secondary monitor although it's fine on the 
  primary monitor. The error stack is attached.

  So I assume this is a toplevel problem - and indeed 
  from wish doing 'toplevel .t' on the secondary screen 
  puts a toplevel widget on the primary screen. Placing 
  the widget on screen 1 'wm geometry .t' 
  gives '200x200+0+0' and top left of monitor 2 (which 
  is to the left of monitor 1) gives '200x200+-1024+0'


tkt_uuid: 3610022fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Invalid
title: Unprotected close causes script crash
comment:
  In tcllib /modules/ftp on a line near the end of the ftp.tcl file there is:

  close $ftp(SourceCI)

  Can you please change this to:

  catch {close $ftp(SourceCI)}

  to prevent crashes? Thanks!


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


tkt_uuid: 747541ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Accepted
title: ::mime::word_decode: lowercase method
comment:
  ::mime::word_decode expects the encoding method to be either B or Q. While testing code with one of the Debian mailing lists, I encountered one mail with a lowercase letter "q".

  Attached is the (simple) patch for tcllib 1.4.


tkt_uuid: 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: 1416813fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: stack
priority: 5 Medium
foundin: None
resolution: Fixed
title: stack: test suite bug
comment:
  with -debug 1:

  * struct::stack 1.3.1
  test name 'stack-8.4' re-used; prior use in
  /local/src/tcllib/modules/struct/stack.test


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: 946856ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 7 High
foundin: None
title: Enhance uri command
comment:
  I would like to generate a URL link in the output (html)
  where the displayed text is something other than the 
  link itself. The uri command doesn't seem to allow this. 
  In other words, I want to say

  [uri "http://foo.com" FOO] 

  and have it generate 

  "<a href='http://foo.com'>FOO</a>".


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: 2872536fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: stripPath checks partial path components
comment:
  Example:
  (woof) 51 % fileutil::stripPath c:/temp c:/tempx/foo/bar
  foo/bar

  Should return c:/tempx/foo/bar

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


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

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

  The last command fails, returning an error.

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

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

  Greetings,

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


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


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


tkt_uuid: 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: 1633074fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Accepted
title: tkchat extra features
comment:
  Hi,

  This patch is a diff of tkchat.tcl (1.356) and the modified tkchat.tcl with following features:

  New commands:
  -------------

  * /wikip <text>

  Search wikipedia with specified text

  * /wikid <text>

  Search Wiktionary with specified text

  Updated commands:
  -----------------

  * /googlefight

  Web interface changed

  New feature:
  ------------

  * Highlight and raise alert for specified subjects

  Specify subjects as 'string match' patterns. If a message matches a specified subject, it will be colored (background yellow by default). The subjects are saved in the tkchat resource file. The background color is adjustable through the colors dialog. It's also possible to trigger an alert when a message matches a subject.

  Kind regards,

  Jos.


tkt_uuid: 1854983fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 5 Medium
foundin: None
resolution: Duplicate
title: assign-4.4 test case failure
comment:
  Using the latest cvs head, and tcl cvs head,

  ==== 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: 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: 1908098fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: set
priority: 7 High
foundin: None
resolution: Fixed
title: ::struct::set include errors for non-existing dst variable
comment:
  %puts $tcl_version
  8.5
  % package require struct::set
  2.2.2
  % ::struct::set include myset A      <- non initialized set but there is no constructor!
  can't read "myset": no such variable
  % ::struct::set include myset A      <- second try it's ok ?
  % ::struct::set include myset B
  % ::struct::set include myset C
  % ::struct::set size myset   
  1                                    <- must be 3
  % puts $myset
  A B C
  % ::struct::set exclude myset A
  % ::struct::set exclude myset B
  % ::struct::set exclude myset C
  % puts $myset

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


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

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

  hist2x 435 microseconds per iteration
  Pausing during timehist tests

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

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

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

  timehist 291 microseconds per iteration


tkt_uuid: 992481ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
resolution: Duplicate
title: typo in logger::services proc
comment:
  The logger::services always returns "services", see below:

  godel:678> tclsh
  % package provide ActiveTcl
  8.4.6.0
  % package require logger
  0.3
  % logger::init foo
  ::logger::tree::foo
  % logger::init bar
  ::logger::tree::bar
  % logger::services
  services
  % exit
  godel:679> 

  This is because there is a typo in the services proc.
  The variable name is not accessed using $. See below:

  proc ::logger::services {} {
      variable services
      return services     <---- should be "return $services"
  }


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: 2783215fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Invalid
title: search result is incorrect with multibyte characters
comment:
  This problem is best explained with the screenshot I attached.

  In my case all Chinese characters are broken, I think other multibyte UTF-8 string data should also be broken. Easily reproducible, we have this problem on Windows as well as Linux (where the screenshot was taken). The screenshot was taken from a system with UTF-8 locale setting.


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

  Something along the lines of

  ncgi::headers text/html

  is what I'm thinking of.


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

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

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

  This no longer is the case.

  from $HOME/.tkchatrc, I see:

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

  plus more.

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


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

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

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

  The following is a fix :

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

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

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


tkt_uuid: 3609843fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: sha1
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: sha256 output is wrong on 32bit Linux
comment:
  I am using ActiveState Tcl for 32bit and 64bit Linux. 
  The command is:
  sha2::sha256 -hex tk

  The output is:
  32bit Linux:
  0b9422c2ca451b24fea81114412fb2c61e2ced68889466119b72d36c4ec3c337

  64bit Linux:
  1ec22d56dbbc91e849b00643bc4f10eb764441c93bde5c6090fe81db55cf6932

  When using any web based sha256 generators the output is:
  1ec22d56dbbc91e849b00643bc4f10eb764441c93bde5c6090fe81db55cf6932

  Therefore, 32bit sha256 output seems to be incorrect.

  NOTE: A ticket  ID: 3609575 was open for this issue under Tcl tracker:
  http://sourceforge.net/tracker/?func=detail&aid=3609575&group_id=10894&atid=110894

  I am closing that ticket and moving it to tcllib since it has been determined that the problem is with the accelerated code in tcllibc (when forced to use plain Tcl, the code behaves correctly).  


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


tkt_uuid: 3396787fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: json
priority: 5 Medium
foundin: None
resolution: Fixed
title: strange if condition in json::write
comment:
  proc ::json::write::indented and proc ::json::write::aligned both start with the following test:

  if {[llength [info level]] > 2} { 

  this should never ever be true. possibly " ..[info level 0].." was meant, but if I try [::json::write::indented 1 1] for example,
  the interpreter would interupt execution, throwing an error itself, doesn't it.


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

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

  Solution is to add

  fconfigure $fh -translation binary 

  into jpeg::removeComments routine just after 

  set fh [open $file w]


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

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

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

  namespace eval foo {
  ...
  }

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

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

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

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


tkt_uuid: 2022905fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: Build System & Testing
priority: 2
foundin: None
resolution: Not Applicable Here
title: 74 test failures with Tcl HEAD (wrong # args)
comment:
  Many of tcllib's tests depend on the precise form of error messages emmitted by Tcl. Tcl makes no guarantee about that.

  Recently there was a reform of Tcl's "wrong # args" messages, and tcllib shows 74 test failures. I have not verified all of them, but those I did happen to be of this kind.

  Testing for error messages should be as lax as possible.


tkt_uuid: 1009003fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
resolution: Invalid
title: "graph arcs -in, -out" broken?
comment:
  I can't thank you enough for support. ::struct::graph 
  can save my project. 

  In the following program using ::struct version 2.0, I 
  expected to see no loops and exactly 2 arcs between 2 
  dissimilar nodes. I am getting something different.

  BTW, I have applied your earlier change for null graphs 
  before running this.

  Thanks in advance,
  -Bhushit

  ######### graph1.tcl ###########
  package require struct
  puts [ package versions struct ]
  set x [ ::struct::graph ]
  puts "created $x"

  set a [ $x node insert ]
  set b [ $x node insert ]

  set c [ $x arc insert $a $b ]
  set d [ $x arc insert $b $a ]
  puts "inserted $c from $a to $b"
  puts "inserted $d from $b to $a"

  set e [ $x arc insert $a $b ]
  set f [ $x arc insert $b $a ]
  puts "inserted $e from $a to $b"
  puts "inserted $f from $b to $a"

  foreach n1 [ $x nodes ] {
      foreach n2 [ $x nodes ] {
  foreach arc [ $x arcs -out $n1 -in $n2 ] {
      puts "from $n1 to $n2 : $arc"
  }
      }
  }

  ######## output #########
  expectk5.40.0 > source graph1.tcl
  2.0 1.4 1.3
  created ::graph9
  inserted arc1 from node1 to node2
  inserted arc2 from node2 to node1
  inserted arc3 from node1 to node2
  inserted arc4 from node2 to node1
  from node2 to node2 : arc1
  from node2 to node2 : arc3
  from node2 to node2 : arc1
  from node2 to node2 : arc3
  from node2 to node1 : arc1
  from node2 to node1 : arc3
  from node2 to node1 : arc2
  from node2 to node1 : arc4
  from node1 to node2 : arc2
  from node1 to node2 : arc4
  from node1 to node2 : arc1
  from node1 to node2 : arc3
  from node1 to node1 : arc2
  from node1 to node1 : arc4
  from node1 to node1 : arc2
  from node1 to node1 : arc4

  ###### expected output #######
  expectk5.40.0 > source graph1.tcl
  2.0 1.4 1.3
  created ::graph9
  inserted arc1 from node1 to node2
  inserted arc2 from node2 to node1
  inserted arc3 from node1 to node2
  inserted arc4 from node2 to node1
  from node2 to node1 : arc2
  from node2 to node1 : arc4
  from node1 to node2 : arc1
  from node1 to node2 : arc3

  ### Difference between 2.0 and my graph.tcl ###
  ### < mine, > released ###

  1134,1139c1134
  <     if { [ info exists ina ] } {
  <       unset ina
  <     }
  <     if { [ info exists outa ] } {
  <       unset outa
  <     }
  ---
  >     unset ina outa
  1145,1147c1140
  <     if { [ info exists arcn ] } {
  <       unset arcn
  <     }
  ---
  >     unset arcn
  2703,2708d2695
  < 
  <     array set nodeAttr  {}
  <     array set arcAttr   {}
  <     array set inArcs    {}
  <     array set outArcs   {}
  <     array set arcNodes  {}


tkt_uuid: 1027568fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: MainFrame: showstatusbar does not restore bottom frame.
comment:
  Hi,

  For the MainFrame widget the following occurs.

  .mf showstatusbar none
  .mf showstatusbar progression

  The first time showstatusbar with "none" is specified
  it unmaps the bottom frame. Then when progression
  is specified the bottom frame is not mapped. The
  status bar and progressbar come back but not the
  bottom frame they were in.

  I was able to fix it by modifying the showstatusbar proc
  to pack the bottom frame and not just the status bar
  when the name argument is not "none".

  Greg Pierce


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

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

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

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


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

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

  in function ::ftp::ElapsedTime 

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


tkt_uuid: 2690366fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Tk GUI for dtplite
comment:
  Extend dtplite with a Tk GUI which is invoked when the app is run without arguments => Windows, double-click, becomes meaningful.
  No real ideas yet  about how this GUI should look like. Maybe follow the use cases we have for the command line and make it wizard-style.


tkt_uuid: 1891275fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: math :: bignum :: float
priority: 5 Medium
foundin: None
title: ::math::bigfloat::tostr should be able return non-sci notat
comment:
  ::math::bigfloat::tostr [::math::bigfloat::div [::math::bigfloat::fromstr 15637289764914.0 10] [::math::bigfloat::fromstr 2.0 10]]  yeilds 7.818644882e+12

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


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

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

  And a solution, by Kevin:

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

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

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

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


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

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

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


tkt_uuid: 553848ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: stooop
priority: 5 Medium
foundin: None
resolution: Fixed
title: reliance on [namespace] bug.
comment:
  The tests stooop-86,87,89,90,95,96,97 all fail when
  tested with current development Tcl (8.4a5).  This
  is because the current Tcl sources have fixed Tcl
  Bug 545325 -- the failure of [namespace eval]s to
  appear as the results of [info level] calls.

  Unfortunately, stooop appears to expect the buggy
  behavior -- at least in its "debugging" mode.


tkt_uuid: 3437761fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: keyboard traversal broken if spaces in widget pathnames
comment:
  If you have widgets whose pathnames contain spaces, you get errors when attempting to traverse focus between them with the Tab key. Example error log pasted below. 
  Annoyingly, this error affects all Tk widgets including ttk, once the BWidget package has been loaded.

  wrong # args: should be "ttk::takefocus w"
      while executing
  "ttk::takefocus .foo bar"
      ("uplevel" body line 1)
      invoked from within
  "uplevel \#0 $value $w"
      (procedure "focusOK" line 12)
      invoked from within
  "focusOK $cur"
      (procedure "Widget::focusNext" line 36)
      invoked from within
  "Widget::focusNext .foo\ foo"
      invoked from within
  "Widget::traverseTo [Widget::focusNext .foo\ foo] "
      (command bound to event)


tkt_uuid: 458301ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget ArrowButton bug (1.3.1) [patch]
comment:
  ArrowButtons, in version 1.2.1 (the latest release from Unifix),
  you could make a button a specific color, and place it in a frame of the
  same color without any problem.
  In 1.3.1 though, a gray outline appears, that cannot be eliminated
  through the ArrowButton options. This is because in 1.3.1 a frame is
  used to enclose all widget ellements.
  This frame has the default borderwidth and colour (1 & gray in my system),
  thus making a gray rectangular around the button.

  In my opinion, the solution is to set the borderwidth to 0 when creating
  the frame. So, line 89 in arrow.tcl has to be changed to

  frame $path -class ArrowButton -borderwidth 0 -highlightthickness 0

  in order to work as expected. (-highlightthickness 0 is not required, but
  why not :-))


tkt_uuid: 611595ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: ncgi
priority: 8
foundin: None
resolution: Accepted
title: file upload support + fix for binary
comment:
  the attached path adds two functions to ncgi to support
  file upload. ncgi::import_file gives information about
  an uploaded file (modelled on the cgi.tcl interface but
  adds a -data option to get the data without writing it
  to a local file)  ncgi::tempfile is used to generate a
  temporary filename, maybe that belongs in fileutils. 

  I've also fixed a bug (I think) relating to uploading
  binary files which is to put stdin into -translation
  binary -encoding binary before reading the form data.
  Without this I was seeing translation of cr to nl cr in
  the uploaded data.  The changed version passes the test
  suite no problem but then so does the original so the
  binary test obviously isn't triggering this bug. 
  haven't got time just now to put together a test that
  does trigger the bug, sorry.


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

  approx. line 42 - change appropiate to appropriate.

  approx. line 50 - copleted should be completed.


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


tkt_uuid: 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: 688965ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Accepted
title: better -? help for fileutil::touch
comment:
  the cmdline::getoptions help is a bit bull-headed about
  displaying argv0.  This isn't great for using
  getoptions internally for procs.

  Nevertheless, the fileutil::touch proc could be
  modified to look better

  Now, it looks like:
  $ echo 'package req fileutil; fileutil::touch
  -help'|tclsh
  tclsh options:
   -a                   set the atime only
  ...

  ("tclsh options:"??)

  The attached diff provides:
  $ echo 'package req fileutil; fileutil::touch
  -help'|tclsh
  tclsh : fileutil::touch [options] filename ...
  options:
   -a                   set the atime only
  ...


tkt_uuid: 1023973fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: record
priority: 5 Medium
foundin: None
resolution: Fixed
title: error in assigning structs #auto numbers
comment:
  if you create a record with #auto this gives record
  xxx1 $_count($defn_)= 1
  and then a second with #auto this gives record xxx2
  $_count($defn_) = 2
  then delete first record $_count($defn_)= 1

  now create some more records when $_count($defn_)= 2
  get error "Instances $inst_ already exists" from Create
  because of decrement of in Delete

  bug fix


  proc ::struct::record::Delete {sub_ item_} {

      variable _recorddefn
      variable _defn
      variable _count
      variable _defaults

      ##
      ## We just semi-blindly prepend :: to the record_
  argument
      ##
      if {![string match "::*" "$item_"]} {set item_
  "::$item_"}

      switch -- $sub_ {

          instance -
          instances -
          inst    {


              if {[Exists instance $item_]} {
          
  set ns $_defn($item_)
                  foreach A [info commands ${item_}.*] {
      Delete inst $A
                  }
          
                  catch {
                      foreach {k v} [array get [Ns
  $item_]values $item_,*] {
                          
                          unset [Ns $item_]values($k)
                      }
                      set i [lsearch [set [Ns
  $item_]instances] $item_]
                      set [Ns $item_]instances [lreplace
  [set [Ns $item_]instances] $i $i]
                      unset _defn($item_)
                  }
                  # NO NO!! we must have a monotonically
  incrementing record count
  # otherwise the next but one creation could fail as
  we will recreate this record and then
  # next time try to create a record ontop of a deleted
  on [of course we could have a free list ha ha!]
  # gst  
                  #incr _count($ns) -1
          
              } else {
                  #error "$item_ is not a instance"
              }
          }
          record  -
          records   {


              ##
              ##  Delete the instances for this
              ##  record
              ##
              foreach I [Show instance "$item_"] {
                  catch {Delete instance "$I"}
              }

              catch {
                  unset _recorddefn($item_)
                  unset _defaults($item_)
                  unset _count($item_)
                  namespace delete ::struct::record${item_}
              }

              
          }
          default   {
              error "Wrong arguments to delete"
          }

      }; # end switch

      catch { uplevel #0 [list interp alias {} $item_ {}]}

      return

  }; # end proc ::struct::record::Delete


  garyt@bmb.leeds.ac.uk


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

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

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

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

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

      (Should this go to a Wiki page?)

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

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

  -Jussi Kuosa


tkt_uuid: 3483716fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: transfer encoding ignored for message/*
comment:
  The handling of message/* types in ::mime::parsepart currently ignores the Content-Transfer-Encoding (tcllib 1.13 / mime 1.5.4) .

  Example

  Content-Type: message/delivery-status; name="deliverystatus.txt"
  Content-Disposition: attachment; filename="deliverystatus.txt"; size=138;
  creation-date="Thu, 02 Feb 2012 13:50:05 GMT";
  modification-date="Thu, 02 Feb 2012 13:50:05 GMT"
  Content-Description: deliverystatus.txt
  Content-Transfer-Encoding: base64

  T3JpZ2luYWwtUmVjaXBpZW50OiA8L2ZheD1ibHViYkBndW1taS5ib290PgpBY3Rpb246IGZhaWxl
  ZApEaWFnbm9zdGljLUNvZGU6IHNtdHA7IDU1MCAjNS4xLjAgQWRkcmVzcyByZWplY3RlZC4KUmVt
  b3RlLU1UQTogNTMuMjQuMjgyLjE1MA==


  The attached patch fixes this problem for base64 encoded messages.


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

  Apparently, the above changes break things badly:

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

  And I get (look at the date):

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

  body
  ---

  Tcl is 8.4.12 on a x86_64 machine.


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

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

  The relevant code snippet is:

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

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


tkt_uuid: 443124ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: bwidget
priority: 7 High
foundin: None
title: add 'Color' to list of bwidget option types
comment:
  It's not unusual to add an option to a megawidget that 
  represents a color, but there's no option type 
  for "Color".  For example, I would like to be able to 
  do this:

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

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

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

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


tkt_uuid: 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: 2605849fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: tkchat: use tk appname for use in windowmaker dock
comment:
  The windowmaker dock uses the WM_CLASS of the main window to check if the application is launched and to allow minimize to dock.
  When running tkchat from a starpack, the window class is not specific enough to allow reliable docking of the app without picking up other wish application.

  It would be nice if a distinctive [tk appname] is declared for the application.


tkt_uuid: 465210ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::csv::joinlist sepChar handling
comment:
    file: csv.tcl Rev. 1.5

    procedure: ::csv::joinlist

  doesn't handle "sepChar" argument.
  "join $record" should be "join $record $sepChar"


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

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

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


tkt_uuid: 1572463fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: math :: geometry
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: areaPolygon incorrect
comment:
  I think the algorithm used by areaPolygon is incorrect.
   For example:

  package require math::geometry
  set polygon [list -10 -10 10 -10 10 10 -10 10]
  ::math::geometry::areaPolygon $polygon

  returns 200.0, when the correct result for this 20x20
  rectangle should be 400.0, as noted in the comments for
  the proc.

  See Kevin Kenny's proc parea at
  http://wiki.tcl.tk/12081 for an alternate implementation.


tkt_uuid: 772491ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 7 High
foundin: None
title: doctools: html out - generate in-document toc (of sections)
comment:
  HTML output should not only have
  a generated synopsis, but also a generated table of 
  contents (= list of sections in the file) at the head of 
  the file.


tkt_uuid: 1904210fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: linearalgebra
priority: 5 Medium
foundin: None
resolution: Invalid
title: eigenvector-1.0 fails
comment:
  ---- Result was:
  {{0.70710678118654757 -0.70710678118654735} {0.70710678118654746 0.70710678118654768}} {3.0 1.0}
  ---- Result should have been (numbers matching):
  {{0.707107 -0.707107} {0.707107 0.707107}} {3.0 1.0}
  ==== eigenvectors-1.0 FAILED

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


tkt_uuid: 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: 2787933fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: md5
priority: 8
foundin: None
resolution: Fixed
title: Leak: md5 or trf?
comment:
  The following script leaks when Trf is loaded (run it under nice: tight busy loop!):

  package require md5 2
  set digits {0 1 2 3 4 5 6 7 8 9 A B C D E F}

  # any init will do
  set hx [::md5::md5 -hex {}]

  while {$hx ne [::md5::md5 -hex $hx]} {
      # bernoulli-like shift with random last hex
      set idx [expr {int(floor(16*rand()))}]
      set hx [string range $hx 1 end][lindex $digits $idx]
  }

  puts "Found it! It is '$hx'"


tkt_uuid: 456883ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Cannot dnd into empty ListBox
comment:
  This seems to be an old problem. I found traces in
  a google search but the patch mentioned was nowhere 
  to be found :(.

  I noticed the behaviour in a current cvs version of
  bwidget.


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: 3106443fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tklib :: tooltip
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: invalid option processing in tooltip::tooltip
comment:
  tooltip::tooltip try to process argument starting with "-" as option

  Example:

  tooltip::tooltip .e "-10.0 .. 10.0"

  generate error

  unknown option "-10.0 .. 10.0": should be -index, -items or -tag
      while executing
  "register .e {-10.0 .. 10.0}"
      (in namespace inscope "::tooltip" script line 1)
      invoked from within
  "::namespace inscope ::tooltip {register .e {-10.0 .. 10.0}}"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 [namespace code "register [list $w] $args"]"
      (procedure "tooltip::tooltip" line 35)
      invoked from within
  "tooltip::tooltip .e [msgcat::mc "$minPosition .. $maxPosition"]"
      (procedure "::widget::form1::Snit_constructor" line 115)
      invoked from within

  Alse tooltip::tooltip have no "--" parameter, to specify end of options.


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

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


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

  * units 2.1
  test name 'units-4.6' re-used; prior use in
  /local/src/tcllib/modules/units/units.test
  test name 'units-9.1' re-used; prior use in
  /local/src/tcllib/modules/units/units.test
  test name 'units-9.1' re-used; prior use in
  /local/src/tcllib/modules/units/units.test
  test name 'units-9.1' re-used; prior use in
  /local/src/tcllib/modules/units/units.test
  test name 'units-9.1' re-used; prior use in
  /local/src/tcllib/modules/units/units.test


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


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

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

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

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


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

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

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

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

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

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

  Thanks in advance.


tkt_uuid: 3304371fffffffffffffffffffffffffffffffff
type: Bug
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.

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

  The patch also includes updates to the manual page.


tkt_uuid: 1800599fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Generate html redirect pages to sub-commands
comment:
  If more than one command is documented in a single page, and you want to link to the HTML output from an external source, you need to know which top-level page the command appears in.

  For each command on a page which does not share it's name with the page itself, I would like dtplite to emit a stub HTML page, named after the command.

  It should have a link to the correct page, including the correct fragment within the page. e.g.

    <a href="ns_log.html#ns_logctl">ns_logctl</a>

  In the html header, it should contain the following meta tags:

  <meta http-equiv="Refresh" content="1;url=ns_log.html#ns_logctl">

  <meta name="ROBOTS" content="NOINDEX">


  The first one to automatically redirect the user to the correct page. The second one to discourage google from indexing.

  The stub pages do not need to be linked from the TOC or keyword index.


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

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

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

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


  Please insert

  package require Tcl 8.3

  to mpexpand and it'll work.


tkt_uuid: 947109ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: font selection dialog up/down bindings
comment:
  The listbox used to select the font should have the 
  following bindings added such that when the up/down 
  cursor keys are used in the listbox, the sample font is 
  shown in the sample area.

  In SelectFont::create procedure, add

          bind $lbf <Up>    $script
          bind $lbf <Down>   $script

  after existing bindings

          bind $lbf <ButtonRelease-1> $script
          bind $lbf <space>           $script
          bind $lbf <1>               [list focus %W]


tkt_uuid: 3002617fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: des , des-mode parameter and key padding
comment:
  At the moment , the des module defines which DES mode to use based on the key length (64 bit for DES and 192 bit for 3DES) , so you have to provide a key with a right length. 
  I think it'd be easier to have a parameter that let's the developer indicates which mode to use. Then if the key is to short, it should be padded with nulls to meet the required length.  Something like :
  ::DES::des ?  -des-mode [DES|3DES] ? -mode [ecb|cbc|cfb|ofb] ? ? -dir [encrypt|decrypt] ? -key keydata ? -iv vector ? ? -hex ? ? -weak ? ? -out channel ? ? -chunksize size ? [ -in channel | data ]
  It's a method used in some other language like php , .net probably others.

  The documentation is not really clear on how to use DES or 3DES, there should be something that explain that the DES mode used is based on the key length.

  Gaetan

   


tkt_uuid: 1800617fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: doctools module toc: name vs. titledesc
comment:
  dtplite can crate a two level TOC: one for each module and an overview.

  Here's an example (only two modules):

    http://naviserver.sourceforge.net/n/toc.html
    http://naviserver.sourceforge.net/n/naviserver/toc.html

  The first is a superset of the second, which is not very useful.


  What would be great is if the second TOC in the example above (the per-module TOC) could use the 'titledesc' as a heading, and list each command in the page.

  So, instead of this (current):

    ns_accesslog  Query and control access log parameters
    ns_atsignal   Server callbacks
    ns_cache      Cache manipulation
    ...

  It would look like this:

    Query and control log parameters
    ns_accesslog

    Server callbacks
    ns_atprestartup, ns_atstartup, ns_atsignal, ns_atshutdown, ns_atexit

    Cache manipulation
    ns_cache_create, ns_cache_names, ns_cache_keys, ns_cache_eval, ns_cache_incr, ns_cache_append, ns_cache_lappend, ns_cache_flush, ns_cache_stats

    ...

  Each 'titledesc' becomes an h2 heading. The commands are just a paragraph of words separated by commas, each a hyperlink to the command def (including fragment).


  With this scheme, the per-module TOC falls somewhere in between the top level TOC and the keyword index in terms of information density.


tkt_uuid: 3440045fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pki
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::pki::x509::_list_to_dn invalid char
comment:
  here is another fix, may be is already considered

  proc ::pki::x509::_list_to_dn {name} {
  set ret ""
  foreach {oid_name value} $name {
  if {![regexp {[^ A-Za-z0-9'()+,.:/?=-]} $value]} {
  set avalue [::asn::asnPrintableString $value]
  } else {
  set avalue [::asn::asnUTF8String $value]
  }
  append ret [::asn::asnSet \
  [::asn::asnSequence \
  [::asn::asnObjectIdentifier [::pki::_oid_name_to_number $oid_name]] \
  $avalue \
  ] \
  ] \
  }

  return $ret
  }


tkt_uuid: 3087955fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Label has extra x packing space
comment:
  BWidget 1.9.2, TCL 8.5.9, Windows
  "Label .l -borderwidth 1 -relief raised" has extra x space of 5 outside the border under unknown conditions


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

  % package require struct
  2.1

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

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

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

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


  nathan/grarp
  ndparrish@yahoo.com


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


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

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

  Thanks,


tkt_uuid: 1061207fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: Tcl 8.5a2 breaks test suite
comment:
  the syntax of the "wrong # args"
  error message recently changed
  in Tcl, and as a consequence,
  `make test` for tcllib has
  56 failing tests.


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

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

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


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

  At the end of example.tcl, simple add:

  puts [plug list]

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


tkt_uuid: 1377945fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: Incorrect version number
comment:
  The configure.in script for bwidget-1.7.0 has this line:

  MINOR_VERSION=6

  This should really be:

  MINOR_VERSION=7

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


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


tkt_uuid: 3383039fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
resolution: Fixed
title: Error in decimal.n
comment:
  Compiling under W7 and MinGW, version CVS HEAD results in an error:

  Generating d:/TCL8.5/release/man/mann/decimal.n
  Doctools Error in macro at line 70, column 0:
  [section "API"]
  --> (FmtError) Manpage error (bodycmd), "section API" : Command not allowed outside of the body of th
  e manpage.
      while executing
  "::doctools::_format dt {[comment {-*- tcl -*- doctools manpage}]
  [manpage_begin ::Decimal n 1.0.2]
  [copyright {2011 Mark Alston <mark at beernut dot c..."
      ("eval" body line 1)
      invoked from within
  "eval [list ::doctools::_$cmd $name] $args"
      (procedure "::doctools::DoctoolsProc" line 15)
      invoked from within
  "dt format [get_input $f]"
      (procedure "_man" line 26)
      invoked from within
  "_man math nroff n d:/TCL8.5/release/man/mann"
      ("eval" body line 1)
      invoked from within
  "eval $guide($m,$type) $m $args"
      (procedure "xinstall" line 4)
      invoked from within
  "xinstall doc nroff n    $config(doc,nroff,path)"
      (procedure "doinstall" line 19)
      invoked from within
  "doinstall"
      (procedure "main" line 11)
      invoked from within
  "main"
      (file "./installer.tcl" line 594)
  make: *** [install] Error 1
  `/d/TCL8.5/compile/tcllib/license.terms' -> `/d/TCL8.5/release/licenses/tcllib.license'


  it helps to delete the file, then it installs fine.

  thx


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

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

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


tkt_uuid: 1050608fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: base64
priority: 5 Medium
foundin: None
resolution: None
title: base64 doesn't encode propertly unicode chars > 0xff
comment:
  decode(encode()) is not the identiy operation for
  strings with unicode characters > 0x00ff:

  % info tclversion
  8.4
  % source modules/base64/base64.tcl
  % string equal \u2019 [::base64::decode
  [::base64::encode \u2019]]
  0

  In the (pure tcl) ::base64 implementation, "binary
  scan" is used to get the byte representation of the
  characters in the string. This doesn't work for
  characters with a unicode representation beyond 0x00ff,
  as Tcl itself throws away the unicode high byte:

  % set string \u2019
  ?
  % binary scan $string c* X
  1
  % set X
  25
  # (this is the low byte 0x19 in dec)

  Only variables of the type "bytearray" are handled
  correctly, but you will not know from the string
  representation if this Tcl object was created as string
  or bytearray.

  PS: I'm missing a -encoding option to provide the
  encoder (decoder) a hint how to get (interpret) the
  binary representation of the characters of the string,
  as the string to encode is only an array of chars, not
  of bytes.


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

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

  This check true if context-dependent tag has constructed encoding. However it is possible to have context-dependent tag with primitive encoding. For example, in PKCS7 format encrypted message data are stored as context-dependent tag with primitive encoding.

  So, this check should be relaxed as 

    if {($tag & 0xC0) != 0x80} 

  for more strict conformance with BER. It would be very nice to add additional optional parameter "encodingType" to asnGetContext, which would return value of 0x20 bit of the tag, thus letting application to know whether encoding of this tag was constructed or primitive.

  Simular changes should be applied to asnGetApplication, which has the same problem.


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

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


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

  Module: grammar_fa
  modules/grammar_fa/dacceptor.test
  - tcllib::testutils 1.0
  - snit 1.1
  - struct::set 2.1
  - struct::list 1.5
  - grammar::fa 0.1.1
  - grammar::fa::op 0.1.1
  * grammar::fa::dacceptor 0.1.1
  modules/grammar_fa/dexec.test
  - tcllib::testutils 1.0
  - snit 1.1
  - struct::set 2.1
  - struct::list 1.5
  - grammar::fa 0.1.1
  - grammar::fa::op 0.1.1
  * grammar::fa::dexec 0.1.1
  modules/grammar_fa/fa.test
  - tcllib::testutils 1.0
  - snit 1.1
  - struct::set 2.1
  - struct::list 1.5
  * grammar::fa 0.1.1
  test name 'fa-symbols-1.0' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/fa_symbol.test
  test name 'fa-symbols-1.1' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/fa_symbol.test
  test name 'fa-symbols-2.0' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/fa_symbol.test
  test name 'fa-symbols-2.1' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/fa_symbol.test
  test name 'fa-symbols-1.0' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/fa_symbols.test
  test name 'fa-symbols-1.1' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/fa_symbols.test
  test name 'fa-symbols-1.2' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/fa_symbol.test
  test name 'fa-symbols-1.3' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/fa_symbol.test
  test name 'fa-symbols-1.4' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/fa_symbol.test
  test name 'fa-symbols-1.5' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/fa_symbol.test
  test name 'fa-symbols-1.6' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/fa_symbol.test
  modules/grammar_fa/faop.test
  - tcllib::testutils 1.0
  - snit 1.1
  - struct::set 2.1
  - struct::list 1.5
  - grammar::fa 0.1.1
  * grammar::fa::op 0.1.1
  test name 'faop-remove-eps-3.00.x' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.01.x-' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.02.xe' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.03.xy' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.04.xy-' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.05.xye' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.06.xyee' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.07.xye-' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.08.xy--' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.09.xy-=' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.10.xyz/ee' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.11.xyz/e-' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.12.xyz/--' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.13.xyz/-=' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.14.xyz|ee' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.15.xyz|e-' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.16.xyz|--' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.17.xyz|-=' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.18.xyz+eee' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.19.xyz+ee-' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.20.xyz+e--' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.21.xyz+e-=' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.22.xyz+---' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.23.xyz+--=' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.24.xyz+-=_' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.25.xyz&eee' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.26.xyz&ee-' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.27.xyz&e--' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.28.xyz&e-=' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.29.xyz&---' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.30.xyz&--=' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.31.xyz&-=_' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.32.xyz!ee' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.33.xyz!e-' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.34.xyz!--' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.35.xyz!-=' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-remove-eps-3.36.xyz!-e' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_remeps.test
  test name 'faop-reverse-3.00.x' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.01.x-' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.02.xe' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.03.xy' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.04.xy-' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.05.xye' re-used; prior use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.06.xyee' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.07.xyz/ee' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.08.xyz/-=' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.09.xyz|ee' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.10.xyz|-=' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.11.xyz+eee' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.12.xyz+-=_' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.13.xyz&eee' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.14.xyz&-=_' re-used; prior
  use in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.15.xyz!ee' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test
  test name 'faop-reverse-3.16.xyz!-=' re-used; prior use
  in
  /local/src/tcllib/modules/grammar_fa/tests/faop_reverse.test


tkt_uuid: 3441173fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: pki
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Implement OpenPGP/GPG
comment:
  From mail:

  Andreas,

      Yes.  Most of it is already there.  All that is need is the functions to read the public and private (Could be the same format as OpenSSL -- I tend to use X.509/PKCS#1 rather than GPG) keys and implements some GPG-specific things like "web of trust".

  You could open a feature request so I don't forget, or I'll try to remember to open one later.

  Thanks,
      Roy Keene


  On Tue, 22 Nov 2011, Andreas Kupries wrote:

  >
  > http://developers.slashdot.org/story/11/11/22/0422223/openpgp-implemented-in-javascript
  >
  > (Long-term idea)


tkt_uuid: 548221ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Accepted
title: hpupdate.tcl ftp demo typos
comment:
  the ftp module demo "hpupdate.tcl" has a number of
  misspellings and german phrases in it that I decided I
  could fix.  I am enclosing a patch for these.


tkt_uuid: 724730ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: struct :: graph
priority: 7 High
foundin: None
resolution: Not Applicable Here
title: Behaviour of struct::graph walk
comment:
  The current implementation (tcllib1.3) of ::struct::graph:
  :_walk with options -order both -type dfs create a forest 
  of disjunct predecessor subgraph trees [1] .




  [2] Says that if G is a graph G=(V,E) then we can do one 
  of three possibilities:


  1. No restrictions (walk)


  2. Each edge E of G traversed at most once. (trail)


  3. Each vertex V visited at most once (path)




  In tcllib a vertex is a node and an edge is an arc.




  I think the current implementation of walk is actually a 
  path as each node is visited only once. In order to 
  implement a walk as defined in [2] an extra line 1834  
  array unset visited $node could be inserted.




  See http://mini.net/tcl/8787 for more info.




  Could the walk proc be extended to cover all three 
  cases?




  [1] Cormen, Leiserson, Rivest: Introduction to Algorithms, 
  p477


  [2] Kreystig, Advanced Engineering Mathematics, Sixth 
  Edition, p1139


tkt_uuid: 1272783fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: docidx - failed tests with Tcl 8.5
comment:
  ==== docidx-3.0 docidx errors FAILED
  ==== Contents of test case:

      catch {new} msg
      set msg

  ---- Result was:
  wrong # args: should be "new name ..."
  ---- Result should have been (exact matching):
  wrong # args: should be "new name args"
  ==== docidx-3.0 FAILED

  ==== doctoc-3.0 doctoc errors FAILED
  ==== Contents of test case:

      catch {new} msg
      set msg

  ---- Result was:
  wrong # args: should be "new name ..."
  ---- Result should have been (exact matching):
  wrong # args: should be "new name args"
  ==== doctoc-3.0 FAILED

  ==== doctools-3.0 doctools errors FAILED
  ==== Contents of test case:

      catch {new} msg
      set msg

  ---- Result was:
  wrong # args: should be "new name ..."
  ---- Result should have been (exact matching):
  wrong # args: should be "new name args"
  ==== doctools-3.0 FAILED


tkt_uuid: 880692ffffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ncgi - = in cgi value breaks parsing of variable/value pairs
comment:
  the regular expression in proc nvlist was changed from 
  (.*)=(.*) to {([^=]*)=(.*)}


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

              # Any whitespace at the beginning or end of 
  urlencoded data is not
              # considered to be part of that data, so we 
  trim it off.  One special
              # case in which post data is preceded by a \n 
  occurs when posting
              # with HTTPS in Netscape.

              foreach {x} [split [string trim $query] &] {
                  # Turns out you might not get an = sign,
                  # especially with <isindex> forms.
  #### start: RE in line below changed:
                  if {![regexp -- {([^=]*)=(.*)} $x dummy 
  varname val]} {
  #### end
                      set varname anonymous
                      set val $x
                  }
                  lappend result [decode $varname] [decode 
  $val]
              }
              return $result
          }
          multipart/* {
              return [multipart $type $query]
          }
          default {
              return -code error "Unknown Content-Type: 
  $type"
          }
      }
  }


tkt_uuid: 1099727fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: "make install" fails to install apps other than in /usr/bin
comment:
  When one tries to install tcllib in another directory
  than /usr/...

  the installation process, called as 
  ./configure --prefix=...  && make install

  tries to install dtplite into /usr/bin and fails (until
  /usr/bin is writable for the user, of course).

  Example:

  > ./configure --prefix=/u/leusch/tmp/eval
  --exec-prefix=/u/leusch/tmp/eval/intel 
  [...]

  > make install
  /usr/bin/tclsh8.4 `echo ./installer.tcl` \
          -no-examples -no-html \
          -pkg-path  
  /u/leusch/tmp/eval/intel//lib/tcllib1.7 \
          -nroff-path /u/leusch/tmp/eval//man/mann \
          -no-wait -no-gui
  Installing Tcllib 1.7
  You have chosen the following configuration ...

  Packages:      /u/leusch/tmp/eval/intel//lib/tcllib1.7
  Applications:  /usr/bin                             [
  <===== !!!!! ]
  Examples:      Not installed.
  Documentation:

          NROFF:  /u/leusch/tmp/eval//man/mann
          HTML:   Not installed.

  [...]
  Generating /u/leusch/tmp/eval/man/mann/uri.n
  Generating /u/leusch/tmp/eval/man/mann/uuid.n
  error copying "./apps/dtplite" to "/usr/bin/dtplite":
  permission denied
      while executing
  "file copy -force $aexe    $adst"
      (procedure "ainstall" line 16)
      invoked from within
  "ainstall"
      (procedure "doinstall" line 26)
      invoked from within
  "doinstall"
      (procedure "main" line 11)
      invoked from within
  "main"
      (file "./installer.tcl" line 536)
  make: *** [install] Error 1



  Stating --bin-path explicitly when calling configure
  doen't help either.


  Diagnosis:
  installer.tcl requires the -app-path parameter if the
  apps are to be installed other than in /usr/bin which
  the Makefile doesn't.


  Possible fix:
  *** Makefile.in.orig    2005-01-10 21:20:27.000000000 +0100
  --- Makefile.in 2005-01-10 21:24:17.000000000 +0100
  ***************
  *** 28,33 ****
  --- 28,34 ----
    exec_prefix   = @exec_prefix@
    libdir                = @libdir@
    mandir                = @mandir@
  + bindir                = @bindir@
    
    DESTDIR               =
    pkglibdir     = $(libdir)/@PACKAGE@@VERSION@
  ***************
  *** 52,57 ****
  --- 53,59 ----
          $(TCLSH_PROG) `$(CYGPATH)
  $(srcdir)/installer.tcl` \
                  -no-examples -no-html \
                  -pkg-path   $(DESTDIR)$(pkglibdir) \
  +               -app-path   $(DESTDIR)$(bindir) \
                  -nroff-path $(DESTDIR)$(mandir)/mann \
                  -no-wait -no-gui
    

  (or whatever path is reasonable for the apps)


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

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

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

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

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


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

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

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

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

  to:

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

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


tkt_uuid: 472259ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: cmdline
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: getoptions -- help or error?
comment:
  In the ::cmdline::getoptions procedure, there is no
  way to differentiate between a user who wants help
  and passes a -? or -help option, and a user who has
  entered an unknown option.  In both cases, the
  getoptions proc calls
      error [cmdline::usage $optlist $usage]

  I would suggest the attached patch which:
  1. changes [error] to [return -code -1] if the user
     wants help, to differentiate from a real error
  2. changes the error string if a real error
     occurred.


tkt_uuid: 570227ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Works For Me
title: crc32 not like zlib crc (with patch)
comment:
  This may be a moot point, but...

  I am using the pure Tcl version of the crc32 package to 
  calculate crc's to match with crc's created from the zlib 
  version of crc code.  I found that the following change 
  would correct the Tcl crc32 to return the same value as 
  the zlib c code returns.  In the procedure crc::Crc32_tcl, 
  change the inital setting of crcval as follows:

       set crcval [expr {$seed ^ 0xFFFFFFFF}]

  I'm not using Trf so I don't know what crc code it uses or 
  if this change breaks that compatibility.  I had figured 
  this crc package was the same as zlib; and I expect 
  others may too.

  Hope this helps


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: 2796712fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: new animated emoticons are damaged
comment:
  Hi Pat,

  tkchat-1.470.kit with a ActiveTcl 8.5.7 shows the new animated :drunk: and :headbang: icons with pixel salad. The static versions seem to be ok.

  kind regards
  -- Matthias Kraft


tkt_uuid: 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: 1416749fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: html
priority: 5 Medium
foundin: None
resolution: Fixed
title: html: test suite bugs
comment:
  with -debug 1:
  * html 1.3
  test name 'html-2.1' re-used; prior use in
  /local/src/tcllib/modules/html/html.test
  test name 'html-24.1' re-used; prior use in
  /local/src/tcllib/modules/html/html.test
  test name 'html-24.1' re-used; prior use in
  /local/src/tcllib/modules/html/html.test
  test name 'html-25.3' re-used; prior use in
  /local/src/tcllib/modules/html/html.test
  test name 'html-26.2' re-used; prior use in
  /local/src/tcllib/modules/html/html.test


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: 456255ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: base64
priority: 5 Medium
foundin: None
resolution: Fixed
title: export public API only
comment:
  In some modules, there is a single line code:

      namespace export *

  This exports public as well as private API.

  I am providing a patch generated based on the
  convention that all
  public APIs begin with lower case first letter. So,
  please verify the list of public APIs I have added to
  the "namespace export" list.


tkt_uuid: 3422990fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tepam
priority: 5 Medium
foundin: None
resolution: Fixed
title: Some tepam tests require Tk without constraints.
comment:
  The test files adbox_widgets.test, adbox_all.test and proc_interactive.test explicitly require Tk without using any constraints.
  This causes errors in the test run when Tk is not present.


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


tkt_uuid: 476804ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: ftp
priority: 3 Low
foundin: None
title: geturl handlers in protocol packages
comment:
  The uri module implements a general geturl method which
  delegates to the scheme handler. Thus uri::geturl
  file:// is handled by the uri packaage, uri::geturl
  http:// is passed off to http::geturl.

  We should implement a geturl procedure in the ftp
  package and in any other package implementing such
  internet protocols (gopher, news?)


tkt_uuid: 840568ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
title: fileType: Detect audio
comment:
  Extend fileType to detect various audio file formats:
  wav
  ogg
  mp3
  ra (real audio)

  ....
  From the sox(1) manpage, a list of other audio formats.

         .8svx     Amiga 8SVX musical instrument
  description format.

         .aiff     AIFF files used on Apple IIc/IIgs and
  SGI.  Note: the AIFF format supports only one SSND
  chunk.  It does not  support  multiple
                   sound  chunks,  or  the  8SVX  musical
  instrument description format.  AIFF files are
  multimedia archives and can have multiple
                   audio and picture chunks.  You may
  need a separate archiver to work with them.

         .au       SUN Microsystems AU files.  There are
  apparently many types of .au files; DEC has invented
  its own with a different magic  num­
                   ber  and  word  order.  The .au
  handler can read these files but will not write them. 
  Some .au files have valid AU headers and
                   some do not.  The latter are probably
  original SUN u-law 8000 hz samples.  These can be dealt
  with using the  .ul  format  (see
                   below).

         .avr      Audio Visual Research
                   The AVR format is produced by a number
  of commercial packages on the Mac.

         .cdr      CD-R
                   CD-R  files  are  used in mastering
  music on Compact Disks.  The audio data on a CD-R disk
  is a raw audio file with a format of
                   stereo 16-bit signed samples at a
  44khz sample rate.  There is a special blocking/padding
  oddity at the end of the  audio  file
                   and is why it needs its own handler.

         .cvs      Continuously Variable Slope Delta
  modulation
                   Used to compress speech audio for
  applications such as voice mail.

         .dat      Text Data files
                   These  files  contain a textual
  representation of the sample data.  There is one line
  at the beginning that contains the sample
                   rate.  Subsequent lines contain two
  numeric data items: the time since the beginning of the
  first sample and the sample  value.
                   Values  are  normalized  so that the
  maximum and minimum are 1.00 and -1.00.  This file
  format can be used to create data files
                   for external programs such as FFT
  analyzers or graph routines.  SoX can also convert a
  file in this format back into one of the
                   other file formats.

         .gsm      GSM 06.10 Lossy Speech Compression
                   A  standard  for  compressing speech
  which is used in the Global Standard for Mobil
  telecommunications (GSM).  Its good for its
                   purpose, shrinking audio data size,
  but it will introduce lots of noise when a given sound
  sample is encoded and decoded multi­
                   ple times.  This format is used by
  some voice mail applications.  It is rather CPU intensive.
                   GSM  in SoX is optional and requires
  access to an external GSM library.  To see if there is
  support for gsm run sox -h and look
                   for it under the list of supported
  file formats.

         .hcom     Macintosh HCOM files.  These are
  (apparently) Mac FSSD files with some variant of
  Huffman compression.  The Macintosh has wacky
                   file  formats and this format handler
  apparently doesn't handle all the ones it should.  Mac
  users will need your usual arsenal
         .maud     An Amiga format
                   An IFF-conform sound file type,
  registered by MS MacroSystem Computer GmbH, published
  along with the  "Toccata"  sound-card  on
                   the Amiga.  Allows 8bit linear, 16bit
  linear, A-Law, u-law in mono and stereo.

         .nul      Null  file  handler.  This is a fake
  file hander that act as if its reading a stream of 0's
  from a while or fake writing output
                   to a file.  This is not a very useful
  file handler in most cases.  It might be useful in some
  scripts were you do not  want  to
                   read or write from a real file but
  would like to specify a filename for consistency.

         .ogg      Ogg Vorbis Compressed Audio.
                   Ogg  Vorbis  is  a open, patent-free
  CODEC designed for compressing music and streaming
  audio.  It is similar to MP3, VQF, AAC,
                   and other lossy formats.  SoX can
  decode all types of Ogg Vorbis files, but can only
  encode at 128 kbps.  Decoding is  somewhat
                   CPU intensive and encoding is very CPU
  intensive.
                   Ogg  Vorbis in SoX is optional and
  requires access to external Ogg Vorbis libraries.  To
  see if there is support for Ogg Vorbis
                   run sox -h and look for it under the
  list of supported file formats as "vorbis".

         ossdsp    OSS /dev/dsp device driver
                   This is a pseudo-file type and can be
  optionally compiled into SoX.  Run sox -h to see if you
  have support for this file  type.
                   When  this driver is used it allows
  you to open up the OSS /dev/dsp file and configure it
  to use the same data format as passed
                   in to SoX.  It works for both playing
  and recording sound samples.  When playing sound files
  it attempts  to  set  up  the  OSS
                   driver to use the same format as the
  input file.  It is suggested to always override the
  output values to use the highest qual­
                   ity samples your sound card can
  handle.  Example: -t ossdsp -w -s /dev/dsp

         .sf       IRCAM Sound Files.
                   Sound Files are used by academic music
  software such as the CSound package, and the MixView
  sound sample editor.

         .sph
                   SPHERE (SPeech HEader Resources) is a
  file format defined by NIST (National Institute of
  Standards and Technology) and is  used
                   with  speech audio.  SoX can read
  these files when they contain u-law and PCM data.  It
  will ignore any header information that
                   says the data is compressed using
  shorten compression and will treat the data as either
  u-law or PCM.  This will allow SoX  and
                   the command line shorten program to be
  ran together using pipes to uncompress the data and
  then pass the result to SoX for pro­
                   cessing.

         .smp      Turtle Beach SampleVision files.
                   SMP files are for use with the PC-DOS
  package SampleVision by Turtle Beach Softworks. This
  package is for communication to sev­
                   eral  MIDI  samplers. All sample rates
  are supported by the package, although not all are
  supported by the samplers themselves.
                   Currently loop points are ignored.

         .snd
                   Under DOS this file format is the same
  as the .sndt format.  Under all other platforms it is
  the same as the .au format.

         .sndt     SoundTool files.
                   This is an older DOS file format.

         sunau     Sun /dev/audio device driver
                   This is a pseudo-file type and can be
  optionally compiled into SoX.  Run sox -h to see if you
  have support for this file  type.
                   When this driver is used it allows you
  to open up a Sun /dev/audio file and configure it to
  use the same data type as passed in
                   to SoX.  It works for both playing and
  recording sound samples.  When playing sound files it 
  attempts  to  set  up  the  audio
                   driver to use the same format as the
  input file.  It is suggested to always override the
  output values to use the highest qual­
                   ity samples your hardware can handle.
   Example: -t sunau -w -s /dev/audio or -t sunau -U -c 1
  /dev/audio for older  sun  equip­
                   ment.

         .txw      Yamaha TX-16W sampler.
                   A  file  format from a Yamaha sampling
  keyboard which wrote IBM-PC format 3.5" floppies. 
  Handles reading of files which do not
                   have the sample rate field set to one
  of the expected by looking at some other bytes in  the
   attack/loop  length  fields,  and
                   defaulting to 33kHz if the sample rate
  is still unknown.

         .vms      More info to come.
                   Used to compress speech audio for
  applications such as voice mail.

         .voc      Sound Blaster VOC files.
                   VOC  files  are  multi-part and
  contain silence parts, looping, and different sample
  rates for different chunks.  On input, the
                   silence parts are filled out, loops
  are rejected, and sample data with a new sample rate is
  rejected.  Silence with a different
                   sample  rate is generated
  appropriately.  On output, silence is not detected, nor
  are impossible sample rates.  Note, this ver­
                   sion now supports playing VOC files
  with multiple blocks and supports playing files
  containing u-law and A-law samples.

         vorbis    See .ogg format.

         .wav      Microsoft .WAV RIFF files.
                   These appear to be very similar to IFF
  files, but not the same.  They are the native sound
  file format of Windows.  (Obviously,
                   Windows  was  of such incredible
  importance to the computer industry that it just had to
  have its own sound file format.)  Nor­
                   mally .wav files have all formatting
  information in their headers, and so do not need any
  format options specified for an input
                   file.  If any are, they will override
  the file header, and you will be warned to this effect.
   You had better know what you are
                   doing! Output format options will
  cause a format conversion, and the .wav will written
  appropriately.  SoX currently  can  read
                   PCM, ULAW, ALAW, MS ADPCM, and IMA (or
  DVI) ADPCM.  It can write all of these formats
  including (NEW!)  the ADPCM encoding.

         .wve      Psion 8-bit A-law
                   These are 8-bit A-law 8khz sound files
  used on the Psion palmtop portable computer.


tkt_uuid: 3440115fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pki
priority: 5 Medium
foundin: None
resolution: Fixed
title: Unknown hashing algorithm: unknown
comment:
  Using pki package contained in tcllit1.14RC0, there comes a problem (not always) after generating a rsa key pair (2048) when singing a request certificate, and it throws that error mentioned in the summary.  Same situation happen with 1.13.

  However, using the additions I posted in "Feature request" with id 3440058, which allows me to convert a generated key set to pem and write it in disk, I can generate a key, convert it to pem, and parse it again and the problem does not happen.

  I wrote a test case code fully explained attached in this report

  Regards,

  -=Raul=-


tkt_uuid: 3536709fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: yaml
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: huddle get does not accept non-scalar dict keys
comment:
  Found a bug in how huddle dict objects lookup non-scalar keys.  The bug is in huddle::_key_reflexive and stems from the a non-scalar single key being passed via args (variadic mechanism).  The problem is that an extra set of curly braces ends up enclosing the key path when it finally gets passed to dict get (which errors).  A simple example is:
    set h [huddle create {a a} b]
    huddle get $h {a a}; # error thrown here

  I've seen this bug in huddle versions 0.1.3 through 0.1.5.

  A fix for this is attached along with some new tests, the files are modified versions of the huddle 0.1.5 source.


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

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

  Test program: 

      package require aes 

      set key [binary format a32 0123456789012345678901234567890123456789] 

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

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


  Issue: 

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


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

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


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

  What are these good for, then?

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

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

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

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


tkt_uuid: 2861189fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: decode and encode: inconsistent handling of line breaks
comment:
  ncgi::encode (and http::formatQuery, for that matter) encodes "\n" as "%0d%0a". ncgi::decode decodes this sequence into "\r\n".

  The result is that if a multi-line string is passed from a program to a CGI script that uses ncgi for dealing with the parameters, the CGI script doesn't see the same string the program intended to send it.

  If implemented correctly, ncgi::encode and ncgi::decode should therefore be inverse operations, and the one to be adapted seems to be ncgi::decode.


tkt_uuid: 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: 2812832fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: statistics
priority: 5 Medium
foundin: None
resolution: Fixed
title: unstable calculation of variance
comment:
  Variance is calculated in an unstable manner.

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

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


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

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

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


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

  set addresses {
  lduperval@yahoo.com
  }

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

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

  for {set i 0} {$i < [llength $addresses]} {incr i} {
  puts "Sending [expr {$i+1}]/[llength $addresses]"
  send_simple_message [lindex $addresses $i] "Test: ne
  pas répondre"\
    "Ceci n'est qu'un test. Il n'est pas nécessaire de
  répondre.\n\nL"
  }

  This is the error I get:

  Sending 1/1
  can't read "i": no such variable
      (reading value of variable to increment)
      invoked from within
  "incr i"
      ("for" loop-end command)
      invoked from within
  "for {set i 0} {$i < [llength $addresses]} {incr i} {
  puts "Sending [expr {$i+1}]/[llength $addresses]"
  send_simple_message [lindex $addresses $i] "Te..."
      (file "sendmail.tcl" line 27)

  Now, if I change "i" to "ii", it works.


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

  The attached patch allows to return more meanighful message.


tkt_uuid: 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: 1039961fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Fixed
title: htmlparse - numeric character references with leading 0s
comment:
  Numeric character references with leading zeros are
  misparsed as octal.  For example, &#038;  (in case the
  SF bug tracker mangles that, it's: "ampersand, pound
  sign, zero, three, eight, semicolon").

  Attached patch fixes the problem and adds a test case.


tkt_uuid: 1060353fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Invalid
title: ldap::search problem with spaces in filter specs
comment:
  The original report is
  http://bugs.activestate.com/show_bug.cgi?id=34774

  Running Active State Tcl 8.4.7 on Windows 2000 server.

  Problem with ldap package in tcllib 1.6. Ldap search
  does not pick up CNs with space in the CN name.

  % set tcl_version
  8.4

  % info patchlevel
  8.4.7

  % package require ldap
  1.2

  Ldap search does not pick up CNs with space in the name.

  TestCase.

  Search with "General*" works.

  % ldap::search $donnelly "o=HBF" "cn=General*" {cn}
  {{CN=General Management,O=HBF} {}}

  Search with "General Managemernt" fails.

  % ldap::search $donnelly "o=HBF" "cn=General Management" {}
  % 

  The filter string needs to be enclosed in "{}" or a list.

  % set f [ list "cn=General Management" ]
  {cn=General Management}

  (bin) 244 % ldap::search $donnellyServer "o=HBF" $f {cn}
  {{CN=General Management,O=HBF} {}}

  Doco may need to be updated.


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


tkt_uuid: 620062ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pop3
priority: 5 Medium
foundin: None
resolution: Fixed
title: bug in retrieve
comment:
  There is a bug in the main loop within the 
  pop3::retrieve proc. I think this bug may be caused 
  by the fact that the Tcl 8.3 scan command behaves 
  differently from the documentation. In the loop over 
  index from start to end, there is a switch statement. 
  This bug may occur for either the retr or the list 
  elements in the switch statement.
  The bug is caused by these lines:

  set sizeStr [::pop3::send $chan "RETR $index"]
  if {[scan $sizeStr {%d %s} size dummy] < 0} {
  .....

  Note that it is expected that sizeStr contains a 
  decimal number and a string. The result "< 0" will be 
  returned if neither a decimal nor a string is found. 
  But, I have tested the scan function under Tcl 8.3 and 
  it appears to return 0, NOT -1, if no conversions are 
  performed! For example, the Tcl command

  scan "This is a dummy string" {%d %s} d s

  will return 0 under Tcl 8.3 and neither d nor s will be 
  defined. Since the code currently checks for -1, the 
  code crashes because the decimal variable "size" is 
  not defined.

  This bug should be easy to fix. Just change the test 
  from <0 to <=0. Even better would be to make sure 
  that the number of conversions is at least as high as 
  the index of interest into the conversion set. By this I 
  mean the following:
  If the format is {%d %s} and we are interested only in 
  the first %d parameter, then the test should be 
  if {[scan $sizeStr {%d %s} size dummy] < 1} {
    handle no size
  } else {
    use $size
  }

  As another example we should have in the list branch:

  if {[scan $sizeStr {%d %d %s} dummy size dummy] 
  < 2} {
    handle no size
  } else {
    use $size
  }
  because we need at least two conversions to get size 
  defined.


tkt_uuid: 472009ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: mime/smtp/Trf
comment:
    mime/smtp/Trf package bug

    the proc "smtp::wdata(949)" got a command
  "create/read" form procedure
    "transform(902)". This command is not supported

  <-- 220 linux02.otto-net ESMTP Sendmail
  8.11.2/8.11.2/SuSE Linux 8.11.1-0.5; Wed, 17 Oct 2001
  10:47:02 +0200
  --> EHLO localhost (wait upto 300 seconds)
  <-- 250-linux02.otto-net Hello localhost [127.0.0.1],
  pleased to meet you
  <-- 250-ENHANCEDSTATUSCODES
  <-- 250-8BITMIME
  <-- 250-SIZE
  <-- 250-DSN
  <-- 250-ONEX
  <-- 250-ETRN
  <-- 250-XUSR
  <-- 250 HELP
  --> ONEX (wait upto 300 seconds)
  <-- 250 2.0.0 Only one transaction
  --> MAIL FROM:<dev2usr@linux02> (wait upto 600 seconds)
  <-- 250 2.1.0 <dev2usr@linux02>... Sender ok
  --> RCPT TO:<dev1usr@linux02> (wait upto 3600 seconds)
  <-- 250 2.1.5 <dev1usr@linux02>... Recipient ok
  --> DATA (wait upto 300 seconds)
  <-- 354 Enter mail, end with "." on a line by itself
  Call: smtp::wtextaux ::smtp::1 ::mime::1
  Call: smtp::wdata ::smtp::1 create/write {}
  Call: smtp::wdata ::smtp::1 create/read {}
  --> RSET (wait upto 0 seconds)
  --> QUIT (wait upto 0 seconds)
  Unknown command "create/read"
      while executing
  "error "Unknown command \"$command\"""
      ("default" arm line 2)
      invoked from within
  "switch -- $command {
          create/write
              -
          clear/write
              -
          delete/write {
              set state(crP) 0
          ..."
      (procedure "smtp::wdata" line 8)
      invoked from within
  "smtp::wdata ::smtp::1 create/read {}"
      invoked from within
  "transform -attach $state(sd) -command [list
  smtp::wdata $token]"
      (procedure "smtp::wtextaux" line 11)
      invoked from within
  "smtp::wtextaux $token $part "
      invoked from within
  "smtp::sendmessage $M1  -debug  yes     \
                                                  -header
  [ list To "Dev1Usr <dev1usr@linux02>" ] \
                                                  -header
  [ list From "Andreas Otto <dev2usr@linux02>..."


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: 1021240fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: bwidget table of contents in doctools format
comment:
  I took a stab at converting the first of the bwidget
  files to doctools format.
  I don't have a lot of time - I would love to see all
  the bwidget pages reformatted.  


tkt_uuid: 978962ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 7 High
foundin: None
resolution: Fixed
title: tkchat timestamp problems.
comment:
  dkfFor example, too often it gets the tabs wrong (puts
  a zero tab at the start of every line) and odd things
  happen when you have timestams visible but entry/exit
  messages off...
  patthoytsThe main issues I have are that it breaks the
  history download when turned off. If there are hidden
  users then we still get a timestamp. And as dkf has
  said, if you hide the timestamps it doesn't align the
  tab spacing properly.
  dkfIf you turn timestamps on then off again, the
  loaded history ends up correct.
  dkfAnd seems to stay that way thereafter.
  dkfThe other issues are less critical. You just get
  blank lines...


tkt_uuid: 3428262fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: json
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: JSON: Trailing spaces added to number value
comment:
  When the source json is { "a" : 0 }, then the resulting dict is: { a {0 } } (not {a 0}). This may be significant when comparing json results coming from two different sources.

  To fix this problem, please change near this line:
  string is double -failindex last $txt
  the following line:
  set num [string range $txt 0 [expr {$last - 1}]]
  into:
  set num [string trim [string range $txt 0 [expr {$last - 1}]]]


tkt_uuid: 1245508fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ntp
priority: 5 Medium
foundin: None
resolution: Fixed
title: NTP handling wrong
comment:
  The handling of (s)ntp by the ntp package is wrong; you
  can't talk ntp (these days) over tcp and you certainly
  can't use 'abcd' as a request message!

  And the package claims to be the time package for
  [package require], despite being in the ntp dir within
  the distribution.


tkt_uuid: 948063ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: MenuFrame: no 'getmenustate' method
comment:
  Apparently, there is not way, to query the state of a
  menu tag.

  The state of menu tags could be set with:

  $mainframe setmenustate tag state

  I would be very handy, to be able to query the state of
  a tag. Something like a getmenustate method with syntax
  like

  $mainframe getmenustate tag

  returning the state. Or enhanced setmenustate syntax

  $mainframe setmenustate tag ?state?

  If the optional new state is omitted, then the current
  state of the tag is returned. (And emtpy string for not
  knows tags? Or error? Curently,  setmenustate simply
  ignores unknown tags - which shuld be mentioned in the
  documentation.)

  The current setmenustate implementation in
  mainframe.tcl still includes the old tag state
  mechanism commented out. I agree, that the current
  state system is better. Shouldn't this code be removed?

  The documentation should mention at one place, that
  only state "disabled" disables the tag and that every
  other state enables it.


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

  Attached file of utils.tcl solves the problem.


tkt_uuid: 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: 1276680fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: bignum
priority: 5 Medium
foundin: None
resolution: Fixed
title: math::bignum namespace not exported properly
comment:
  See tcllib/math/bignum.tcl, line 828:

      828 namespace eval bignum {
      830     namespace export *
      831 }

  The namespace is ::math::bignum, not ::bignum.  This
  results in an empty export list in ::math::bignum. 
  Found this in Tcllib 1.7.0.1.


tkt_uuid: 1160005fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: plotchart
priority: 5 Medium
foundin: None
resolution: None
title: tklib plotchart test suite failure using tcl/tk 8.5 alpha
comment:
  Platform: sparc solaris sun c compiler
  Tcl/Tk latest from cvs
  tklib latest from cvs

  After configure and building, I ran the test suite and
  got this
  error:

  Module: plotchart
  modules/plotchart/plotchart.test
  Plotchart 1.0
  modules/plotchart/plotcontour.test
  couldn't read file "plotchart.tcl": no such file or
  directory
      while executing
  "source plotchart.tcl"
      (file
  "/vol/tclsrcsol/tcl85/tklib/modules/plotchart/plotcontour.test"
  line 3)
      invoked from within
  "source [pSet file]"


  Before the error appeared, a series of tk widgets
  appeared with plotting information.


tkt_uuid: 1335320fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: uri
priority: 5 Medium
foundin: None
resolution: Fixed
title: Missing documentation of constituents
comment:
  The uri::split command is documented as splitting an URI into its 
  constituents but does not specify what these are. It would be 
  useful to have them documented in the same place so one would 
  not need to guess or look up from the RFC and base on that.


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

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

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

  and now everything seems to be working fine.


tkt_uuid: 1720331fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 5 Medium
foundin: None
resolution: Fixed
title: lcsInvertMerge gives incorrect result
comment:
  The simple example:

  % set lcs [struct::list longestCommonSubsequence {a b c d e} {a f c g e}]
  {0 2 4} {0 2 4}
  % struct::list lcsInvertMerge $lcs 5 5
  {unchanged {-1 0} {-1 0}} {changed {1 1} {1 1}} {changed {3 3} {3 3}}

  yields an incorrect result.  The content of $lcs is correct; {0 2 4} in both lists is the common subsequence.  But the expected output would have been

  {unchanged {0 0} {0 0}} 
  {changed {1 1} {1 1}} 
  {unchanged {2 2} {2 2}} 
  {changed {3 3} {3 3}}
  {unchanged {4 4} {4 4}}


tkt_uuid: 1838703fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: statistics
priority: 5 Medium
foundin: None
resolution: Fixed
title: cdf-normal gives div-by-zero for arg = 0
comment:
  Hello,

  The cdf-normal function gives a divide-by-zero error for the following call (which should return 0.5):

  ::math::statistics::cdf-normal 0 1 0

  The problem appears to arise in Cdf-toms322, where the internal variables w and p become zero, and then one is divided by the other.

  Eric


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: 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: 1177108fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
resolution: Fixed
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: 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: 1710637fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Development Tools
priority: 5 Medium
foundin: None
resolution: Invalid
title: use of deprecated syntax
comment:
  I assume this is the category
  for "sak".

  The files sak/registry/registry.tcl
  and sak/util/registry.tcl make use
  of the {expand} syntax which is no
  longer approved.


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

  Example 1:

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

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

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

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

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


tkt_uuid: 2933130fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: fuzzy
priority: 5 Medium
foundin: None
resolution: Fixed
title: math::fuzzy::tlt returns incorrect value
comment:
  [::math::fuzzy::tlt 1.0 1.1] returns 1 which is correct.
  [::math::fuzzy::tlt 1.1 1.0] however, also returns 1 which is not correct.

  (Tcl) 37 % package require math::fuzzy
  0.2
  (Tcl) 38 % ::math::fuzzy::tlt 1.0 1.1
  1
  (Tcl) 39 % ::math::fuzzy::tlt 1.1 1.0
  1


tkt_uuid: 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: 2024843fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: special
priority: 5 Medium
foundin: None
resolution: None
title: erf is not accurate
comment:
  Problem description
  ====================

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

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

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

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


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

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


tkt_uuid: 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: 410797ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 4
foundin: None
resolution: Fixed
title: missing config module
comment:
  I checked tcllib out of CVS, and the installation is a
  bit foobared. It wants a /config directory with
  install-sh and mkinstalldir.  The Makefile.in file
  seems to have some troubles as well...  For instance,
  there is no INSTALL_DATA, amongst other things


tkt_uuid: 545368ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: uri
priority: 8
foundin: None
title: uri default scheme
comment:
  I've noticed that the uri package defaults to a http
  scheme when none is specified:

  % package require uri
  1.1
  % uri::split ftp.somewhere.com
  port {} path ftp.somewhere.com scheme http host {}
  query {}
                                 ^^^^^^^^^^^
  Wouldn't it make more sense for it to return a scheme
  of {} ? Then an application could default to http if
  required. In my case, I want to default to ftp, but
  need to know if the url contains another scheme
  specifier.

  I suppose the uri::split needs to assume a default
  scheme to that it knows which sub-proc to call (i.e.
  uri::SplitFtp, uri::SplitHttp) Perhaps the uri::split
  proc could take an optional arg to specify the default
  scheme?

  % uri::split ftp.somewhere.com ftp

  This addition is trivial to implement.

  proc uri::split {url {scheme {}}} {
   ...
  }

  or even make it more flexible with 'args' (but right
  now I don't see any need to specify defaults for
  anything other than the scheme)


tkt_uuid: 733442ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: md5
priority: 5 Medium
foundin: None
resolution: Fixed
title: procheck reports parse error
comment:
  unix> procheck md5.tcl
  ...
  md5.tcl:349 (parse) parse error: PARSE syntax 13757
  {syntax error in expression " ($x << $i) | (($x >> R$i)
  & S$i)"}
  expr { ($x << $i) | (($x >> R$i) & S$i)}
       ^
  ...

  On examining the md5.tcl file, lines 328 - 351 are
  never executed because of if {0} {...} block. But it
  would be better if procheck did not report any parse
  errors.


tkt_uuid: 596000ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: html
priority: 5 Medium
foundin: None
resolution: Fixed
title: html display depends on ncgi
comment:
  The html display function needs the ncgi package from
  tcllib, but this isn't properly package required.

  Solution:

  Add [package require ncgi] to counter.

  Michael Schlenker


tkt_uuid: 1178045fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Invalid
title: Bad conversion for UTF-8 strings
comment:
  UTF-8 are not handled correctly in LDAP module (or may be 
  ASN). 
   
  Repeat by: 
   
  ---------------------------------------------- 
  package require ldap 
  set x [::ldap::connect ldap.u-strasbg.fr] 
  set y [::ldap::search $x o=ulp {(cn=*jamet an*)} *] 
  set z [lindex $y 0] 
  array set t [lindex $z 1] 
  puts $t(cn) 
  --------------------------------------------- 
   
  I get UTF-8 characters on dislay, even if stdout is 
  fconfigured with the normal "iso8859-15" encoding. 
   


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


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

  THE CODE

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

  THE ERROR

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

  key message-id not in header

  THE MESSAGE

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

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


  Please help.


tkt_uuid: 528390ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: example_begin/_end unsatisfactory
comment:
  The current implementation of example_begin/example_end
  produces centered literal text. If you have more than
  one example, they will not line up unless the longest
  lines are the same. This is - in my opinion - not very
  pleasant to look at.


tkt_uuid: 416955ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: profiler
priority: 5 Medium
foundin: None
resolution: None
title: Division by zero in stats procedure
comment:
  If called with all arguments to zero (presumably a 
  procedure that was never used), the stats procedure 
  will produce a division by zero error when computing 
  the covariance (cov).  I propose here a fix, but it 
  needs probably more thinking to make it into the CVS:

  proc ::profiler::stats {args} {
       set sum      0
       set mean     0
       set sigma_sq 0
       set sigma    0
       set cov      0
       set N [ llength $args ]
       if { $N > 1 } { 
          foreach val $args {
             set sum [ expr { $sum+$val } ]
          }
          set mean [ expr { $sum/$N } ]
          foreach val $args {
             set sigma_sq [ expr { $sigma_sq+pow(($val-
  $mean),2) } ]
          }
          set sigma_sq [ expr { $sigma_sq/($N-1) } ] 
          set sigma [ expr { round(sqrt($sigma_sq)) } ]
  if { $mean == 0 } {
      set cov 0.0
  } else {
      set cov [ expr { (($sigma*1.0)/$mean)
  *100 } ]
      set cov [ expr { round($cov*10)/10.0 } ]
  }
       }   
       return [ list $mean $sigma $cov ]
  }


tkt_uuid: 697183ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: latest chat logout menu selection broken
comment:
  tkchat 1.80 logout feature produces this output using
  Tcl/Tk 8.4.2:

  invalid command name "logonScreen"
      while executing
  "logonScreen"
      invoked from within
  ".#mbar.#mbar#file invoke active"
      ("uplevel" body line 1)
      invoked from within
  "uplevel #0 [list $w invoke active]"
      (procedure "tk::MenuInvoke" line 47)
      invoked from within
  "tk::MenuInvoke .#mbar.#mbar#file 1"
      (command bound to event)


  To fix it, I changed all the invocations of logonScreen
  to ::tkchat::logonScreen and it seems to work.


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: 1531199fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: add color chooser to font selector
comment:
  Hi,

  for the aMSN project we modified the bwidget library a
  bit, one of the changes that might be nice to include
  upstream is the addition of a color chooser in the font
  selector. The patch attached is how this is done in the
  modified amsn bwidget, it also adds an option to not
  show the size selector (this is because in msn chats
  you have no way of specifying the size of you outgoing
  messages)

  I hope these changes can be done upstream.

  Kind regards,

  Sander Hoentjen


tkt_uuid: 447037ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 3 Low
foundin: None
resolution: Fixed
title: mime::qp_encode failures (64 bit?)
comment:
  On an Alpha XL-300 (64-bit platform) some of
  the mime tests fail:

  % source mime.test              

  ==== mime-4.4 Test qp_encode with non-US_ASCCI
  characters. FAILED
  ==== Contents of test case:

      set str1 "Test de caractères accentués : â î é ç et
  quelques contrôles \"\[|\]()\""
      mime::qp_encode $str1

  ---- Result was:
  Test de caract=FFres accentu=FFs : =FF =FF =FF =FF et
  quelques contr=FFle=
  s =22=5B=7C=5D()=22
  ---- Result should have been:
  Test de caract=E8res accentu=E9s : =E2 =EE =E9 =E7 et
  quelques contr=F4le=
  s =22=5B=7C=5D()=22
  ==== mime-4.4 FAILED


  ==== mime-5.1 Test word_encode with quoted-printable
  method FAILED
  ==== Contents of test case:

      mime::word_encode iso8859-1 quoted-printable "Test
  de contrôle effectué"

  ---- Result was:
  =?ISO-8859-1?Q?Test_de_contr=FFle_effectu=FF?=
  ---- Result should have been:
  =?ISO-8859-1?Q?Test_de_contr=F4le_effectu=E9?=
  ==== mime-5.1 FAILED


  ==== mime-5.3 Test encode+decode with quoted-printable
  method FAILED
  ==== Contents of test case:

      set enc [mime::word_encode iso8859-1
  quoted-printable "Test de contrôle effectué"]
      mime::word_decode $enc

  ---- Result was:
  iso8859-1 quoted-printable {Test de contrÿle effectuÿ}
  ---- Result should have been:
  iso8859-1 quoted-printable {Test de contrôle effectué}
  ==== mime-5.3 FAILED


tkt_uuid: 1408494fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: BWidget Tree bug with autoscroll (when dragging)
comment:
  Tree::_auto_scroll calls Tree::_scroll with 2 parameters,
  but _scroll has 3 parameters. Error generates and
  auto_scroll not works. Proc _scroll correct, only
  last 2 parameters packed in list.
       With this all works ok:
  ##################################
  proc Tree::_scroll { path scroll } {
      variable $path
      upvar 0  $path data
  set cmd [lindex $scroll 0]
  set dir [lindex $scroll 1]
      if { ($dir == -1 && [lindex [$path.c $cmd] 0] > 0) ||
           ($dir == 1  && [lindex [$path.c $cmd] 1] < 1) } {
          $path.c $cmd scroll $dir units
          set data(dnd,afterid) [after 50 [list
  Tree::_scroll $path $scroll]]
      } else {
          set data(dnd,afterid) ""
          DropSite::setcursor dot
      }
  }
  ######################################
  Kapkaev@inbox.ru


tkt_uuid: 2820851fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: fix dynamichelp issues
comment:
  This patch fixes some issues with dynamic help. One of the issues is that help for a menu sometimes stays visible when the menu is unmapped (on Unix). This is an example script:

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

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

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


tkt_uuid: 2015992fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: tooltip
priority: 5 Medium
foundin: None
resolution: Fixed
title: Too many events in canvas
comment:
  Function tooltip::enableCanvas is called for every tooltip assigned to every item.

  It does:

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

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

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


tkt_uuid: 1609880fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: tklib: khim
priority: 5 Medium
foundin: None
resolution: Duplicate
title: Czech message file for tklib's KHIM
comment:
  Hi,

  I upload cs.msg.gz

  this is message file with czech translation for tklib
   for KHIM (Kevin's Hacky Input Method).

  Michal <wohnivec@dix.cz>


tkt_uuid: 3513149fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: exra bracket in nvlist command causes corrupt return value
comment:
  ncgi version 1.3.2

  There is a typo on line 28 of the proc ncgi::nvlist:

  set val [string range $x 1 end]]

  Note the extra close bracket at the end of the statement.
  Due to the strange coincidence of Tcl bug 3513146, this does not throw an error, but instead leads the proc to return a corrupt value.


tkt_uuid: 474999ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: None
title: ftp man page description typo
comment:
  In the ftp.n man page, under ftp::List , the first
  sentence reads:

  This commands lists the contents of the specified a
  directory or other group of files.


  I'm not certain how list works, but I would guess it
  should say something like:

  This command lists the specified files or directories.

  or something like that.


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: 2897419fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: statistics
priority: 8
foundin: None
resolution: Fixed
title: beta-distribution-1.0 test failure (sol 2.8, sparc, 8.4.19)
comment:
  Enclosed a test failure on a solaris 2.8 / sparc machine. Tcl 8.4.19/HEAD.

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

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

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

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


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

  Seen this for the doctools tests 13.x 


tkt_uuid: 934134ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtpd
priority: 7 High
foundin: None
resolution: Fixed
title: SMTPD GMT offset calculation incorrect
comment:
  Package smtpd, proc gmtoffset produces incorrect output
  (sign inverted) when calculating GMT offset. For
  example, it returns
    Sun, 11 Apr 2004 08:14:06 +0500
  for CDT. When it should return
    Sun, 11 Apr 2004 08:14:06 -0500

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

  Which is

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

  but apparently should be

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

  Raised by Bob Binder (rbinder aT rbsc dot com)


tkt_uuid: 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: 840571ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
title: fileType: Detect video
comment:
  Extended fileType to detect various video formats

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


tkt_uuid: 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: 531541ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Partial message construction
comment:
  See Tcllib FR #531531 and Tcllib FR #527114
  for supplemental information.

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

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


tkt_uuid: 843932ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Line continuation missing in entry.tcl
comment:
  In the cvs from 2003-11-10, the is a line continuation 
  missing in file entry.tcl in function Entry::create.

  The diff is:

  112c112
  <             -foreground [Widget::getMegawidgetOption 
  $path -disabledforeground]
  ---
  >             -foreground [Widget::getMegawidgetOption 
  $path -disabledforeground]\


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: 2909962fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: json
priority: 5 Medium
foundin: None
resolution: Accepted
title: Faster, more readable implementation of json parser
comment:
  When parsing documents of some nontrivial size (i.e. >100kB), I have found the json parser package 1.0 to be far too slow.

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

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

  I have not touched the *2json procs.

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

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


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


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

  Please checkout attached sample code:

  Klaus Meywirth
  klaus.meywirth@fci.com


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

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

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

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

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

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


  Hemang.


tkt_uuid: 3490008fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: grammar_peg
priority: 5 Medium
foundin: None
resolution: Fixed
title: nonterminal delete does not work
comment:
  When I try to do a [$grammar nonterminal delete SymbolName] I get the following error:

  can't read "nt": variable is array

  Looking at the code in CVS, this looks like the culprit.  I have not had time to test this theory:

  ...
  322method NtDelete {nts} {
  323 set references $re($nt)
  ...


tkt_uuid: 2155034fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: aes
priority: 8
foundin: None
resolution: Fixed
title: Sign overflow in AddRoundKey
comment:
  There is a sign overflow in AddRoundKey that can cause 
  a 'integer value too large to represent' error from EncryptBlock or DecryptBlock.  When expr{} xors together a positive & negative number it preserves the sign and may extend the values to 64 bit.

  Similar sign overflows were fixed in EncryptBlock & DecryptBlock in aes.tcl 1.6.

  To reproduce:
  --
  package require aes

  set keyhex c47b0294dbbbee0fec4757f22ffeee3587ca4730c3d33b691df38bab076bc558
  set texthex 46f2fb342d6f0ab477476fc501242c5f

  aes::aes -dir decrypt -mode ecb -hex -key [binary format H* $keyhex] -- [binary format H* $texthex]
  --

  Fix: use a mask to limit the result to 32 bit
  Change to aes.tcl:
  --
  proc ::aes::AddRoundKey {Key round words} {
      upvar #0 $Key state
      set r {}
      set n [expr {$round * $state(Nb)}]
      foreach w $words {
          lappend r [expr {0xffffffff & ($w ^ [lindex $state(W) $n])}]
          incr n
      }
      return $r
  }
  --

  Additional note:
  There are uses of expr{} in ExpandKey that may also overflow in a similar manner, and should be investigated.


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

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


  package require BWidget

  set max  100000000
  set incr   1000000

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

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


  The attached patch fixes this problem.

  Kind regards,

  Jos


tkt_uuid: 1931567fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: pregistry version problem
comment:
  Recently I encountered a problem with pregistry:

   $ /vol/tclsrcsol/ActiveTcl/bin/tclsh8.5
  % package require pregistry
  conflicting versions provided for package "pregistry": 1.0, then 0.1


  What is the expected output? What do you see instead?
  I expected to see the pregistry version number, but instead see the error.

  It has been removed from activetcl's teapot repository, but AK recommended I report the version problem here so that could be fixed.


tkt_uuid: 2974624fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: amazon-s3
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: man page for xsxp package incorrect
comment:
  In the manpage for the xsxp package the example is given : 

  xsxp::fetch $pxml {html body p#4 b} %PCDATA

  This should be corrected to: 

  xsxp::fetch $pxml {body p#4 b} %PCDATA

  fetch does not use the root node ( i.e. html ) by name and the fetch function purposely steps over it. In fact the only way to return any information about the root node is to specify {} as your path.  
  Having looked at the code one could also update the manpage to say that xsxp::fetch accepts paths in both list and '/' delimited format  (e.g { body p#4 b }  and /body/p#4/b )


tkt_uuid: 1085562fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
resolution: Fixed
title: math::bignum::testbit fails
comment:
  I want to report a bug in ::math::bignum::testbit.
   
  In the documentation I got (ActiveTCL help file, version 
  8.4.9.0), it says:
  ::math::bignum::testbit bignum bit 
  Return true if the bit at the bit position of bignum is on, 
  otherwise false is returned. If bit is out of range, it is 
  considered as set to zero.

   
  However, if I use this test bit on a "bignum" for which a 
  bit has NOT been set yet, it fails miserably.
   
  Here is the TCL code to induce the bug and the error 
  message reported:
  (bin) 3 % package require math::bignum
  3.0
  (bin) 4 % set z [::math::bignum::fromstr "3220"]
  bignum 0 3220
  (bin) 5 % ::math::bignum::testbit $z 23
  can't use empty string as operand of "&"
  (bin) 6 % 
   
  However, if a bit has previously been set which is equal 
  or greater than the bit tested, then the error message is 
  NOT reported.
   
  (bin) 8 % ::math::bignum::setbit z 24
  bignum 0 3220 256
  (bin) 9 % ::math::bignum::testbit $z 23
  0
  (bin) 10 % 
   
  By comparison with the other functions and 
  some "analysis", I have concluded that 2 lines are in the 
  wrong order.
  As it stands now, the function reads as:
   
  # Test the bit 'n' of 'z'. Returns true if the bit is set.
  proc ::math::bignum::testbit {z n} {
      set atom [expr {$n / $::math::bignum::atombits}]
  ######## Next 2 lines in wrong order
      if {$atom >= [llength $z]} {return 0}
      incr atom 2
  ########
      set mask [expr {1 << ($n & 
  ($::math::bignum::atombits-1))}]
      expr {([lindex $z $atom] & $mask) != 0}
  }
   
  when it should read as:
   
  # Test the bit 'n' of 'z'. Returns true if the bit is set.
  proc ::math::bignum::testbit {z n} {
      set atom [expr {$n / $::math::bignum::atombits}]
  ######## Next 2 lines identical to other functions
      incr atom 2
      if {$atom >= [llength $z]} {return 0}
  ########
      set mask [expr {1 << ($n & 
  ($::math::bignum::atombits-1))}]
      expr {([lindex $z $atom] & $mask) != 0}
  }


tkt_uuid: 477756ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: multiplexer
comment:
  Multiplexing server available at
  http://people.debian.org/~davidw/

  Maybe this is better as an application?


tkt_uuid: 3313947fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: http :: autoproxy
priority: 5 Medium
foundin: None
resolution: Fixed
title: Bug 3094654 fixed, but man page update forgotten
comment:
  Item 3094654 (missing dash sign for option names) has been fixed several months ago, but the man page was not updated and still shows option names without dashes:

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


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

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

  in widget::panelframe method add should be

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


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

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

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

  Tree .t
  pack .t

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

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

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


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

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

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

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


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

  * doctools 1.2
  test name 'doctools-6.13' re-used; prior use in
  /local/src/tcllib/modules/doctools/doctools.test


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

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


tkt_uuid: 1709334fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Missing trailing newline hangs sendmessage
comment:
  I'm not sure if this is a mime problem or an smtp problem, but...

  If you use the MIME package to create a text/plain without a newline on the end, then use smtp::sendmessage to send it, it appears to hang after sending the message in the DATA command. I suspect the "close the data" period is winding up at the end of the final line instead of at the start of a line by itself.

  Sample code:
  # The first message goes
  # The second message hangs.

  package require mime
  package require smtp

  proc sendmail {from to bcc subject body {queue 1}} {
    set mail [mime::initialize -canonical text/plain -string $body]
    smtp::sendmessage $mail \
      -debug 1 \
      -header [list From $from] \
      -header [list To $to] \
      -header [list BCC $bcc] \
      -header [list Subject $subject] 
    mime::finalize $mail
  }

  puts "Testing with newline..."
  sendmail "dnew@example.com" "dnew@example.com"  "" \
    "Subject One" "Test body\nNewline present\n"
  puts "Message one sent...\n"
  after 10000
  puts "Testing without newline..."
  sendmail "dnew@example.com" "dnew@example.com"  "" \
    "Subject two" "Test body\nNewline absent"
  puts "Message two sent..."


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

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

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

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

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


tkt_uuid: 564071ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: doctools - multi-release SYNOPSIS convention
comment:
  When looking for documentation on Unix, one types

  man package

  and that turns into a search for a file named
  "package.n" on the MANPATH, and a formatting and
  display of its contents.

  When a new release of package is installed, say
  version 1.1, where a prior version, say 1.0, is
  already installed, the two versions get installed
  side by side, but the man page for 1.1 overwrites
  the one for 1.0.

  For this reason it would be a good convention for
  man pages to include documentation for earlier
  compatible versions, as well as the latest changes.
  I recommended a SYNOPSIS convention like this:

  package require foo 1.0
  foo::bar x
  foo::baz
  package require foo 1.1
  foo::grok a b c
  package require foo 1.2
  foo::snafu
  foo::bar x ?y z?

  Here it is clear what minor release introduced
  each (variation of) each command.

  If the doctools cannot format such a SYNOPSIS 
  convention, I request the new feature that they
  be enhanced so they can.


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

  Hope this helps


tkt_uuid: 2370853fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: None
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Wrong path added to auto_path
comment:
  If tcllib.kit (the one from http://www.equi4.com/pub/om/sdarchive/) is sourced after twapi-1.1.5.kit, a wrong path gets added to auto_path and "package require tcllib" fails.  If tcllib.kit is sourced alone, or before twapi-1.1.5.kit, it adds two entries to auto_path:

  (ORmaint) 1 % set auto_path
  <several paths>
  (ORmaint) 2 % source tcllib.kit
  (ORmaint) 3 % set auto_path
  <same paths plus> <path to>/tcllib.kit/lib <path to>/tcllib.kit/tcllib

  This is with an 8.5.2 tclkit for Windows. But if sourced after twapi-1.1.5.kit, the second entry gets twapi's name instead of tcllib's:

  (ORmaint) 1 % set auto_path
  <several paths>
  (ORmaint) 2 % source twapi-1.1.5.kit
  (ORmaint) 3 % set auto_path
  <same paths plus> <path to>/twapi-1.1.5.kit/lib
  (ORmaint) 4 % source tcllib.kit
  (ORmaint) 5 % set auto_path
  <same paths plus> <path to>/twapi-1.1.5.kit/lib <path to>/tcllib.kit/lib <path to>/twapi-1.1.5.kit/tcllib

  When I asked about this on c.l.t, Michael Schlenker suggested that it might be a bug in the tcllib kit packaging and asked me to file this bug report.


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

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


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

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

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


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

  ini::commentchar ?char? 

  but code has 

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

  need to change the above line to : 


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

  in inifile.tcl


tkt_uuid: 519214ffffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: bwidget - TitleFrame: patch for rounded corners
comment:
  I have added the possibility to make the corners of a
  TitleFrame look round, using photo images and computed
  color shades (see enclosed files old.jpg for the old
  look and newrc.jpg for the new look).

  Given the actual trend to have more 'round' GUIs, this
  can help people to make TitleFrames look more
  conforming to the rest.

  I also enclosed an updated helpfile should the patch be
  accepted.

  Sideeffects to existing code:
  --------------------
  None that I know.

  Bugs:
  -----
  -extrapadtop and -extrapadbottom cannot be configured
  from 0 to >0 and from >0 to 0 after the widget
  creation. The reason is that frames cannot have a size
  of 0, so they are not packed at creation time if the
  size is 0.

  I think that one can live with that.


tkt_uuid: 1614860fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
title: Add a -client switch
comment:
  I would like to see a -client switch added to the SMTP library. Currently the SMTP library uses [info hostname] which can come back with a short name for the sending system and some MTA's might queue it and silently drop it.

  The -client switch would allow the programmer to set that to his desired client name to pass through.


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

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


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


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

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

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


tkt_uuid: 1386101fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: rc4
priority: 9 Immediate
foundin: None
resolution: Fixed
title: rc4 critcl fails when used with channels
comment:
  As reported by RJ Bacon:
   package require rc4
   rc4::rc4 -key 01234567 -infile xxzzy.dat
  will die.
  The problem is that the key returned by RC4Init when
  using critcl is not an array but we attempt to treat it
  like on and upvar it.


tkt_uuid: 561416ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Fixed
title: can't handle list of mail servers
comment:
  problem
  -------
  the procedure smtp::sendmessage has the option
  '-servers' for a list of available mail servers.
  Unfortunately the variable state(readable) is not reset
  after a failed connection the other servers in the list
  will also fail.

  solution
  --------
  in procedure smtp::initialize add

     set state(readable) 0

  at the beginning of the loop

     foreach server $options(-servers) {
       ...
     }

  best regards
  -- Beat Jucker


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

  Larry Virden wrote _________

  LV 2008 June 27.

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

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

  Vale adds _________

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

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

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

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


  AK, not from the wiki _________

  Note also the ChangeLog entry ...

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

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

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


tkt_uuid: 1811890fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: inifile
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: inifile : allow keys with no assignment
comment:
  First off, the "Category" list is missing "inifile".

  I'm attaching a patch to allow section keys that have no assigned value, not even an empty value which is done by doing "key=". This will allow a call to the ::get function to successfully return key "C" in the following example section:

  [dummy]
  A=first
  B=
  C

  A simple example of where this enhancement comes into play is if you wanted to use a section to hold a simple list of names, for example a list of valid file suffixes:

  [suffix_list]
  .txt
  .tcl
  .cxx

  The ::value function was modified to return the default value for keys that exist but have no assignment. This allows distinguishing the case where a key exists and is assigned an empty value versus a key that has no assignment.

  I've updated the test to cover this new capability.

  The patch was made against version 1.13 of ini.tcl and includes the following file updates:

  ini.tcl
  inifile.test
  pkgIndex.tcl
  test.ini


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


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

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

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

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

  Thanks,

  Ric


tkt_uuid: 3593146fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Build System & Testing
priority: 5 Medium
foundin: None
resolution: Accepted
title: Fails to build under windows with cygwin installed
comment:
  Here is an enhanced version of configure.in that makes tcllib build via configure/make under windows with cygwin installed but using native compiler with a non-cygwin tclsh. Please mind th eusage if CYGPATH to pass the arguments to the tclsh properly.
  Do not forget to rerun autoconf when using the new configure.in


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

  [subsection {This Title Has "Quotes"}]

  results in

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

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


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

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

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


tkt_uuid: 1267636fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: log
priority: 7 High
foundin: None
resolution: Accepted
title: logger: appender and formatter support
comment:
  The attached tar.gz file is for inclusion into the
  logger package. It introduces the concepts of appenders
  (console and colorConsole are included) and formatters
  to logger. 

  There is no existing code in logger changed, and all
  additions use  existing external apis. Additionally,
  the log procs generated try to resolve (hardcode) any
  pre-resolvable items to optimize log runtime.

  example of usage:

  % set log [logger::init testLog]
  ::logger::tree::testLog
  % logger::applyAppender -appender console -serviceCmd
  $log -conversionPattern {\[%d\] \[%c\] \[%M\] \[%p\] %m}

  % ${log}::error "this is error"
  [2005/08/22 10:14:13] [testLog] [global] [error] this
  is error



  I would welcome any review comments.

  doc attached in man and html format


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

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


tkt_uuid: 772300ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
title: Tiny doc patch for TkTable
comment:
  Looks like this is not the right place to talk about
  TkTable. Whoever gets this request: please assign it to
  Jeff Hobbs.

  In the documentation for TkTable please add in the section
      Embedded Windows
          ...
      -window pathName

  a line like: "When a pathName of "" is specified,
  TkTable ceases to display any widget which might have
  been associated with the cell in question."
  Best regards
  Helmut Giese


tkt_uuid: 1541828fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Accepted
title: modifyDN : new arg, and split search function
comment:
  This patch:

  - introduces a newSuperior optional parameter to 
  modifyDN

  - splits the search function in 3 new functions: 
  searchInit, searchNext and searchEnd. The old search 
  function is rewritten using these 3 new functions and 
  the result is compatible.

  Since I'm not familiar with Tcllib man format, don't 
  hesitate to correct wording and formatting.


tkt_uuid: 899204ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: inifile
priority: 5 Medium
foundin: None
resolution: Fixed
title: inifile test suite failures
comment:
  The inifile.test depends on the
  file test.ini being writable. 
  However, in the official tcllib
  release, that file is read-only,
  causing the tests to fail.
  Is writability really needed?
  If not, the test should be modified
  to use mode r, instead of r+.

  Also, as written, tests
  inifile-1.2 through initfile-1.14
  depend on inifile-1.1 having
  run successfully.  This kind
  of inter-test dependency should
  be removed, since -skip options,
  etc. to tcltest mean there's no
  guarantee what tests will actually
  run.


tkt_uuid: 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: 671821ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Duplicate
title: ScrolledWindow flashing scrollbars
comment:
  ScrolledWindow has a bug that the scrollbars will be
  gridded, then imediately ungridded indefinately under
  special circumstances. For instance, if a text widget
  is placed in the ScrolledWindow and the very  last
  viewable line causes the horizontal scrollbar to be
  gridded, the scrollbar will cause the last line to go
  out of view, thus causing itself to be ungridded,
  causing the last line to be viewable again, causing the
  scrollbar to be gridded .........

  This patch will fix the scrollbar flash.

  Note, using the same example as above, if the last line
  in a text field causes the scrollbar to be gridded, the
  scrollbar will cover the last line and the scrollbar's
  handle will be fully expanded, making the scrollbar
  somewhat unneeded. But it is better than the
  alternative of an infinitel loop that eventually causes
  a bgerror.


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

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

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

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

  set r [Hex $r]

  are replaced with:

  set r [Hex -- $r]

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

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


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

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

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


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


tkt_uuid: 3012669fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Documentation
priority: 5 Medium
foundin: None
resolution: Fixed
title: msgcat man page conflicts with the Tcl core
comment:
  The msgcat man page of tcllib's doctools module conflicts with the identically named man page from the Tcl core when installing both at the same time.


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

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

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

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

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


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

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

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

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

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

  After reverting to tcllib 1.8 the problem goes away:

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

  # cat dup-bug.log
  test


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

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

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

  M.Hoffmann@hmk.info 


tkt_uuid: 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: 2018141fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Accepted
title: Reimpl. of search filter strings parsing/encoding
comment:
  This patch reimplements parsing and encoding of search filter strings, namely:
  * Implemented proper syntax parsing using regexps only when really applicable. The parser appears to be enough robust for errors in filter specifications.
  * Options in attribute descriptions are now permitted (but not used, see below).
  * Implemented full support for extensible match rules.

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

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

  This patch should fix bugs 1751871 and 1852718.

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

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


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


tkt_uuid: 3182287fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: Themed ComboBox failes due to themed entry widget
comment:
  When using a BWidget Combobox when theming is activated, it fails on creation and on posting its list due to the use of the themed Entry widget, which does not support any more:
  -relief
  -highlightbackground
  -highlightforeground

  The attached patch at least removes the errors.
  Please use ttk::combobox instead.

  The attached patch will not be in the repository before Andreas reallows it.


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

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

  Please let me know if you need anything else.

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

  Jean-Luc


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

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

      set client {}

  Then in the option parsing add this:

      -client { set client $value }

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

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

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

  This is from bpepers@linuxcanada.com


tkt_uuid: 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: 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: 2890065fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: stringprep
priority: 5 Medium
foundin: None
resolution: Accepted
title: Stringprep fixes (bidi and folding)
comment:
  Hi!

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

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

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

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


tkt_uuid: 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: 1917035fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: inifile
priority: 6
foundin: None
resolution: Fixed
title: inifile - Global procedure 'commentchar' ok?
comment:
  The package inifile defines a global procedure called 'commentchar' (line 175ff).

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


