# ticket

tkt_uuid: 3138526fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: smtp
priority: 5 Medium
foundin: None
title: Wrong email server name gives unrelated error message
cmimetype: text/plain
submitter: arjenmarkus
assignee: mrose
comment:
  If you pass the wrong server name to the smtp::sendmessage procedure, then the error message is:

  premature end-of-file from server

  This may be true, but it does not easily lead to the cause of the problem: the specified server does not exist.

  Please try to detect this type of error and return a message that is more to the point


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


tkt_uuid: 3141568fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: fileutil
priority: 5 Medium
foundin: None
title: find errors out on broken directory soft links
cmimetype: text/plain
submitter: guardus
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-01-09T00:18:40
comment:
  fileutil::find errors out on broken directory soft links.  I am running ActiveTcl 8.5.9.1 on
  Windows XP and fileutil 1.14.4 from the Activestate Teapot.

  See attached error.tcl script.  Basically, the link1_test link points to a non-existent
  directory, and then "glob -nocomplain -directory link1_test -- *" errors out.  (One could
  argue that this should not error out because "glob -nocomplain -directory non_existent_dir -- *"
  does not error out, but that's not a tcllib issue.)

      [510] ./error.tcl
      first find results: ./.error.tcl.un~ ./error.tcl ./error.tcl+ ./.error.tcl.swp ./dir1_test ./link1_test
      couldn't read directory "C:/temp/tmp/link1_test/*": no such file or directory
          while executing
      "glob -nocomplain -directory $current -types f          -- *"
          (procedure "GLOBF" line 2)
          invoked from within
      "GLOBF $current"
          (procedure "find" line 48)
          invoked from within
      "find . {string match *}"
          invoked from within
      "set findResults2 [find . {string match *}]"
          (file "./error.tcl" line 19)

  I worked around this by adding a test at the beginning of GLOBF and GLOBD.

      proc ::fileutil::GLOBF {current} {
          if {([file type $current] eq {link}) && ![file exists [file readlink $current]]} {
              return {}
          }
          ...


tkt_uuid: 3141584fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: units
priority: 5 Medium
foundin: None
title: units::convert bug (when value is zero)
cmimetype: text/plain
submitter: yyamasak
assignee: techentin
closer: techentin
closedate: 2010-12-22T15:17:01
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: 3147481fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: fileutil
priority: 5 Medium
foundin: None
title: find error on hidden, unreadable directory in Windows
cmimetype: text/plain
submitter: guardus
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-01-09T00:18:32
comment:
  I am using ActiveTcl 8.5.9.1 on Windows XP SP3.

    fileutil::find $env(SYSTEMDRIVE)/ {string match *.pdf}
    couldn't read directory "C:/System Volume Information/*": permission denied
        while executing
    "glob -nocomplain -directory $current -types f          -- *"
        (procedure "GLOBF" line 8)
        invoked from within
    "GLOBF $current"
        (procedure "find" line 48)
        invoked from within
    "find $env(SYSTEMDRIVE)/ {string match *.pdf}"
        (file "./error.tcl" line 6)

  Maybe "glob -nocomplain" should not error out, but for now I added a check to
  make sure the directory is readable in GLOBF and GLOBD as a workaround.
  My workaround, along with my workaround for bug 3141568, looks like this:

      proc ::fileutil::GLOBF {current} {
          if {![file readable $current]} {
              return {}
          }
          if {([file type $current] eq {link}) && !([file exists [file readlink $current]] && [file readable [file readlink $current]])} {
              return {}
          }


tkt_uuid: 3151099fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: mime
priority: 5 Medium
foundin: None
title: fail to send when addr is like foobar.@example.com
cmimetype: text/plain
submitter: sickpig
assignee: mrose
comment:
  smtp::sendmail fails to send email that
  looks like foobar.@example.com.

  As far as I know having an email address with a dot (".") as the 
  last char before @ should be RFC compliant. 

  I checked email address using this regexp:

  regexp {^[a-z0-9\.\-\_]+\@[a-z0-9]([a-z0-9\-\_]+\.)+[a-z0-9\-\_]+$} $mail

  I'm using tcllib 1.12 (ubuntu 10.10).

  This  the actual error message: 

  Sending to foobar.@example.com: prova.pdf
  error in To: expecting colon to terminate route (found end-of-input)
      while executing
  "error "error in $who: $aprops(error)""
      (procedure "smtp::sendmessage" line 260)
      invoked from within
  "smtp::sendmessage $multiT -servers yoursmtpserver.com -header [list From "me@mydomain.com"]  -header [list To $rcpt]  -header [list Subject "this is the subject..."
      ("foreach" body line 13)
      invoked from within
  "foreach rcpt $recipients {

         set this_image $file
         # create an image and text
         set imageT [mime::initialize -canonical \
             ..."


tkt_uuid: 3160150fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tklib :: cursor
priority: 5 Medium
foundin: None
title: invalid command name "SpinBox::config"
cmimetype: text/plain
submitter: tombert
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-01-18T18:18:26
comment:
  Error when doing:

  package re BWidget
  SpinBox .sb -text test
  package re cursor
  cursor::propagate . watch

  thx


tkt_uuid: 3162548fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: tar
priority: 8
foundin: None
title: tar -- support existing/nonseekable channels
cmimetype: text/plain
submitter: ferrieux
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-01-20T19:46:14
comment:
  The attached patch adds a "-chan" option to [contents/stat/get/untar/create]  (but *not* [add/remove], foor good reasons), which interprets the first argument as a channel name instead of filename. This allows to pass already opened channels, seekable or not. One typical usage is the emulation of 'tar cf - | ...':

     ::tar::create  $pipe  $listoffiles -chan

  Which is typically useful for Wub, to serve content that is to be tarred on-the-fly, instead of (currently) using tempfiles.
  The same applies on input, where seek is emulated by repeated reads when the channel is not seekable; similarly a "tar tf -" can thus be done on any pipe or socket.

  Note that the responsibility for 'fconfigure -translation binary' is left to the caller; only raw IO are done on the provided channel, and it is left open on return. 

  I have not included the (needed) documentation update; I would appreciate a hand since I don't have the renderer handy ;-)


tkt_uuid: 3163541fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: grammar_peg
priority: 5 Medium
foundin: None
title: Possibly wrong call of ict_match_token
cmimetype: text/plain
submitter: igorstravinski
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-01-25T06:40:20
comment:
   in line 116 of grammar_peg/peg_interp.tcl:
              ict_match_token "Expected $ch"
  should read
              ict_match_token $ch "Expected $ch"

  See, e.g. <http://wiki.tcl.tk/15512> for more details


tkt_uuid: 3163579fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: None
priority: 5 Medium
foundin: None
title: Add a -compress config option for ::http::config
cmimetype: text/plain
submitter: karll
assignee: patthoyts
comment:
  Right now the http packages requests compressed results if the website offers it and the zlib package has been loaded (or Tcl 8.6 is being used).

  We are tracking a problem where some compressed data is getting corrupted.  We want to use the http package to fetch both compressed and uncompressed versions of the page.  Currently with the http package it's all or nothing.  

  I can work around the problem by specifying a -channel or -handler option, based on reading the source, but an explicit way to control the behavior would be preferable.


tkt_uuid: 3164978fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: nmea
priority: 9 Immediate
foundin: None
title: missing procs or wrong man
cmimetype: text/plain
submitter: harmol
assignee: afaupell
comment:
  According to http://tcllib.sourceforge.net/doc/nmea.html there are two procs: ::nmea::close_port 
   and ::nmea::close_file, which don't seem to have been implemented.

  There is a proc ::nmea::close, so either the documentation should be changed or the procs will have to be implemented.
  I prefer the latter.


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


tkt_uuid: 3167248fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 5 Medium
foundin: None
title: Release file tcllib-1.13.tar.gz is corrupt
cmimetype: text/plain
submitter: egavilan
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-01-29T22:29:17
comment:
  The distribution file tcllib-1.13.tar.gz is corrupt. After downloading, trying to unpack yields
  $ tar zxf tcllib-1.13.tar.gz 

  gzip: stdin: unexpected end of file
  tar: Unexpected EOF in archive
  tar: Unexpected EOF in archive
  tar: Error is not recoverable: exiting now

  Same error with different mirrors (ufpr and switch)
  The file tcllib-1.13.tar.bz2 unpacks correctly.


tkt_uuid: 3168761fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Themed widgets cause Tcl errors
cmimetype: text/plain
submitter: zoro2
assignee: oehhar
closer: oehhar
closedate: 2011-02-14T16:57:44
comment:
  Multiple widgets - including Entry, LabelFrame and LabelEntry cause errors when used after [Widget::theme 1] was called.

  Included are fixes I made against 1.9.4 release.


tkt_uuid: 3182287fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Themed ComboBox failes due to themed entry widget
cmimetype: text/plain
submitter: oehhar
assignee: oehhar
closer: oehhar
closedate: 2011-02-15T14:28:58
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: 3183064fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: pt (parsetools)
priority: 5 Medium
foundin: None
title: package provide statement not correct.
cmimetype: text/plain
submitter: john-roll
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-02-16T21:55:55
comment:
  When generating a parser for snit or TclOO the final substitution of the parser package name is not correctly substituted into the package provide statement on the second to last line of the output.


tkt_uuid: 3183080fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tcl :: chan :: *
priority: 5 Medium
foundin: None
title: Allowance in tcl::chan::string
cmimetype: text/plain
submitter: john-roll
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-02-16T20:58:58
comment:
  Verification of "Allowance" in a string channel return error.

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

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

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

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

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

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


tkt_uuid: 3189786fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: cmdline
priority: 5 Medium
foundin: None
title: option processing default incorrect for .arg and .secret
cmimetype: text/plain
submitter: guardus
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-02-23T17:43:35
comment:
  It looks like a regexp is not escaped properly, so an option myarg creates a default m in the argument array.

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

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

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

  Run the attached script "arg -h".


tkt_uuid: 3193459fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: math :: optimize
priority: 5 Medium
foundin: None
title: divide by zero
cmimetype: text/plain
submitter: jdbr
assignee: arjenmarkus
comment:
  nelderMead can attempt to divide by zero. For example (Tcl8.5 tcllib-1.13) math::optimize::nelderMead {apply {{x y} {expr {abs($x-$y)}}}} {1 1}
  gives a domain error. The problem is not well formed, as the minimum is a line (x=y), but this could occur in other cases as well.
  One solution would be to add param(-ftol) to the denominator where rerror is calculated:
  set rerror [expr { 2. * abs( $yTop - $yBot )
     / ( abs( $yTop ) + abs( $yBot ) + $params(-ftol)) }]
  This will change the error from relative to absolute  with tolerance -ftol^2 for function values much less than -ftol
  It will change the relative error tolerance from -ftol to about 0.667*-ftol when the function value is near -ftol
  There is little effect when the function value is much larger than -ftol.

  -ftol must be larger than 0.
   it is already required (in  $rerror < $params(-ftol) on the line following rerror calculation)
  It might be worth verifying that while checking arguments.


tkt_uuid: 3235340fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: uri
priority: 5 Medium
foundin: None
title: uri::split mishandles fragment
cmimetype: text/plain
submitter: duquette
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-03-23T04:41:59
comment:
  The uri::split command mishandles the "fragment" of http:// URIs in two ways:

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


tkt_uuid: 3247765fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: smtpd
priority: 5 Medium
foundin: None
title: Add a smtpd::configure -banner callback
cmimetype: text/plain
submitter: otterholm
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-04-11T21:53:45
comment:
  The first thought using the  smtpd package is that the first response the smtpd does to an accepted client connection is to put up a "banner" reply to the client shouldnt be hardcoded by the smtpd package.

  This line is hardcoded in the source as :  Puts $channel "220 $options(serveraddr) tcllib smtpd $version; [timestamp]" .
  Developping your own smtpd application using the smtpd package as of now leaves you having no way to set your own banner relevant to your own implementation.

  I suggest that there should be something like smtpd::configure  -banner callback


tkt_uuid: 3252952fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: coroutine
priority: 5 Medium
foundin: None
title: Coroutine package overwrites core ::coroutine command
cmimetype: text/plain
submitter: egavilan
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-04-18T20:26:09
comment:
  The coroutine package creates a new command (via [namespace ensemble create]) which clashes with the core ::coroutine command.
  Possible solutions:
  * Move the original ::coroutine command to the ::coroutine namespace first.
  * Use the -command option of [namespace ensemble create] to change the name of the created ensemble.
  * Rename the ::coroutine namespace altoghether.


tkt_uuid: 3281791fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: csv
priority: 5 Medium
foundin: None
title: CSV example documentation fix
cmimetype: text/plain
submitter: guardus
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-04-11T21:08:46
comment:
  I think the documentation fix for 3061815 is incomplete.  The last line in the Example section:

      As can be seen only item (d) is different, now a " instead of the empty string.

  should be: ... item (d) is different, now the empty string instead of a ".

  By the way, when does the html get updated?  http://tcllib.sourceforge.net/doc/csv.html
  does not have the 3061815 fix.


tkt_uuid: 3288793fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: ftp
priority: 5 Medium
foundin: None
title: ftp::List does not work inside tkcon
cmimetype: text/plain
submitter: proteco
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-04-18T19:27:59
comment:
  the proposed fix is to replace:
  proc ::ftp::__ftp_ls {args} {
          foreach i [eval ::ftp::List_org $args] {
              puts $i
          }
      }
  with:
      proc ::ftp::__ftp_ls {args} {
          set rc [eval ::ftp::List_org $args]
          foreach i $rc {
              puts $i
          }
          return $rc
      }

  in ftp.tcl file.


tkt_uuid: 3288977fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: ftp
priority: 5 Medium
foundin: None
title: client hangs on bad multi-line server responses
cmimetype: text/plain
submitter: szinck
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-04-18T19:27:41
comment:
  If the server doesn't speak strict RFC-959 when it comes to multi-line responses, it can cause the client to hang.

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

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

      ^^^ notice no "221 Goodbye."

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

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


tkt_uuid: 3292977fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 3 Low
foundin: None
title: Error when Themed Label foreground changed
cmimetype: text/plain
submitter: oehhar
assignee: oehhar
closer: oehhar
closedate: 2011-04-26T08:16:55
comment:
  An error arises when foreground color of a themed label widget is changed.
  Use -foreground instead -fg for ttk::label.

  This was corrected on CSV.


tkt_uuid: 3300362fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: tklib :: tooltip
priority: 3 Low
foundin: None
title: Tooltip font, msgcat namespace
cmimetype: text/plain
submitter: oehhar
assignee: hobbs
comment:
  Leaving BWidget, I was looking to the tktooltip package. Here are two comments:

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

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

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

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

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

  - Harald


tkt_uuid: 3304371fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: irc
priority: 5 Medium
foundin: None
title: Add secure IRC (TLS/994) support to pico IRC
cmimetype: text/plain
submitter: karll
assignee: davidw
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: 3308051fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: struct :: list
priority: 5 Medium
foundin: None
title: struct::list equal is not commutative in special case
cmimetype: text/plain
assignee: andreas_kupries
closer: mic42
closedate: 2011-09-17T14:36:42
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: 3308105fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: smtp
priority: 5 Medium
foundin: None
title: Traceback fingers unrelated catch output
cmimetype: text/plain
submitter: karll
assignee: mrose
comment:
  Hi,

  We had a problem today where we were getting a traceback from tcllib's smtp package while trying to queue a message.  The traceback pointed to "key message-id not in header", but this wasn't the problem.  The real problem was "451: 4.3.0 Error: queue file write error" because /var was out of space.

  Tracing stuff, we found this call, the last line of ::smtp::sendmessage:

      return -code 1 -errorinfo {key message-id not in header\n    while e...} -errorcode NONE {451: 4.3.0 Error: queue file write error}

  The errorinfo is incorrect -- it is from a catch of an innocent error 281 lines into the sendmessage proc, where it says...


      if {([lsearch -exact $lowerL ${message-idL}] < 0) \
              && ([catch { ::mime::getheader $part ${message-idL} }])} {

  This made it much harder to troubleshoot the actual error.

  Please fix the smtp package to finger the correct error -- I'm not sure where the bug is but whatever generated the error "451: 4.3.0 Error: queue file write error" did not get the errorinfo set properly.  I hope this is enough info.


tkt_uuid: 3309165fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: math
priority: 5 Medium
foundin: None
title: math::bigfloat::isInt returns 1 on non-integers
cmimetype: text/plain
submitter: blacksqr
assignee: nobody
comment:
  Tcl 8.5
  math::bigfloat version 2.0.1

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

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

  A better implementation might be something like:

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


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

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

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


tkt_uuid: 3312880fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ftpd
priority: 5 Medium
foundin: None
title: FTP command "RNFR" checks filesystem paths
cmimetype: text/plain
submitter: rkeene
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-08-09T20:39:54
comment:
  RNFR checks the native filesystem for the pathname specified.

  The offending logic is:
          if {[file exists $path]} {...}

  This will fail unless you are using the native filesystem driver and a docroot of "/"

  To check for existence, perhaps rename could be called with "newname" of "" (empty string) ?


tkt_uuid: 3312900fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ftpd
priority: 5 Medium
foundin: None
title: CWD operation does not perform basic checks
cmimetype: text/plain
submitter: rkeene
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-08-09T20:50:58
comment:
  CWD operation should check for existence of file (using the filesystem callback "exists" to prevent changing directories to a file)

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


tkt_uuid: 3313923fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: http :: autoproxy
priority: 7 High
foundin: None
title: configure -authProc does not grab the correct argument
cmimetype: text/plain
submitter: fvogelnew1
assignee: patthoyts
closer: patthoyts
closedate: 2012-02-08T00:25:08
comment:
  package require autoproxy
  autoproxy::init
  autoproxy::configure  ; # show what was found
  autoproxy::configure -authProc defAuthProc
  autoproxy::configure  ; # see the BUG?
  autoproxy::cget -authProc  ; # see the BUG more clearly!

  The last command returns "-authProc" whereas it should return "defAuthProc"

  Fix:
  Line 106 of autoproxy.tcl should read:
              -authProc { set options(authProc) [Pop args 1] }
  instead of:
              -authProc { set options(authProc) [Pop args] }


tkt_uuid: 3313947fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: http :: autoproxy
priority: 5 Medium
foundin: None
title: Bug 3094654 fixed, but man page update forgotten
cmimetype: text/plain
submitter: fvogelnew1
assignee: patthoyts
closer: oehhar
closedate: 2012-02-13T09:54:00
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: 3315620fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: huddle
priority: 5 Medium
foundin: None
title: Invalid JSON with values that begin with 0
cmimetype: text/plain
assignee: kanryu6
comment:
  I think [huddle jsondump] should quote values with a beginning zero:

  ::json::json2dict [huddle jsondump [huddle create key 000000]]

  --> unexpected token "0" at position 5; expecting ","|"}"

  ::json::json2dict [huddle jsondump [huddle create key 1000000]]

  --> key 1000000

  PS
  The category huddle is missing!


tkt_uuid: 3316478fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: simulation::random
priority: 7 High
foundin: None
title: prng_rectangle is overwritten by prng_block implementation
cmimetype: text/plain
submitter: andreas_kupries
assignee: arjenmarkus
closer: andreas_kupries
closedate: 2013-01-09T00:20:08
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: 3316505fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: simulation::random
priority: 7 High
foundin: None
title: chi-squared is wrong
cmimetype: text/plain
submitter: andreas_kupries
assignee: arjenmarkus
closer: arjenmarkus
closedate: 2011-06-15T07:06:07
comment:
  The variable y in the generation of chi-squared randon numbers is independent of loop counter or itself from previous iterations.
  I.e. after the loop we have only the last y of the last iteration.

  According to
  http://www.dsplog.com/2008/07/28/chi-square-random-variable/

  y should be a sum instead, i.e. instead of

      set y [expr {$r * $r}]

  it should be

      set y [expr {$y + $r * $r}]


tkt_uuid: 3317772fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ListBox does not allow scrolling to last line on Windows 7
cmimetype: text/plain
submitter: zoro2
assignee: oehhar
closer: oehhar
closedate: 2011-06-24T09:25:31
comment:
  Hi,

  Example below shows the issue:

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

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


tkt_uuid: 3324610fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ListBox bindImage is broken
cmimetype: text/plain
submitter: takatsuki
assignee: oehhar
closer: oehhar
closedate: 2011-06-23T08:30:58
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: 3325112fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: ftp
priority: 5 Medium
foundin: None
title: ftp -- too enthusiastic use of reverse DNS
cmimetype: text/plain
submitter: ferrieux
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-08-09T20:05:03
comment:
  The calls to [fconfigure -peer/sockname], which incur reverse DNS lookups, are not ideally placed in the code. This matters when the reverse DNS lookup is likely to fail slowly (with a timeout). TYpical are ill-configured resolvers. Especially the lookup on the client's own IP is likely to fail when it's NATted. See https://groups.google.com/group/comp.lang.tcl/browse_frm/thread/65b6637a503f4966?hl=fr# .

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

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


tkt_uuid: 3325229fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ftpd
priority: 5 Medium
foundin: None
title: RNTO calls callback "rename" with wrong number of args
cmimetype: text/plain
submitter: rkeene
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-08-09T20:41:56
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: 3354014fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: mime
priority: 5 Medium
foundin: None
title: Documentation describes "mime::initialize .. -part" option
cmimetype: text/plain
submitter: rkeene
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-08-02T17:33:37
comment:
  Documentation describes "mime::initialize .. -part" option, but no such option exists.  It should be "-parts", apparently.


tkt_uuid: 3357765fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: ftpd
priority: 5 Medium
foundin: None
title: Many commands assume a socket is established, may not be so.
cmimetype: text/plain
submitter: rkeene
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-08-09T20:18:55
comment:
  When using PASV the client may not connect to the server until after the command that needs the data connection is issued.  Currently Fs commands are just given the sock handle of "" when this happens.

  The FTP RFC indicates that it is acceptable for the client not to have connected to the port described by the result of the PASV command until after a command that needs it is issued.


tkt_uuid: 3379585fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: comm
priority: 5 Medium
foundin: None
title: comm does not work in tclsh
cmimetype: text/plain
submitter: aboegge
assignee: andreas_kupries
closer: aboegge
closedate: 2011-07-27T09:12:02
comment:
  I tried to use ::comm as server in tclsh 8.5.9 and it does not work. sending a request works but i receive no answer. tclsh is not blocking.

  I used the following code to send a command using comm.

  package require comm
  ::comm::comm send 51439 set test 1


tkt_uuid: 3381002fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
title: Tkchat announces wrong hash in XEP-0115 Entity Capabilities
cmimetype: text/plain
submitter: quantifier
assignee: patthoyts
closer: patthoyts
closedate: 2012-01-23T20:35:38
comment:
  Patch that fixes missing "<" :

  Index: tkchat.tcl
  ===================================================================
  RCS file: /cvsroot/tcllib/tclapps/apps/tkchat/tkchat.tcl,v
  retrieving revision 1.486
  diff -u -r1.486 tkchat.tcl
  --- tkchat.tcl  17 May 2011 23:27:19 -0000      1.486
  +++ tkchat.tcl  28 Jul 2011 12:37:38 -0000
  @@ -8475,7 +8475,7 @@
       # extended feature processing as well (order counts)
       append S "urn:xmpp:dataforms:softwareinfo<"
       append S "os<$tcl_platform(os)<"
  -    append S "os_version<$tcl_platform(osVersion)"
  +    append S "os_version<$tcl_platform(osVersion)<"
       append S "software<tkchat<software_version<$tkchatver<"
       return [base64::encode -maxlen 0 [sha1::sha1 -bin $S]]
   }


tkt_uuid: 3382519fffffffffffffffffffffffffffffffff
type: Patch
status: Pending
resolution: Postponed
subsystem: bwidget 1.x
priority: 5 Medium
severity: Minor
foundin: None
title: "Font" option configuration for selected page of NoteBook
cmimetype: text/plain
submitter: sosna
assignee: oehhar
closer: nobody
comment:
  In documentation for BWidget it is stated that with "itemconfigure" command user can query/modify any option that can be used during NoteBook widget creation.
  With current version of BWidget (1.9.5) there is no possibility to change "-font" option for single page.
  I've made few modifications to file "notebook.tcl", and right now it is possible to do that.
  Modified file is attached to this report - maybe it is worth to include it in official release.

  Best regards to all,
  Michal.


tkt_uuid: 3383039fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: math
priority: 5 Medium
foundin: None
title: Error in decimal.n
cmimetype: text/plain
submitter: tombert
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-08-09T19:47:09
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: 3389655fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tcl :: chan :: *
priority: 5 Medium
foundin: None
title: memchan not working
cmimetype: text/plain
submitter: zzpdean
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-08-10T17:02:49
comment:
  testing in tkcon produces these responses (also tested with 8.5.10)

  ...(Tcl8.6b1.2 / Tk8.6b1.2)
  % package require TclOO
  0.6.2
  % package require tcl::chan::memchan
  1.0.1 

  % set fid [::tcl::chan::memchan]
  can't read "content": no such variable 

  % package require tcl::chan::variable
  1.0.1 

  % set fid [::tcl::chan::variable buffer]
  can't read "allowed(write)": no such variable 


tkt_uuid: 3396661fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: yaml
priority: 9 Immediate
foundin: None
title: Failure to parse valid YAML, the 2nd
cmimetype: text/plain
submitter: andreas_kupries
assignee: kanryu6
closer: kanryu6
closedate: 2011-08-23T13:09:07
comment:
  The inlined YAML

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

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

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

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

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

      set result {}

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


tkt_uuid: 3396787fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: json
priority: 5 Medium
foundin: None
title: strange if condition in json::write
cmimetype: text/plain
submitter: uring
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-08-24T20:10:27
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: 3419727fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: inifile
priority: 9 Immediate
foundin: None
title: global variable key is destroyed during file open procedure
cmimetype: text/plain
submitter: tclelch
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-12-02T22:24:23
comment:
  code snipset out of
  # RCS: @(#) $Id: ini.tcl,v 1.15 2008/05/11 00:53:58 andreas_kupries Exp $

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

  destroys the content of the global variable  "key". 


tkt_uuid: 3422990fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tepam
priority: 5 Medium
foundin: None
title: Some tepam tests require Tk without constraints.
cmimetype: text/plain
submitter: stwo
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-11-09T05:46:09
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: 3423097fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: smtp
priority: 5 Medium
foundin: None
title: smtp lacks -timeout option
cmimetype: text/plain
submitter: zbigniew_b
assignee: mrose
comment:
  There's a need for such option, to assure reliability for scipts using smtp client package. I made a simple "experiment": while sending a few mails simply pulled ethernet plug out of the socket - the script went "frozen" for several minutes (didn't measure...), until I plugged it in again. IMHO there should be possibility to give up ("-timeout x", where "-timeout 0" could mean "keep trying unlimited time"), And perhaps it could be improved a bit: to keep the entire script responsible, even in the case of network problems, like loss of connectivity?


tkt_uuid: 3425269fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tepam
priority: 5 Medium
foundin: None
title: Errors in tepam demo when TkCon not present
cmimetype: text/plain
submitter: stwo
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-11-09T05:58:16
comment:
  The tepam demo will generate an error when TkCon isn't present, due to an uninitialized variable.
  Another error will be generated because the variable "tcl_platform" is not scoped properly.
  Attached patch also applies the same "prologue" as used in all the other examples.


tkt_uuid: 3425271fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: Installation
priority: 5 Medium
foundin: None
title: Template files not installed
cmimetype: text/plain
submitter: stwo
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-11-10T21:16:34
comment:
  The *.template files for "page" are not installed, needed by certain parser generators.
  Their lack causes the app "page" to err out by default.
  Patches to installer use "_trt" - suggested abbreviation, maybe not the best choice.
  Also included a patch to the "page" demo to add the installed "page" dir to the auto_path so that the plugins can be found; probably not the best solution, take as suggestion, reminder. :)


tkt_uuid: 3426178fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: json
priority: 5 Medium
foundin: None
title: extra "$" in json::list2json
cmimetype: text/plain
submitter: a11426
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-11-10T21:06:55
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: 3427030fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: md5crypt
priority: 5 Medium
severity: Minor
foundin: None
title: Memory leak in md5crypt::aprcrypt in tcllib 1.13
cmimetype: text/plain
submitter: rich123
assignee: andreas_kupries
closer: aku
closedate: 2456469.19940883
comment:
  There is a memory leak somewhere in the md5crypt::aprcrypt implementation in tcllib
  1.13.

  Steps to repeat:

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

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


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

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

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

  The patch also includes requisite updates to the manual page.


tkt_uuid: 3428262fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: json
priority: 5 Medium
severity: Minor
foundin: None
title: JSON: Trailing spaces added to number value
cmimetype: text/plain
assignee: andreas_kupries
closer: aku
closedate: 2456469.19920527
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: 3433470fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: Development Tools
priority: 9 Immediate
foundin: None
title: Expired certificates
cmimetype: text/plain
submitter: stwo
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-01-22T01:50:12
comment:
  The certificates 'receiver.crt' and 'transmitter.crt' have expired, causing test failures in modules 'comm' and 'pop3' if 'tcltls' is installed at the time the test suite is run.
  Also, the README in the devtools directory mentions that only the 'pop3' tests use these files, which is not true, as noted above.
  Please regen these certs with much later expiry dates.


tkt_uuid: 3434579fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: yaml
priority: 8
foundin: None
title: Infinite loop
cmimetype: text/plain
submitter: andreas_kupries
assignee: kanryu6
comment:
  When a yaml input file (or string) is not terminated with a \n (EOL) the yaml parser gos into an infinite loop at the end.


tkt_uuid: 3437641fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: valtype
priority: 5 Medium
foundin: None
title: new valtype function
cmimetype: text/plain
submitter: maxjarek
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2011-11-16T19:10:08
comment:
  I prepare new valtype::iban file for validate Bank Identyficer Number. I think this is good add-ons for tcllib.


tkt_uuid: 3437761fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: keyboard traversal broken if spaces in widget pathnames
cmimetype: text/plain
submitter: jaspertheperson
assignee: oehhar
closer: oehhar
closedate: 2011-11-14T14:29:09
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: 3439693fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Out of Date
subsystem: pki
priority: 5 Medium
foundin: None
title: ::pki::x509::parse_cert error
cmimetype: text/plain
assignee: rkeene
closer: nobody
closedate: 2011-11-18T23:40:46
comment:
  While parsing a cert, a bug comes when reviving strings on the issuer and subject objects.  The problem comes in proc ::pki::x509::_dn_to_list as some certs has UTF8String instead of PrintableString.  My solution was to replace

  ::asn::asnGetPrintableString curr_part value

   by:

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

  Hope that helps

  Regards

  -=Raul=-


tkt_uuid: 3439702fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: html
priority: 5 Medium
foundin: None
title: ::html::js & ::html::css error
cmimetype: text/plain
assignee: welch
comment:
  Hi,

  When calling this 2 procs mentioned, it tries to set a namespace variable with a ::html::set instead of ::set.  However, even replacing "set" by "::set" on those 2 procs, it overrides the last value.

  What i did was just to replace "set page(js)" by "lappend page(js)".  same for css, as ::html::head calls those vars with a "foreach", meaning that they should be lists.  Now it works fine.

  Regards

  -=Raul=-


tkt_uuid: 3440045fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: pki
priority: 5 Medium
foundin: None
title: ::pki::x509::_list_to_dn invalid char
cmimetype: text/plain
assignee: rkeene
closer: rkeene
closedate: 2012-02-19T02:04:23
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: 3440058fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: pki
priority: 5 Medium
foundin: None
title: (pki) Key related stuff
cmimetype: text/plain
assignee: rkeene
closer: rkeene
closedate: 2013-01-07T05:19:02
comment:
  ::pki::rsa::generate and ::pki::pkcs::parse_key procs only handles the n,e,d vaules of a key, and calculates the size.  On file attached, there is the full info of the rsa key set.

  There is a new proc to converts the tcl stored key to pem, also with DES password encryption option, which is fully recognized by openssl.  (Not sure if it is named properly)

  However, there is a little bug i can not find yet after generating a rsa key, which sometimes makes crash the ::pki::pkcs::create_csr process, but it can be fix by generating a key then convert to pem then parse it back.

  btw, i get an "integer value too large to represent" error when generating a 4096bit length key on ::pki::_isprime, should i post it as a bug?

  Regards,

  -=Raul=-


tkt_uuid: 3440115fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: pki
priority: 5 Medium
foundin: None
title: Unknown hashing algorithm: unknown
cmimetype: text/plain
assignee: rkeene
closer: rkeene
closedate: 2012-02-19T02:04:15
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: 3441173fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: pki
priority: 5 Medium
foundin: None
title: Implement OpenPGP/GPG
cmimetype: text/plain
submitter: andreas_kupries
assignee: rkeene
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: 3458158fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tklib :: widget
priority: 8
foundin: None
title: widget::calendar 1.0
cmimetype: text/plain
submitter: maxjarek
assignee: andreas_kupries
closer: haertel
closedate: 2011-12-13T21:29:10
comment:
  widget::dateentry use widget::calendar for select date. New version widget::calendar 1.0 has wrong bindings. Click on month/year close calendar frame. Version 0.98 calendar works fine.


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

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

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


tkt_uuid: 3469006fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: inifile
priority: 5 Medium
foundin: None
title: ini::commit fail
cmimetype: text/plain
submitter: jromier
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-01-05T21:05:44
comment:
  On the 1.16 revision of inifile package (Tcllib 1.14), I have an issue each time I save an ini file, on ini::commit procedure.

  Error is: 'file23dbf70 is not an open INI file'

  I fixed this bug by adding '::' before 'close' on '::ini::commit' procedure:

  - old:      close $channel
  - new:     ::close $channel


tkt_uuid: 3470437fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: tklib :: ico
priority: 5 Medium
foundin: None
title: Padding on and mask rasters incorrect.
cmimetype: text/plain
submitter: rkroll
assignee: afaupell
comment:
  in proc ::ico::getAndMaskFromColors {colors}

  Padding calculation might look better like this:

    append l [string repeat 0 [expr {(32 - ([string length $l] % 32))%32}]]


tkt_uuid: 3471182fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: Documentation
priority: 5 Medium
foundin: None
title: funny mistake in struct_tree manual
cmimetype: text/plain
submitter: mxmanghi
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-01-09T16:25:34
comment:
  A funny, yet harmless, mistake appears in the struct_tree manual page, where explanation for  subcommand 'exists' reads "Remove true if the specified node exists in the tree" instead "Returns true...."


tkt_uuid: 3471474fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: pop3
priority: 5 Medium
foundin: None
title: pop3::open doesn't handle -socketcmd properly
cmimetype: text/plain
submitter: egavilan
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-01-10T20:07:15
comment:
  Documentation says -socketcmd option is a command prefix. However it doesn't handle it that way, but as a simple command.


tkt_uuid: 3475081fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: yaml
priority: 8
foundin: None
title: Parser accepts invalid YAML input, mistranslates others
cmimetype: text/plain
submitter: andreas_kupries
assignee: kanryu6
comment:
  The yaml parser v0.3.6 (tcllib cvs head) accepts the following invalid YAML text:

      list-no-comma: [ "a" "b" "c" ]

  It returns {list-no-comma {a b c}} whereas it should throw an error complaining about the lack of commas between the quoted list elements.
  Entering the above string into the online YAML validator/parser at

      http://yaml-online-parser.appspot.com/

  returns:

  ERROR:

  while parsing a flow sequence
    in "<unicode string>", line 1, column 16:
      list-no-comma: [ "a" "b" "c" ]
                     ^
  expected ',' or ']', but got '<scalar>'
    in "<unicode string>", line 1, column 22:
      list-no-comma: [ "a" "b" "c" ]
                           ^

  The second block in the error report is the important one.


tkt_uuid: 3477684fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: crc
priority: 5 Medium
foundin: None
title: CRC of binary string: bad parsing
cmimetype: text/plain
submitter: tmmenezes
assignee: patthoyts
closer: patthoyts
closedate: 2012-01-23T20:28:24
comment:
  Calculating the CRC of a binary string can break the library.
  This happens when the input binary string includes the ASCII code for text symbol '-'.
  The proc parsing the input data breaks the input binary string into options because of '-'
  See attached file with example.


tkt_uuid: 3483716fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: mime
priority: 5 Medium
foundin: None
title: transfer encoding ignored for message/*
cmimetype: text/plain
submitter: cnassau
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-02-23T17:37:05
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: 3487731fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: pki
priority: 5 Medium
foundin: None
title: parse_csr errors
cmimetype: text/plain
submitter: coldstore
assignee: rkeene
closer: rkeene
closedate: 2012-02-19T00:58:02
comment:
  Running:

  set csr [::pki::pkcs::create_csr $key [list C AU ST NSW L Sydney O imap OU bsd CN test]]
  set pcsr [::pki::pkcs::parse_csr $csr]

  result:

  Unknown hashing algorithm: unknown
      while executing
  "::pki::verify $signature $cert_req_info_saved $keylist"
      (procedure "::pki::pkcs::parse_csr" line 52)
      invoked from within
  "::pki::pkcs::parse_csr $csr"

  resulting from the caught error:

  Expected Sequence (0x30), but got 01
      while executing
  "::asn::asnGetSequence plaintext message"

  in ::pki::verify called by parse_csr


tkt_uuid: 3490008fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: grammar_peg
priority: 5 Medium
foundin: None
title: nonterminal delete does not work
cmimetype: text/plain
submitter: glastonbridge2
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-02-22T18:42:27
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: 3493711fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Not Applicable Here
subsystem: amazon-s3
priority: 5 Medium
foundin: None
title: S3: Fix wasteful string conversion of large binary object
cmimetype: text/plain
submitter: samoconnor
assignee: dnew
comment:
  In our app S3::Get is used to download large binary objects from AWS (many hundreds of MB).
  The current code stores the downloaded object in "x" then does: S3::debug "Body: $x"
  This causes "x" to be converted to a string, and creates a second huge string "Body: .....".
  The patch below passes the large object directly from the binary network channel to the result dict entry.

  A small test program that downloads a 5MB file uses 24MB before the patch vs 9MB with the patch.

  --- /System/Library/Tcl/tcllib1.12/amazon-s3/S3.tcl.orig2012-02-25 15:32:45.000000000 +1100
  +++ /System/Library/Tcl/tcllib1.12/amazon-s3/S3.tcl2012-02-25 15:33:25.000000000 +1100
  @@ -580,9 +580,7 @@
   if {[dict exists $thunk orig outchan]} {
       fcopy $s3 [dict get $thunk orig outchan]
   } else {
  -    set x [read $s3]
  -    dict set thunk outbody $x
  -    S3::debug "Body: $x"
  +    dict set thunk outbody [read $s3]
   }
   return [S3::nextdo all_done $thunk readable]
       } else {


tkt_uuid: 3495047fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: A Category Is Missing
priority: 1 Zero
foundin: None
title: Bug Database link broken on tcllib home page
cmimetype: text/plain
submitter: stwo
assignee: andreas_kupries
comment:
  If logged in, goes to 'add new bug report' page.
  When not logged in, gives error.
  I suppose it should go to the bug list like the 'patch' link goes to the patch list.
  Maybe also add a 'feature request' link?


tkt_uuid: 3495049fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: doctools
priority: 5 Medium
foundin: None
title: doctools-text-15.4 test failure
cmimetype: text/plain
submitter: stwo
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-02-28T03:15:07
comment:
  The only difference I see between 'expected' and 'result':
  Expected:
  |        Example Block  More Lines
  Result:
  | Example Block  More Lines


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


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

  The patch below sets the host header.

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


tkt_uuid: 3497592fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ListBox problem (at least with V1.9.5)
cmimetype: text/plain
submitter: wkechel
assignee: oehhar
closer: oehhar
closedate: 2012-03-06T14:24:02
comment:
  The options selectfill and autofocus are read-only, This should be documented or modified to support write access after widget creation.


tkt_uuid: 3501392fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Not Applicable Here
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
title: New Module: socks5
cmimetype: text/plain
submitter: dongola7
assignee: andreas_kupries
comment:
  Patch to add a new module for establishing connections via SOCKS 5 proxies.  The patch was generated against the 1.14 release tarball.


tkt_uuid: 3504018fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: htmlparse
priority: 5 Medium
foundin: None
title: callback command gets called with varying arguments
cmimetype: text/plain
submitter: dvrsn
assignee: andreas_kupries
closer: dvrsn
closedate: 2012-03-14T16:47:27
comment:
  Another problem related to badly formed html, here I think the problem is an open tag inside an attribute value, combined with a xhtml-style null end tag.

  %  htmlparse::parse {<img src="x<y" /> <i></i>}
  ==> hmstart {} {} {}
  ==> img {} src=\"x
  ==> y\" {} {} {}
  ==> img / {} { <i} {}
  ==> i / {} {}
  ==> hmstart / {} {}

  The html is malformed, so parsing is a guessing game, but the parser should try to be as resilient as possible.  What happens in this case is that the callback command, documented as always being called with 4 arguments, is called with 3 and 5 arguments.  This causes an error if your callback command has formal arguments instead of "args".


tkt_uuid: 3506188fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: logger
priority: 5 Medium
foundin: None
title: level none cannot be inherited
cmimetype: text/plain
submitter: heinrichmartin
assignee: mic42
comment:
  minimal example (responsens with indentation for readability):

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


tkt_uuid: 3508577fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
resolution: Duplicate
subsystem: json
priority: 5 Medium
foundin: None
title: json: pretty-printing a dictionary
cmimetype: text/plain
submitter: aldobu
assignee: hobbs
closer: aldobu
closedate: 2012-03-19T11:49:53
comment:
  Based on json.tcl (1.1.2)
  I added a new proc named "json2prettydict"

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

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

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

  [Source code is attached]

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

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

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

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

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

  }
  stat ok

  }

  # -- end


tkt_uuid: 3511938fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ScrolledWindow setwidget buggy
cmimetype: text/plain
submitter: wkechel
assignee: oehhar
closer: oehhar
closedate: 2012-03-27T15:45:17
comment:
  Calling ScrolledWindow::setwidget does not make the widget intended to be scrolled visible since ScrolledWindow::setwindow method lacks a raise:

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

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

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

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


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


tkt_uuid: 3513149fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: ncgi
priority: 5 Medium
foundin: None
title: exra bracket in nvlist command causes corrupt return value
cmimetype: text/plain
submitter: blacksqr
assignee: andreas_kupries
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: 3513263fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ComboBox does not work themed
cmimetype: text/plain
submitter: wkechel
assignee: oehhar
closer: oehhar
closedate: 2012-04-02T09:55:50
comment:
  Tk 8.5.9 with bwidget 1.9.5 gives the following error:

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


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


tkt_uuid: 3517145fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: bwidget
priority: 5 Medium
foundin: None
title: listbox updates unnecessary when selection doersnot change,
cmimetype: text/plain
submitter: wkechel
assignee: oehhar
closer: oehhar
closedate: 2012-04-12T12:43:04
comment:
  Here is a tiny enhancement for the listbox (from V1.29.2.6 in bwidget 1.9.5) widget to avoid redrawing when selection does not change. This happens frequently when a listbox with hottrack enabled displays image and text and the cursor is moved in the area right to image and text where only the background is displayed. I also detected that the listbox sometimes jumps between two entries when the cursor is positioned just between the entries for this case, at least under Linux with Tk8.5.9

  proc ListBox::selection { path cmd args } {
      variable $path
      upvar 0  $path data

      set oldsel $data(selitems);
      switch -- $cmd {
          set {
              set data(selitems) {}
              foreach item $args {
                  if { [lsearch -exact $data(selitems) $item] == -1 } {
                      if { [lsearch -exact $data(items) $item] != -1 } {
                          lappend data(selitems) $item
                      }
                  }
              }
          }
          add {
              foreach item $args {
                  if { [lsearch -exact $data(selitems) $item] == -1 } {
                      if { [lsearch -exact $data(items) $item] != -1 } {
                          lappend data(selitems) $item
                      }
                  }
              }
          }
          remove {
              foreach item $args {
                  if { [set idx [lsearch -exact $data(selitems) $item]] != -1 } {
                      set data(selitems) [lreplace $data(selitems) $idx $idx]
                  }
              }
          }
          clear {
              set data(selitems) {}
          }
          get {
              return $data(selitems)
          }
          includes {
              return [expr {[lsearch -exact $data(selitems) $args] != -1}]
          }
          default {
              return
          }
      }
      if {[string compare $oldsel $data(selitems)]} {
  _redraw_idle $path 1
      }
      return;
  }


tkt_uuid: 3536133fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: Build System & Testing
priority: 5 Medium
foundin: None
title: Installation fails...
cmimetype: text/plain
submitter: petasis
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-06-21T18:16:28
comment:
  Installing tklib in a cross-compilation environment fails. The problem is in Makefile.in, where the option -app-path is not used.

  The following:
  install:
  $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/installer.tcl` \
  -no-examples -no-html \
  -pkg-path   $(DESTDIR)$(pkglibdir) \
  -nroff-path $(DESTDIR)$(mandir)/mann \
  -no-wait -no-gui

  Must be changed to:

  install:
  $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/installer.tcl` \
  -no-examples -no-html \
  -pkg-path   $(DESTDIR)$(pkglibdir) \
  -app-path   $(DESTDIR)$(bindir) \
  -nroff-path $(DESTDIR)$(mandir)/mann \
  -no-wait -no-gui


tkt_uuid: 3536709fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Not Applicable Here
subsystem: yaml
priority: 5 Medium
foundin: None
title: huddle get does not accept non-scalar dict keys
cmimetype: text/plain
submitter: ethanp
assignee: kanryu6
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: 3539249fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: aes
priority: 5 Medium
foundin: None
title: Error in encrypting.
cmimetype: text/plain
submitter: classicalguss
assignee: patthoyts
comment:
  Hello I am using the following tcl code 

  -[base64_encode [aes::aes -dir encrypt -key $key $email]]. 

  I generate a random key, when I want to decrypt the value using this code 

  -set decrypted_email [aes::aes -dir decrypt -key $key [base64_decode $email]] 

  I sometimes get this error:-

  can't use empty string as operand of "&"
      while executing
  "expr {($v << 2) | (($w & 0x30) >> 4)}"


tkt_uuid: 3541628fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: logger
priority: 5 Medium
foundin: None
title: ::logger::init has side-effects
cmimetype: text/plain
submitter: heinrichmartin
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-07-10T03:36:01
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: 3552226fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: mime
priority: 5 Medium
foundin: None
title: docs specify -part, but the option is -parts
cmimetype: text/plain
submitter: pooryorick
assignee: mrose
comment:
  in mime.man and mime.tcl, -part is specified as the option to ::mime::initialize, but the option is actually -parts


tkt_uuid: 3553350fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: htmlparse
priority: 5 Medium
foundin: None
title: htmlparse does't handle callback command containing "&"
cmimetype: text/plain
submitter: dvrsn
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-08-02T22:22:39
comment:
  If the callback command contains a "&" character, it is treated as part of the regular expression substitution string and ends up creating incorrect commands.   The same likely happens if the command contains \0 or similar sequences special to regsub.

  htmlparse should escape any special characters in the command before creating the substitution string.


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


tkt_uuid: 3556779fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Out of Date
subsystem: tklib :: widget
priority: 5 Medium
foundin: None
title: No calendar in August
cmimetype: text/plain
submitter: klu
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-08-14T16:45:00
comment:
  I use widget_calendar with this command:
  widget::calendar .z5fd.app.frdia.date -dateformat "%Y-%m-%d" -language de -textvariable zAr_uiDia(exposureDate)  -command z5ui_selectedDate

  In July all works fine  ..  today, Index 08 = August ???
  Executing the script i get:

  bad index "08": must be integer?[+-]integer? or end?[+-]integer? (looks like invalid octal number)
  bad index "08": must be integer?[+-]integer? or end?[+-]integer? (looks like invalid octal number)
      while executing
  "lindex $LANGS(mn,$lang) $month"
      (procedure "::widget::calendar::Snit_methodformatMY" line 9)
      invoked from within
  "$self formatMY $data(month) $data(year)"
      (procedure "::widget::calendar::Snit_methodRefresh" line 42)
      invoked from within
  ".z5fd.app.frstor.date Refresh"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 [linsert $args 0 $self]"
      invoked from within
  "::snit::RT.CallInstance ::widget::calendar::Snit_inst1 Refresh"
      ("after" script)
  bad index "08": must be integer?[+-]integer? or end?[+-]integer? (looks like invalid octal number)
  bad index "08": must be integer?[+-]integer? or end?[+-]integer? (looks like invalid octal number)
      while executing
  "lindex $LANGS(mn,$lang) $month"
      (procedure "::widget::calendar::Snit_methodformatMY" line 9)
      invoked from within
  "$self formatMY $data(month) $data(year)"
      (procedure "::widget::calendar::Snit_methodRefresh" line 42)
      invoked from within
  ".z5fd.app.frstor.date Refresh"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 [linsert $args 0 $self]"
      invoked from within
  "::snit::RT.CallInstance ::widget::calendar::Snit_inst1 Refresh"
      ("after" script)

  I got this error both - on a linux-System and on win7, 
     active-tcl 8.5.11,  tklib 0.5

  well, i hope, you can help
  regards Bernd


tkt_uuid: 3565267fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: mime
priority: 5 Medium
foundin: None
title: errorCode : no such variable
cmimetype: text/plain
submitter: lucmoulinier
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-01-09T20:27:06
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: 3567463fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: tklib :: ctext
priority: 5 Medium
foundin: None
title: ctext sends <<Modified>> too often
cmimetype: text/plain
submitter: duquette
assignee: nobody
comment:
  The Tk text widget sends the <<Modified>> virtual event when the state of the [$w edit modified] flag changes.  The ctext widget sends <<Modified>> on every change, whether the [$w edit modified] flag has actually changed or not.  The ctext widget's interface should mimic the text widget's interface here; if there are actions you want to do when the editor's content has just become unsaved, you don't want to repeat them every time they add another character.


tkt_uuid: 3574004fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: aes
priority: 5 Medium
foundin: None
title: decrypt/encrypt fails for data beginning with '-'
cmimetype: text/plain
submitter: samoconnor
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-01-08T22:37:21
comment:
  % set data_block -[string repeat \\0 15]
  -\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
  % aes::aes -hex -mode cbc -dir encrypt -key $nil_block $data_block
  bad option "-\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0": must be one of -chunksize, -dir, -hex, -in, -iv, -key, -mode, -out

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

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

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

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


tkt_uuid: 3575707fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: csv
priority: 5 Medium
foundin: None
title: add opt arg to csv::join to force insertion of delimiter
cmimetype: text/plain
submitter: gahr
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-01-08T22:18:07
comment:
  the proc ::csv::join currently surrounds values by the delimiter characters only when a value contains the delimiter. The patch attached adds an optional argument to ::csv::join, ::csv::joinlist, and ::csv:joinmatrix to make ::csv::join always surround fields by the delimiter character.


tkt_uuid: 3578420fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: generator
priority: 5 Medium
foundin: None
title: [exists] and colorful generator names
cmimetype: text/plain
submitter: pooryorick
assignee: tallniel
comment:
  [exists] is currently defined like this:

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

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

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


tkt_uuid: 3581373fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: base64
priority: 2
foundin: None
title: "::base64::encode -maxlen 0" not documented
cmimetype: text/plain
submitter: oehhar
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-01-08T22:47:43
comment:
  Documentation of tcllib command "::base64::encode"

  It should be explicitly documented, that a value of "0" of the parameter "-maxlen" would disable the insertion of wrap characters.


tkt_uuid: 3584574fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: cmdline
priority: 5 Medium
foundin: None
title: File/directory checking feature
cmimetype: text/plain
submitter: amitguptainn
assignee: nobody
comment:
  Hi,

  It would good to have a feature where typedGetopt supports the file/directory type argument values and return error if same does not exist or  match type.

  -Amit


tkt_uuid: 3584575fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: cmdline
priority: 5 Medium
foundin: None
title: Improved error messages
cmimetype: text/plain
submitter: amitguptainn
assignee: nobody
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: 3593146fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: Build System & Testing
priority: 5 Medium
foundin: None
title: Fails to build under windows with cygwin installed
cmimetype: text/plain
submitter: wkechel
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-01-09T00:29:13
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: 3593689fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct :: list
priority: 9 Immediate
foundin: None
title: Busyloop in [struct::list nextperm]
cmimetype: text/plain
submitter: dkf
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2012-12-07T20:35:32
comment:
  If you do:

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

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

  Change:

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

  to:

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

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


tkt_uuid: 3598183fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: irc
priority: 8
foundin: None
title: Missing default detection of EOF
cmimetype: text/plain
submitter: ferrieux
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-01-09T20:39:05
comment:
  The manpage says that only 3  kinds of events must be registered, and that 'defaultcmd' works as a catch-all.
  However, an EOF from the irc socket fails to trigger it, and there is no $dispatch(EOF) unless explicitly registered.
  As a consequence, a disconnection from the irc server is, by default, easily overlooked.
  (this happened to the KGB bot on core.tcl.tk when an IP change broke the connection)

  Maybe the proper fix is simply to document the fact, and promote EOF to the status of fourth mandatory callback.


tkt_uuid: 3598733fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: Build System & Testing
priority: 9 Immediate
foundin: None
title: Tcl 8.6.0 and tcllib 1.14 are not synced
cmimetype: text/plain
submitter: kyak
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-02-08T19:10:40
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: 3599839fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: fileutil
priority: 5 Medium
foundin: None
title: fileutil::findByPattern dies when encountering link on Win 7
cmimetype: text/plain
submitter: cwjolly
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-01-09T00:09:37
comment:
  This has already been reported for Windows XP but since the defect is 3 yrs old and the fix is included in the prior defect report and I can find no way to update the comments section I am entering a new defect to "up" the visibility of this bug. 


tkt_uuid: 3599955fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: themed Entry: Error "unknown command" on keyboard focus
cmimetype: text/plain
submitter: oehhar
assignee: oehhar
closer: oehhar
closedate: 2013-01-08T16:39:07
comment:
  Error 'invalid command name ".#BWidget.#ttk::entry"' arises in themed mode when an Entry widget should get focus by the tab key.

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

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

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


tkt_uuid: 3601313fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct :: stack
priority: 5 Medium
foundin: None
title: Simplify version requirement for TclOO
cmimetype: text/plain
submitter: egavilan
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-02-14T03:13:26
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: 3601370fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: doctools
priority: 9 Immediate
foundin: None
title: Doctools nroff/groff output not supported by tcltk-man2html
cmimetype: text/plain
submitter: twylite
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-01-29T18:58:40
comment:
  This is related to Tcl bug 3600058 "Doctools nroff/groff output not supported by tcltk-man2html" (https://sourceforge.net/tracker/index.php?func=detail&aid=3600058&group_id=10894&atid=110894).  Most of the cases listed here are invalid input or invalid nroff.  Valid nroff not supported by the Tcl tool is being addressed in the Tcl bug.

  Required action: most of the issues below have proposed fixes, and those fixes have been implemented (or are being implemented) in a patch.  Mostly I need to get a YES/NO on each proposed fix (and for NO a suggested approach).

  Issue #1: Rendering of Copyright is inappropriate for files in the public domain

  c_get_copyright in doctools/mpformats/_common.tcl currently renders public domain as "Copyright (c) Public domain".  Suggested fix is to handle "public domain" as a special case that doesn't get a "Copyright (c)" prefix.

  Issue #2: Some Copyright statements include the word "copyright"

  Invalid input problem; examples are amazon-s3/S3.man and amazon-s3/xsxp.man.  Option A is to strip leading "copyring" and/or "(c)" from the copyright parameter.  Option B is to fix the .man pages, but I'm hesitant to do so as (i) this probably should require the copyright holder's approval; and (ii) if any authors maintain their own upstream repositories the change should be committed there.  Proposed fix is A (as a workaround), and to request authors to approve or make a change to the source.

  Issue #3: Doctools can generate nroff output where non-directive lines start with a period (invalid nroff)

  See for example snit/snitfaq.man, where [example] blocks may contain widget names like '.text'.  Suggested fix is that the nroff formatter (mpformats/_nroff.tcl) should quote leading "." on non-directive lines.

  Issue #4: Doctools can still generate nroff output where non-directive lines start with a period

  Parts of the nroff output are explicitly handled by mpformats/fmt.nroff, in particular the output of keywords.  If a keyword starts with a period (e.g. .dtx in docstrip/docstrip.man) it will be sorted to the front of the keyword list and result in invalid nroff output.  Suggested fix is to explicitly check for a quote a leading period in the keyword line (in fmt.nroff).

  Issue #5: Bad output from ldap/ldap.man

  This turns out to be a bad input problem - the .man file has "[call ::ldap::searchInit]" in the middle of a paragraph, instead of "[cmd ::ldap::searchInit]".

  Issue #6: Bad output from pop3/pop3.man

  This turns out to be a bad input problem - the .man file has a trailing period on the line "[opt_def -retr-mode ...].".

  Issue #7: Spaces in man page names

  struct/graph1.man, struct/matrix1.man, and struct/struct_tree1.man all have [manpage_begin] statements in which the name contains a space: {struct::graph v1} {struct::matrix v1} and {struct::tree v1} respectively.  Proposed fix is to use underscore (_) instead of space, giving struct::graph_v1, struct::matrix_v1, and struct::tree_v1.

  Issue #8: Inappropriate copyright statements

  A number of files contain copyright statements in formats that may not have appropriate legal effect.

    No date:
    expander: COPYRIGHT: merge-copyrights: unrecognised format: Copyright (c) William H. Duquette, http://www.wjduquette.com/expand
    smtpd: COPYRIGHT: merge-copyrights: unrecognised format: Copyright (c) Pat Thoyts <patthoyts@users.sourceforge.net>
    Invalid date:
    namespacex: COPYRIGHT: merge-copyrights: unrecognised format: Copyright (c) 200? Neil Madden (http://wiki.tcl.tk/12790)
    namespacex: COPYRIGHT: merge-copyrights: unrecognised format: Copyright (c) 200? Various (http://wiki.tcl.tk/1489)
    soundex: COPYRIGHT: merge-copyrights: unrecognised format: Copyright (c) ????, Algorithm: Donald E. Knuth
    Weird date:
    OpenTcp: CATEGORY: merge-copyrights: unrecognised date format: Copyright (c) 1996-7 Sun Microsystems, Inc.

  I'm really not sure how to handle these.  Best option may be to request the authors to fix their copyright statements.  The effect is that for now these authors won't (necessarily) be reflected in the summary of copyright holders that is added to the table of contents.

  Issue #9: Multiple definitions for coroutine, doctools::idx, interp, tie, try, 

  Tcllib packages define man pages with the same name as Tcl core commands coroutine, interp and try.  Proposed fix is to add a "tcllib" prefix to Tclllib pages, and fix up references.

  Within Tcllib there are multiple man pages providing definitions of doctools::idx and tie.  Proposed fix is to add a version suffix (as for graph/matrix/tree) and fix up references.

  Issue #10: Unvestigated

  Once the above issues are resolved there remain three more types of error when converting .man --(doctools)--> .n --(tcltk-man2html)--> .html:

  A. struct_list: make-manpage-section: ignoring .TP after .TP
  B. treeql: EXAMPLES: output-directive: unrecognized format directive: ... TODO ...
  C. calculus.n: reference error: Out of place end-quote: {<PRE>Dy'' + ky = 0
  x = 0: y = 1
  x = L: y = 0</PRE>}

  The causes have not yet been investigated.


tkt_uuid: 3601995fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ncgi
priority: 8
foundin: None
title: Wrong utf-8 handling in ncgi::decode
cmimetype: text/plain
submitter: quantifier
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-01-30T20:13:35
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: 3603260fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: profiler
priority: 5 Medium
foundin: None
title: Descendants info not reset on profiler::reset
cmimetype: text/plain
submitter: ladayaroslav
assignee: nobody
comment:
  Look at the result of this script:
  -----------
  package require profiler
  profiler::init
  proc profile_a {} {
  for {set f 0} {$f<100} {incr f} {
      profile_b
      }
  }

  proc profile_b {} {
  for {set f 0} {$f<100000} {incr f} {}
  }

  profile_a
  profiler::reset
  profile_a
  puts [profiler::print]
  -----------
  for profile_a, it prints:
            Total runtime:  729842
    Total descendant time:  1441896
  i.e.  Total descendant time>Total runtime
  The problem is that ::profiler::descendants isn't modified in ::profiler::reset.


tkt_uuid: 3603562fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tklib: crosshair
priority: 7 High
foundin: None
title: confine crosshair::crosshair to a canvas area
cmimetype: text/plain
submitter: franktx
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-04-04T03:39:58
comment:
  Hi,

  Sorry but I could not find a crosshair category.

  Currently the Tklib crosshair::crosshair  creates the crosshair in the whole canvas. To make this more flexible it would be better to have the ability to confine the crosshair to a location in the canvas (or a series of locations in a canvas).

  In my case I am using PlotChart to create a series of plots. I would like to confine the crosshair in the plot area only. In other words I do not want the cross hairs to extend pass the axis of the graph and running over the plot labels and titles.

  This enhancement can easily be done by passing the BBox (llx lly urx ury) to crosshair. Store the bbox in a crosshair name space variable and when drawing the lines in the move procedure use the bbox boundary as the start and end points of the lines drawn.

  In the case of a series of locations in a canvas, the user can pass a list of BBoxes when the mouse pointer enters one of those areas the same approach will be done with the move procedure but in that case using the BBox associated with that area. Plotchart allows the user to put more than one plot in a canvas. Therefore this will be an even more versatil implementation of crosshair.

  Thanks in advance,
  Frank


tkt_uuid: 3603593fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ncgi
priority: 7 High
foundin: None
title: New version of ncgi introduces proc in global namespace
cmimetype: text/plain
submitter: decosterjos
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-02-08T19:15:38
comment:
  The version of ncgi as part of tcllib 1.5 introduces a new DecodeHex proc to help decode the CGI request. This proc is created in the global namespace. It would be better to have it in the ncgi namespace.


tkt_uuid: 3603702fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: clock
priority: 7 High
foundin: None
title: clock::iso8601 test error
cmimetype: text/plain
submitter: gahr
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-02-08T19:21:15
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: 3604129fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: imap4
priority: 5 Medium
foundin: None
title: added imap "copy" command
cmimetype: text/plain
submitter: magnatune
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-02-14T03:34:35
comment:
  I've added a proc for the imap "copy" function, which is needed if you want to move a message from one mailbox to another.  Currently, it's not possible to move messages between folders with the imap4 library. This proc fixes that problem.

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

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

  Thanks!

  -john



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


tkt_uuid: 3606564fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: Build System & Testing
priority: 8
foundin: None
title: test fail - can't delete "namespace": command doesn't exist
cmimetype: text/plain
submitter: jlec
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-03-01T21:22:14
comment:
  when running the testsuite with

  tclsh8.6 ./sak.tcl validate

  I get following error

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


tkt_uuid: 3606619fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: pt (parsetools)
priority: 5 Medium
foundin: None
title: test fail - pt-peg-to-json-3* *-ultracompact
cmimetype: text/plain
submitter: jlec
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-03-05T06:57:25
comment:
  ==== pt-peg-to-json-3.0.0 pt::peg::to::json, basic arithmetic-ultracompact, ok FAILED
  ==== Contents of test case:

      pt::peg::to::json convert $data
  running 

  tclsh8.6 sak.tcl test run -v pt

  on 4e66a372368bfccb80d68fa6cc80f58e205e0c2c I get following error. Same hapens for 1.15 release.


  ---- Result was:
  {\"pt::grammar::peg\":{\"rules\":{\"AddOp\":{\"is\":\"/ {t -} {t +}\",\"mode\":\"value\"},\"Digit\":{\"is\":\"/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}\",\"mode\":\"value\"},\"Expression\":{\"is\":\"/ {x {t (} {n Expression} {t )}} {x {n Factor} {* {x {n MulOp} {n Factor}}}}\",\"mode\":\"value\"},\"Factor\":{\"is\":\"x {n Term} {* {x {n AddOp} {n Term}}}\",\"mode\":\"value\"},\"MulOp\":{\"is\":\"/ {t *} {t /}\",\"mode\":\"value\"},\"Number\":{\"is\":\"x {? {n Sign}} {+ {n Digit}}\",\"mode\":\"value\"},\"Sign\":{\"is\":\"/ {t -} {t +}\",\"mode\":\"value\"},\"Term\":{\"is\":\"n Number\",\"mode\":\"value\"}},\"start\":\"n Expression\"}}
  ---- Result should have been (exact matching):
  {\"pt::grammar::peg\":{\"rules\":{\"AddOp\":{\"is\":\"\\/ {t -} {t +}\",\"mode\":\"value\"},\"Digit\":{\"is\":\"\\/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}\",\"mode\":\"value\"},\"Expression\":{\"is\":\"\\/ {x {t (} {n Expression} {t )}} {x {n Factor} {* {x {n MulOp} {n Factor}}}}\",\"mode\":\"value\"},\"Factor\":{\"is\":\"x {n Term} {* {x {n AddOp} {n Term}}}\",\"mode\":\"value\"},\"MulOp\":{\"is\":\"\\/ {t *} {t \\/}\",\"mode\":\"value\"},\"Number\":{\"is\":\"x {? {n Sign}} {+ {n Digit}}\",\"mode\":\"value\"},\"Sign\":{\"is\":\"\\/ {t -} {t +}\",\"mode\":\"value\"},\"Term\":{\"is\":\"n Number\",\"mode\":\"value\"}},\"start\":\"n Expression\"}}
  ==== pt-peg-to-json-3.0.0 FAILED


tkt_uuid: 3606620fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: math
priority: 5 Medium
foundin: None
title: test strangeness - math-12.1 !error reading
cmimetype: text/plain
submitter: jlec
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-03-12T04:39:43
comment:
  Running test on math module I get following error:

  ++++ math-11.1 PASSED
  ---- math-12.1 start
  error reading package index file ./lib/pkgIndex.tcl: permission denied
  error reading package index file ./pkgIndex.tcl: permission denied
  error reading package index file $p(:573:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:572:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:571:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:570:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:569:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:568:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:567:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:566:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:565:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:564:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:563:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:562:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:561:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:560:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:559:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:558:)/pkgIndex.tcl: not allowed to invoke subcommand exists of file
  error reading package index file $p(:556:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:555:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:554:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:553:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:552:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:550:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:549:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:548:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:547:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:546:)/pkgIndex.tcl: no such file or directory
  error reading package index file $p(:545:)/pkgIndex.tcl: no such file or directory


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

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


tkt_uuid: 3607261fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Duplicate
subsystem: tklib :: widget :: dateentry
priority: 5 Medium
foundin: None
title: Calendar closes by clicking year/month navigation arrow.
cmimetype: text/plain
submitter: yyamasak
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-03-14T06:00:51
comment:
  I have modified dateentry <ButtonPress> binding not to close a calendar by clicking items tagged with "cbutton".


tkt_uuid: 3608240fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct :: queue
priority: 5 Medium
foundin: None
title: struct::queue error, procs peek and get
cmimetype: text/plain
submitter: robbercrab
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-03-19T05:49:00
comment:
  Last action "qp peek [qp size]" gives an incorrect result [1 2 3 4 5] instead of [2 3 4 5]

  script:

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

  output:

  1 2 3
  2 3
  1 2 3 4 5


tkt_uuid: 3608581fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: Build System & Testing
priority: 8
foundin: None
title: Small change to configure script Windows
cmimetype: text/plain
submitter: apnadkarni
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-03-22T03:48:59
comment:
  Under MSYS, ./configure fails to detect tclsh because it does not realize it is Windows and needs a .exe extension. Fossil patch attached


tkt_uuid: 3608943fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: dns
priority: 5 Medium
foundin: None
title: [::ip::version] crashes when receives empty string
cmimetype: text/plain
submitter: vamp-sl
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-03-25T17:14:40
comment:
  tcllib version 1.15, when empty string passed as arg, proc ip::version crashes:
  % package require dns
  1.3.3
  % ip::version {}
  can't read "addr": no such variable
  % set errorInfo
  can't read "addr": no such variable
      while executing
  "IPv4? $addr"
      (procedure "ip::version" line 4)
      invoked from within
  "ip::version {}"

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


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

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

  MyProc -help

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

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

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

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


tkt_uuid: 3608952fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tepam
priority: 3 Low
foundin: None
title: TEPAM: Help text incorrect for procedures in namespaces
cmimetype: text/plain
submitter: droll
assignee: droll
closer: droll
closedate: 2013-03-25T22:14:18
comment:
  The help text for a procedure that is part of a namespace is incorrectly generated. Example:

  namespace eval ::ns {
  tepam::procedure MyProc {
  -short_description "Help generation demonstration"
  -description "Command to demonstrate the help text generation"
  -args {
  {Param -type integer -default 0 -description "Optional command argument"} }
  } {
  puts "MyProc called"
  }
  }

  ns::MyProc -help

  | NAME
  |       ns::ns::MyProc
  | SYNOPSIS

  The namespace is duplicated in the procedure name and all the detailed procedure information (descriptions, arguments, etc.) are not displayed. The expected help text is:

  | NAME
  |       ns::MyProc - Help generation demonstration
  | SYNOPSIS
  |       ns::MyProc
  |             [<Param>]
  |                Optional command argument, type: integer, default: 0
  | DESCRIPTION
  |       Command to demonstrate the help text generation

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


tkt_uuid: 3609183fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: oo::util
priority: 5 Medium
foundin: None
title: ooutil::singleton not working when it is used as mixin class
cmimetype: text/plain
submitter: kbokng
assignee: andreas_kupries
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: 3609342fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 7 High
foundin: None
title: dtplite should not generate keyword link if no keywords
cmimetype: text/plain
submitter: apnadkarni
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-04-04T16:21:32
comment:
  When the manpages do not define any keywords, the Keyword index links takes you to a blank page. I prefer the keyword link to be only generated if at least one keyword is present. Of course, some might say every page must have a keyword but I happen to disagree :-)

  I have a patch for this. Will submit after further testing.


tkt_uuid: 3609346fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: Installation
priority: 7 High
foundin: None
title: /usr/bin/dia: filename clash
cmimetype: text/plain
submitter: teopetuk
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2013-04-04T04:36:36
comment:
  Hi!

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


tkt_uuid: 3609843fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: sha1
priority: 5 Medium
foundin: None
title: sha256 output is wrong on 32bit Linux
cmimetype: text/plain
assignee: andreas_kupries
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: 3610022fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: ftp
priority: 5 Medium
foundin: None
title: Unprotected close causes script crash
cmimetype: text/plain
submitter: guitarzar
assignee: andreas_kupries
closer: guitarzar
closedate: 2013-04-05T15:15:26
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: 3610478fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
resolution: None
subsystem: json
priority: 5 Medium
foundin: None
title: json conversion fails on help example
cmimetype: text/plain
submitter: tombert
assignee: hobbs
closer: tombert
closedate: 2013-04-10T16:34:51
comment:
  Tested in Tcl 8.5.14, WinXP

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

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

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

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

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



  thx


tkt_uuid: 3610482fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Not Applicable Here
subsystem: json
priority: 5 Medium
foundin: None
title: Symmetrical json conversion
cmimetype: text/plain
submitter: tombert
assignee: andreas_kupries
comment:
  I propose the following enhancement:

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

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


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

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

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


tkt_uuid: 3610485fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: snit
priority: 1 Zero
foundin: None
title: Validate option default at instance creation
cmimetype: text/plain
submitter: aspenlogic
assignee: duquette
comment:
  When a new instance is created it would be nice if the option's default value could be checked using the -validatemethod specified.


tkt_uuid: 3612359fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: fileutil
priority: 5 Medium
foundin: None
title: lexnormalize ignore leading ../
cmimetype: text/plain
submitter: acapola
assignee: andreas_kupries
comment:
  % package require fileutil
  1.14.5
  % fileutil::lexnormalize ../toto
  toto
  % fileutil::lexnormalize ../../toto
  toto
  % 

  Seems wrong to me... I made a correction:
  % fileutil_lexnormalize ../toto
  ../toto
  % fileutil_lexnormalize ../../toto
  ../../toto
  % fileutil_lexnormalize .././.././toto
  ../../toto
  % 


tkt_uuid: 3612465fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: inifile
priority: 5 Medium
foundin: None
title: Spaces around section line specifications should be ignored
cmimetype: text/plain
submitter: takatsuki
assignee: afaupell
comment:
  When parsing a file, if a section line contains some leading or trailing spaces (outside the square brackets), it is not recognized. A sample ini file reproducing the error would be (please note the extra trailing in the section line: "[General]   "):

  [General]    
  key=value
  key2=value2


  # Before patch
  package require inifile
  set fh [::ini::open sample.ini]
  puts [llength [ini::sections $fh]]
  0

  # After applying the attached patch
  package require inifile
  set fh [::ini::open sample.ini]
  puts [llength [ini::sections $fh]]
  1


tkt_uuid: 3612645fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: aes
priority: 5 Medium
foundin: None
title: aes decrypt fails with -in option
cmimetype: text/plain
assignee: patthoyts
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: 3613162fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: log
priority: 5 Medium
foundin: None
title: Adding support to log save to a file
cmimetype: text/plain
submitter: amitguptainn
assignee: andreas_kupries
comment:
  I feel it would be good if logger package support 
  1) saving log messages to logfile. 
  2) log file rotation.

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


tkt_uuid: 3613644fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: tepam
priority: 5 Medium
foundin: None
title: incorrect namespace formatting results in no vars defined
cmimetype: text/plain
submitter: blacksqr
assignee: droll
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: 3613725fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
title: ::rest::get & "format" config option...
cmimetype: text/plain
submitter: petasis
assignee: andreas_kupries
comment:
  (This is about the rest package)

  Hi all,

  I am reading the manual for the rest package in tcllib, and I get the impression that in ::rest::simple, the config directory should contain \"format\". In the rest of the manual, I got the impression that \"format\" and \"result\" are somehow synonyms.

  Looking in the code, I see that only \"result\" is checked in config, and I am not sure what happens in parse_opts (:format is specified).

  May be the documentation needs to mention only \"result\"? (And fix the option handling?)

  George


tkt_uuid: 3613726fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
title: rest package does not understand HTTP 303
cmimetype: text/plain
submitter: petasis
assignee: andreas_kupries
comment:
  Hi all,

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

  All HTTP/1.1 clients should understand 303...


tkt_uuid: 3613973fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: Build System & Testing
priority: 5 Medium
foundin: None
title: Does not properly install under windows with cygwin
cmimetype: text/plain
submitter: wkechel
assignee: andreas_kupries
comment:
  Installation in cygwin env under windows fails since Makefile.in lacks proper conversion of pathnames, Correction in Makefile.in:


  --- ../../../g462/src/tcllib-1.15/Makefile.in   2013-01-23 05:25:49.000000000 +0100
  +++ Makefile.in 2013-05-24 11:29:22.863424000 +0200
  @@ -52,26 +52,26 @@
   install:
          $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/installer.tcl` \
                  -no-examples -no-html \
  -               -pkg-path   $(DESTDIR)$(pkglibdir) \
  -               -app-path   $(DESTDIR)$(bindir) \
  -               -nroff-path $(DESTDIR)$(mandir)/mann \
  +               -pkg-path   `$(CYGPATH) $(DESTDIR)$(pkglibdir)` \
  +               -app-path   `$(CYGPATH) $(DESTDIR)$(bindir)` \
  +               -nroff-path `$(CYGPATH) $(DESTDIR)$(mandir)/mann` \
                  -no-wait -no-gui

   install-libraries:
          $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/installer.tcl` \
  -               -pkg-path   $(DESTDIR)$(pkglibdir) \
  +               -pkg-path   `$(CYGPATH) $(DESTDIR)$(pkglibdir)` \
                  -no-examples -no-html -no-nroff \
                  -no-wait -no-gui -no-apps

   install-applications:
          $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/installer.tcl` \
  -               -app-path   $(DESTDIR)$(bindir) \
  +               -app-path   `$(CYGPATH) $(DESTDIR)$(bindir)` \
                  -no-examples -no-html -no-nroff \
                  -no-wait -no-gui -no-pkgs

   install-doc:
          $(TCLSH_PROG) `$(CYGPATH) $(srcdir)/installer.tcl` \
  -               -nroff-path $(DESTDIR)$(mandir)/mann \
  +               -nroff-path `$(CYGPATH) $(DESTDIR)$(mandir)/mann` \
                  -no-examples -no-pkgs -no-html \
                  -no-wait -no-gui -no-apps


  Tested and verified under window XP and Windows 7 with cygwin usinf VS2010.


tkt_uuid: 404917ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: smtp
priority: 5 Medium
foundin: None
title: Missing index entry for smtp package
cmimetype: text/plain
submitter: gwlester
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-03-31T13:47:15
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: 410054ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: bwidget
priority: 1 Zero
foundin: None
title: bwidget combobox.tcl bug
cmimetype: text/plain
submitter: lvirden
assignee: ericm
closer: ericm
closedate: 2001-03-20T19:29:30
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: 410100ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 6
foundin: None
title: Package mgmt woes during development
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-03-26T17:00:28
comment:
  Assume the current codebase, an installed fileutil 1.0
  and a new
  fileutil 1.1 under development. The initialization of
  the tests scans
  the package directories and finds fileutil 1.0. The
  module then adds
  itself to the auto_path and then requires fileutil
  (without
  version). Now fileutil 1.0 is found by the pkg
  management, it is
  acceptable according to the rules of require and thus
  used. The new
  version is not considered at all, as changing the
  auto_path does *not*
  enforce a rescan of package directories.

  It is possible to solve the problem by having the
  modules require
  themselves and request a specific version (1.1 in this
  case). But this
  would mean that in each module we have (at least) one
  more file
  containing the version number (all test files!) and we
  have to
  maintain this for every module. I rather propose the
  following changes
  to all.tcl:

  Adds the module path to the auto_path (the tested
  modules did it
  themselves before) and also move the setting of the
  auto_path in the
  slave before the first 'package require' (of tcltest).

  Now all paths are in order when the first scan happens,
  immediately
  picking up the development version (provided that is
  has a higher
  version number :).


tkt_uuid: 410104ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: fileutil
priority: 6
foundin: None
title: ::fileutil::find infinite recursion
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-03-26T17:02:58
comment:
  ::fileutil::find will go into an infinite recursion if
  it encounters a circular sequence of softlinks.


tkt_uuid: 410106ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: fileutil
priority: 5 Medium
foundin: None
title: Fix for bug #410104
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-03-26T16:52:59
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: 410198ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: None
priority: 5 Medium
foundin: None
title: New module: logging facility
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-03-26T16:56:37
comment:
  This patch provides a full-fledged logging facility for
  tcl applications and libraries. It was reaped from my
  own Pool_Base and modified too fit into tcllib.

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


tkt_uuid: 410399ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: None
priority: 5 Medium
foundin: None
title: New module: html parser
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-03-26T16:55:33
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: 410797ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 4
foundin: None
title: missing config module
cmimetype: text/plain
submitter: davidw
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-12-05T20:25:40
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: 411422ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: None
priority: 5 Medium
foundin: None
title: Fix for bug #404917
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-03-31T13:45:13
comment:
  This patch fixes the bug 404917 by explicitly adding
  smtp to the list of packages to list in the main
  package index.


tkt_uuid: 412932ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Works For Me
subsystem: ftpd
priority: 5 Medium
foundin: None
title: ftpd on win2000
cmimetype: text/plain
submitter: nobody
assignee: patthoyts
closer: patthoyts
closedate: 2001-10-31T13:29:18
comment:
  when running the server on a windows 2000 box
  the file transfers always fails, no errors are issued 
  but the downloaded file never downloads complete.and 
  ex. the pwd command does not work etc....

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


tkt_uuid: 415001ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: None
subsystem: bwidget
priority: 5 Medium
foundin: None
title: xpm2image/bwidget
cmimetype: text/plain
submitter: nobody
assignee: hobbs
closer: hobbs
closedate: 2001-12-29T01:26:36
comment:
  Hi,
  it seems that not all graphic programs produce the same
  XPM output.

  Here's the difference:

  a sample line by "pixmap"
  "#c #feb66c",

  a sample line by "Gimp"
  "# c #feb66c",

  The problem is that there is no tab between "#" and "c"
  with the line of Gimp and xpm2image fails

  Greets

  Simon


tkt_uuid: 416799ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: None
priority: 5 Medium
foundin: None
title: A new datastructure, matrix
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-05-02T14:24:06
comment:
  The attached archive provides documentation, testsuite
  and code for an addition to the "struct" module, a
  matrix object.


tkt_uuid: 416955ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: profiler
priority: 5 Medium
foundin: None
title: Division by zero in stats procedure
cmimetype: text/plain
submitter: efrecon
assignee: gwlester
closer: andreas_kupries
closedate: 2002-05-14T20:46:52
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: 424797ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: ftpd
priority: 5 Medium
foundin: None
title: Behaviour diff cmp to Solaris ftp/ftpd
cmimetype: text/plain
submitter: jnyfeldt
assignee: jenglish
closer: jenglish
closedate: 2001-09-26T14:54:29
comment:
  When fetching files using the standard Solaris 2.6 ftp
  client, the "get" semantics are different using the
  ftpd server compared to using the standard Solaris ftp
  server. Consider the following example, where the
  remote file "test/file1" does not exist and the remote
  file "test/file2" does exist:
   
  $ ftp -n <<EOF
  open localhost 12344
  user someuser somepwd
  get test/file1 file1
  get test/file2 file2
  quit
  EOF

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

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

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


tkt_uuid: 429384ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Duplicate
subsystem: control
priority: 5 Medium
foundin: None
title: execCmd procedure: improved catch/exec
cmimetype: text/plain
submitter: nobody
assignee: dgp
closer: hobbs
closedate: 2001-12-29T01:23:34
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: 429388ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Not Applicable Here
subsystem: control
priority: 5 Medium
foundin: None
title: execCmd procedure: improved exec (UNIX)
cmimetype: text/plain
submitter: nobody
assignee: dgp
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: 429695ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: base64
priority: 5 Medium
foundin: None
title: Speed increase of base64 & md5
cmimetype: text/plain
submitter: msofer
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-06-22T14:33:40
comment:
  The patch contains:

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

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


tkt_uuid: 433145ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 5 Medium
foundin: None
title: csv module man page fix needed
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-06-19T17:22:36
comment:
  The current csv.n file has data on the first line
  which caused man commands on some systems to fail.
  The first line of a man page is used to define
  specialized filters, such as tbl, are required to
  format the man page.

  The current csv.n man page has what appears to be a
  comment used by emacs to indicate that the contents are
  nroff.

  Hopefully the emacs comment can be moved elsewhere -
  because right now, Solaris 8's man command is unable to
  format the man page correctly.


tkt_uuid: 433147ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: None
priority: 5 Medium
foundin: None
title: csv man page term needs clarified
cmimetype: text/plain
submitter: lvirden
assignee: nobody
closer: lvirden
closedate: 2001-06-14T15:35:20
comment:
  The csv man page mentions the word "values" as an
  argument to, for instance, ::csv::join .  What should
  be mentioned there though is that it is a single
  argument.  I don't know if this argument must be in a
  list format, but I suspect so.  If so, that too should
  be mentioned.

  When I try 
  package require csv
  set a [::csv::join 1 2 3]

  expecting that, passing values, I would get 1,2,3 ,
  instead I get an error.


tkt_uuid: 433970ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: None
priority: 5 Medium
foundin: None
title: frink/procheck results
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-06-22T15:30:45
comment:
  Applied frink 2.1.1 and procheck to the script code in
  tcllib. The enclosed patch is the results, fixing bugs,
  warnings, partially supressing warnings which are
  bogus.


tkt_uuid: 434202ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: None
priority: 5 Medium
foundin: None
title: Static checker results
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-06-20T23:34:42
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: 435097ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Keynavigation failed in Tree
cmimetype: text/plain
submitter: svogel
assignee: ericm
closer: ericm
closedate: 2001-06-22T01:57:32
comment:
  Having supplied open/close-commands for the tree-
  widget, they are not called when pressing the "Right"-
  Button or the "Left"-Button.

  This can be especially observed in the directory-tree-
  demo, where the subtree is build in the "open-
  callback"-command. Pressing the "Right"-Key doesn't 
  open the tree, because the "open-command" isn't called.

  The following could be inserted in tree.tcl for 
  proc Tree::_keynav {which win} {
   ...
    "right" {
    # On a right arrow, if the current node is closed, 
  open it.
    # If the current node is open, go to its first child
    if { [string equal $node ""] } {
      return
    }
    set open [$win itemcget $node -open]
    # patch begin -->
    if {!$open && [set cmd [Widget::getoption $win -
  opencmd]] != ""} {
      uplevel \#0 $cmd $node
     }
     # <-- patch end
     if { [llength [$win nodes $node]] } {
     ...


    "left" {
    # On a left arrow, if the current node is open, 
  close it.
    # If the current node is closed, go to its parent.
    if { [string equal $node ""] } {
      return
    }
    set open [$win itemcget $node -open]
    if { $open } {
      $win itemconfigure $node -open 0
      # patch begin -->
      if {[set cmd [Widget::getoption $win -closecmd]] !
  = ""} {
        # call close-callback
        uplevel \#0 $cmd $node
      }
      # <-- patch end
      return
    } else {
    ...



  Best regards
    Stefan


tkt_uuid: 435471ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: paned window problem
cmimetype: text/plain
submitter: nobody
assignee: hobbs
closer: hobbs
closedate: 2002-01-16T02:08:09
comment:
  When adding a large widget to a pane of a paned window,
  the panes already present do no keep their relative
  sizes. Try the following example:

    package require BWidget

    wm geometry . 500x500
    update idletasks

    # Create paned window
    pack [PanedWindow .p -side left] -fill both -expand
  true

    # Top pane
    set p1 [.p add -weight 100]

    update idletasks
    after 1000

    # Middle pane
    set p2 [.p add -weight 100]

    update idletasks
    after 1000

    # Bottom pane
    set p3 [.p add -weight 50]
    pack [text $p3.t] -fill both -expand true

  The text-widget added to the bottom pane gets most of
  the space on the screen. Previous versions of BWidgets
  PanedWindow respected the relative sizes of the panes
  already present.

  Please find attached the version of panedw.tcl with the
  old behaviour but compatible with BWidget 1.3.1

  Kind regards, 

  Jos.


tkt_uuid: 436340ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Twoline patch for bwidget passwddlg
cmimetype: text/plain
submitter: bach
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-09-06T19:52:19
comment:
  The password dialog does not support an option 



    -logineditable



  which would work like e.g. -passwdeditable



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



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

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

  and add it in this line

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

  So that it now reads:

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

  and

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


  Salut,
            Bastien

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


tkt_uuid: 436386ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Works For Me
subsystem: bwidget
priority: 3 Low
foundin: None
title: BWidget demo bug
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-09-13T17:25:44
comment:
       In the BWidget demo, choose the 'Dialog' tab, 
  then select 'Abort, Retry, Ignore' in the 'Message 
  Dialog' frame.  Click 'Show', and an error message 
  appears "Error: Bad default value "": must be...".  
  The stack trace is:

  bad -default value "": must be abort, retry, ignore, 
  ok, cancel, no, or yes
      while executing
  "tk_messageBox -icon info -default {} -message 
  {Message for MessageBox} -type abortretryignore -title 
  Information"
      ("eval" body line 1)
      invoked from within
  "eval tk_messageBox [array get tkMBoxArgs"
      (procedure "MessageDlg::create" line 80)
      invoked from within
  "MessageDlg::create .msgdlg -parent . -message 
  {Message for MessageBox} -type abortretryignore -icon 
  info -buttons {}"
      ("eval" body line 1)
      invoked from within
  "eval MessageDlg::create $path $args"
      (procedure "MessageDlg" line 1)
      invoked from within
  "MessageDlg .msgdlg -parent .  -message "Message for 
  MessageBox"  -type    $msg(type)  -icon    $msg
  (icon)  -buttons $msg(buttons)"
      (procedure "DemoDlg::_show_msgdlg" line 5)
      invoked from within
  "DemoDlg::_show_msgdlg"
      invoked from within
  ".mainframe.frame.nb.fdemoDlg.titf3.f.but invoke"
      ("uplevel" body line 1)
      invoked from within
  "uplevel #0 [list $w invoke]"
      (procedure "tkButtonUp" line 9)
      invoked from within
  "tkButtonUp .mainframe.frame.nb.fdemoDlg.titf3.f.but
  "
      (command bound to event)


tkt_uuid: 4365a23bd38dc971dbb1c73e7135d1e85f04fc46
type: Bug
status: Closed
resolution: Accepted
subsystem: bwidget
priority: 5 Medium
severity: Important
foundin: branch bwidget, tag 1.9.6
private_contact: a774b1f5653dc3360e29ea7d635a64e94c9f1dab
title: BWidget cannot be loaded into a Safe Base interpreter
cmimetype: text/plain
submitter: anonymous
assignee: oehhar
closer: oehhar
closedate: 2456465.23405633
comment:
  # To launch a Safe Base interpreter with Tk, and load BWidget:

  safe::interpCreate foo
  safe::loadTk foo
  foo eval package require BWidget

  # Loading BWidget causes an error because init.tcl uses the [file readable] and [option read] commands, which are not available to a Safe Base interpreter.

  # A suitable patch will be attached.


tkt_uuid: 436762ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: bwidget
priority: 5 Medium
foundin: None
title: BWidget tree and listbox binding bug
cmimetype: text/plain
submitter: bach
assignee: damonc
closer: damonc
closedate: 2003-10-20T23:16:44
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: 437950ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: mclistbox
priority: 5 Medium
foundin: None
title: mclistbox snapshot does not build
cmimetype: text/plain
submitter: lvirden
assignee: boakley
comment:
  after downloading the mclistbox nightly snapshot from
  scriptics ftp site, an attempt to configure it
  the first time results in:
  creating cache ./config.cache
  configure: error: can not find install-sh or install.sh
  in config /vol/tclsrcsol
  /tcl84/mclistbox/config
  make: *** No targets specified and no makefile found. 
  Stop.


  Either the code should come with instructions for
  installation or with the files it needs.

  Will this code be integrated into tklib?  That
  would probably be better than spending a lot of time on
  a stand alone distribution.


tkt_uuid: 438415ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: bwidget
priority: 5 Medium
foundin: None
title: bwidget leaves widget droppings...
cmimetype: text/plain
submitter: boakley
assignee: hobbs
closer: hobbs
closedate: 2002-01-22T23:41:31
comment:
  BWidget leaves "widget droppings" scattered about. 
  Witness the following session:

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


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

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

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


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


tkt_uuid: 438748ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: None
priority: 5 Medium
foundin: None
title: Misc typo fixes in man pages
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-07-06T18:31:24
comment:
  Here are some fixes for the tcllib man pages.
  The typos fixed are pretty consistent.  The
  comment lines added allow Sun man command to format
  the pages.


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

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


tkt_uuid: 439779ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ftp
priority: 5 Medium
foundin: None
title: eval required in tkcon support code
cmimetype: text/plain
submitter: jhjl
assignee: hobbs
closer: hobbs
closedate: 2001-08-02T01:04:59
comment:
  In ftp.tcl (v0.9 from cvs) at line 2776 can I humbly suggest that an eval is added after the "["

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

  When using 
  ftp::List connection dir

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


tkt_uuid: 440046ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 3 Low
foundin: None
title: latest md5 test suite fails
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-08-20T20:36:11
comment:
  Note that the category list is missing the md5 module.

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

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

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

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

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

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

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

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

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

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

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

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


tkt_uuid: 440049ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 3 Low
foundin: None
title: latest report module test suite fails
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-08-20T20:36:35
comment:
  Note that I didn't see a category for report when
  filing this msg on sf.net

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

  Module: report
  modules/report/report.test
  report 0.1
  - struct 1.1

  ==== report-2.0 style definition errors FAILED
  ==== Contents of test case:

      catch {::report::defstyle} result
      set result

  ---- Result was:
  wrong # args: should be "::report::defstyle styleName
  arguments body"
  ---- Result should have been (exact matching):
  no value given for parameter "styleName" to
  "::report::defstyle"
  ==== report-2.0 FAILED

  ==== report-2.1 style definition error FAILED
  ==== Contents of test case:

      catch {::report::defstyle foo} result
      set result

  ---- Result was:
  wrong # args: should be "::report::defstyle styleName
  arguments body"
  ---- Result should have been (exact matching):
  no value given for parameter "arguments" to
  "::report::defstyle"
  ==== report-2.1 FAILED

  ==== report-2.2 style definition errors FAILED
  ==== Contents of test case:

      catch {::report::defstyle foo {}} result
      set result

  ---- Result was:
  wrong # args: should be "::report::defstyle styleName
  arguments body"
  ---- Result should have been (exact matching):
  no value given for parameter "body" to
  "::report::defstyle"
  ==== report-2.2 FAILED
  ==== report-2.3 style definition errors FAILED
  ==== Contents of test case:

      catch {::report::defstyle foo {} {} bla} result
      set result

  ---- Result was:
  wrong # args: should be "::report::defstyle styleName
  arguments body"
  ---- Result should have been (exact matching):
  called "::report::defstyle" with too many arguments
  ==== report-2.3 FAILED

  ==== report-3.0 style deletion errors FAILED
  ==== Contents of test case:

      catch {::report::rmstyle} result
      set result

  ---- Result was:
  wrong # args: should be "::report::rmstyle styleName"
  ---- Result should have been (exact matching):
  no value given for parameter "styleName" to
  "::report::rmstyle"
  ==== report-3.0 FAILED

  ==== report-4.0 style introspection error FAILED
  ==== Contents of test case:

      catch {::report::stylearguments} result
      set result

  ---- Result was:
  wrong # args: should be "::report::stylearguments
  styleName"
  ---- Result should have been (exact matching):
  no value given for parameter "styleName" to
  "::report::stylearguments"
  ==== report-4.0 FAILED

  ==== report-4.2 style introspection error FAILED
  ==== Contents of test case:
      catch {::report::stylebody} result
      set result

  ---- Result was:
  wrong # args: should be "::report::stylebody styleName"
  ---- Result should have been (exact matching):
  no value given for parameter "styleName" to
  "::report::stylebody"
  ==== report-4.2 FAILED

  ==== report-6.0 report errors FAILED
  ==== Contents of test case:

      catch {report myreport} msg
      set msg

  ---- Result was:
  wrong # args: should be "report name columns args"
  ---- Result should have been (exact matching):
  no value given for parameter "columns" to "report"
  ==== report-6.0 FAILED

  ==== report-10.0 column sizes FAILED
  ==== Contents of test case:

      report myreport 3
      catch {myreport size} result
      myreport destroy
      set result

  ---- Result was:
  wrong # args: should be "::report::_size name column
  ?size?"
  ---- Result should have been (exact matching):
  no value given for parameter "column" to
  "::report::_size"
  ==== report-10.0 FAILED

  ==== report-12.0 padding FAILED
  ==== Contents of test case:

      report myreport 3
      catch {myreport pad} result
      myreport destroy
      set result

  ---- Result was:
  wrong # args: should be "::report::_pad name column
  ?where? ?string?"
  ---- Result should have been (exact matching):
  no value given for parameter "column" to
  "::report::_pad"
  ==== report-12.0 FAILED

  ==== report-13.0 justification FAILED
  ==== Contents of test case:

      report myreport 3
      catch {myreport justify} result
      myreport destroy
      set result

  ---- Result was:
  wrong # args: should be "::report::_justify name column
  ?jvalue?"
  ---- Result should have been (exact matching):
  no value given for parameter "column" to
  "::report::_justify"
  ==== report-13.0 FAILED

  ==== report-15.0 separator templates FAILED
  ==== Contents of test case:

          report myreport 1
          catch [list myreport $template] result
          myreport destroy
          set result
      
  ---- Result was:
  wrong # args: should be "::report::_tAction name
  template cmd args"
  ---- Result should have been (exact matching):
  no value given for parameter "cmd" to
  "::report::_tAction"
  ==== report-15.0 FAILED

  ==== report-16.0 separator templates FAILED
  ==== Contents of test case:

          report myreport 1
          catch [list myreport $template] result
          myreport destroy
          set result
      
  ---- Result was:
  wrong # args: should be "::report::_tAction name
  template cmd args"
  ---- Result should have been (exact matching):
  no value given for parameter "cmd" to
  "::report::_tAction"
  ==== report-16.0 FAILED

  ==== report-17.0 separator templates FAILED
  ==== Contents of test case:

          report myreport 1
          catch [list myreport $template] result
          myreport destroy
          set result
      
  ---- Result was:
  wrong # args: should be "::report::_tAction name
  template cmd args"
  ---- Result should have been (exact matching):
  no value given for parameter "cmd" to
  "::report::_tAction"
  ==== report-17.0 FAILED

  ==== report-18.0 separator templates FAILED
  ==== Contents of test case:

          report myreport 1
          catch [list myreport $template] result
          myreport destroy
          set result
      
  ---- Result was:
  wrong # args: should be "::report::_tAction name
  template cmd args"
  ---- Result should have been (exact matching):
  no value given for parameter "cmd" to
  "::report::_tAction"
  ==== report-18.0 FAILED

  ==== report-19.0 separator templates FAILED
  ==== Contents of test case:

          report myreport 1
          catch [list myreport $template] result
          myreport destroy
          set result
      
  ---- Result was:
  wrong # args: should be "::report::_tAction name
  template cmd args"
  ---- Result should have been (exact matching):
  no value given for parameter "cmd" to
  "::report::_tAction"
  ==== report-19.0 FAILED

  ==== report-20.0 separator templates FAILED
  ==== Contents of test case:

          report myreport 1
          catch [list myreport $template] result
          myreport destroy
          set result
      
  ---- Result was:
  wrong # args: should be "::report::_tAction name
  template cmd args"
  ---- Result should have been (exact matching):
  no value given for parameter "cmd" to
  "::report::_tAction"
  ==== report-20.0 FAILED

  ==== report-21.0 separator templates FAILED
  ==== Contents of test case:

          report myreport 1
          catch [list myreport $template] result
          myreport destroy
          set result
      
  ---- Result was:
  wrong # args: should be "::report::_tAction name
  template cmd args"
  ---- Result should have been (exact matching):
  no value given for parameter "cmd" to
  "::report::_tAction"
  ==== report-21.0 FAILED

  ==== report-22.0 data templates FAILED
  ==== Contents of test case:

          report myreport 1
          catch [list myreport $template] result
          myreport destroy
          set result
      
  ---- Result was:
  wrong # args: should be "::report::_tAction name
  template cmd args"
  ---- Result should have been (exact matching):
  no value given for parameter "cmd" to
  "::report::_tAction"
  ==== report-22.0 FAILED

  ==== report-23.0 data templates FAILED
  ==== Contents of test case:

          report myreport 1
          catch [list myreport $template] result
          myreport destroy
          set result
      
  ---- Result was:
  wrong # args: should be "::report::_tAction name
  template cmd args"
  ---- Result should have been (exact matching):
  no value given for parameter "cmd" to
  "::report::_tAction"
  ==== report-23.0 FAILED

  ==== report-24.0 data templates FAILED
  ==== Contents of test case:

          report myreport 1
          catch [list myreport $template] result
          myreport destroy
          set result
      
  ---- Result was:
  wrong # args: should be "::report::_tAction name
  template cmd args"
  ---- Result should have been (exact matching):
  no value given for parameter "cmd" to
  "::report::_tAction"
  ==== report-24.0 FAILED

  ==== report-27.0 formatting errors FAILED
  ==== Contents of test case:

      report           myreport 5
      catch {myreport printmatrix} result
      myreport destroy
      set result

  ---- Result was:
  wrong # args: should be "::report::_printmatrix name
  matrix"
  ---- Result should have been (exact matching):
  no value given for parameter "matrix" to
  "::report::_printmatrix"
  ==== report-27.0 FAILED


  ==== report-28.0 formatting errors FAILED
  ==== Contents of test case:

      report           myreport 5
      catch {myreport printmatrix2channel} result
      myreport destroy
      set result

  ---- Result was:
  wrong # args: should be "::report::_printmatrix2channel
  name matrix chan"
  ---- Result should have been (exact matching):
  no value given for parameter "matrix" to
  "::report::_printmatrix2channel"
  ==== report-28.0 FAILED

  ==== report-28.1 formatting errors FAILED
  ==== Contents of test case:

      report           myreport 5
      ::struct::matrix mymatrix
      catch {myreport printmatrix2channel mymatrix}
  result
      mymatrix destroy
      myreport destroy
      set result

  ---- Result was:
  wrong # args: should be "::report::_printmatrix2channel
  name matrix chan"
  ---- Result should have been (exact matching):
  no value given for parameter "chan" to
  "::report::_printmatrix2channel"
  ==== report-28.1 FAILED


tkt_uuid: 440051ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 3 Low
foundin: None
title: latest sha1 test suite fails
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-08-20T20:36:52
comment:
  Note: I don't see sha1 listed in the sf tcllib project
  categories.

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

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

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

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

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

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

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

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

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

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

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

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


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

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


tkt_uuid: 442474ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: None
priority: 5 Medium
foundin: None
title: BWidget: minor changes to PanedWindow
cmimetype: text/plain
submitter: bach
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-09-06T00:23:27
comment:
  I've attached a small patch (diff -c format) for the
  BWidget paned.tcl file.

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

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

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

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


tkt_uuid: 443124ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: bwidget
priority: 7 High
foundin: None
title: add 'Color' to list of bwidget option types
cmimetype: text/plain
submitter: boakley
assignee: hobbs
closer: hobbs
closedate: 2002-01-22T23:37:17
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: 443613ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: pop3
priority: 5 Medium
foundin: None
title: new binary translation breaks pop3::send
cmimetype: text/plain
submitter: deery
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-08-02T16:24:34
comment:
  Just downloaded ActiveTcl 8.3.3.2 and found pop3's new 
  binary translation mode breaks the send proc...

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

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

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

      fconfigure $chan -translation binary crlf

  I hope this helps.

  -- AH.


tkt_uuid: 443619ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: pop3
priority: 5 Medium
foundin: None
title: pop3 doesn't handle empty mailbox!
cmimetype: text/plain
submitter: deery
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-08-02T16:24:34
comment:
  I noticed a problem with pop3::list. It chokes on an 
  empty mailbox by complaining it knows nothing about 
  the msgBuffer variable (that occurs in the pop3::list 
  return). 

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

      set msgBuffer {}

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

  Cheers,

  -- AH.


tkt_uuid: 443645ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: pop3
priority: 5 Medium
foundin: None
title: pop3::retrieve fails...
cmimetype: text/plain
submitter: deery
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-08-02T16:24:34
comment:
  I've been trying out the new tcllib pop3 module 
  included in the latest ActiveTcl distribution 
  (8.3.3.2) some more, and found that pop3::retrieve 
  fails on some POP3 servers with an unknown "size" 
  variable message...

  The new retrieval scheme ("blob" vs. the old "line-by-
  line") assumes POP3 servers _always_ respond with the 
  message size directly after the "+OK" answer. 

  Although an example scenario in the POP3 RFC seems to 
  suggest this, I do not think it is required POP3 
  behaviour (at least from the various versions of the 
  POP3 RFCs I've read [RFC1725, RFC1939]).

  Unfortunatly, various POP3 server implementations 
  think the same way...

  Though I'm somewhat partial to the line-by-line 
  approach [possibly more robust?] myself, the current 
  scheme might still work by issuing a separate command 
  (like LIST) to retrieve the mail message size.

  -- AH.


tkt_uuid: 444172ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Function key accelerators in menus
cmimetype: text/plain
submitter: venksi
assignee: hobbs
closer: hobbs
closedate: 2001-12-29T01:38:33
comment:
  The BWidget Mainframe allows a menu with an item
  of the form:

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

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


tkt_uuid: 445675ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: None
priority: 5 Medium
foundin: None
title: Enhanced mainframe toolbar
cmimetype: text/plain
submitter: haneef
assignee: jenglish
closer: jenglish
closedate: 2001-09-24T19:18:56
comment:
  I pack many buttons on to the mainframe toolbar
  and one thing I wanted to do was to put a few select
  buttons right justified (they are MDI kind of buttons)

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

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


tkt_uuid: 446562ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: profiler
priority: 5 Medium
foundin: None
title: profiler: uplevel breaks for rare case
cmimetype: text/plain
submitter: hemanglavana
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-07-31T23:48:32
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: 446584ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 1 Zero
foundin: None
title: Missing documentation
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-09-13T17:39:01
comment:
  The modules "cmdline", "base64", "fileutil" and "ftp" 
  neither have manpages nor other documentation.

  The modules "mime" and "smtp" have no manpages, but 
  HTML based documentation.


tkt_uuid: 446799ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
title: add suspend/resume API to profiler
cmimetype: text/plain
submitter: hemanglavana
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-08-21T23:36:59
comment:
  In addition to ::profiler::reset functionality, the
  profiler module should also contain ::profiler:suspend
  and ::profiler::resume API.

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

  Hemang.


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


tkt_uuid: 447022ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 5 Medium
foundin: None
title: tcllib packages not immediately loadable
cmimetype: text/plain
submitter: dgp
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-08-02T18:12:27
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: 447037ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: mime
priority: 3 Low
foundin: None
title: mime::qp_encode failures (64 bit?)
cmimetype: text/plain
submitter: dgp
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2005-09-26T23:50:46
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: 447042ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: None
priority: 5 Medium
foundin: None
title: Package versions and dependencies
cmimetype: text/plain
submitter: dgp
assignee: andreas_kupries
closer: dgp
closedate: 2001-08-05T00:34:49
comment:
  Here's a big patch that fixes many bugs dealing with
  what versions of what packages are in tcllib, and
  what versions of what packages they depend on.  Bugs
  fixed by this patch are:

  447038
  447035
  447033
  447013
  447012
  447011
  447010
  232017


tkt_uuid: 447141ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: None
priority: 5 Medium
foundin: None
title: Corrections for INSTALL_ROOT
cmimetype: text/plain
submitter: rmax
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-08-20T22:31:26
comment:
  $(INSTALL_ROOT) should not only be prepended to prefix
  and exec_prefix, but also to libdir and mandir to
  provide a complete installation to a virtual location.


tkt_uuid: 448634ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: None
priority: 5 Medium
foundin: None
title: pop3 uidl support
cmimetype: text/plain
submitter: markgsaye
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-08-20T23:18:05
comment:
  Added support for (optional) pop3 UIDL command.
  Changed version to 1.3
  Some minor formatting changes to pop3.tcl.
  pop3.tcl sorted by proc name.
  Added uidl command summary to man page.
  Some minor formatting to man page.
  Updated pkgIndex.tcl for version 1.3


tkt_uuid: 449276ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 6
foundin: None
title: SelectColor widget can't be created
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-08-08T20:44:12
comment:
  On behalf of: Bruce Hartweg <brhartweg@bigfoot.com>.

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


tkt_uuid: 449284ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 4
foundin: None
title: Tree does not handle Space key
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-08-08T20:58:53
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: 449521ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: control
priority: 5 Medium
foundin: None
title: Add waitForAny to control module
cmimetype: text/plain
submitter: kenstir
assignee: dgp
comment:
  Here is a new package for your consideration: control.  I would be happy with a different name, 
  but this is how it was originally named on the Wiki.

  For now, it contains only one method: waitForAny, which implements a [vwait] for multiple 
  variables.  It has been significantly enhanced over the version in the Wiki, in that it now returns a 
  list of the tokens waited for which have now changed, or "timeout" if a timeout occurs.  With this, 
  you can build a robust queue of multiple outstanding asynchronous events, e.g. http or SOAP 
  commands.

  If you consider this a worthy package, but lacking in an area or two, let me know and I'll be happy 
  to work on it further.  Here are some ideas for enhancement:

   * replace "magical" timeout value recognition with switch, e.g. '-timeout xxx'
   * add try_catch_finally.  I have seen and used the "trycatch" package, but I believe it is more 
  complicated than it needs to be.  The Wiki has a good one that we could use here.  When I need 
  it, I'll probably add it.

  Regards,
  Ken Cox


tkt_uuid: 449531ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: None
priority: 5 Medium
foundin: None
title: Package to iterate over lines of files
cmimetype: text/plain
submitter: lingnau
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-08-24T17:03:48
comment:
  Here is a package I've been working on that I
  would like to offer for Tcllib. It is basically
  a Tcl-only clone of the Python fileinput module,
  i.e., it contains syntactic sugar for iterating
  over the lines of a number of files, with
  optional in-place editing and backups. This
  allows code like

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

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


tkt_uuid: 450453ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Wont Fix
subsystem: None
priority: 5 Medium
foundin: None
title: tcllib/ChangeLog not being maintained
cmimetype: text/plain
submitter: lvirden
assignee: nobody
closer: hobbs
closedate: 2001-10-14T20:16:13
comment:
  The tcllib/ChangeLog file that appears in the nightly
  cvs tar files hasn't been updated since July 18 -
  either there is something wrong with the snapshot
  utility or the file isn't being updated with changes.
  Either case makes life miserable for people trying
  to use the library and wanting to know what changes
  have recently went into the package.


tkt_uuid: 450914ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: ftp
priority: 7 High
foundin: None
title: example access Tk internals
cmimetype: text/plain
submitter: dgp
assignee: gwlester
comment:
  The hpupdate.tcl script calls the Tk private
  command [tkButtonInvoke].  That command is
  moving in Tk 8.4.

  Here's a patch to workaround the problem.


tkt_uuid: 453519ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Out of Date
subsystem: None
priority: 7 High
foundin: None
title: 10.5 Needs Tk 8.4 (TIP 44) update
cmimetype: text/plain
submitter: dgp
assignee: andreas_kupries
closer: dgp
closedate: 2003-04-03T23:04:50
comment:
  Question 10.5 refers to redefining the commands
  [tk{Text|Entry}Insert] and accessing the 
  variable tkPriv to implement an overwrite
  mode for the text or entry widgets.

  These instructions are out of date now that
  private internal commands of Tk have been
  moved into the ::tk namespace for Tk 8.4
  (see TIP 44).


tkt_uuid: 453983ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: Integrate 'comm' into tcllib
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-10-12T23:30:07
comment:
  Add the 'comm' extension by John Robert LoVerso
  to tcllib. 'comm' provides socket-based 'send'
  operations. A simple RPC paradigma.


tkt_uuid: 454505ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: BWidget bug: Label (+ 1 line patch)
cmimetype: text/plain
submitter: bach
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-09-06T00:09:29
comment:
  The balloon helptext of a Label widget does not get
  updated in subsequent configures.

  Test:
  set l [Label .l -text test -helptext "first helptext"]
  pack $l
  $l configure -helptext "second helptext"

  Patch:
  I presume it's a typo. File: label.tcl
  proc: BWLabel::configure { path args } 

  Change the line:     
      DynamicHelp::sethelp $path $path
  to
      DynamicHelp::sethelp $path $path.l

  (last line before return)


tkt_uuid: 454718ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: control
priority: 5 Medium
foundin: None
title: Semephore
cmimetype: text/plain
submitter: erempel
assignee: dgp
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: 455732ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: mclistbox
priority: 5 Medium
foundin: None
title: selection breaks if 1st column invisible
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-09-07T17:00:18
comment:
  Version info:
  wish: 8.3.3
  mclistbox: 1.02 (and the cvs version)

  The selection gets stuck on the first entry if the
  first column of the mclistbox is made invisble.

  The following snippet produces the error:

  --snip---
  package require mclistbox
  namespace import ::mclistbox::*

  set lb [mclistbox .lb]

  $lb column add uid -visible 0
  $lb column add login -label "Login" -width 10
  $lb column add name -label "Name" -width 14

  $lb insert end [list 0 a anaampje]
  $lb insert end [list 1 b bnaampje]
  $lb insert end [list 2 c cnaampje]

  pack $lb
  ---snip---

  Adding -label or -widht options to the invisible column
  does not matter.

  Moving the invisible column to the end fixes it.

  Happy bughunting,

  Ric


tkt_uuid: 456255ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: base64
priority: 5 Medium
foundin: None
title: export public API only
cmimetype: text/plain
submitter: hemanglavana
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-09-05T23:54:21
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: 456883ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Cannot dnd into empty ListBox
cmimetype: text/plain
submitter: nobody
assignee: hobbs
closer: hobbs
closedate: 2002-01-16T02:04:41
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: 457129ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 1 Zero
foundin: None
title: SNMP functions
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-10-20T20:31:32
comment:
  Presently I'm using shelling out to use SNMP from net-
  snmp, but it could be really cool if we could control 
  SNMP with Tcl as a package.  Actually exec everytime 
  does put a high overhead and it's pretty slow.

  I don't how hard would it be to connect directly to 
  the net-snmp API.

  S.


tkt_uuid: 457489ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
title: httpd
cmimetype: text/plain
submitter: andreas_kupries
assignee: nobody
closer: andreas_kupries
closedate: 2001-11-13T06:04:41
comment:
  Add the kernel of an HTTP server as module.
  Just the core part, i.e. collection of incoming
  requests. Dispatch via a singe callback. Everything
  else can be grafted to this from there.

  Not a replacement for TclHTTPd, much more lightweight
  Could be used as part of TclHTTPd. See the ftpd
  module for an example (No storage access in the
  module itself, only hooks to delegate this to the
  sourrounding code).

  Jeff mentioned a micro server used in the testsuite
  of tcl. This could be a useful starting point.


tkt_uuid: 457498ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
title: Extended log module
cmimetype: text/plain
submitter: andreas_kupries
assignee: davidw
closer: davidw
closedate: 2003-01-29T04:29:13
comment:
  The current 'log' module only consider the criticality
  of a message when deciding wether to log the message
  and where.

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

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


tkt_uuid: 458011ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct
priority: 5 Medium
foundin: None
title: Limitations to the _names_ of nodes
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-09-05T23:36:40
comment:
  Hello,

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

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

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

    All these errors occurred after I successively
  created the
  node!

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

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

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

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

  Regards,

  Arjen Markus


tkt_uuid: 458023ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ncgi
priority: 5 Medium
foundin: None
title: urlStub always returns ""
cmimetype: text/plain
submitter: stevecassidy
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-09-05T23:11:24
comment:
  cgi::urlStub is intended to return either 
  env(SCRIPT_NAME) or a value set by a previous call to 
  the proc.  It's missing a global env declaration and 
  so always fails to find a value for SCRIPT_NAME and 
  returns "" instead.

  The patch is simple, in ncgi.tcl:

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


tkt_uuid: 458301ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: BWidget ArrowButton bug (1.3.1) [patch]
cmimetype: text/plain
submitter: petasis
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-09-06T00:02:49
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: 458306ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Out of Date
subsystem: bwidget
priority: 5 Medium
foundin: None
title: BWidget ComboBox (1.3.1)
cmimetype: text/plain
submitter: petasis
assignee: hobbs
closer: hobbs
closedate: 2003-07-17T19:55:15
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: 458446ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: BWidget: faster ListBox inserts
cmimetype: text/plain
submitter: bach
assignee: hobbs
closer: hobbs
closedate: 2001-12-29T01:33:24
comment:
  Motivation:

  The BWidget ListBox insert command isn't a speed demon.
  This is not
  too noticable for small lists, but it gets rather slow
  for big ones
  E.g. inserting 500 entries with just -text and -image
  attributes set 
       takes approx. 1 second on a Pentium III 550MHz.

  Problem analysis:

  The bulk of the time in ListBox::insert gets eaten by a
  call to
  Widget::init. In Widget::init, most of the time is used
  by
  initializing and parsing from standard options
  database. The example
  from above uses ~1250msec for building up the std.
  options and
  ~250msec to apply specific options for the item.

  Proposed patch:

  Two functions to speed up inserts of many items that
  are all almost
  equal. 

  First, Widget::copyinit. This works almost like the
  normal init, but
  saves time by copying standard option initialization
  from a given
  template. It then applies specific item options (just
  like init).

  Second, ListBox::multipleinsert. This also works like
  its pendant
  ListBox::insert, but knows about the aforementioned
  Widget::copyinit
  function. I shortly thought of changing the original
  'insert', but the
  effects of a change there would not be backward
  compatible.

  Sideeffects:
  None to existing code. A widget function more to
  document for the user
  (ListBox::multipleinsert).

  Results:
  The speedup of using multipleinsert is a factor of 2
  when used almost
  exactly like a multiple call to insert.
  That is:

      set l
      foreach n {name1 name2 name3 ... namen} {
          lappend l $n "-text $n -image something.gif"
      }
      $list multipleinsert end $l

  is 2 times faster than its pendant

      foreach n {name1 name2 name3 ... namen} {
          $list insert end $n -text $n -image
  something.gif
      }

  Assuming that, e.g. all images used are the same (as in
  the example
  above, the speedup is factor 3 by using:
      set l
      foreach n {name1 name2 name3 ... namen} {
          if {[llength $l] == 0} {
              lappend l $n "-text $n -image
  something.gif"
  } else {
              lappend l $n "-text $n"
          }
      $list multipleinsert end $l


  Code:

  In listbox.tcl:

  # Bastien Chevreux (bach@mwgdna.com)
  # The multipleinsert command performs inserts several
  items at once into
  #  the list. It is faster than calling insert multiple
  times as it uses the
  #  Widget::copyinit command for initializing all items
  after the 1st. The 
  #  speedup factor is between 2 and 3 for typical usage,
  but could be higher
  #  for inserts with many options.
  #
  # Syntax: path and index are as in the insert command
  #         args is a list of even numbered elements
  where the 1st of each pair
  #          corresponds to the item of 'insert' and the
  second to args of 'insert'.
  #
  ------------------------------------------------------------------------------
  #  Command ListBox::multipleinsert
  #
  ------------------------------------------------------------------------------
  proc ListBox::multipleinsert { path index args } {
      variable $path
      upvar 0  $path data

      # If we got only one list as arg, take the first
  element as args
      # This enables callers to use 
      #   $list multipleinsert index $thelist
      # instead of
      #   eval $list multipleinsert index $thelist

      if {[llength $args] == 1} {
  set args [lindex $args 0]
      }

      set count 0
      foreach {item iargs} $args {
  if { [lsearch $data(items) $item] != -1 } {
      return -code error "item \"$item\" already exists"
  }

  if {$count==0} {
      Widget::init ListBox::Item $path.$item $iargs
      set firstpath $path.$item
  } else {
      Widget::copyinit ListBox::Item $firstpath
  $path.$item $iargs
  }

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

  incr count
      }

      _redraw_idle $path 2
      return $item
  }

         

  In widget.tcl:

  # Bastien Chevreux (bach@mwgdna.com)
  #
  # copyinit performs basically the same job as init, but
  it uses a
  #  existing template to initialize its values. So,
  first a perferct copy
  #  from the template is made just to be altered by any
  existing options
  #  afterwards.
  # But this still saves time as the first initialization
  parsing block is
  #  skipped.
  # As additional bonus, items that differ in just a few
  options can be
  #  initialized faster by leaving out the options that
  are equal.

  # This function is currently used only by
  ListBox::multipleinsert, but other
  #  calls should follow :)

  #
  ------------------------------------------------------------------------------
  #  Command Widget::copyinit
  #
  ------------------------------------------------------------------------------
  proc Widget::copyinit { class templatepath path options
  } {
      upvar 0 ${class}::opt classopt
      upvar 0 ${class}::$path:opt  pathopt
      upvar 0 ${class}::$path:mod  pathmod
      upvar 0 ${class}::$path:init pathinit

      upvar 0 ${class}::$templatepath:opt  
  templatepathopt
      upvar 0 ${class}::$templatepath:mod  
  templatepathmod
      upvar 0 ${class}::$templatepath:init 
  templatepathinit

      if { [info exists pathopt] } {
  unset pathopt
      }
      if { [info exists pathmod] } {
  unset pathmod
      }

      # We use the template widget for option db copying,
  but it has to exist!
      array set pathmod  [array get templatepathmod]
      array set pathopt  [array get templatepathopt]
      array set pathinit [array get templatepathinit]

      set Widget::_class($path) $class
      foreach {option value} $options {
          if { ![info exists classopt($option)] } {
              unset pathopt
              unset pathmod
              return -code error "unknown option
  \"$option\""
          }
          set optdesc $classopt($option)
          set type    [lindex $optdesc 0]
          if { ![string compare $type "Synonym"] } {
              set option  [lindex $optdesc 1]
              set optdesc $classopt($option)
              set type    [lindex $optdesc 0]
          }
          set pathopt($option)
  [$Widget::_optiontype($type) $option $value [lindex
  $optdesc 3]]
  set pathinit($option) $pathopt($option)
      }
  }


tkt_uuid: 459186ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Out of Date
subsystem: stats - deprecated
priority: 4
foundin: None
title: counter & stats modules are almost same
cmimetype: text/plain
submitter: hemanglavana
assignee: welch
closer: patthoyts
closedate: 2003-04-29T08:42:34
comment:
  A cursory look at the diffs of counter.tcl and stats.tcl files
  gives the impression that both are essentially the same.
  Moreover, the ChangeLog file under counter module says:

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

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


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

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


tkt_uuid: 459197ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ftpd
priority: 5 Medium
foundin: None
title: More fixes in ftpd for the export of the public API
cmimetype: text/plain
submitter: hemanglavana
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-09-07T22:22:31
comment:
  On further examination wrt [456255], I found out that the 
  ftpd.tcl file had few more "namespace export *" stmts in it
  which I had missed earlier. Here's a patch for the same.

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


tkt_uuid: 460230ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: struct
priority: 5 Medium
foundin: None
title: there should be an 'exists -key xyz'
cmimetype: text/plain
submitter: davidw
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-09-14T18:14:55
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: 461434ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: html
priority: 5 Medium
foundin: None
title: docs mention formatCode
cmimetype: text/plain
submitter: stevecassidy
assignee: welch
closer: jenglish
closedate: 2002-02-14T21:23:53
comment:
  The man page for html mentions the proc formatCode 
  which isn't implemented in the library.  It's only in 
  the proc list, not in the main body.  

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


tkt_uuid: 462015ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Rejected
subsystem: fileutil
priority: 8
foundin: None
title: find names not prefixed with pwd
cmimetype: text/plain
submitter: davidw
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-05-15T17:00:35
comment:
  @ashland [~/download/tcl] $ find |less
  .
  ./CVS
  ./CVS/Root
  ./CVS/Repository
  ./CVS/Entries
  ./compat
  ./compat/CVS
  ./compat/CVS/Root

  @ashland [~/download/tcl] $ find `pwd` |less

  /home/davidw/download/tcl
  /home/davidw/download/tcl/CVS
  /home/davidw/download/tcl/CVS/Root
  /home/davidw/download/tcl/CVS/Repository
  /home/davidw/download/tcl/CVS/Entries
  /home/davidw/download/tcl/compat
  /home/davidw/download/tcl/compat/CVS
  /home/davidw/download/tcl/compat/CVS/Root

  tcllib's find does not exhibit this behaviour - it
  *always* prefixes [pwd] to the results.


tkt_uuid: 464560ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ncgi
priority: 5 Medium
foundin: None
title: ncgi::redirect request_uri
cmimetype: text/plain
submitter: erolfe
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-10-23T03:44:45
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: 465210ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: csv
priority: 5 Medium
foundin: None
title: ::csv::joinlist sepChar handling
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-09-28T18:11:07
comment:
    file: csv.tcl Rev. 1.5

    procedure: ::csv::joinlist

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


tkt_uuid: 465768ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
title: Browser invocation broken on Unix
cmimetype: text/plain
submitter: dgp
assignee: dgp
closer: dgp
closedate: 2001-09-27T19:37:03
comment:
  Clicking on a URL is intended to launch 
  a browser, but that fails on Unix.

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

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

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


tkt_uuid: 466011ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
title: option rc file saved w/open permissions
cmimetype: text/plain
submitter: lvirden
assignee: patthoyts
closer: patthoyts
closedate: 2001-10-26T08:14:13
comment:
  when tkchat creates its $HOME/.tkchatrc file , tkchat
  should probably do something about setting the files
  permissions to rw------- / 600 on unix.


tkt_uuid: 466078ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: general request
priority: 5 Medium
foundin: None
title: Add modules to tcllib tar file
cmimetype: text/plain
submitter: lvirden
assignee: techentin
closer: lvirden
closedate: 2003-04-10T17:54:19
comment:
  Please add Bwidgets, mclistbox, and other tcl based
  extensions currently in this project in the tcllib tar
  files that are created during a release.


tkt_uuid: 466091ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: tkchat memory
cmimetype: text/plain
submitter: lvirden
assignee: hartweg
closer: patthoyts
closedate: 2003-05-02T08:51:52
comment:
  I would like for tkchat to remember things like resized
  window size.

  Also, when I start up tkchat and look at its font drop
  down, no font name or size is highlighted - should
  these not be set upon the value being used, and then
  remembered if the user changes them?


tkt_uuid: 466094ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: tkchat 'logging' info move
cmimetype: text/plain
submitter: lvirden
assignee: patthoyts
closer: andreas_kupries
closedate: 2001-10-26T15:42:11
comment:
  Currently tkchat produces logging info to stdout .
  An option to either log it to a file or to
  a tk window would be a useful addition.


tkt_uuid: 466219ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: Extend handling of userinfo
cmimetype: text/plain
submitter: andreas_kupries
assignee: patthoyts
closer: patthoyts
closedate: 2004-06-24T10:41:53
comment:
  * display userinfo in a dialog box if asked.
  * optionally display the images (if registered)
    for the people recognized as online.


tkt_uuid: 466228ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: tkchat, Cut, copy, paste should work
cmimetype: text/plain
submitter: andreas_kupries
assignee: nobody
closer: andreas_kupries
closedate: 2001-10-26T15:43:40
comment:
  The chat currently has no cut/copy/paste 
  functionality. It should be added (especially for 
  pasting urls inot a message).


tkt_uuid: 466317ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: app: tkchat
priority: 5 Medium
foundin: None
title: Cleanup of tkchat sources
cmimetype: text/plain
submitter: andreas_kupries
assignee: patthoyts
closer: patthoyts
closedate: 2001-10-15T16:13:45
comment:
  Added on behalf of Larry Virden (lvirden) the enclosed
  patch cleans up the tkchat in several places noted as
  problematic by static code checkers.


tkt_uuid: 466746ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ftp
priority: 5 Medium
foundin: None
title: socket readable, gets<0 => Error conn.
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-10-23T03:45:21
comment:
  I have a problem with tcllib-1.0 ftp when working
  with a proxy ftp server with the message "ERROR: Error
  connecting!"

  The problem is due to the fact that in some case,
  the ftp socket is readable, but gets proc returns -1.

  excerpt from ftp.tcl:
  ...
      fconfigure $ftp(CtrlSock) -buffering line -blocking
  $block -translation {auto crlf}
      fileevent $ftp(CtrlSock) readable [list [namespace
  current]::StateHandler $s $ftp(CtrlSock)]
  ...
  proc ftp::StateHandler {s {sock ""}} {
  ...
          set number [gets $sock bufline]
  ...
          if { $number > 0 } {
  ...
          } elseif { [eof $ftp(CtrlSock)] } {
  ...
          }

  # the workaround is to replace this last line with
          } else {
            # in some case, gets gets nothing
            return
          }


tkt_uuid: 466850ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: cmdline
priority: 5 Medium
foundin: None
title: cmdline::getoptions comments improvement
cmimetype: text/plain
submitter: glennjnn
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-10-12T22:41:09
comment:
  Part of the comments for the getoptions proc read:

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


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

  Please change the comments to read:

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


tkt_uuid: 467835ffffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
resolution: Invalid
subsystem: app: tkchat
priority: 5 Medium
foundin: None
title: tkchat retrieve menu item
cmimetype: text/plain
submitter: patthoyts
assignee: nobody
closer: patthoyts
closedate: 2001-10-11T12:34:08
comment:
  This patch adds a Retrieve menu item to the debug menu
  which delegates to tkchat::Retrieve and obtains the
  current HEAD revision from the SourceForge CVS tree.
  The user may then re-source from the new version.

  Taken from tkcon and modified slightly for tkchat.


tkt_uuid: 467876ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Out of Date
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
title: tkchat pops up User Info boxes
cmimetype: text/plain
submitter: stevecassidy
assignee: hartweg
closer: hobbs
closedate: 2002-01-22T21:05:14
comment:
  After clicking on a user's name the site responds 
  with USERINFO lines. These get interpreted by 
  showInfo to display pop up boxes. When the display is 
  refreshed the same info is displayed repeatedly 
  filling the screen with User Info windows. 

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

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

  Steve


tkt_uuid: 469855ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: csv
priority: 5 Medium
foundin: None
title: Bug in ::csv::split
cmimetype: text/plain
submitter: bach
assignee: hobbs
closer: hobbs
closedate: 2001-10-14T20:10:15
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: 470206ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: app: tkchat
priority: 5 Medium
foundin: None
title: HTTP Redirect for TkChat
cmimetype: text/plain
submitter: patthoyts
assignee: patthoyts
closer: patthoyts
closedate: 2001-10-15T12:13:15
comment:
  This is two patches to the TkChat source because
  I can't disentangle them reliably and the cvs
  source has been changed since I posted my first
  patch and it'll clash now.

  So, patch 1 implements a Retrieve menu item for
  obtaining the current CVS file from the SourceForge
  repository via http.

  Patch 2 was induced by the recent loss of the
  mini.net domain and the subsequent use of purl.org
  for the Wiki. This patch provides HTTP Redirect
  following so that the chat program can be pointed
  at the PURL and dereference to the chat site.

  Pat Thoyts


tkt_uuid: 470211ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: uri
priority: 5 Medium
foundin: None
title: urn: scheme handling for uri module
cmimetype: text/plain
submitter: patthoyts
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-10-23T03:46:48
comment:
  This is a package to extend the uri module of tcllib to
  handle the urn: scheme.

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


tkt_uuid: 470273ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: BWidget: MainFrame menu inconsistency
cmimetype: text/plain
submitter: bach
assignee: hobbs
closer: hobbs
closedate: 2001-12-29T01:02:02
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: 471418ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: textutil
priority: 5 Medium
foundin: None
title: csv to formatted output function?
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-11-12T20:18:17
comment:
  A function that would be useful to have is
  a 'template' type module - perhaps even generalized
  enough to be used with things other than csv - but
  basically that would allow you to supply
  'records'/arrays/csv lines (some kind of input) and out
  would come 'formletter' type output.

  This probably could even be used with the report
  modules, etc.

  Basically, a way of specifying output that might
  not be 'report' oriented (letters, post cards, web
  pages, etc.)


tkt_uuid: 472009ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: mime
priority: 5 Medium
foundin: None
title: mime/smtp/Trf
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-11-04T04:50:34
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: 472010ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: mime
priority: 5 Medium
foundin: None
title: "smtp::sendmessage" and "header"
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-11-02T05:37:32
comment:
  he procedure "smtp::sendmessage" does not recognice the
  "header"
      data provided with the "mime::setheader" command.

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

  set TEXT    {Hallo Otto}

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

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

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

  smtp::sendmessage $M1

  # clean everything up

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

  generate

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


tkt_uuid: 472259ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: cmdline
priority: 5 Medium
foundin: None
title: getoptions -- help or error?
cmimetype: text/plain
submitter: glennjnn
assignee: andreas_kupries
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: 472718ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ScrollWindow update idletasks
cmimetype: text/plain
submitter: nobody
assignee: hobbs
closer: hobbs
closedate: 2003-02-25T22:13:36
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: 473656ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: pop3
priority: 5 Medium
foundin: None
title: pop3::retrieve blocking forever
cmimetype: text/plain
submitter: edesio
assignee: nobody
closer: andreas_kupries
closedate: 2001-11-01T16:50:38
comment:
  Hi folks!

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

  set msgBuffer [read $chan $size]

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

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

  The patch below (seems to) fix both problems.

  I apologize for my poor english.

  Thanks in advance,

  Edesio
  edesio@ieee.org


tkt_uuid: 474846ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: uri
priority: 5 Medium
foundin: None
title: Failure to handle ftp uri's
cmimetype: text/plain
submitter: nobody
assignee: patthoyts
closer: andreas_kupries
closedate: 2001-10-31T17:04:49
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: 474859ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: app: tkchat
priority: 5 Medium
foundin: None
title: interpreter startup string
cmimetype: text/plain
submitter: lvirden
assignee: patthoyts
closer: patthoyts
closedate: 2001-10-26T08:04:47
comment:
  The current tkchat.tcl has a full path name to wish
  in the first line.  This tiny patchlet changes that to
  look for wish in the user's path.


tkt_uuid: 474999ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: ftp
priority: 5 Medium
foundin: None
title: ftp man page description typo
cmimetype: text/plain
submitter: lvirden
assignee: jenglish
closer: jenglish
closedate: 2001-11-27T15:58:38
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: 475018ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: uri
priority: 5 Medium
foundin: None
title: interaction missing between uri and ftp
cmimetype: text/plain
submitter: lvirden
assignee: patthoyts
closer: patthoyts
closedate: 2001-11-01T08:22:43
comment:
  when one invokes uri::geturl
  ftp://ftp.someplace.com/pub/tcl/stuff.gz
  you get an error because ftp doesn't define a "geturl"
  in all lower case characters.

  Also, the uri::split creates a value of "pwd" when
  "passwd" would be more obvious - pwd means print
  working directory in ftp:: for instance!


tkt_uuid: 475846ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: control
priority: 5 Medium
foundin: None
title: install leaves control broken
cmimetype: text/plain
submitter: dgp
assignee: dgp
closer: andreas_kupries
closedate: 2001-11-08T06:33:14
comment:
  The control package makes use of Tcl's auto-loader
  to load only the commands that are actually used.
  In order for this to work, a "tclIndex" file must
  be generated and installed, but tcllib's 'make install'
  does not do this.

  Note also that 'make install' blindly installs all
  *.tcl files, assuming they are all part of the package.
  If other Tcl scripts (developer aids, etc.) are
  included in the source directory, they need to have
  a name not matching *.tcl so they are not mistakenly
  installed.

  Proposed fix to control:
  rename index.tcl -> genIndex
  generate tclIndex and check it in to CVS
      now developer responsbility to keep it
      up to date.

  Proposed fix to tcllib Makefile:
  have 'make install' install files named
      'tclIndex' as well as '*.tcl'

  As currently shipped with tcllib 1.1, control 0.0
  does not work at all.


tkt_uuid: 476729ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ftp
priority: 5 Medium
foundin: None
title: documentation bug regarding DisplayMsg
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-11-07T02:48:45
comment:
  andreas kupries requested that i log this doc bug
  against ftp.  Additional information about the
  DisplayMsg aspects of the ftp module are available at
  http://mini.net/cgi-bin/wikit/2444.html .  These are
  needed in the man page.


tkt_uuid: 476731ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
title: replace ftp displaymsg with log calls
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-11-07T02:49:26
comment:
  andreas kupries asked me to log a feature request to
  replace ftp's displaymsg calls with calls to the tcllib
  log module.


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


tkt_uuid: 476804ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: ftp
priority: 3 Low
foundin: None
title: geturl handlers in protocol packages
cmimetype: text/plain
submitter: patthoyts
assignee: andreas_kupries
closer: patthoyts
closedate: 2002-01-26T22:15:28
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: 476988ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: textutil
priority: 5 Medium
foundin: None
title: splitx and the empty string
cmimetype: text/plain
submitter: glennjnn
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-12-11T21:50:00
comment:
  Using splitx on an empty string does not return

  an empty list.



  # test script

  package require textutil

  namespace import ::textutil::split::splitx

  puts [llength [split ""]]  ;# ==> 0

  puts [llength [splitx ""]] ;# ==> 1





  The first line of the splitx should be

    if {[string length $str]==0} {return {}}


tkt_uuid: 477130ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Big combobox api changes not documented
cmimetype: text/plain
submitter: nobody
assignee: hobbs
closer: hobbs
closedate: 2002-01-16T02:13:05
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: 477753ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: add irc module
cmimetype: text/plain
submitter: davidw
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-11-12T23:53:36
comment:
  Irc module available at 

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

  Please add or request changes necessary for addition.


tkt_uuid: 477756ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: multiplexer
cmimetype: text/plain
submitter: davidw
assignee: andreas_kupries
closer: davidw
closedate: 2003-06-29T09:04:03
comment:
  Multiplexing server available at
  http://people.debian.org/~davidw/

  Maybe this is better as an application?


tkt_uuid: 478478ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ftp
priority: 5 Medium
foundin: None
title: ftp::ModTimePostProcess fails
cmimetype: text/plain
submitter: mrfitz
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-11-08T06:27:26
comment:
  Admittedly this is most likely due to a server-side 
  problem, but I was unable to figure out which RFC 
  covered the MDTM command/response definition.  

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

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

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


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

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


tkt_uuid: 478818ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: date/time/calendar module for tcllib
cmimetype: text/plain
submitter: schwarzkopf
assignee: schwarzkopf
comment:
  Although the clock command accomplishes alot of
  date/time functionality, there are still some
  functionality that can be added. This module should add
  those new functionalities.


tkt_uuid: 478989ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: control
priority: 5 Medium
foundin: None
title: Test failure
cmimetype: text/plain
submitter: andreas_kupries
assignee: dgp
closer: dgp
closedate: 2001-11-07T05:32:13
comment:
  tcllib CVS head, configure, make test.

  Module: control
  modules/control/no-op.test
  modules/control/rswitch.test

  ==== rswitch-3.0 rswitch argument checking FAILED
  ==== Contents of test case:

      [list [catch {rswitch 1 \{} msg] $msg $::errorInfo

  ==== Test generated error:
  missing close-bracket
  ---- Result should have been:
  1 {unmatched open brace in list} {unmatched open brace
  in list
      while executing
  "rswitch 1 \{"}
  ==== rswitch-3.0 FAILED


tkt_uuid: 479174ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: smtp
priority: 5 Medium
foundin: None
title: SMTP documentation unclear
cmimetype: text/plain
submitter: dnew
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-11-08T06:44:17
comment:
  -recipients 
    A string containing one or more 822-style address specifications. 

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


tkt_uuid: 479482ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: None
priority: 5 Medium
foundin: None
title: RFC: new smtpd module.
cmimetype: text/plain
submitter: patthoyts
assignee: patthoyts
closer: patthoyts
closedate: 2001-11-17T22:04:47
comment:
  I am submitting a skeleton Simple Mail Transfer
  Protocol daemon (smtpd) for inclusion into tcllib. This
  was written to permit testing of mail sending software
  (SOAP over SMTP) on the windows platform but may have
  other uses.

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

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

  Comments please!


tkt_uuid: 479935ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: MainFrame font configuration added
cmimetype: text/plain
submitter: bach
assignee: hobbs
closer: hobbs
closedate: 2001-12-29T01:49:22
comment:
  Motivation:
  There is currently no way to set the menu and status
  bar fonts (sometimes needed for e.g. visually impaired)
  for the MainFrame widget.

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

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

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

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


tkt_uuid: 480227ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: comm
priority: 5 Medium
foundin: None
title: comm.n manpage needs update
cmimetype: text/plain
submitter: jenglish
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-11-16T21:45:02
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: 480945ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
title: consolidate tcllib examples
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-11-12T23:37:06
comment:
  Currently tcllib has examples in a higher level example
  directory as well as within several of the module
  directories.

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


tkt_uuid: 481019ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: comm
priority: 5 Medium
foundin: None
title: comm registry mechanism
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
comment:
  I would love to see comm get some sort of automated or
  nearly transparent registration name server, making it
  even closer to Tk's send than it currently is.


tkt_uuid: 481022ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: matrix
priority: 5 Medium
foundin: None
title: new matrix related methods requested
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-11-24T02:25:06
comment:
  1. Ability to tell matrix to print itself out (ala
  parray)

  2. Ability to give matrix a term to search for, with
  ability to either search any column of a row, or
  particular columns (or column ranges)


tkt_uuid: 481023ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
title: read2matrix new functionality requested
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-11-12T22:24:27
comment:
  If the matrix being filled in has not had the number of
  columns set, I would like to request that this value be
  set based on the first record read - perhaps only if a
  special flag is present?


tkt_uuid: 481161ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
title: put/get into channels
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-11-19T21:03:45
comment:
  The put and get methods currently read from a file or
  in-memory string, or write to a file or a variable.
  Both methods should support reading from and writing to
  a channel too.

  Both should also be able to give up ownership of such a
  channel so that it can be driven by someone else
  instead of only from the inside of the ftp module.


tkt_uuid: 481292ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: new package proposal: stooop
cmimetype: text/plain
submitter: nobody
assignee: jfontain
closer: andreas_kupries
closedate: 2001-12-11T20:51:00
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: 482558ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: control
priority: 5 Medium
foundin: None
title: update control man page for rswitch
cmimetype: text/plain
submitter: lvirden
assignee: dgp
closer: dgp
closedate: 2001-11-20T19:03:58
comment:
  without documentation, it becomes somewhat difficult
  for developers to realize that particular functionality
  is available.  Addition of doc on rswitch to the
  control man page would remedy this situation in at
  least this case.


tkt_uuid: 482569ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Duplicate
subsystem: csv
priority: 5 Medium
foundin: None
title: nit for csv.n man page
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-11-16T18:36:57
comment:
  The attached patch (assuming that netscape and sf.net
  cooperate) fixes a typo in the csv.n man page, as well
  as filling in the SEE ALSO and KEYWORD sections.


tkt_uuid: 483125ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
title: added features for struct::graph
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-11-19T23:33:40
comment:
  [btw: the Category button at SF does not offer
  a "struct" entry, so this is in the "none"
  category.]

  The attached patch adds some features that I am
  missing in the graph package:

  - set, get, and unset operations for the graph
    itself
  - ability to select arcs and nodes based on their
    associated keyed values

  Feel free to use or ignore.


tkt_uuid: 483623ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: struct :: graph
priority: 2
foundin: None
title: Use cmdline where applicable
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
comment:
  The methods 'arcs' and 'nodes' of "graph" should use 
  the "cmdline" package to simplify their argument 
  processing.


tkt_uuid: 483838ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 6
foundin: None
title: minor changes to several BWidget widgets
cmimetype: text/plain
submitter: decosterjos
assignee: hobbs
closer: hobbs
closedate: 2002-09-11T19:24:51
comment:
  I've attached the result of a 'cvs diff' between my
  local BWidget
  sources and the current CVS head (20-nov-2001). This
  diff
  contains the following changes:

  1) tree.tcl

  Added a 'recursive' argument to 'Tree::opentree' and 
  'Tree::closetree'

  2) dialog.tcl

  Added '-transient' and '-place' flag

  3) listbox.tcl

  Added '-selectmode' flag and 2 possible select-modes:
  single and 
  multiple

  4) widget.tcl

  Select element 4 (was 3) from the config-options to get
  value from 
  optiondb

  5) progressbar.tcl

  Added new type 'nonincremental_infinite' and modified
  movement of 
  progressbar when in 'infinite' or
  'nonincremental_infinite' mode. The
  'nonincremental_infinite' can be used when a certain
  process 
  monitored by a ProgressBar returns a total count and
  not an 
  increment count.

  6) panedw.tcl

  Added '-weights' flag with possible value 'extra' or
  'available'. 
  Since BWidget-1.3.1, the meaning of the '-weight' flag
  for the 
  'PanedWindow::add' command was changed. This made it
  difficult to 
  create a layout where the panes occupy a certain amount
  of the 
  screen. When using the '-weights extra' flag when
  creating a 
  PanedWindow widget, the >=1.3.1 behavior is used: the
  weights
  for the different panes are only used for extra space.
  When using 
  the '-weights available' flag, the weights for the
  different panes are 
  used to set the size of each panes relative to the
  total available 
  space.

  Impact of changes to existing code: 
   
  None, behaviour is exactly the same when not specifying
  one of the 
  new flags or arguments (these have default values
  corresponding to 
  the old behavior), except for movement of ProgressBar
  in 
  one of the 'infinite' modes.


tkt_uuid: 484117ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: html
priority: 5 Medium
foundin: None
title: new html function
cmimetype: text/plain
submitter: decosterjos
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-01-11T22:29:10
comment:
  I attached a new function for the html module. This
  function creates a bulleted list of links given a list
  of label, URL pairs. 

  Result: A <ul><li><a...><\li>.....<\ul> fragment


tkt_uuid: 484123ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Patch for BWidget::place
cmimetype: text/plain
submitter: decosterjos
assignee: hobbs
closer: hobbs
closedate: 2001-12-29T01:52:32
comment:
  When BWidget::place is called with location different
  from 'at' and 'center' and without a prarent (arglen =
  1), variable 'widget'  is undefined. I added an 'else'
  case the if statement setting the variable widget to
  make sure the variable widget is always set.

  Result of 'cvs diff utils.tcl':

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


tkt_uuid: 484850ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
title: Add "log-gamma" proc to math module
cmimetype: text/plain
submitter: lvirden
assignee: kennykb
closer: kennykb
closedate: 2002-01-12T00:57:45
comment:
  The tcler's wiki has several procs implementing 
  factorial code.  It would be useful, once one decided 
  which of the implementations matched the current math 
  module style, to add one to the math modu


tkt_uuid: 485715ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: csv
priority: 5 Medium
foundin: None
title: csvcut example program output problem
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-12-11T22:03:48
comment:
  csvcut produces "non-standard" (whatever that means :-)
  output for csv input files with fields with embedded
  blanks:

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

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


tkt_uuid: 485717ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
title: add csvdiff to examples directory
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-01-17T17:08:03
comment:
  during the development of the csv module, the author,
  andreas kupries, wrote a csvdiff application that
  demonstrates yet again the usefulness of the
  application.


tkt_uuid: 486547ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: struct :: graph
priority: 5 Medium
foundin: None
title: note for future struct::graph developmen
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
comment:
  Perl has a number of modules dealing with graphs -
  perhaps some useful code could be garnered by looking
  at modules such as
  http://www.cpan.org//authors/id/N/NE/NEILB/ where the
  author has a collection of
  modules for reading and writing directed graphs in a
  variety of formats. 


tkt_uuid: 486570ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: counter
priority: 5 Medium
foundin: None
title: test suite failure
cmimetype: text/plain
submitter: lvirden
assignee: welch
closer: patthoyts
closedate: 2003-04-03T21:05:27
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: 486572ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: fileutil
priority: 5 Medium
foundin: None
title: testsuite failure with cvs head version
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-12-06T21:54:19
comment:
  platform: sparc solaris 2.6 sun c compiler tcl 8.4a4
  and latest tcllib from cvs head of tue, nov 28, 2001

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

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

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

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

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

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

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

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


tkt_uuid: 490151ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: pop3
priority: 5 Medium
foundin: None
title: bugs in ::pop3::retrieve (RetrSlow)
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-12-11T18:00:00
comment:
  In ::pop3::retrieve with retr-mode "slow" or "list" with fallback to slow, 

  following call is missing just before calling set msgBuffer [RetrSlow $chan]

  ::pop3::send $chan "RETR $index"

  Consequences: The retrieve call will hang for ever. The call waits for data from
  the E-Mail server but the E-Mail server never got a Retrieve command to deliver data.

  The last code part in RetrFast looks very similar to functionality of RetrSlow

  P.s. Good work. Like the new structure in the package.

  In the meantime there do exist MS-Exchange Server that do understand 
  crlf. (-msex ). 
  Better rename the -msex option to tran-mode. Is more neutral.


tkt_uuid: 492156ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: textutil
priority: 5 Medium
foundin: None
title: New expand method 'textcmd'
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-12-14T05:00:11
comment:
  Enclosed a patch which reintroduces 
  the 'raw_text_hook' known to the expand application in 
  the form of 'textcmd', a macro which is run for all 
  plain text encountered in a template.


tkt_uuid: 492234ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: Documentation toolbox
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2001-12-14T23:46:02
comment:
  Enclosed a tar archive implementing a 
  module 'doctools', currently providing
  a simple tcl-nased markup for writing
  manpages and a processor for converting
  this format into TMML, HTML, and nroff.
  Other formats can be added at will.


tkt_uuid: 492563ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: mime
priority: 5 Medium
foundin: None
title: relative domain when parsing email addresses
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
comment:
  I am submitting a request for a feature for
  mime::
  package.
  If I do mime::parseaddress on some addresses,
  I am getting them parsed against the machine name.
  But I have a very complicated server with a lot of
  domain names pointed to it. I need an option for
  mime::parseaddress to parse addresses relative
  not to machine name but to domain directly provided.
  for example
  set zinfo [mime::parseaddress -mydomain qq.com
  "addr1@qq.com"]
                                  Thank you
                                  Denis Medvedev
  P.S. where is a distribution of tcllib1.1?
  I can't download it from sourceforge - bad requests...
  If you can, please update the distribution of tcllib
  on ftp.scriptics.com - there is only  version 0.8


tkt_uuid: 494388ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
title: Section references & Example sections
cmimetype: text/plain
submitter: andreas_kupries
assignee: jenglish
closer: jenglish
closedate: 2002-02-13T00:11:19
comment:
  Extend the format of doctools manpages to allow for 
  markup of section references and example 
  sections/paragraphs.


tkt_uuid: 495976ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 8
foundin: None
title: install copies from base dir not modules
cmimetype: text/plain
submitter: nobody
assignee: techentin
closer: andreas_kupries
closedate: 2002-01-21T18:11:10
comment:
  install.sh tries to copy from the base directory, not
  the modules subdirectory, so cp does not find the
  module directories:

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

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

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

  to:

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


tkt_uuid: 498104ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Invalid
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Add -textvariable to ProgressBar
cmimetype: text/plain
submitter: chris_nelson
assignee: hobbs
closer: hobbs
closedate: 2002-01-22T21:26:15
comment:
  We needed to include text above a progress bar (as there is a progress dialog) for "xx% complete", 
  etc.  This seemed a general enough need that we patched progressbar.tcl rather than write our 
  own wrapper.  Here's the patch.


tkt_uuid: 500543ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: None
priority: 5 Medium
foundin: None
title: tcllib man pages trouble
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-01-11T21:52:25
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: 500655ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 5 Medium
foundin: None
title: man pages not formatted
cmimetype: text/plain
submitter: pointsman
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-01-11T22:44:30
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: 500890ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Mainframe cannot be created if no textvar used
cmimetype: text/plain
submitter: lduperval
assignee: hobbs
closer: hobbs
closedate: 2002-01-15T18:50:47
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: 501210ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Patch for: [ #500890 ] Mainframe ...
cmimetype: text/plain
submitter: bach
assignee: hobbs
closer: hobbs
closedate: 2002-01-15T18:48:44
comment:
  I suppose I'm the culprit for this bug (forgot to
  protect variables when adding the eval). I've attached
  the patch to resolve this below as I couldn't attach it
  directly to the bug report.

  Regards,
     Bastien


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

  What does everyone think?


tkt_uuid: 501577ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Works For Me
subsystem: pop3
priority: 8
foundin: None
title: Delete reorders requests?
cmimetype: text/plain
submitter: dnew
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-10T01:17:22
comment:
  On a mailbox with multiple messages, the following does not process all of them:

  package require pop3 ; # from TclLib

  proc checkmail {} {
      set chan [::pop3::open pop-server.san.rr.com xxxxx secret]
      set x [lindex [::pop3::status $chan] 0]
      puts "x=$x"
      for {set i 0} {$i < $x} {incr i} {
          set msg [::pop3::retrieve $chan [expr $i+1]]
          puts "len msg=[string length $msg]"
          ::pop3::delete $chan [expr $i + 1]
      }
      ::pop3::close $chan
  }

  checkmail

  Instead, it seems to only process the first few messages, failing to retrieve or delete the others.

  If the messages are being renumbered by the deletion, then the man page entry stating
  Note, the indices are not reordered on the server,
  should be fixed, but that doesn't seem to be the problem.


tkt_uuid: 502246ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: bwidget 1.3 documentation
cmimetype: text/plain
submitter: ledoublet
assignee: hobbs
closer: hobbs
closedate: 2002-01-22T20:46:03
comment:
   I have installed ActiveTCL 8.3.1.4 for Linux and I 
  use Bwidgets.

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

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


tkt_uuid: 503336ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
title: Add no_softbreak flag to qp_encode
cmimetype: text/plain
submitter: usus
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-01-16T19:39:03
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: 503471ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ftp
priority: 5 Medium
foundin: None
title: ftp GET to non-existent directory
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-01-16T19:01:35
comment:
  Hello,

  i started to use ftp package and i have problems with
  this situation:

  set fd [ftp::Open host user passwd]
  ftp:Get $fd file /non-existent-directory

  After timeout it hangs for a long period of time and
  exists with a lot of messsages:

      Error in bgerror: invalid command name "bgerror"
  bgerror failed to handle background error.
      Original error: can't wait for variable
  "::ftp::ftp2(state.data)":  would wait forever
      Error in bgerror: invalid command name "bgerror"
  bgerror failed to handle background error.
      Original error: can't wait for variable
  "::ftp::ftp2(state.data)":  would wait forever
      Error in bgerror: invalid command name "bgerror"


tkt_uuid: 504350ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: calendar
priority: 3 Low
foundin: None
title: install for calendar code fails
cmimetype: text/plain
submitter: lvirden
assignee: kennykb
closer: andreas_kupries
closedate: 2002-03-07T16:49:15
comment:
  Version: tcllib 2002-01-14 version from cvs (using A.
  Kupries cvs snapshot tar file).

  After doing a configure and then a make and then a make
  install, I get this error:

  Installing documentation for base64
  Installing documentation for calendar
  Can't open
  /vol/tclsrcsol/tcl84/tcllib/modules/calendar/*.n
  /projects/gnu/sparc-sun-solaris2.6/bin/ginstall:
  installing multiple files, but last argument,
  `/usr/tcl84/man/mann/wm.n' is not a directory
  Try `/projects/gnu/sparc-sun-solaris2.6/bin/ginstall
  --help' for more information.


tkt_uuid: 505299ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: BWidget errors with multiple screens
cmimetype: text/plain
submitter: patthoyts
assignee: patthoyts
closer: patthoyts
closedate: 2002-01-28T22:06:45
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: 505465ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: 2 new commands for PanedWindow
cmimetype: text/plain
submitter: norganos
assignee: hobbs
closer: sf-robot
closedate: 2007-11-15T03:20:07
comment:
  What about 2 new commands for the PanedWindow to 
  hide/show a frame?

  Here is what I wrote to do this:

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

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


tkt_uuid: 505468ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: None
priority: 5 Medium
foundin: None
title: missing MainFrame menu accelerator line
cmimetype: text/plain
submitter: norganos
assignee: nobody
closer: hobbs
closedate: 2002-01-22T20:52:44
comment:
  Hi!

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

  Bye
  Stephan


tkt_uuid: 507242ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: crc
priority: 5 Medium
foundin: None
title: test failed
cmimetype: text/plain
submitter: nobody
assignee: patthoyts
closer: patthoyts
closedate: 2002-01-23T21:44:45
comment:
  i got the following errors during \make test from crc:

  Module: crc
  modules/crc/cksum.test

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

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

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

  modules/crc/crc32.test

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

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

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

  modules/crc/sum.test

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

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

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


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

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

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


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

  that fixed it.


tkt_uuid: 507929ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Wont Fix
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Error in TitleFrame using Tk 8.3.0
cmimetype: text/plain
submitter: nobody
assignee: hobbs
closer: hobbs
closedate: 2002-10-14T19:46:37
comment:
  BWidget requires Tk 8.1.1 according to its
  pkgIndex.tcl file.

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

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

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


tkt_uuid: 509776ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: None
priority: 6
foundin: None
title: Locale dependant test failures
cmimetype: text/plain
submitter: kot
assignee: patthoyts
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: 511689ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: mime
priority: 5 Medium
foundin: None
title: man page formatting problem found
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-02-01T17:47:29
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: 511692ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: mime
priority: 5 Medium
foundin: None
title: fix for mime.n mime::getproperty doc
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-02-01T17:45:17
comment:
  there was a formatting problem in the section of the .n
  where mime::getproperty was discussed.  The attached
  patch should fix this problem.


tkt_uuid: 511700ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: Chat window enhancement?
cmimetype: text/plain
submitter: lvirden
assignee: patthoyts
comment:
  It would be wonderful if i could :

  split the chat window

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


tkt_uuid: 513320ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: BWidget PanedWindow problem
cmimetype: text/plain
submitter: decosterjos
assignee: hobbs
closer: hobbs
closedate: 2002-06-04T20:24:06
comment:
  When using the PanedWindow with the '-weights
  available' argument, and panes get added after the
  PanedWindow is realised (got Configure event),  the
  weights are no longer honoured.


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


tkt_uuid: 514476ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: textutil
priority: 5 Medium
foundin: None
title: Add Pool_Base string functions
cmimetype: text/plain
submitter: andreas_kupries
assignee: nobody
closer: andreas_kupries
closedate: 2003-03-28T17:51:27
comment:
  Add the string processing facilities of
  Pool_Base, see

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


tkt_uuid: 514486ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: textutil
priority: 5 Medium
foundin: None
title: request textutil snd-like comparisons
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-01T21:39:08
comment:
  I would like to request procs that implement string
  comparisons of soundex, extended soundex, metaphone,
  double metaphone be added to tcl.

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

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


tkt_uuid: 514494ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: uri
priority: 5 Medium
foundin: None
title: Information about uri schemes
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
comment:
  The following place lists existing uri schemes
  and specifications.

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


tkt_uuid: 516468ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: math
priority: 1 Zero
foundin: None
title: Allow lists as arguments to statistics
cmimetype: text/plain
submitter: mic42
assignee: kennykb
comment:
  The math::min, math::max and others procs in the
  misc.tcl file are a bit complex to use if one has lists
  of values.

  To use you need:
  eval math::max [list 1 2 3 4 5 6 7]

  The extra complexity of eval is not nice. Perhaps lists
  could also be used, or a alternative version
  [math::lmax], or so could be done, to provide the
  functionality for lists instead of single values.


tkt_uuid: 516723ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: doctools
priority: 5 Medium
foundin: None
title: doctools - javadoc like application
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
comment:
  Add library/application which does javadoc like 
  processing of .tcl files and thus auto-generates 
  documentation.


tkt_uuid: 517066ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: EXIF digital image parser
cmimetype: text/plain
submitter: dnew
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-02-18T23:33:47
comment:
  Please incorporate this module into TclLib at your convenience.

  This is a pure-tcl namespace for parsing EXIF data blocks from JPEG images generated by digital 
  cameras, scanners, etc. It provides primarily textual information, rather than returning the raw data 
  in a form convenient for further processing.

  Attached: A zip file with code and documentation.


tkt_uuid: 517595ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: control
priority: 5 Medium
foundin: None
title: test suite bug in control/do.test
cmimetype: text/plain
submitter: lvirden
assignee: rmax
closer: rmax
closedate: 2002-02-21T11:43:44
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: 517599ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
title: Let mpexpand warn against visual tags
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-02-28T07:04:26
comment:
  Change the "mpexpand" application to optionally warn 
  the user when processing strong/emph tags => Reminder 
  to .man writer to use semantic tags, not visual ones.


tkt_uuid: 519189ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Combobox bugs (and patch)
cmimetype: text/plain
submitter: bach
assignee: hobbs
closer: hobbs
closedate: 2002-10-14T20:01:08
comment:
  Hello,

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

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

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

  Regards,
            Bastien


tkt_uuid: 519214ffffffffffffffffffffffffffffffffff
type: Patch
status: Pending
resolution: None
subsystem: bwidget
priority: 5 Medium
severity: Minor
foundin: None
title: bwidget - TitleFrame: patch for rounded corners
cmimetype: text/plain
submitter: bach
assignee: aku
closer: nobody
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: 519594ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: mime
priority: 5 Medium
foundin: None
title: parseaddress can't cope with spaces
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-03-13T16:36:31
comment:
  mime::parseaddress fails on simple, common cases. Specifically, it fails for some fairly typical user 
  input

       somebody@some.org someoneelse@other.com

  When I try to stress it and send mail to 

       foo<>bar@grill.com

  The parse "succeeds" but the send fails.


tkt_uuid: 520269ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
title: .man format files need comments
cmimetype: text/plain
submitter: patthoyts
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-02-28T07:03:51
comment:
  The .man files  we are producing for processing by the
  doctools package currently seem to have so method for
  placing comments in the file. Placing '#' lines results
  in the tcl-style comment appeating in the output.
  Needless to say I want to add an emacs local variable
  block and the usual license header to the file. Plus
  comments are handy for breaking up the file in to sections.

  So: lines beginning with a # are comments to be ignored
  by the formatters??


tkt_uuid: 520279ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: None
priority: 5 Medium
foundin: None
title: New package - dns lookups in Tcl
cmimetype: text/plain
submitter: patthoyts
assignee: patthoyts
closer: patthoyts
closedate: 2002-03-02T01:44:24
comment:
  I have produced a dns package to permit Tcl-only Domain
  Name Service lookups using the usual fileevent
  framework to allow for timeouts and asynchronous
  network transmission. This is modelled on the http package.

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

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

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

  No tests but there is a .man page.


tkt_uuid: 520903ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Duplicate
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ScrolledWindow: 'jumping' wi
cmimetype: text/plain
submitter: bach
assignee: hobbs
closer: hobbs
closedate: 2003-02-25T10:03:07
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: 520907ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Out of Date
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Notebook tab color bug (and patch)
cmimetype: text/plain
submitter: bach
assignee: hobbs
closer: hobbs
closedate: 2002-10-14T20:23:54
comment:
  Motivation:

  Using another color than the standard grey, I saw that
  the Notebokk tabs do not honor the chosen background
  color. The submitted patch goes a step further and adds
  a -tabbackground (similar to -activebackground) option
  to be able to specify another colour if wanted.

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


tkt_uuid: 520940ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : request for new app
priority: 5 Medium
foundin: None
title: New application bundle - tcldevapps
cmimetype: text/plain
submitter: lvirden
assignee: nobody
closer: hobbs
closedate: 2004-09-14T20:08:49
comment:
  I'd like to suggest a new bundle created in tcllib -
  this might be called tcldevapps.  The idea would be
  development tools for the Tcl programmer.

  The first application I would like to see in that suite
  would be tkinspect.  Another might be one of the
  debugging tools.  There are likely other applications
  that are of use to the developer that would fall into
  this category.


tkt_uuid: 521386ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Dialog freezing on Windows (and patch)
cmimetype: text/plain
submitter: bach
assignee: hobbs
closer: hobbs
closedate: 2002-06-04T20:56:58
comment:
  The Dialog::draw routines freezes on Windows when the
  toplevel of the window is in state withdrawn, due to a
  tkwait visibility waiting forever.

  The supplied patch just skips over the visibility part
  if this is the case.

  Effects to existing code:
  Unknown, but improbable.


tkt_uuid: 521590ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: textutil
priority: 5 Medium
foundin: None
title: tabify2/untabify2 fails on empty string
cmimetype: text/plain
submitter: jenglish
assignee: andreas_kupries
closer: jenglish
closedate: 2002-02-26T23:36:20
comment:
  textutil::untabify2 and textutil::tabify2 both fail on
  the empty string, due to an uninitialized variable.  

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

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


tkt_uuid: 522529ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
title: possible log file parsing bug
cmimetype: text/plain
submitter: lvirden
assignee: hartweg
closer: hartweg
closedate: 2002-04-19T16:03:15
comment:
  I have been seeing, during the past week or two, the
  following phenom:

  dkfI don't run the Tk test suite very often as it is
  much touchier than the Tcl test suite. In particular,
  some features (like focus handling and restacking
  timings) seem to be highly dependent on your window
  manager, and I also have problems because my Sun
  workstation has a lot more fonts than normal (I suspect
  that it is configured with extra font servers, but
  can't be bothered to check.)Sat Feb 23 14:33:54 2002
  217.118.43.2 [NEW USER] Bman  
  dan_kuchler.Sat Feb 23 19:46:49 2002 12.234.155.3 [NEW
  USER] ericm  
  dan_kuchlerhi there dude 


tkt_uuid: 523036ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 5 Medium
foundin: None
title: 'make install' errors
cmimetype: text/plain
submitter: dgp
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-03-07T16:48:07
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: 523109ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: textutil
priority: 5 Medium
foundin: None
title: expand handling of plain text
cmimetype: text/plain
submitter: andreas_kupries
assignee: jenglish
closer: jenglish
closedate: 2002-05-02T16:48:50
comment:
  When using macro arguments the processor does not run 
  the constant parts of such arguments through the 
  handler for plain text. It should.

  Example:

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

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

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

  This issue came up with in doctools.

  Joe, anything else to say, or different ?


tkt_uuid: 524353ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: BWidget SelectFont quick font list
cmimetype: text/plain
submitter: pkienzle
assignee: hobbs
closer: hobbs
closedate: 2002-06-04T20:40:12
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: 524712ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: md5
priority: 5 Medium
foundin: None
title: md5::md5 fails with Trf2.1p2 (tcllib1.2)
cmimetype: text/plain
submitter: goosen
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-03-02T22:48:25
comment:
  In tclsh (8.3):

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

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

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

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

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

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

  I'm willing to fix this bug.


tkt_uuid: 526094ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: Unix console command
cmimetype: text/plain
submitter: lvirden
assignee: hobbs
comment:
  It would be useful to have hooked into Tk the ability
  to invoke something like
  http://purl.org/tcl/wiki/ConsoleForUnix so that code
  could work cross-platform better.  If this can't go
  into Tk, it would be lovely to go into some package
  that is also going to be common.


tkt_uuid: 526404ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: tclbench
priority: 5 Medium
foundin: None
title: new [catch] benchmark: complex bodies
cmimetype: text/plain
submitter: msofer
assignee: msofer
closer: msofer
closedate: 2002-03-26T20:21:14
comment:
  On finding an error, [catch] scans all exceptionRanges
  of the bytecode. I am planning to patch
  GetExceptRangeForPc (in generic/tclExecute.c) with a
  faster algorithm (see Tcl-patch  #453709).

  I enclose here a patch which is necessary to illustrate
  the improvement, as it is only important when [catch]
  is part of a complex proc body, with many ranges and
  many nesting levels.

  Any comments before I commit?


tkt_uuid: 526499ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: comm
priority: 5 Medium
foundin: None
title: Async errors silently discarded
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-03-06T19:16:12
comment:
  In the current implementation of "comm" errors 
  happening in the receiver of a command are silently 
  discarded if the caller performed an -async invocation.

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

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


tkt_uuid: 526833ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: doctools
priority: 5 Medium
foundin: None
title: Missing commands example_begin/_end
cmimetype: text/plain
submitter: arjenmarkus
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-07-03T22:32:26
comment:
  In the current official release the commands
  "example_begin" and "example_end" are missing from the
  doctools module. These commands are available in the
  development branch, but as they provide the best means
  for showing code, they should be available in the
  release version.


tkt_uuid: 526835ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 8
foundin: None
title: install.bat not quite satisfactory
cmimetype: text/plain
submitter: arjenmarkus
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-21T18:31:11
comment:
  install.bat to install tcllib on Windows platforms may
  fail for two reasons:
  - The TCLINSTALL variable is set to the wrong directory
  - the user is 
     supposed to set this variable him/herself by editing
  the batch file prior
     to installation.
  - The TCLINSTALL variable may be not be set correctly
  due to problems
     with the environment space. This means that the
  files will be copied into
     an arbitrary directory \lib\tcllib1.2, rather than
  under the proper subdirectory 
     of the installation.

  A solution might be: use %1 instead of %TCLINSTALL.
  Checking that this
  first argument is not empty is easy and gives the batch
  file the opportunity to notify the user:

      if /%1 == / goto :message
      rem Install the stuff
      ...

      goto :end

      :message 
      echo Usage: install <tcl-directory>
      pause 
      :end
   


tkt_uuid: 527025ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: doctools
priority: 5 Medium
foundin: None
title: Some formatting commands not described
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-04-23T23:37:06
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: 527029ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
title: Online help for mpexpand
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-03-26T07:40:59
comment:
  Add option -help which when used causes
  mpexpand to dump a short help on its use
  (options, arguments) to stdout.

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


tkt_uuid: 527114ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: Import pop3 demon in Pool
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-03-19T22:57:27
comment:
  Import the pop3 demon in package
  Pool_Net into tcllib, possibly
  modified. This will make testing
  the pop3 client possible. And it
  completes the pop3 implementation.


tkt_uuid: 527710ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: doctools
priority: 5 Medium
foundin: None
title: backslashes aren't always handled well
cmimetype: text/plain
submitter: boakley
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-04-23T23:17:38
comment:
  In my man page I have something like this:

  [example {
     example 1:
     foo bar \
        baz

     example 1:
     foo bar \\
        baz
  }]

  When I convert that to html, example1 has baz on the 
  same line as "foo bar", and example2 shows the double 
  backslashes. That seems inconsistent, and makes it 
  impossible to get a single backslash.

  When I convert to nroff and run it through man, the 
  first example has baz on the same line as "foo bar", 
  and the second has a single backslash, pretty much as 
  I would expect.

  So, there's a bug there somewhere. My guess is, the 
  html converter is broken.


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

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

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

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

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

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


tkt_uuid: 528287ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: smtp
priority: 5 Medium
foundin: None
title: Explodes for 'From: <>'
cmimetype: text/plain
submitter: nobody
assignee: mrose
closer: andreas_kupries
closedate: 2002-03-18T19:25:32
comment:
  I have some code to replicate a pop3 box by downloading
  it
  and resending it to N other popboxen via SMTP.

  Care is taken to pass the message thru "as is",
  from headers to MIME body.

  Running it against a real-world pop that had 14Mb of
  email,
  it blew up on the RFC valid "bounce" syntax of 'From:
  <>'.

  ----

  -header {Date {Wed, 20 Feb 2002 20:34:04 -0400 (EDT)}} 
  \
  -header {From <>}  \
  -header {Subject {Home Based Employment - No Selling}} 
  \
  -header {Bcc {}}  \
  -header {Message-id <805913@635096>}  \
   '.
  error in From: expecting mailbox in local-part (found
  >)
      while executing
  "error "error in $who: $aprops(error)""
      (procedure "smtp::sendmessage" line 144)
      invoked from within
  "smtp::sendmessage $part -servers vpop1.superb.net  
  -recipients
  [redacted]@orwellian.org,[redacted]@orwellian.org
  -header {Return-path <>}  \
  -header {..."
      ("eval" body line 1)
      invoked from within
  "eval $Build_SMTP"
      (procedure "Main" line 57)
      invoked from within
  "Main
  "
      (file "./Multiplier.tcl" line 130)
  Exit 1


tkt_uuid: 528298ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: pop3
priority: 8
foundin: None
title: Pop3 eof (".\r") failure: self destruct
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-03T02:07:00
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: 528390ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: doctools
priority: 5 Medium
foundin: None
title: example_begin/_end unsatisfactory
cmimetype: text/plain
submitter: arjenmarkus
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-03-13T22:39:15
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: 528392ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: doctools
priority: 5 Medium
foundin: None
title: Missing commands in nroff format
cmimetype: text/plain
submitter: arjenmarkus
assignee: andreas_kupries
closer: arjenmarkus
closedate: 2002-03-15T07:22:28
comment:
  The nroff format does not implement the commands [lb]
  and [rb]. These are necessary for entering code
  examples in the man pages.


tkt_uuid: 528433ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: math
priority: 5 Medium
foundin: None
title: Update for "calculus" module
cmimetype: text/plain
submitter: arjenmarkus
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-03-14T19:35:02
comment:
  Sorry, I am not quite sure how to upload new versions
  of the source code, so I use the bug tracking system
  for this.

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


tkt_uuid: 528929ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Dynamic balloonhelp bug (and patch)
cmimetype: text/plain
submitter: bach
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-05-09T21:01:51
comment:
  In some rare cases (race condition depending on
  balloonhelp configuration and user mousemovements), the
  procedure for destroying a balloonhelp interferes with
  the procedure still building the display, causing
  errors like:

  bad window path name ".help_shell"
      (procedure "DynamicHelp::_show_help" line 22)
      invoked from within
  "DynamicHelp::_show_help .bla.topf.tb0.bbox4.b1 329
  198"
      ("after" script)

  Hard to reproduce with a script, sorry.

  A quick resolution to this is to check if the targeted
  help window still exists in the ::_show_help procedure
  (see attached diff file, it's a twoline patch).


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

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


tkt_uuid: 530059ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
title: Stricter check of incoming manpages
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-03-26T07:42:02
comment:
  The application of a format to a manpage should 
  perform stricter checks to ensure that the manpage
  is correct, i.e. conforming to the specification 
  in "format.man".

  This is a followup to the bug report

  "[528392] Missing commands in nroff format"

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


tkt_uuid: 530207ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct :: matrix
priority: 5 Medium
foundin: None
title: No documentation for printmatrix method
cmimetype: text/plain
submitter: arjenmarkus
assignee: andreas_kupries
closer: arjenmarkus
closedate: 2002-03-18T07:28:25
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: 530907ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: exif
priority: 5 Medium
foundin: None
title: exif 1.0 bug patch
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-08-16T21:38:46
comment:
  I found some bugs into exif 1.0.
  Maybe these are original bugs.
  I've improved on FlashPixVersion, ShutterSpeedValue,
  SubjectDistance, Flash and FlashMode.
  Here is a patch I've made.


tkt_uuid: 531231ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: smtp
priority: 2
foundin: None
title: Error not caught: sendmessage, bad args
cmimetype: text/plain
submitter: nobody
assignee: mrose
closer: mrose
closedate: 2002-08-06T00:37:10
comment:
  George@Orwellian.Org writes:

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

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

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

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

  Here is where the error occurred in proc sendmessage:

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

  Here is my runtime diagnostic: 

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

  ----

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

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

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

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

  Same error.

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

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

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

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


tkt_uuid: 531531ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: smtpd
priority: 5 Medium
foundin: None
title: Redo backend, use mime token
cmimetype: text/plain
submitter: andreas_kupries
assignee: patthoyts
closer: patthoyts
closedate: 2002-10-08T14:30:40
comment:
  This feature request comes from a chat discussion Dan, 
  Larry, and I had with Gerald W. Lester solving a 
  problem he had with a small smtpd proxy and the smtp 
  module itself.

  smtpd delivers the message as list of lines. smtp 
  expects the message as mime token, which is 
  initialized with a string!

  We believe it would be better if smtpd would deliver
  the incoming message directly as a mime token.

  We actually believe that all front-ends (for example 
  the upcoming pop3 server) should use mime tokens to 
  transfer mail data to and from their backends.


tkt_uuid: 531541ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: mime
priority: 5 Medium
foundin: None
title: Partial message construction
cmimetype: text/plain
submitter: andreas_kupries
assignee: mrose
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: 531799ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ftpd
priority: 6
foundin: None
title: checks for wrong tcl version
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-03-19T23:09:18
comment:
  ftpd did not run on tcl8.2.2 for win32.
  Reason: The use of "lsort -unique" which is new in 
  tcl8.3.

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

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

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

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


tkt_uuid: 532246ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: NoteBook tabs text not entirely visible
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-04-25T18:11:37
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: 532677ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: new tkchat smiley proposed
cmimetype: text/plain
submitter: lvirden
assignee: hartweg
closer: patthoyts
closedate: 2003-05-02T08:49:09
comment:
  I would like to submit this diff for adding the blush
  smiley.  The image is from the tik tcl/tk aol IM
  browser, but is similar to the h2h one, etc.

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


tkt_uuid: 532774ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: ncgi
priority: 5 Medium
foundin: None
title: ncgi::nvlist very slow for large queries
cmimetype: text/plain
submitter: davidjgrossman
assignee: gwlester
closer: mic42
closedate: 2006-07-02T20:48:30
comment:
  Obtaining the results of form submissions where a 
  field contains a large amount of data ( >5-10kb ) 
  causes the CPU to max out for long periods of time 
  (several minutes for 40kb on a reasonably fast PC).

  The problem is caused by the regular expression:

  regexp -- (.*)=(.*) $x dummy varname val

  which doesn't seem to handle really large strings well.

  My fix was to use the following:

  set pos [string first "=" $x]
  set len [string length $x]

  if { $pos>=0 } {
      if { $pos == 0 } { # if the = is at the 
  beginning ...
          if { $len>1 } { # ... and there is something 
  to the right ...
              set varname anonymous
              set val [string range $x 1 [expr $len-1]]
          } else { # ... otherwise, all we have is an =
              set varname anonymous
              set val ""
          }
      } elseif { $pos==[expr $len-1] } { # if the = is 
  at the end ...
          set varname [string range $x 0 [expr $pos-1]]
          set val ""
      } else {
          set varname [string range $x 0 [expr $pos-1]]
          set val [string range $x [expr $pos+1] [expr 
  $len-1]]
      }
  } else { # no = was found ...
      set varname anonymous
      set val $x
  }

  in place of:

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

  in ncgi::nvlist in tcllib/ncgi. I know that the 
  problem exists in tcllib version 1.1 and 1.2.


tkt_uuid: 532783ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct :: matrix
priority: 6
foundin: None
title: Linked matrix not propagating changes
cmimetype: text/plain
submitter: kenj
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-03-25T18:55:11
comment:
  The documentation for the ::struct::matrix operation implies 
  that after linking, changes to the matrix object will be propagated 
  to the linked array variable. However, it isn't happening. Here's a 
  simple test case run interactively:

  % package require 
  struct
  1.2
  % ::struct::matrix test
  test
  % test add columns 
  4
  % test add row {1 2 3}
  % test link arr
  % array get arr
  0,0 1 1,0 2 
  2,0 3 3,0 {}
  % test add row {a b c d}
  % array get arr
  0,0 1 1,0 2 2,0 3 
  3,0 {}

  Line 1245 of the source looks suspiciously like it has a 
  typo of the variable name "data":

  trace variable date  w  [list 
  ::struct::matrix::MatTraceOut $variable $name]

  However, 
  changing "date" to "data" in this line didn't work:

  % package 
  require struct
  1.2
  % ::struct::matrix test
  test
  % test add 
  columns 4
  % test add row {1 2 3}
  % test link arr
  % array get 
  arr
  0,0 1 1,0 2 2,0 3 3,0 {}
  % test add row {a b c d}
  can't set 
  "data(0,1)": can't set "array(0,1)": bad row index 1, row does not 
  exist


tkt_uuid: 532791ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct :: matrix
priority: 5 Medium
foundin: None
title: Error unsetting element in linked matrix
cmimetype: text/plain
submitter: kenj
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-04-01T19:55:10
comment:
  Linked matrix objects don't correctly handle individual array 
  elements being unset. Here's a simple test case run 
  interactively:

  % package require struct
  1.2
  % 
  ::struct::matrix test
  test
  % test add columns 3
  % test add row 
  {1 2 3}
  % test add row {a b c}
  % test link arr
  % array get arr
  0,0 1 
  1,0 2 0,1 a 2,0 3 1,1 b 2,1 c
  % unset arr(0,0)
  % array get arr
  1,0 2 
  0,1 a 2,0 3 1,1 b 2,1 c
  % test get rect 0 0 end end
  {1 2 3} {a b 
  c}

  This bug also renders matrix objects unusable with a TkTable 
  widget (by linking to the same global array variable), as TkTable 
  makes extensive use of unsetting individual elements of a linked 
  array variable in its row and column manipulations.


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

  Regards
  Simon Scott


tkt_uuid: 533788ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: bwidget
priority: 5 Medium
foundin: None
title: bwidget include synonym problem?
cmimetype: text/plain
submitter: nobody
assignee: hobbs
closer: hobbs
closedate: 2002-06-04T21:05:57
comment:
  I've been trying to read (and understand :-) the
  BWidget's code so I can write my own BWidgets. 

  In proc BWidget::bwidgetinclude the following code is
  present:

      foreach {option optdesc} [array get subclassopt] {
          set subOption $option
          if { (![info exists include] || [info exists
  include($option)]) &&
          ![info exists remove($option)] } {
              set type [lindex $optdesc 0]
              if { ![string compare $type "Synonym"] } {
   <<<< BUG?
                  # option is a synonym
                  ...

  Shouldn't the ! be removed on the string compare. It
  seems like if the option is a synonym the following
  code should be executed.


tkt_uuid: 534334ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: doctools
priority: 8
foundin: None
title: add tk-specific man page macro: tkoption
cmimetype: text/plain
submitter: boakley
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-05-10T07:00:36
comment:
  standard tk widget man pages have a section 
  named "Widget Specific Options" that has a format that 
  is tedious to code with the existing mpexpand formats. 
  Options are typically described like this:

  -----------------------
  Command-Line Name: -value
  Database Name: value
  Database Class: Value


  Specifies the value for the foo widget.
  -----------------------

  To mark this up with the existing man page markup one 
  needs to create a definitions list for the list of 
  option names, which is tedious. I suppose there are 
  other ways, too. 

  I propose a special keyword just for this construct. 
  I've written one for the html renderer as a prototype. 
  It is used like this:

  ------------------------
  [tkoption -value value Value "Specifies the value for 
  the foo widget."]
  ------------------------

  It takes four arguments: the command line name, the 
  database name, the database class, and a description. 
  The description could be left off of the API, since 
  normal paragraphs would work, too. In my prototype 
  implementation, if the db name or class is null, those 
  parts don't appear in the output. This, for 
  megawidgets that may not have option database support.

  I've attached my hacked version of fmt.html with the 
  proposed macro. To make it work, one also needs to add 
  the macro to a foreach command in mpexpand where it 
  makes interp aliases for each of the macros. I don't 
  know if this is the best implementation, but it's a 
  starting point...


tkt_uuid: 534349ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Rejected
subsystem: doctools
priority: 6
foundin: None
title: add a "macro" macro to doctools...
cmimetype: text/plain
submitter: boakley
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-04-01T19:06:55
comment:
  When prototyping new macros, it's a pain to have to 
  hand-edit the foreach loop in mpexpand that makes safe 
  interpreter aliases for the macros. It would also be 
  nice to be able to create ad hoc macros within a man 
  page.

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

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

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

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

  And then to use it in a document:

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

  ... and so on.

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

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

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

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


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


tkt_uuid: 535216ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: math
priority: 8
foundin: None
title: Update for ::math::fuzzy package
cmimetype: text/plain
submitter: arjenmarkus
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-14T06:29:29
comment:
  I have updated the files for the fuzzy package:
  - Manual pages now available in proper nroff and html
  format
  - Test-set extended
  - Full set of procs as envisioned for the package


tkt_uuid: 535382ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: doctools
priority: 7 High
foundin: None
title: definition list problems
cmimetype: text/plain
submitter: boakley
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-04-01T19:01:07
comment:
  mpexpand needs to support two types of definition 
  lists: one with vertical whitspace between elements, 
  and one without.

  The reason? To support to types of markup common to 
  most tk man pages. 

  The need for no vertical whitespace: every tk option 
  is documented with three individual lines that look 
  like this:

     Command-Line option: foo
     Database Name: foo
     Database Class: Foo

  This format has proven to work well over the years, 
  though its possible we could put all the information 
  on a single line. It's also possible to use a 
  preformatted section to mark this up, but I don't 
  think that would quite look right, since it would 
  likely have the same colorization and fonts as code 
  samples.

  One could also use a bulleted list, but bullets don't 
  really make sense here. What we need is a bulleted 
  list without the bullets (but also without descriptive 
  paragraphs). 

  The need for whitespace: methods are typically 
  described with the following format:

     bbox
        returns a list blah blah

     cget
        returns blah blah blah

     configure
        query or modify blah blah blah

  This type of presentation is tedious to read if there 
  is no vertical whitespace between the different 
  methods. The present (as of March 26, 2002) nroff 
  formatter puts in this whitespace, but the html 
  formatter does not.

  I don't know what the best solution is, but I believe 
  both types of definition lists ought to be supported. 
  This could be done with "hints" to the formatter (eg: 
  [list_begin definition -compact]), or as separate 
  types of lists (eg: [list_begin compact], or with a 
  smart algorithm that guesses whether vertical 
  whitespace should be used or not.

  Ultimately, however, I think doctools needs to provide 
  some standard mechanism for creating both types of 
  markup, and all of the formatters should attempt to 
  generate an equal amount of vertical whtiespace.
    


tkt_uuid: 538922ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: mime
priority: 5 Medium
foundin: None
title: Enhance parseaddress to cope with spaces
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
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: 539952ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: mime
priority: 3 Low
foundin: None
title: odd mime/smtp/Trf interaction
cmimetype: text/plain
submitter: mrose
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-05-09T05:02:39
comment:
  in using Tcl 8.3.2nb2 and Trf2.1 with the current 
  tcllib, two odd things happen.

  first, trf sends a create/read and a delete/read on 
  the outgoing smtp channel, which smtp.tcl isn't 
  expecting.

  second, one of the my applications generates a CTE of 
  8bit, which the mime serializer complains about.

  patches attached.

  /mtr


tkt_uuid: 540313ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: cmdline
priority: 5 Medium
foundin: None
title: Add [getKnownOpt{ions}]
cmimetype: text/plain
submitter: dgp
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-04-25T23:31:19
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: 544453ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: base64
priority: 5 Medium
foundin: None
title: uuencode::uudecode and Trf 2.1p1
cmimetype: text/plain
submitter: nobody
assignee: patthoyts
closer: patthoyts
closedate: 2002-04-16T23:34:09
comment:
  I have written a script that connects to an nntp 
  server and downloads a
  message body into a string which in turn  gets all 
  uuencoded attachments
  processed and written to a directory as files.

  First method I tried was opening a pipe to a uudecode 
  program that I found.

  This was fast and worked fine until people started 
  posting yenc encoded
  attachments to the newsgroup. The uudecode program 
  would crash when it
  encountered one of these.

  Second method I tried was the uuencode package that is 
  part of tcllib that
  comes with Active Tcl 8.3.4.2.

  This was a little slower and stack dumps on messages 
  that the former method
  was able to process correctly. I really liked that it 
  returned a list of
  lists that contained the filename mode and data.

  Third method I tried was to get the Trf package which 
  is used if available
  by the uuencode package.

  I can't get this method to work please help.

  My platform is Windows 2000.

  Below are two stack dumps
  The first one is with the Trf directory removed from 
  the lib directory.
  Notice that the first message body is correctly 
  processed.

  The second dump is with Trf installed
  notice that the first message body is not processed 
  and that the errors are
  different

  Note I am only doing "package require uudecode" I let 
  the uudecode package
  find the Trf package

  My function is included at the bottom it takes a 
  string (message body) as an
  argument
  -------------------------------------------------------
  -------
  downloaded message 30543
  decoded !krisp2_002.jpg

  downloaded message 30544
  invalid uuencoded string: length must be a multiple of 
  4
      while executing
  "decode [string range $line 1 end"
      ("true" arm line 7)
      invoked from within
  "switch -exact -- $state {
              false {
                  if {[regexp {^begin ([0-7]+) ([^\s]*)} 
  $line  -> opts(mode)
  opts
  (name)]} {
               ..."
      (procedure "uuencode::uudecode" line 36)
      invoked from within
  "uuencode::uudecode $message"
      (procedure "decode" line 3)
      invoked from within
  "decode [ join $Vmessage  \n ]"
      (procedure "getmessages" line 24)
      invoked from within
  "getmessages"
      (file "picker.tcl" line 59)
  -------------------------------------------------------
  -------
  downloaded message 30543
  ::uuencode: wrong # args, all options require an 
  argument
      while executing
  "::uuencode -mode decode $s"
      (procedure "decode" line 2)
      invoked from within
  "decode [string range $line 1 end"
      ("true" arm line 7)
      invoked from within
  "switch -exact -- $state {
              false {
                  if {[regexp {^begin ([0-7]+) ([^\s]*)} 
  $line  -> opts(mode)
  opts
  (name)]} {
               ..."
      (procedure "uuencode::uudecode" line 36)
      invoked from within
  "uuencode::uudecode $message"
      (procedure "decode" line 3)
      invoked from within
  "decode [ join $Vmessage  \n ]"
      (procedure "getmessages" line 24)
      invoked from within
  "getmessages"
      (file "picker.tcl" line 59)
  -------------------------------------------------------
  -

  proc decode { message } {

      set name_mode_data [uuencode::uudecode $message]

      foreach { element } $name_mode_data {

          set name [ lindex $element 0 ]

          set Vfile [ open $name w ]

          fconfigure $Vfile -translation binary

          puts -nonewline $Vfile [ lindex $element 2 ]

          close $Vfile

          puts "decoded $name\n"

          flush stdout

          }

  }


tkt_uuid: 545368ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: uri
priority: 8
foundin: None
title: uri default scheme
cmimetype: text/plain
submitter: markgsaye
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-14T20:34:49
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: 546423ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Out of Date
subsystem: Documentation
priority: 5 Medium
foundin: None
title: tcllib manpage
cmimetype: text/plain
submitter: mgbacke
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-11T22:45:27
comment:
  tcllib should have its own manpage. I would have added
  it myself via cvs but wasn't sure where it should go,
  so I'll leave it to whomever is most in tune with the
  doc's.


tkt_uuid: 547245ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 8
foundin: None
title: Tree widget -selectcommand
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-08-23T20:04:06
comment:
  This option is not documented.

  Usage of this option (see method selection) is 
  incomplete. IOW, we currently cannot use it to track 
  all changes to the selection.

  A patch will be supplied ...


tkt_uuid: 547274ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ncgi
priority: 5 Medium
foundin: None
title: ncgi:nvlist bug
cmimetype: text/plain
submitter: nobody
assignee: gwlester
closer: mic42
closedate: 2006-07-02T20:25:07
comment:
  When I have POST header as of 
  application/x-url-form-encoded;encoding=ISO-8859-1
  I got the following error message:


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

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

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


tkt_uuid: 547331ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: stooop
priority: 7 High
foundin: None
title: stooop redefines [::proc] !
cmimetype: text/plain
submitter: dgp
assignee: dgp
comment:
  It looks to me like the package stooop is
  redefining the commands [::proc]!  Yuck!

  It seems like a better idea to me for stooop
  to define and export [::stooop::proc].  Then
  if I want to import it and make use of it as
  a replacement for [proc] in my namespace, or
  for a replacement for [::proc] more globally,
  I have that choice.  Currently the stooop
  package makes the choice for you.


tkt_uuid: 547336ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: smtp
priority: 5 Medium
foundin: None
title: [package require Trf] twice
cmimetype: text/plain
submitter: dgp
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-04-23T20:31:46
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: 548221ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: ftp
priority: 5 Medium
foundin: None
title: hpupdate.tcl ftp demo typos
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-04-25T23:27:16
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: 548224ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ftp
priority: 5 Medium
foundin: None
title: hpupdate status incorrectly displays
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-04-25T23:27:51
comment:
  The idea in this demo is that one will, on a
  regular basis, update a series of files and then upload
  them via ftp to an http server.

  It depends on a proc called Touch to update a file's
  update date , which then it uses to determine which
  files were changed since that date.

  On my SPARC Solaris 8, using Tcl/Tk 8.4, the Touch
  proc does NOT update the file.  This results in the
  demo program not functioning properly.

  The strange thing is that I don't see a reason for it
  to fail.  And in fact, no errors occur - but the file's
  date never changes.

  I will continue searching for a solution.


tkt_uuid: 548233ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: ftp
priority: 5 Medium
foundin: None
title: more hpupdate bug reports
cmimetype: text/plain
submitter: lvirden
assignee: gwlester
comment:
  When I start hpupdate 2.0, it displays the local set of
  files, with highliting to show which ones have changed
  since the last upload.

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

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

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


tkt_uuid: 548354ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: base64
priority: 5 Medium
foundin: None
title: yenc testsuite trouble
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-05-28T05:23:54
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: 548540ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: ftp
priority: 5 Medium
foundin: None
title: ftp::Put success on control timeout
cmimetype: text/plain
submitter: drcampbell
assignee: gwlester
comment:
  On numerous Tcl versions (up to 8.3) and ftp
  library versions (1.2, 2.2, 2.3) we have
  experienced false successes for ftp::Put.
  Recently, we have noticed that these occur when
  ftp::Put encounters the error:
  "Timeout of control connection"

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

  E.g.

  ftp::Put A is OK

  ftp::Put B times out

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

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

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

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

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


tkt_uuid: 548832ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: mime
priority: 5 Medium
foundin: None
title: Tcl version of mime::qp_encode broken
cmimetype: text/plain
submitter: cleverly
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-06-24T21:41:00
comment:
  The mime package has a preference for Trf's
  quoted-printable command, but falls back to a pure Tcl
  implementation when Trf is not present.

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

  A (rather simple) patch is attached.


tkt_uuid: 551127ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
title: csvdiff demo app option for line number
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-05-10T05:51:41
comment:
  I would like to request an option for csvdiff that
  results in the output having a line number associated
  with the output.  Just like diff defaults to telling me
  where the old or new line is located in the file, it
  would be useful for csvdiff to do likewise.  Otherwise,
  one can have a series of lines of output that are
  similar or identical within a file and not be able to
  locate where the difference lies.


tkt_uuid: 551133ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: csv
priority: 5 Medium
foundin: None
title: csvdiff duplicate key bug
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-05-10T05:52:19
comment:
  csvdiff expects that there are no 'keys' within either
  the first or second input files.  This results in
  erroneous differences reported currently.

  the --help option doesn't mention this limitation and
  there is no man page to mention this limitation, so I
  will file this behavior as a bug.

  I know I'd prefer to have duplicates retained and
  diffed...


tkt_uuid: 552968ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: struct :: graph
priority: 5 Medium
foundin: None
title: Feature Req: new introspection methods
cmimetype: text/plain
submitter: cleverly
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-05-09T05:06:43
comment:
  I've made modifications to the struct::graph module
  that I've found useful in my own scripts.  

  These modifications add several new submethods. 
  Introspection: keys (returns a list of keys), keyexists
  (returns 1 or 0 depending on whether a given key
  exists), and getall (returns a serialized list suitable
  for using with [array set]); and an append and lappend
  (to avoid doing a 'get/[l]append/set' manually).

  A patch for the graph.tcl, .test, and .n files is
  attached.


tkt_uuid: 552972ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: tree
priority: 5 Medium
foundin: None
title: Feature Req: addtl introspection methods
cmimetype: text/plain
submitter: cleverly
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-05-09T05:48:56
comment:
  I've made modifications to the struct::graph module
  that I've found useful in my own scripts.
   
  These modifications add several new submethods. 
  Introspection: keys (returns a list of keys), keyexists
  (returns 1 or 0 depending on whether a given key
  exists), and getall (returns a serialized list suitable
  for using with [array set]); and an append and lappend
  (to avoid doing a 'get/[l]append/set' manually).
   
  Patches for the tree.tcl, tree.test, and tree.n files
  are attached.  


tkt_uuid: 553732ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Wont Fix
subsystem: base64
priority: 5 Medium
foundin: None
title: uuencode.test warnings
cmimetype: text/plain
submitter: dgp
assignee: patthoyts
closer: patthoyts
closedate: 2002-09-09T07:59:40
comment:
  On my 64-bit Linux/Alpha machine, I see the following
  message from both uuencode-2.1 and uuencode-2.2:

  noticeinvalid uuencoded string: padding string to a
  multiple of 4.


tkt_uuid: 553773ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: math :: calculus
priority: 5 Medium
foundin: None
title: calculus: define and doc scope of funcs
cmimetype: text/plain
submitter: dgp
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-06-03T20:02:00
comment:
  The commands math::calculus::* take "func" arguments,
  Tcl commands that accept and return numeric values.

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

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

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

  Whatever choice is made, it should be documented.


tkt_uuid: 553784ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: mime
priority: 5 Medium
foundin: None
title: word_decode: test failures
cmimetype: text/plain
submitter: dgp
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-05-09T05:59:43
comment:
  Tests mime-5.3,4,5,6,7 all fail because [word_decode]
  does not recognize the charset ISO-8859-1.  Here's
  a patch to fix that.


tkt_uuid: 553835ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: stooop
priority: 5 Medium
foundin: None
title: Use [uplevel 1].
cmimetype: text/plain
submitter: dgp
assignee: jfontain
closer: dgp
closedate: 2002-05-20T21:32:30
comment:
  The [uplevel] command is used a great deal throughout
  stooop, but in all examples I saw, the optional "level"
  argument is omitted.

  It will improve performance if an explicit [uplevel 1]
  is used, rather than depending on the default.

  When the level argument is omitted, [uplevel] spends
  time trying to convert its first argument to an
  integer -- wasted time.


tkt_uuid: 553848ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: stooop
priority: 5 Medium
foundin: None
title: reliance on [namespace] bug.
cmimetype: text/plain
submitter: dgp
assignee: jfontain
closer: dgp
closedate: 2002-05-20T21:30:30
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: 553980ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: struct
priority: 8
foundin: None
title: skiplist struct
cmimetype: text/plain
submitter: ericm
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-15T22:03:27
comment:
  Code for a skiplist implementation, from Keith Vetter:

  "I'd like to submit a module for tcllib to be part of
  the ::struct group. The module implements skip lists
  which a data structure similar to balanced trees but
  which are faster and simpler."


tkt_uuid: 554062ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: stooop
priority: 5 Medium
foundin: None
title: tcllib test suite failures for stoop
cmimetype: text/plain
submitter: lvirden
assignee: jfontain
closer: jfontain
closedate: 2003-02-17T11:36:03
comment:
  With the latest Tcl cvs head (well, as of at least the
  past day or two), the tcllib test suite has begun
  showing 8 failures.  I don't know whether this is a
  fundamental change in tcltest, tcl, or tcllib, or the
  tcllib test suite.

  Platform SPARC Solaris 2.6, Sun C compiler, Tcl 8.4a5
  from May 8:

  $ make test
  /usr/tcl84/bin/tclsh8.4 `echo
  /vol/tclsrcsol/tcl84/tcllib/all.tcl` -modules "base64
  calendar cmdline comm control crc csv counter doctools
  dns exif struct fileutil ftp ftpd javascript html irc
  math md5 mime ncgi nntp pop3 pop3d profiler smtpd
  textutil uri log htmlparse report sha1 stooop"
  tcllib tests
  Tests running in working dir: 
  /vol/tclsrcsol/tcl84/tcllib
  Only sourcing test files that match:  *.test
  Tests began at Thu May 09 06:56:21 EDT 2002
  Module: base64
  modules/base64/base64.test
  base64 2.2 (pure Tcl)
  modules/base64/uuencode.test
  notice    invalid uuencoded string: padding string to a
  multiple of 4.
  notice    invalid uuencoded string: padding string to a
  multiple of 4.
  modules/base64/yencode.test

  ==== yencode-1.0 yencode yEnc test file FAILED
  ==== Contents of test case:

      set enc [yencode::yencode -file $datafile]
      set dec [yencode::ydecode $d]
      set chk [yencode::loaddata $datafile]
      string match $dec $chk

  ---- Result was:
  couldn't open "yencode.test.data": no such file or
  directory
  ---- Result should have been (exact matching):
  0
  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ==== yencode-1.0 FAILED


  Module: calendar
  modules/calendar/gregorian.test

  Module: cmdline
  modules/cmdline/cmdline.test
  modules/cmdline/typedCmdline.test

  Module: comm
  modules/comm/comm.test
  comm 4.0
  self @ 55116
  Waiting for spawned comm system to boot
  Slave @ 55117
  Running tests

  Module: control
  modules/control/do.test
  modules/control/no-op.test

  Module: crc
  modules/crc/cksum.test
  modules/crc/crc32.test
  modules/crc/sum.test

  Module: csv
  modules/csv/csv.test
  csv 0.3
  - struct 1.2.1

  Module: counter
  modules/counter/counter.test
  incr scaler 12 microseconds per iteration
  incr array 16 microseconds per iteration
  rawcount 32 microseconds per iteration
  simple 72 microseconds per iteration
  lastn 153 microseconds per iteration
  lastn 154 microseconds per iteration
  hist 186 microseconds per iteration
  hist2x 282 microseconds per iteration
  Pausing during timehist tests
  timehist 259 microseconds per iteration

  Module: doctools
  Error:  No test files remain after applying your match
  and skip patterns!

  Module: dns
  Error:  No test files remain after applying your match
  and skip patterns!

  Module: exif
  Error:  No test files remain after applying your match
  and skip patterns!

  Module: struct
  modules/struct/graph.test
  modules/struct/matrix.test
  modules/struct/queue.test
  modules/struct/stack.test
  modules/struct/tree.test

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

  Module: ftp
  Error:  No test files remain after applying your match
  and skip patterns!

  Module: ftpd
  Error:  No test files remain after applying your match
  and skip patterns!

  Module: javascript
  Error:  No test files remain after applying your match
  and skip patterns!

  Module: html
  modules/html/html.test

  Module: irc
  Error:  No test files remain after applying your match
  and skip patterns!

  Module: math
  modules/math/calculus.test
  Method: eulerStep
  Result (0.0): 1.0
  Result (1.0): 2.0
  Result (2.0): 3.0
  Result (3.0): 4.0
  Result (4.0): 5.0
  Result (5.0): 6.0
  Result (6.0): 7.0
  Result (7.0): 8.0
  Result (8.0): 9.0
  Result (9.0): 10.0
  Result (0.0): 1.0 -0.1
  Result (0.1): 0.99 -0.19
  Result (0.2): 0.971 -0.27
  Result (0.3): 0.944 -0.3401
  Result (0.4): 0.90999 -0.40049
  Result (0.5): 0.869941 -0.45144
  Result (0.6): 0.824797 -0.4932901
  Result (0.7): 0.77546799 -0.52644079
  Result (0.8): 0.722823911 -0.55134351
  Result (0.9): 0.66768956 -0.5684915501
  Result (1.0): 0.61084040499 -0.57841135109
  Result (1.1): 0.552999269881 -0.58165425648
  Result (1.2): 0.494833844233 -0.57878875782
  Result (1.3): 0.436954968451 -0.570393266461
  Result (1.4): 0.379915641805 -0.55704943666
  Result (1.5): 0.324210698139 -0.539336057175
  Result (1.6): 0.270277092421 -0.517823521271
  Result (1.7): 0.218494740294 -0.493068878386
  Result (1.8): 0.169187852456 -0.465611464577
  Result (1.9): 0.122626705998 -0.435969103365
  Method: heunStep
  Result (0.0): 1.0
  Result (1.0): 2.0
  Result (2.0): 3.0
  Result (3.0): 4.0
  Result (4.0): 5.0
  Result (5.0): 6.0
  Result (6.0): 7.0
  Result (7.0): 8.0
  Result (8.0): 9.0
  Result (9.0): 10.0
  Result (0.0): 0.995 -0.095
  Result (0.1): 0.981 -0.180025
  Result (0.2): 0.958992625 -0.2552175
  Result (0.3): 0.929951999375 -0.320800049375
  Result (0.4): 0.894826234687 -0.377065484378
  Result (0.5): 0.854530882498 -0.424367428236
  Result (0.6): 0.809943322403 -0.463111119249
  Result (0.7): 0.761898049463 -0.493744622953
  Result (0.8): 0.711182820035 -0.516750475356
  Result (0.9): 0.658535610776 -0.532637795724
  Result (1.0): 0.604642342128 -0.541934899175
  Result (1.1): 0.550135314996 -0.54518243176
  Result (1.2): 0.495592307404 -0.542927043509
  Result (1.3): 0.441536276733 -0.535715608361
  Result (1.4): 0.388435612555 -0.524089993815
  Result (1.5): 0.33670488508 -0.508582377626
  Result (1.6): 0.28670603478 -0.489711103946
  Result (1.7): 0.238749949731 -0.467977066855
  Result (1.8): 0.193098378632 -0.443860605394
  Result (1.9): 0.149966129226 -0.417818890825
  Method: rungeKuttaStep
  Result (0.0): 1.0
  Result (1.0): 2.0
  Result (2.0): 3.0
  Result (3.0): 4.0
  Result (4.0): 5.0
  Result (5.0): 6.0
  Result (6.0): 7.0
  Result (7.0): 8.0
  Result (8.0): 9.0
  Result (9.0): 10.0
  Result (0.0): 0.995958333333 -0.0958354166667
  Result (0.1): 0.982748574648 -0.181711736628
  Result (0.2): 0.9613622125 -0.257745017496
  Result (0.3): 0.932775605745 -0.324134745107
  Result (0.4): 0.897942049319 -0.381154050992
  Result (0.5): 0.857784809578 -0.429140146517
  Result (0.6): 0.813191104556 -0.468485044978
  Result (0.7): 0.765006997688 -0.499626633435
  Result (0.8): 0.714033167813 -0.523040146908
  Result (0.9): 0.661021513347 -0.53923008872
  Result (1.0): 0.606672544499 -0.54872263237
  Result (1.1): 0.55163351419 -0.552058532372
  Result (1.2): 0.49649723593 -0.54978656401
  Result (1.3): 0.441801535162 -0.54245750502
  Result (1.4): 0.388029279606 -0.530618665792
  Result (1.5): 0.335608933674 -0.514808968781
  Result (1.6): 0.284915582207 -0.495554572501
  Result (1.7): 0.236272369459 -0.473365030702
  Result (1.8): 0.189952300346 -0.448729973058
  Result (1.9): 0.146180352526 -0.422116289995
  5.0 0.909090909091 15.0 0.818181818182 25.0
  0.727272727273 35.0 0.636363636364 45.0 0.545454545455
  55.0 0.454545454545 65.0 0.363636363636 75.0
  0.272727272727 85.0 0.181818181818 95.0 0.0909090909091
  5.0 0.0909090909091 15.0 0.181818181818 25.0
  0.272727272727 35.0 0.363636363636 45.0 0.454545454545
  55.0 0.545454545455 65.0 0.636363636364 75.0
  0.727272727273 85.0 0.818181818182 95.0 0.909090909091
  modules/math/combinatorics.test
  modules/math/geometry.test
  modules/math/math.test

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

  Module: mime
  modules/mime/mime.test

  Module: ncgi
  modules/ncgi/ncgi.test
  NO
  NO
  DELIM
  env array elements created:     SERVER_PORT REQUEST_URI
  QUERY_STRING CONTENT_TYPE CONTENT_LENGTH SERVER_NAME
  HTTPS REQUEST_METHOD

  Module: nntp
  Error:  No test files remain after applying your match
  and skip patterns!

  Module: pop3
  Error:  No test files remain after applying your match
  and skip patterns!

  Module: pop3d
  Error:  No test files remain after applying your match
  and skip patterns!

  Module: profiler
  modules/profiler/profiler.test

  Module: smtpd
  Error:  No test files remain after applying your match
  and skip patterns!

  Module: textutil
  modules/textutil/adjust.test
  modules/textutil/expander.test
  modules/textutil/repeat.test
  modules/textutil/split.test
  modules/textutil/tabify.test
  modules/textutil/textutil.test
  modules/textutil/trim.test

  Module: uri
  modules/uri/uri.test
  modules/uri/urn.test

  Module: log
  modules/log/log.test
  log 1.0.1

  Module: htmlparse
  modules/htmlparse/htmlparse.test
  htmlparse 0.2

  Module: report
  modules/report/report.test
  report 0.3
  - struct  1.2.1

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

  Module: stooop
  modules/stooop/stooop.test

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

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

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

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

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

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

  ---- Result was:
  can't set "(2,m)": "::namespace" isn't a procedure
  ---- Result should have been (exact matching):
  {can't set "b::(1,m)": class access violation in
  procedure ::a::p} {can't set "b::(n)": class access
  violation in procedure ::a::q} bug bug {can't set
  "B::(2,m)": class access violation in procedure ::A::p}
  {can't set "B::(n)": class access violation in
  procedure ::A::q} bug bug {can't set "c::e::(3,m)":
  class access violation in procedure ::c::d::p} {can't
  set "c::e::(n)": class access violation in procedure
  ::c::d::q} bug bug {can't set "C::E::(4,m)": class
  access violation in procedure ::C::D::p} {can't set
  "C::E::(n)": class access violation in procedure
  ::C::D::q} bug bug {can't set "C::E::(4,m)": class
  access violation in procedure ::C::D::p} {can't set
  "C::E::(n)": class access violation in procedure
  ::C::D::q} bug bug
  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ==== stooop-86 FAILED


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

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

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

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

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

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

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


  ==== stooop-89 verify both data and procedure static
  access in member data checking mode FAILED
  ==== Contents of test case:

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

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

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

          class C {
              class D {
                  set (m) 0
                  proc D {this} {
                      set ($this,n) 0
                  }
                  proc ~D {this} {}
                  proc p {this} {
                      incr (m)
                      incr C::E::(o)
                  }
                  proc q {object} {
                      incr ($object,n)
                      incr C::E::($object,p)
                  }
              }
              class E {
                  set (o) 0
                  proc E {this} C::D {} {
                      set ($this,p) 0
                  }
                  proc ~E {this} {}
                  proc r {this} {
                      incr (o)
                      incr C::D::(m)
                  }
                  proc s {object} {
                      incr ($object,p)
                      incr C::D::($object,n)
                  }
              }
              set ::o [new E]
              catch {D::p $o} message; lappend ::result
  $message
              catch {D::q $o} message; lappend ::result
  $message
              catch {E::r $o} message; lappend ::result
  $message
              catch {E::s $o} message; lappend ::result
  $message
          }
          catch {C::D::p $o} message; lappend ::result
  $message
          catch {C::D::q $o} message; lappend ::result
  $message
          catch {C::E::r $o} message; lappend ::result
  $message
          catch {C::E::s $o} message; lappend ::result
  $message
          delete $o

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

  ---- Result was:
  can't set "(m)": "::namespace" isn't a procedure
  ---- Result should have been (exact matching):
  {can't set "b::(o)": class access violation in
  procedure ::a::p} {can't set "b::(1,p)": class access
  violation in procedure ::a::q} {can't set "a::(m)":
  class access violation in procedure ::b::r} {can't set
  "a::(1,n)": class access violation in procedure ::b::s}
  {can't set "B::(o)": class access violation in
  procedure ::A::p} {can't set "B::(2,p)": class access
  violation in procedure ::A::q} {can't set "A::(m)":
  class access violation in procedure ::B::r} {can't set
  "A::(2,n)": class access violation in procedure ::B::s}
  {can't set "c::e::(o)": class access violation in
  procedure ::c::d::p} {can't set "c::e::(3,p)": class
  access violation in procedure ::c::d::q} {can't set
  "c::d::(m)": class access violation in procedure
  ::c::e::r} {can't set "c::d::(3,n)": class access
  violation in procedure ::c::e::s} {can't set
  "C::E::(o)": class access violation in procedure
  ::C::D::p} {can't set "C::E::(4,p)": class access
  violation in procedure ::C::D::q} {can't set
  "C::D::(m)": class access violation in procedure
  ::C::E::r} {can't set "C::D::(4,n)": class access
  violation in procedure ::C::E::s} {can't set
  "C::E::(o)": class access violation in procedure
  ::C::D::p} {can't set "C::E::(4,p)": class access
  violation in procedure ::C::D::q} {can't set
  "C::D::(m)": class access violation in procedure
  ::C::E::r} {can't set "C::D::(4,n)": class access
  violation in procedure ::C::E::s}
  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ==== stooop-89 FAILED


  ==== stooop-90 verify member data checking when "array
  set" is used FAILED
  ==== Contents of test case:

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

          class A {
              proc A {this} {}
              proc ~A {this} {}
              proc p {this} {
                  array set B:: "$this,m 0"
              }
              proc q {this} {
                  array set B:: {n 0}
              }
          }
          set o [new A]
          class B {
              array set B:: "$o,m 0 n 0"
          }
          class A {
              catch {p $o} message; lappend ::result
  $message
              catch {q $o} message; lappend ::result
  $message
          }
          delete $o

          class c {}
          class c::d {}
          proc c::d::d {this} {}
          proc c::d::~d {this} {}
          proc c::d::p {this} {
              array set c::e:: "$this,m 0"
          }
          proc c::d::q {this} {
              array set c::e:: {n 0}
          }
          class c::e {}
          set o [new c::d]
          array set c::e:: "$o,m 0 n 0"
          catch {c::d::p $o} message; lappend ::result
  $message
          catch {c::d::q $o} message; lappend ::result
  $message
          delete $o

          class C {
              class D {
                  proc D {this} {}
                  proc ~D {this} {}
                  proc p {this} {
                      array set C::E:: "$this,m 0"
                  }
                  proc q {this} {
                      array set C::E:: {n 0}
                  }
              }
              set ::o [new D]
              class E {
                  array set C::E:: "$o,m 0 n 0"
              }
              class D {
                  catch {p $o} message; lappend ::result
  $message
                  catch {q $o} message; lappend ::result
  $message
              }
          }
          catch {C::D::p $o} message; lappend ::result
  $message
          catch {C::D::q $o} message; lappend ::result
  $message
          delete $o

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

  ---- Result was:
  can't set "B::(2,m)": "::namespace" isn't a procedure
  ---- Result should have been (exact matching):
  {can't set "b::(1,m)": class access violation in
  procedure ::a::p} {can't set "b::(n)": class access
  violation in procedure ::a::q} {can't set "B::(2,m)":
  class access violation in procedure ::A::p} {can't set
  "B::(n)": class access violation in procedure ::A::q}
  {can't set "c::e::(3,m)": class access violation in
  procedure ::c::d::p} {can't set "c::e::(n)": class
  access violation in procedure ::c::d::q} {can't set
  "C::E::(4,m)": class access violation in procedure
  ::C::D::p} {can't set "C::E::(n)": class access
  violation in procedure ::C::D::q} {can't set
  "C::E::(4,m)": class access violation in procedure
  ::C::D::p} {can't set "C::E::(n)": class access
  violation in procedure ::C::D::q}
  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ==== stooop-90 FAILED


  ==== stooop-95 objects checking from namespace body and
  namespace procedure FAILED
  ==== Contents of test case:

      set interpreter [interp create]
      $interpreter eval {
          # reset any existing environment variables:
          foreach name [array names env STOOOP*] {unset
  env($name)}
          set env(STOOOPCHECKOBJECTS) 1
      }
      $interpreter eval "source $source; namespace import
  stooop::*"
      # alias puts to be able to collect standard output
  data:
      proc appendResult {string} {lappend ::result
  $string}
      $interpreter alias puts appendResult
      set result {}
      $interpreter eval {
          class a {
              proc a {this} {}
              proc ~a {this} {}
          }
          namespace eval n {
              proc p {} {
                  new a
              }
              namespace eval m {
                  proc q {} {
                      new a
                  }
              }
          }
          stooop::record
          namespace eval n {
              new a
          }
          stooop::report
          n::p
          stooop::report
          namespace eval n::m {
              new a
          }
          stooop::report
          n::m::q
          stooop::report
          delete 1 2 3 4
      }
      interp delete $interpreter
      set result

  ---- Result was:
  {stooop::record invoked from top level} {stooop::report
  invoked from top level:} {+ ::a(1) + ::namespace}
  {stooop::report invoked from top level:} {+ ::a(1) +
  ::namespace} {+ ::a(2) + ::n::p} {stooop::report
  invoked from top level:} {+ ::a(1) + ::namespace} {+
  ::a(2) + ::n::p} {+ ::a(3) + ::namespace}
  {stooop::report invoked from top level:} {+ ::a(1) +
  ::namespace} {+ ::a(2) + ::n::p} {+ ::a(3) +
  ::namespace} {+ ::a(4) + ::n::m::q}
  ---- Result should have been (exact matching):
  {stooop::record invoked from top level} {stooop::report
  invoked from top level:} {+ ::a(1) + namespace ::n}
  {stooop::report invoked from top level:} {+ ::a(1) +
  namespace ::n} {+ ::a(2) + ::n::p} {stooop::report
  invoked from top level:} {+ ::a(1) + namespace ::n} {+
  ::a(2) + ::n::p} {+ ::a(3) + namespace ::n::m}
  {stooop::report invoked from top level:} {+ ::a(1) +
  namespace ::n} {+ ::a(2) + ::n::p} {+ ::a(3) +
  namespace ::n::m} {+ ::a(4) + ::n::m::q}
  ==== stooop-95 FAILED


  ==== stooop-96 objects checking from within derived
  class constructor FAILED
  ==== Contents of test case:

      set interpreter [interp create]
      $interpreter eval {
          # reset any existing environment variables:
          foreach name [array names env STOOOP*] {unset
  env($name)}
          set env(STOOOPCHECKOBJECTS) 1
      }
      $interpreter eval "source $source; namespace import
  stooop::*"
      # alias puts to be able to collect standard output
  data:
      proc appendResult {string} {lappend ::result
  $string}
      $interpreter alias puts appendResult
      set result {}
      $interpreter eval {
          class a {
              proc a {this i} {}
              proc ~a {this} {}
          }
          class b {
              proc b {this} a {[new c]} {}
              proc ~b {this} {}
          }
          class c {
              proc c {this} {}
              proc ~c {this} {}
          }
          stooop::record
          new b
          stooop::report

          class A {
              class a {
                  proc a {this i} {}
                  proc ~a {this} {}
              }
              class b {
                  proc b {this} a {[new c]} {}
                  proc ~b {this} {}
              }
              class c {
                  proc c {this} {}
                  proc ~c {this} {}
              }
              stooop::record
              new b
              stooop::report
          }

      }
      interp delete $interpreter
      set result

  ---- Result was:
  {stooop::record invoked from top level} {stooop::report
  invoked from top level:} {+ ::b(1) + top level} {+
  ::c(2) + ::b::b} {stooop::record invoked from
  ::namespace} {stooop::report invoked from ::namespace:}
  {+ ::A::b(3) + ::namespace} {+ ::c(4) + ::A::b::b}
  ---- Result should have been (exact matching):
  {stooop::record invoked from top level} {stooop::report
  invoked from top level:} {+ ::b(1) + top level} {+
  ::c(2) + ::b::b} {stooop::record invoked from namespace
  ::A} {stooop::report invoked from namespace ::A:} {+
  ::A::b(3) + namespace ::A} {+ ::c(4) + ::A::b::b}
  ==== stooop-96 FAILED


  ==== stooop-97 objects checking with debugging
  procedures invocation from namespace body
      and namespace procedure FAILED
  ==== Contents of test case:

      set interpreter [interp create]
      $interpreter eval {
          # reset any existing environment variables:
          foreach name [array names env STOOOP*] {unset
  env($name)}
          set env(STOOOPCHECKOBJECTS) 1
      }
      $interpreter eval "source $source; namespace import
  stooop::*"
      # alias puts to be able to collect standard output
  data:
      proc appendResult {string} {lappend ::result
  $string}
      $interpreter alias puts appendResult
      set result {}
      $interpreter eval {
          class a {
              proc a {this} {}
              proc ~a {this} {}
          }
          namespace eval n {
              proc p {} {
                  stooop::record
                  new a
                  stooop::report
              }
              namespace eval m {
                  proc q {} {
                      stooop::record
                      new a
                      stooop::report
                  }
              }
          }
          n::p
          n::m::q
          namespace eval n {
              stooop::record
              new a
              stooop::report
          }

      }
      interp delete $interpreter
      set result

  ---- Result was:
  {stooop::record invoked from ::n::p} {stooop::report
  invoked from ::n::p:} {+ ::a(1) + ::n::p}
  {stooop::record invoked from ::n::m::q} {stooop::report
  invoked from ::n::m::q:} {+ ::a(2) + ::n::m::q}
  {stooop::record invoked from ::namespace}
  {stooop::report invoked from ::namespace:} {+ ::a(3) +
  ::namespace}
  ---- Result should have been (exact matching):
  {stooop::record invoked from ::n::p} {stooop::report
  invoked from ::n::p:} {+ ::a(1) + ::n::p}
  {stooop::record invoked from ::n::m::q} {stooop::report
  invoked from ::n::m::q:} {+ ::a(2) + ::n::m::q}
  {stooop::record invoked from namespace ::n}
  {stooop::report invoked from namespace ::n:} {+ ::a(3)
  + namespace ::n}
  ==== stooop-97 FAILED

  env array elements created:     STOOOPCHECKOBJECTS


  Tests ended at Thu May 09 07:00:07 EDT 2002
  all.tcl:        Total   2012    Passed  1996    Skipped
  8       Failed  8
  Sourced 36 Test Files.
  Files with failing tests: base64/yencode.test
  stooop/stooop.test
  Number of tests skipped for each constraint:
          3       badTest
          5       pcOnly


