# ticket

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: Open
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


tkt_uuid: 554233ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: apps : request for new app
priority: 5 Medium
foundin: None
title: Browser for images
cmimetype: text/plain
submitter: davesnyd
assignee: hobbs
comment:
  It would be nice to include a browser so that people 
  can look at the images in the BWidget/images directory.

  A very simple image browser is attached...


tkt_uuid: 554475ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: doctools
priority: 6
foundin: None
title: tcllib 'build' warning msgs
cmimetype: text/plain
submitter: lvirden
assignee: jenglish
closer: jenglish
closedate: 2002-05-20T20:15:27
comment:
  the latest cvs head of tcllib, obtained from
  activestate's snapshot ftp site, generates the
  following warning during the tmml gen step:

  Gen (tmml):
  /vol/tclsrcsol/tcl84/tcllib/modules/html/html.man
  Warning: Cannot start context section dd li

  This occurs for quite a number of the man pages,
  including stoop, sha1, report, log, expander, smtpd,
  and more


tkt_uuid: 556077ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 3 Low
foundin: None
title: Tree::see should only scroll vertically
cmimetype: text/plain
submitter: jenglish
assignee: hobbs
closer: hobbs
closedate: 2002-10-14T19:42:08
comment:
  The Tree::see $n command scrolls both horizontally and
  vertically to bring the label for node $n in view. 
  However, if the label is too large to fit within the
  window, the horizontal scrolling obscures the tree
  controls (icons and checkboxes).

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


tkt_uuid: 556504ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: fileutil
priority: 5 Medium
foundin: None
title: fileutil::cat won't read empty files
cmimetype: text/plain
submitter: cleverly
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-05-21T17:45:13
comment:
  fileutil::cat won't read non-empty "empty" files (where
  [file size] == 0, but the file isn't empty), as is the
  case with the files in the /proc filesystem on Linux.

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


tkt_uuid: 556509ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: doctools
priority: 3 Low
foundin: None
title: mpexpand nroff header comments
cmimetype: text/plain
submitter: jenglish
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-05-21T18:22:19
comment:
  'mpexpand nroff' inserts some comments in the header
  that probably do not belong there. It assigns copyright
  to the person who ran the converter (the original
  author may disagree with this :-), and inserts an
  unexpanded CVS revision tag (CVS: $Id$), which is
  inappropriate for an output file.

  It also adds the mysterious admonition "do not modify
  the .SH NAME line immediately below!" -- I don't think
  there's any reason to keep this particular coke bottle
  around.

  The attached patch removes the above stuff.


tkt_uuid: 557040ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: smtp
priority: 5 Medium
foundin: None
title: timeout immediately on large messages
cmimetype: text/plain
submitter: tcoram
assignee: mrose
closer: andreas_kupries
closedate: 2002-07-25T18:44:22
comment:
  sendmessage timeout value grows ridiculously large as
  the size of the message (mime part) increases.

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

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

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

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


tkt_uuid: 557043ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: mime
priority: 5 Medium
foundin: None
title: badly formated mail causes infinite loop
cmimetype: text/plain
submitter: tcoram
assignee: andreas_kupries
closer: mrose
closedate: 2002-05-19T22:52:38
comment:
  In mime::parsepart, the following two lines cause me
  trouble:
   # error "termination string missing in $state(content)"
   set line "--$boundary--"                                        

  Switching the comments (uncomment the first; comment out
  the second) solves the following problem:

  Mail with incorrectly terminated mime parts causes
  a "mime::initialize -file" to enter an infinite loop.

  A lot of adverts and spam have incorrectly formated
  mime parts... For example: specifying a boundary that
  doesn't exist. Also, some virus filters remove the part
  but may leave the reference.


tkt_uuid: 557520ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: smtp
priority: 5 Medium
foundin: None
title: smtp::sendmessage -maxsecs
cmimetype: text/plain
submitter: tcoram
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-08-15T16:37:35
comment:
  A patch to workaround bug #557040. Rather than automatically
  calculate a timeout for SMTP acknowledging acceptance of
  message body (DATA), allow the user to specify a 
  timeout (default 120 seconds).


tkt_uuid: 558132ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Duplicate
subsystem: smtp
priority: 5 Medium
foundin: None
title: smtp::sendmessage -maxsecs
cmimetype: text/plain
submitter: tcoram
assignee: mrose
closer: mrose
closedate: 2002-05-23T18:18:26
comment:
  A patch to workaround bug #557040. 

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

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


tkt_uuid: 561391ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: error in ListBox::move
cmimetype: text/plain
submitter: nobody
assignee: hobbs
closer: hobbs
closedate: 2002-06-04T21:23:10
comment:
  Looks like a bug in ListBox::move: when you move an 
  item to "end", the screen messes up. Fix:

  change lines 392-396

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

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

  (effectively deleting 392-394, 396)

  in listbox.tcl (see attached file)


tkt_uuid: 561403ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: fix for vertical progressbar (1.3.1)
cmimetype: text/plain
submitter: nobody
assignee: hobbs
closer: hobbs
closedate: 2002-06-04T20:21:54
comment:
  Displaying a vertical progressbar does not work properly. 
  The following patch fixes this: (progressbar.tcl, 1.3.1)

  191c191
  <                 $path.bar coords rect 0 [expr {$h+1}] $w 
  [expr {$h*($max-$val)}]
  ---
  >                 $path.bar coords rect 0 [expr {$h+1}] $w 
  [expr {$h*(1.0 - double($val)/$max)}]


tkt_uuid: 561416ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: smtp
priority: 5 Medium
foundin: None
title: can't handle list of mail servers
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-05-29T16:35:44
comment:
  problem
  -------
  the procedure smtp::sendmessage has the option
  '-servers' for a list of available mail servers.
  Unfortunately the variable state(readable) is not reset
  after a failed connection the other servers in the list
  will also fail.

  solution
  --------
  in procedure smtp::initialize add

     set state(readable) 0

  at the beginning of the loop

     foreach server $options(-servers) {
       ...
     }

  best regards
  -- Beat Jucker


tkt_uuid: 563380ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: bwidget
priority: 5 Medium
foundin: None
title: BWidget 8.4 padx bug
cmimetype: text/plain
submitter: damonc
assignee: hobbs
closer: hobbs
closedate: 2002-06-04T21:24:01
comment:
  The Tree, Listbox and ButtonBox widgets are all
  affected by the change in 8.4 that gave the frame
  widget a -padx option.

  Since these BWidgets have a padx that sets the padding
  between graphics and text, this option is actually
  passed on to Tcl.  Now the the frame widget has a padx
  option, the default padx on these widgets (20 pixels)
  is being passed to the frame, and there's a 20 pixel
  border around these widgets.


tkt_uuid: 564071ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: doctools
priority: 5 Medium
foundin: None
title: doctools - multi-release SYNOPSIS convention
cmimetype: text/plain
submitter: dgp
assignee: andreas_kupries
comment:
  When looking for documentation on Unix, one types

  man package

  and that turns into a search for a file named
  "package.n" on the MANPATH, and a formatting and
  display of its contents.

  When a new release of package is installed, say
  version 1.1, where a prior version, say 1.0, is
  already installed, the two versions get installed
  side by side, but the man page for 1.1 overwrites
  the one for 1.0.

  For this reason it would be a good convention for
  man pages to include documentation for earlier
  compatible versions, as well as the latest changes.
  I recommended a SYNOPSIS convention like this:

  package require foo 1.0
  foo::bar x
  foo::baz
  package require foo 1.1
  foo::grok a b c
  package require foo 1.2
  foo::snafu
  foo::bar x ?y z?

  Here it is clear what minor release introduced
  each (variation of) each command.

  If the doctools cannot format such a SYNOPSIS 
  convention, I request the new feature that they
  be enhanced so they can.


tkt_uuid: 564279ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ncgi
priority: 5 Medium
foundin: None
title: ncgi::multipart bug
cmimetype: text/plain
submitter: midseb
assignee: davidw
closer: davidw
closedate: 2002-08-09T21:22:39
comment:
  In "ncgi::multipart" we have:
  ---
  if {[regexp -- $boundary\r\n $query]} {
      set lineDelim "\r\n"
  puts "DELIM"
      } else {
          set lineDelim "\n"
  puts "NO"
      }
  ---
  It seems to me that the 2 "puts" are for debugging
  purposes only: in real life, using ncgi::multipart
  causes the emission of a wrong header ("DELIM" or "NO").


tkt_uuid: 564670ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 5 Medium
foundin: None
title: Package fails to load
cmimetype: text/plain
submitter: gwlester
assignee: patthoyts
closer: andreas_kupries
closedate: 2002-06-07T17:17:23
comment:
  The dns pacakge fails to load on the first "package require".

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

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


tkt_uuid: 564674ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Rejected
subsystem: None
priority: 5 Medium
foundin: None
title: dns::resolve time out
cmimetype: text/plain
submitter: gwlester
assignee: patthoyts
closer: patthoyts
closedate: 2002-07-06T22:55:40
comment:
  On a Windows NT system running behind a fireware the dns::resolve always times out.

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

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

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


tkt_uuid: 564691ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: bad interaction: PanedWindow ScolledWind
cmimetype: text/plain
submitter: pkienzle
assignee: hobbs
closer: hobbs
closedate: 2003-02-25T10:01:38
comment:
  Sometimes the sash disappears when you make a window 
  pane the wrong size.  I have a short hunk of code 
  which exhibits and a varient which does not.

  Here is the packing structure in both variants:

   PanedWindow
   +-ScrolledWindow
   | +-widget1
   +-widget2

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

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

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


tkt_uuid: 564767ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: profiler
priority: 5 Medium
foundin: None
title: Missing variable initialization in dump
cmimetype: text/plain
submitter: nobody
assignee: nobody
closer: hobbs
closedate: 2002-10-14T20:29:09
comment:
  The result var in profiler::dump is not initialized. This leads
  to a runtime error when [array names callCount $pattern] 
  returns an empty list.

  FIX: 

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

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

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

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

  ...


tkt_uuid: 565051ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 5 Medium
foundin: None
title: csv::split parsing bug
cmimetype: text/plain
submitter: todolson
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-06-24T23:17:38
comment:
  csv::split handles a quoted, null field incorrectly if
  the field is neither the first nor the last field in a
  line/record:

  % info tclversion
  8.3
  % info patch
  8.3.3
  % package require csv
  0.2
  % ::csv::split {1 2 "" ""} { }
  1 2 {"} {}
  % ::csv::split {"" ""} { }
  {} {}
  % ::csv::split {"" "" ""} { }
  {} {"} {}

  A change to the character map seems to fix the problem:

  % proc ::csv::split {line {sepChar ,}} {
      regsub -all -- {(^\"|\"$)} $line \0 line
      set line [string map [list \
      $sepChar\"\"\" $sepChar\0\" \
      \"\"\"$sepChar \"\0$sepChar \
      \"\"$sepChar $sepChar \
      \"\"           \" \
      \"             \0 \
      ] $line]
      set end 0
      while {[regexp -indices -start $end --
  {(\0)[^\0]*(\0)} $line \
      -> start end]} {
  set start [lindex $start 0]
  set end   [lindex $end 0]
  set range [string range $line $start $end]
  if {[string first $sepChar $range] >= 0} {
      set line [string replace $line $start $end \
      [string map [list $sepChar \1] $range]]
  }
  incr end
      }
      set line [string map [list $sepChar \0 \1 $sepChar
  \0 {} ] $line]
      return [::split $line \0]
  }
  % ::csv::split {"" "" "" "" "" ""} { }
  {} {} {} {} {} {}


tkt_uuid: 565281ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: doctools
priority: 5 Medium
foundin: None
title: tcllib documentation bugs
cmimetype: text/plain
submitter: dgp
assignee: dgp
closer: dgp
closedate: 2002-06-11T17:11:17
comment:
  Two issues when building tcllib's documentation.

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


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


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

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

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

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


tkt_uuid: 567079ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 5 Medium
foundin: None
title: `make dist` recursion
cmimetype: text/plain
submitter: dgp
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-08-06T23:02:16
comment:
  A `make dist` in the top directory of tcllib
  leads to infinite recursion of copying tcllib
  files into a subdirectory, then that subdir
  into its subdir. etc.

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


tkt_uuid: 567326ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 8
foundin: None
title: install.tcl script fails
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-21T18:32:07
comment:
  Platform: SPARC Solaris 2.6
  Tcl / Tk 8.4a5
  tcllib-20020610.tar.gz from ftp.activestate.com

  When attempting to make use of the new install.tcl
  script, I get
  this error:
  $ ./install.tcl
  /usr/tcl84/bin/tclsh ...
  Tcl script library at      /usr/tcl84/lib/tcl8.4
  Installing Tcllib 1.3 into /usr/tcl84/lib/tcllib1.3
  error copying "pkgIndex.tcl": no such file or directory
      while executing
  "file copy pkgIndex.tcl $installdir"
      (file "./install.tcl" line 30)

  Also, the INSTALL.txt file mentions an install.sh and
  install.bat file which do not appear in the tar file.


tkt_uuid: 567428ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 5 Medium
foundin: None
title: problem with tmml documentation
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-06-17T20:34:07
comment:
  The following modules have a problem with the way their
  tmml documentation generates nroff:

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

  The nroff that gets generated starts out with:

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

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

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


tkt_uuid: 567982ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: dynhelp: balloon + variable
cmimetype: text/plain
submitter: decosterjos
assignee: hobbs
closer: hobbs
closedate: 2002-10-14T19:38:20
comment:
  Some time ago, someone asked on comp.lang.tcl if it was
  possible with BWidget dynhelp to have both balloon help
  and variable help at the same time. This patch makes
  this possible.

  Jos.


tkt_uuid: 570227ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Works For Me
subsystem: None
priority: 5 Medium
foundin: None
title: crc32 not like zlib crc (with patch)
cmimetype: text/plain
submitter: cferril
assignee: patthoyts
closer: patthoyts
closedate: 2002-09-24T23:06:54
comment:
  This may be a moot point, but...

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

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

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

  Hope this helps


tkt_uuid: 575376ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: profiler
priority: 8
foundin: None
title: use execution traces for tcl8.4+
cmimetype: text/plain
submitter: hemanglavana
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-14T07:25:42
comment:
  Module: profiler

  I am attaching a patch that makes use of [trace add execution ..] command
  available in tcl8.4 version for profiling. The changes are as follows:

   o The current API is _not_ modified, only few internal procedures 
      have been changed.
   o "if [package vsatisifies [package provide Tcl] 8.4] .. else .." 
      construct is used to support both versions of tcl: 8.3 & 8.4
   o The code inside proc Handler is split into two new procs:
      enterHandler and leaveHandler which are called by Handler.
      Handler proc is used with tcl8.3 only
   o  A new proc TraceHandler, used with tcl8.4+, is invoked by
      enter/leave execution traces on commands
   o proc profProc either sets up execution traces or proc renames
      based on tcl version
   o profiler package version is incremented to 0.2.1
   o Added a test constraint called tcl8.3only in profiler.test file.
     5 tests are skipped for tcl8.4+ version because these tests
     work with internals of profiler package -- these rely on fact
     that procs are renamed to <name>ORIG in tcl8.3 version.

  The following simple test shows some improvement in performance between
  tcl8.3 and tcl8.4 versions. Note however that this improvement could be simply
  because 8.4 version executes faster and not due to use of execution traces.

  godel:35> tclsh test.tcl
  tcl version = 8.3.4
  time        = 602 microseconds per iteration
  godel:36> /tmp/hlavana/tcltk/bin/tclsh8.4 test.tcl
  tcl version = 8.4b1
  time        = 472 microseconds per iteration
  godel:37> cat test.tcl 

  set auto_path [linsert $auto_path 0 /auto/vwsahr/cvs-sf/tcllib/modules/profiler]
  package require profiler

  ::profiler::init
  proc foo {} {}

  puts "tcl version = [info patch]"
  puts "time        = [time foo 10000]"
  godel:38> 

  In future, the profiler package can be updated to trace all commands as well.
  Currently, it can only trace functions defined using proc command. This may
  require some changes in APIs of profiling packages.


tkt_uuid: 576873ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
title: add autoscroll to tklib
cmimetype: text/plain
submitter: lvirden
assignee: afaupell
closer: afaupell
closedate: 2003-07-28T06:40:05
comment:
  http://mini.net/tcl/950 is a package for Tk that turns
  display of a gridded scrollbar on or off, depending on
  whether it is needed or not.


tkt_uuid: 577055ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct
priority: 5 Medium
foundin: None
title: Add struct::list
cmimetype: text/plain
submitter: dgp
assignee: nobody
closer: dgp
closedate: 2003-03-24T17:15:25
comment:
  Add a new command [::struct::list] to the struct package.

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

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


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


tkt_uuid: 578460ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct :: tree
priority: 5 Medium
foundin: None
title: struct::tree move within same parent
cmimetype: text/plain
submitter: btheado
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-07-08T23:26:14
comment:
  The documentation for the tree move command states:
  "Make the specified nodes children of parent, inserting them into 
  the parent's child list at the index given by index. "

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

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

  Expected result:
  node1 node0 node2

  Actual result:
  node0 node1 node2


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


tkt_uuid: 578465ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: doctools
priority: 5 Medium
foundin: None
title: Wrong conversion of <> and " (HTML)
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-07-08T22:12:12
comment:
  The characters <, >, and " are converted to
  &amp;lt;, &amp;gt;, and &amp;quot; in the
  final generated HTML, and not &lt;, &gt;, &quot;

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


tkt_uuid: 579026ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: crc
priority: 5 Medium
foundin: None
title: crc32 consumes lots of memory
cmimetype: text/plain
submitter: arjenmarkus
assignee: patthoyts
closer: patthoyts
closedate: 2002-09-26T23:19:33
comment:
  crc32 consumes a large amount of memory if it has to
  determine the checksum for a large file (a file of10 MB
  causes the process to consume 200 MB of memory). This
  is probably due to the use of a list containing
  elements of 1 character (each list element has an
  overhead of 12 bytes).

  Alternative implementation:

     for { set i 0 } { $i < $length } { incr i } { 
        scan [string range $str $i $i] c n
        ...
     }


tkt_uuid: 579853ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: htmlparse
priority: 5 Medium
foundin: None
title: Backslashes escaped but not unescaped
cmimetype: text/plain
submitter: cleverly
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-08-08T17:01:08
comment:
  ::htmlparse::PrepareHtml protects characters that are
  special to Tcl (braces and backslash).  The ob & cb
  (open & closing brace) escapes are converted back
  because there are keys for ob & cb in the
  ::htmlparse::escapes array, but there is no entry for
  ::htmlparse::escapes(bsl).


tkt_uuid: 582668ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ftp
priority: 5 Medium
foundin: None
title: ftp::Get with -variable fails
cmimetype: text/plain
submitter: frari
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-08-08T16:54:23
comment:
  By using a construct like

  ftp::Get $ftphandle directory/file -variable data

  ftp raises an error, if no local directory "directory"
  exists:

  ftp::Get, directory "directory" for destination
  "directory/file" does 
  not exist

  ftp checks for a local directory, even if the data
  should never go to this directory, but to a variable.


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


tkt_uuid: 585093ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct
priority: 6
foundin: None
title: Pool package namespace problems
cmimetype: text/plain
submitter: cleverly
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-08-06T20:41:06
comment:
  The ::struct::pool command in tcllib 1.3 references
  variables and commands in/under the ::pool namespace,
  instead of in the ::struct::pool namespace.

  Since there is no struct::pool category, I'm filing
  this against the struct category.


tkt_uuid: 585455ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: mime
priority: 5 Medium
foundin: None
title: MIME::initialize speedup
cmimetype: text/plain
submitter: pascalscheffers
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-07-25T18:29:26
comment:
  This patch speeds up mime::initialize, it adds three
  state variables to the token state, lines (a list),
  lines.current (the current line) and lines.count (the
  number of lines in the list. It changes the way lines
  are processed by splitting the entire message into a
  list and fetching new lines from the list as needed. 

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


tkt_uuid: 586708ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Duplicate
subsystem: mclistbox
priority: 5 Medium
foundin: None
title: comcmd itemconfigure, few options added
cmimetype: text/plain
submitter: nobody
assignee: hobbs
closer: hobbs
closedate: 2002-08-07T22:15:46
comment:
  Command itemconfigure index column list ?list 
  Allows one to configure any given cell of a 
  mclistbox. The arguments index and column specify a
  cell to be configures. 
  list  argument is a set of option-value pairs as in the
  listbox command itemconfigure.

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

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

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


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

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

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

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


  PS. Sorry for previous anonymous submission of the same
  patch.

  Arkdi 


tkt_uuid: 587533ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct :: tree
priority: 5 Medium
foundin: None
title: lappend error message misquoted.
cmimetype: text/plain
submitter: erempel
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-08-08T16:54:59
comment:
  In the ::struct::tree::_lappend routine, when the incorrect 
  number of arguments is supplied, the error message 
  states

  "wrong # args: should be tree set node ?-key key? value"

  I think that what should be in this error message is

  "wrong # args: should be tree lappend node ?-key key? 
  value"


tkt_uuid: 588880ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: bwidget
priority: 5 Medium
foundin: None
title: flicker in ScrolledWindow and frame
cmimetype: text/plain
submitter: nobody
assignee: hobbs
closer: hobbs
closedate: 2002-10-14T20:31:51
comment:
  Addition of update idletask to proc
  ScrolledWindow::_set_hscroll 
  and 
  proc ScrolledWindow::_set_vscroll 
  cause flickering during window resize 
  and
  Tcl bg errors:

  bgerror failed to handle background error.
      Original error: too many nested calls to Tcl_Eval
  (infinite loop?)
      Error in bgerror: too many nested calls to
  Tcl_EvalObj (infinite loop?)


  When I commented the lines out, they work fine
  in my application.

  I was placing rows of buttons and labels inside
  the scrollable frame or window and the
  update idletask was excessive.


tkt_uuid: 589225ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: comm
priority: 5 Medium
foundin: None
title: test writes ~/foo
cmimetype: text/plain
submitter: dgp
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-08-06T21:30:23
comment:
  It appears that testing of the comm module
  creates and leaves behind a file ~/foo

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


tkt_uuid: 593254ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ncgi
priority: 5 Medium
foundin: None
title: setValue doesn't work right w/ multipart
cmimetype: text/plain
submitter: davidw
assignee: davidw
closer: davidw
closedate: 2002-08-15T18:29:12
comment:
  ncgi::setValue doesn't work right with multipart forms,
  if you pass it a string with spaces in it, because of
  the way it gets treated by ncgi::value.  See new test case.


tkt_uuid: 594263ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Out of Date
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
title: bug in tkchat message dissector
cmimetype: text/plain
submitter: nobody
assignee: patthoyts
closer: patthoyts
closedate: 2004-11-29T12:58:52
comment:
  if a person using the web interface to the
  Tcl'ers Chat has no special color attached
  to their name, then the line of text which
  is output when they speak isn't wrapped by
  <FONT COLOR="#whatever"></FONT>. If such a
  person post a multi-line message, then the
  tkchat program gets confused, and all but
  the first line of the message are handled
  as "help" messages, and shown in popup windows,
  one window per line.


tkt_uuid: 595240ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
title: patch for mime & mbot example files
cmimetype: text/plain
submitter: mrose
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-08-15T17:06:20
comment:
  andreas - attached are two files

  1. a small patch to mime.tcl that makes it more robust with 
  respect to a common mime encoding error

  2. some new files that go under modules/mime/examples/

  thanks!

  /mtr


tkt_uuid: 596000ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: html
priority: 5 Medium
foundin: None
title: html display depends on ncgi
cmimetype: text/plain
submitter: mic42
assignee: gwlester
closer: gwlester
closedate: 2002-11-25T02:42:56
comment:
  The html display function needs the ncgi package from
  tcllib, but this isn't properly package required.

  Solution:

  Add [package require ncgi] to counter.

  Michael Schlenker


tkt_uuid: 597102ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: nntp
priority: 5 Medium
foundin: None
title: nntp post bug and doc enhancements.
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-08-23T20:05:22
comment:
  The nntp package could use some updating, before it is 
  useful. Here are the list of things that I had to modify in 
  order to get nntp work.

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

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

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

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

      (Should this go to a Wiki page?)

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

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

  -Jussi Kuosa


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


tkt_uuid: 601257ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: mime
priority: 5 Medium
foundin: None
title: fix missing content boundary workaround
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: mrose
closedate: 2002-08-28T19:29:35
comment:
  In parsepart, the following code checks for end-of-
  content without a boundary marker. 

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

  Need to add
                    set x [string length $line]

  after 'set line'.

  Attached patch does this.


tkt_uuid: 601960ffffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
resolution: None
subsystem: cmdline
priority: 5 Medium
foundin: None
title: New Proc: cmdline::parseargs
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-09-06T20:53:30
comment:
  Please see the attached cmdline.tcl file, which
  includes a new proc "cmdline::parseargs".

  Here is a usage example:

  cmdline::parseargs \
  {startPath.arg {safeFlag} port.arg {host.arg 127.0.0.1}} \
  {stuff {morestuff 0}} $argv

  This gives the proc the following cmdline:
  -startPath <path> -port <port> ?-safeFlag? ?-host?
  stuff ?morestuff?

  It's been a tremendously valuable proc for my own work.
  Enjoy -- it's yours. If possible, I'd appreciate
  inclusion of the credit line in the file head (see
  attached file) but you can take it out if you want.

  -Ed


tkt_uuid: 602279ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Rejected
subsystem: app: tkchat
priority: 5 Medium
foundin: None
title: tkchat - Shared whiteboard
cmimetype: text/plain
submitter: dkf
assignee: hartweg
closer: patthoyts
closedate: 2004-03-03T22:00:21
comment:
  This patch implements a shared whiteboard that hitches
  a ride on tkchat for its communication protocol. 
  Naturally, it needs more polishing before it is perfect
  for use...


tkt_uuid: 602726ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
resolution: None
subsystem: ftp
priority: 5 Medium
foundin: None
title: Open -mode passive fails
cmimetype: text/plain
submitter: jcoppens
assignee: andreas_kupries
closer: jcoppens
closedate: 2002-08-31T02:01:45
comment:
  Hi all.

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

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

  Suggestions?

  John


tkt_uuid: 603924ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
title: add getall / keys / keyexists to graph
cmimetype: text/plain
submitter: mic42
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-11-06T04:09:44
comment:
  As the graph object stores data exactly like nodes and
  arcs do, it would be more symetric to have the extra
  subcommands, that were added to nodes and arcs.

  Implementation is trivial (copy nodes / arcs procs, one
  line change).


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

  Thanks


tkt_uuid: 606141ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: csv
priority: 8
foundin: None
title: csv bug: empty field in middle of row
cmimetype: text/plain
submitter: todolson
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-25T18:12:48
comment:
  csv has a bug parsing an empty field in the middle of a
  row.

  In the attached tarball, see sample.data (taken from MS
  Access export file).  The fourth field in the last
  three rows is empty, but csv parses it as containing a
  single double-quote character.  The fix is a single
  line added to  csv.tcl, see csv.diff in the tarball, or
  csv-fixed.tcl.  Run the sample program  csv-test.tcl to
  see the difference in action.

  I'd be grateful if you could incluge this fix in the
  next release, as I am relying on the csv package in one
  of my projects.

  -Tod Olson <tod@uchicago.edu>


tkt_uuid: 606640ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: mime
priority: 5 Medium
foundin: None
title: Quoted-printable should encode also '='
cmimetype: text/plain
submitter: nobody
assignee: mrose
closer: patthoyts
closedate: 2003-01-06T14:59:51
comment:
  mime.tcl procedure qp_encode should change '=' 
  characters to '03D'. (Same than trf-package does). At 
  least Outlook Express/Exchange server can't decode 
  html-data if this isn't done. 

  New code-x3D inserted:

  proc mime::qp_encode {string {encoded_word 0} 
  {no_softbreak 0}} {
      # 8.1+ improved string manipulation routines used.
      # Replace outlying characters, characters that would 
  normally
      # be munged by EBCDIC gateways, and special Tcl 
  characters "[\]{}
      # with =xx sequence

      regsub -all -- \
      {[\x00-\x08\x0B-\x1E\x21-\x24\x3D\x40
  \x5B-\x5E\x60\x7B-\xFF]} \
      $string {[format =%02X [scan "\\&" %c]]} 
  string


tkt_uuid: 607085ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: struct
priority: 8
foundin: None
title: priority queue
cmimetype: text/plain
submitter: mic42
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-15T22:02:20
comment:
  Hi, simple priority queue implementation.

  Not perfect and missing docs (and more tests, as always).


tkt_uuid: 607745ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: bwidget
priority: 5 Medium
foundin: None
title: BWidget 1.4.1 ListBox Binding Bug
cmimetype: text/plain
submitter: polynr
assignee: damonc
closer: damonc
closedate: 2003-10-20T23:17:10
comment:
  ### Iv'e noticed a report similar to this, but am not 
  ### sure this is exactly the same bug, so here you go:

  ### create some ListBox with some junk in it
  package require BWidget 1.4.1
  image create photo p1 -file 
  c:/tcl/lib/bwidget1.4.1/images/open.gif
  ListBox .l
  pack .l
  .l configure -multicolumn 0  -bg SystemWindow
  .l insert end i1 -image p1 -text hello
  .l insert end i2 -image p1 -text hello
  .l insert end i3 -image p1 -text hello
  .l insert end i4 -text hello
  .l selection set i1

  ### This works as expected
  .l bindText <Enter> ".l selection set "

  ### This does not work as expected, %W is replaced 
  with the canvas
  ### widget name instead of the ListBox's name
  .l bindText <Enter> "%W selection set "

  ### You can fix this error by adding the following line
  ### To ListBox::bindText
  ### regsub -all {%W} $script $path script
  ###


tkt_uuid: 607749ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: BWidget ListBox/Tree Selection Outline
cmimetype: text/plain
submitter: nobody
assignee: hobbs
closer: hobbs
closedate: 2003-05-14T23:19:40
comment:
  I Would also like to ask to expose two new options in 
  the listbox and tree widgets: 
   
    -selectoutline and -selectoutlinestipple 

  which would control the outline and stipple of the  
  selection rectangle in the canvas so it would be possible 
  to have it look like the windows selection in Listboxes 
  that have usually a black outline with a dashed stipple

  thanks
  /NL


tkt_uuid: 609750ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Out of Date
subsystem: None
priority: 5 Medium
foundin: None
title: Makefile.in should support --libdir
cmimetype: text/plain
submitter: das
assignee: hobbs
closer: das
closedate: 2003-02-22T12:01:43
comment:
  tcllib (and TEA in general) should support the --libdir 
  configure option to set its $(pkglibdir), it currently hardcodes 
  this to $(prefix)/lib , which breaks on Mac OS X where libdir is 
  completely unrelated to prefix.

  The following patch fixes this and shouldn't break anything 
  on other platforms since the default for $(libdir) is precisely 
  $(prefix)/lib :

  Index: Makefile.in
  ===============================================
  ====================
  RCS file: /cvsroot/tcllib/tcllib/Makefile.in,v
  retrieving revision 1.79
  diff -u -r1.79 Makefile.in
  --- Makefile.in 19 Aug 2002 18:28:05 -0000      1.79
  +++ Makefile.in 16 Sep 2002 03:20:26 -0000
  @@ -177,7 +177,7 @@
   
   DESTDIR =
   
  -pkglibdir = $(prefix)/lib/@PACKAGE@@VERSION@
  +pkglibdir = $(libdir)/@PACKAGE@@VERSION@
   
   top_builddir = .
   


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

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

  # diff smtpd.tcl patched_smtpd.tcl

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


tkt_uuid: 611477ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ProgressDlg bug
cmimetype: text/plain
submitter: nobody
assignee: damonc
closer: oehhar
closedate: 2009-07-01T14:19:17
comment:
  I wrote the following simple test program (test.tcl)

  package require BWidget
  set pb [ProgressDlg .pb]
   
  $pb configure -bg red
   
  But when I try to run it I get an error message. It seems 
  to be impossible to execute the last command, because 
  the interpeter doesn't find the command .pb.
  See attached file for error description.


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

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


tkt_uuid: 613134ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: bwidget
priority: 5 Medium
foundin: None
title: PanedWindow does not display correctly
cmimetype: text/plain
submitter: nobody
assignee: hobbs
closer: hobbs
closedate: 2003-02-25T07:59:14
comment:
  In version 1.4.1 of BWidget PanedWindows do not 
  display the second pane anymore. Windows need 
  resize to make second pane visible.

  Please checkout attached sample code:

  Klaus Meywirth
  klaus.meywirth@fci.com


tkt_uuid: 614591ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 5 Medium
foundin: None
title: ::namespace::cmd vs namespace::cmd
cmimetype: text/plain
submitter: davidw
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-11T19:37:37
comment:
  In some modules - control and mime, for instance,
  commands don't start with a leading '::'.  In most of
  the rest of them, :: is used.  This should be
  consistent throughout.


tkt_uuid: 616522ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Out of Date
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ListBox::_multiple_select error
cmimetype: text/plain
submitter: nobody
assignee: hobbs
closer: hobbs
closedate: 2002-09-30T16:50:55
comment:
  When trying to select the first elemet in the my list I get 
  the following error ...

  can't read "y": no such variable
      while executing
  "if { $y <= 6 } {
          if { [lindex [$path.c yview] 0] > 0 } {
              set scroll [list yview -1]
              DropSite::setcursor sb_up_arrow
    ..."
      (procedure "ListBox::_multiple_select" line 53)
      invoked from within
  "ListBox::_multiple_select .menu.frame.control.f0.frame.
  sTitleFrameControl.f.sTitleExecuteTCList.f.sTitleOP.f.list
  box n [string range [lindex [.menu.fr..."
      (command bound to event)

  Found in ...
       ActiveState ActiveTcl 8.3.4.2


tkt_uuid: 616911ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Out of Date
subsystem: log
priority: 4
foundin: None
title: services for log
cmimetype: text/plain
submitter: davidw
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-03-25T05:26:35
comment:
  This is my first go at creating 'services' for the log
  package.  It is not complete: it is lacking
  documentation and testing.  I am including it here not
  for review for inclusion, yet, but to make sure I'm on
  the right track.  I will post to the mailing list as
  well, which is better suited to quick discussion
  (October 2002).


tkt_uuid: 618241ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: ftp
priority: 5 Medium
foundin: None
title: ftp::Get <source> -variable <var> bombs
cmimetype: text/plain
submitter: rkroll
assignee: andreas_kupries
comment:
  ftp::Get <source> -variable <var>  is used by ftpvfs
  and fails everytime. 

  Test code:
    package require ftp

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

    puts $X
    exit


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

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


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


tkt_uuid: 619548ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: mime
priority: 5 Medium
foundin: None
title: mime::field_decode is case sensitive
cmimetype: text/plain
submitter: giggls
assignee: mrose
closer: patthoyts
closedate: 2003-01-06T15:14:49
comment:
  Hi there,

  Looks like mime::field_decode does not work with some
  encodings written in Lowercase. Upercase is working
  fine though.

  This does not seem to be platform-specific (tested on
  Unix and WIn2k).

  Here is some example code:

  --cut--
  #!/usr/bin/tclsh

  package require mime

  # this works fine
  puts [mime::field_decode =?ISO-8859-1?B?5Pb8IN8=?=]
                   
  # this does not work
  puts [mime::field_decode =?iso-8859-1?B?5Pb8IN8=?=]
  --cut--


tkt_uuid: 620062ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: pop3
priority: 5 Medium
foundin: None
title: bug in retrieve
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-10-14T19:18:34
comment:
  There is a bug in the main loop within the 
  pop3::retrieve proc. I think this bug may be caused 
  by the fact that the Tcl 8.3 scan command behaves 
  differently from the documentation. In the loop over 
  index from start to end, there is a switch statement. 
  This bug may occur for either the retr or the list 
  elements in the switch statement.
  The bug is caused by these lines:

  set sizeStr [::pop3::send $chan "RETR $index"]
  if {[scan $sizeStr {%d %s} size dummy] < 0} {
  .....

  Note that it is expected that sizeStr contains a 
  decimal number and a string. The result "< 0" will be 
  returned if neither a decimal nor a string is found. 
  But, I have tested the scan function under Tcl 8.3 and 
  it appears to return 0, NOT -1, if no conversions are 
  performed! For example, the Tcl command

  scan "This is a dummy string" {%d %s} d s

  will return 0 under Tcl 8.3 and neither d nor s will be 
  defined. Since the code currently checks for -1, the 
  code crashes because the decimal variable "size" is 
  not defined.

  This bug should be easy to fix. Just change the test 
  from <0 to <=0. Even better would be to make sure 
  that the number of conversions is at least as high as 
  the index of interest into the conversion set. By this I 
  mean the following:
  If the format is {%d %s} and we are interested only in 
  the first %d parameter, then the test should be 
  if {[scan $sizeStr {%d %s} size dummy] < 1} {
    handle no size
  } else {
    use $size
  }

  As another example we should have in the list branch:

  if {[scan $sizeStr {%d %d %s} dummy size dummy] 
  < 2} {
    handle no size
  } else {
    use $size
  }
  because we need at least two conversions to get size 
  defined.


tkt_uuid: 620103ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Bug in Button armcommand
cmimetype: text/plain
submitter: nobody
assignee: hobbs
closer: hobbs
closedate: 2002-10-14T20:43:55
comment:
  See the following script:

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


  By pressing the button you get the following error 
  message:

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


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

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


tkt_uuid: 620612ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: crc
priority: 5 Medium
foundin: None
title: Testsuite failures
cmimetype: text/plain
submitter: andreas_kupries
assignee: patthoyts
closer: patthoyts
closedate: 2003-01-06T14:36:16
comment:
  I ran the tcllib testsuite, using a tclsh 8.3.4 on a
  linux/ix86 system. The build directory was outside of
  the tcllib source directory, actually a direct sibling.
  Enclosed the log generated when testing crc.


tkt_uuid: 620753ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: New options for labelframe
cmimetype: text/plain
submitter: decosterjos
assignee: hobbs
closer: hobbs
closedate: 2002-10-14T19:35:18
comment:
  Hi,

  The BWidget LabelFrame widget uses a BWidget Label
  widget to display a label or a frame. Currently only a
  -text option is available to set the text of the label
  frame. This patch will also provide the -textvariable,
  -image and -bitmap options to set the label text or
  image.

  Jos.


tkt_uuid: 620754ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Patch to allow TkResource with toplevels
cmimetype: text/plain
submitter: decosterjos
assignee: hobbs
closer: hobbs
closedate: 2002-10-14T19:30:52
comment:
  Hi,

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

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

  Jos.


tkt_uuid: 620852ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: mime
priority: 5 Medium
foundin: None
title: Extra CRs added during copymessage (WinX
cmimetype: text/plain
submitter: jaspert
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2004-05-04T18:07:34
comment:
  file model.cnv is attached. Following sequence should 
  reproduce file exactly but it introduces differences
  (Problem exists under WinXP but not Linux)
  Generally an extra CR seems to get inserted into the file
  after a certain number of chars

  Jasper Taylor@SPIROGRAPH /cygdrive/m/Documents and 
  Settings/Jasper Taylor/My Documents/Tests
  $ tclsh
  % info patchlevel
  8.4.0
  % package require mime
  1.3.2
  % mime::initialize -canonical text/plain -file model.cnv
  ::mime::1
  % set f [open model.mm1 w]
  file8a4f20
  % fconfigure $f -translation binary
  % mime::copymessage ::mime::1 $f
  % close $f
  % set g [open model.cnv1 w]
  file8a4f20
  % fconfigure $g -translation binary
  % mime::initialize -file model.mm1
  ::mime::2
  % puts -nonewline $g [mime::getbody ::mime::2]
  % close $g
  % diff model.cnv model.cnv1
  152c152,153
  < $c create line 153.208211621 304.213304026 
  153.208211621 304.213304026 -capsty
  le round -tags {arc00103 startblob realwidth
  (4.83329818985)} -width 4.8332981898
  5
  ---
  > $
  > c create line 153.208211621 304.213304026 
  153.208211621 304.213304026 -capstyl
  e round -tags {arc00103 startblob realwidth
  (4.83329818985)} -width 4.83329818985

  229a231
  >
  child process exited abnormally


tkt_uuid: 621178ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: BWidget error in Tree under 8.4
cmimetype: text/plain
submitter: damonc
assignee: jenglish
closer: jenglish
closedate: 2003-01-24T22:22:58
comment:
  The following code under ActiveTcl 8.4.0.1 under Windows:

  package require BWidget

  pack [Tree .t]

  .t insert end root foo -text Foo
  .t selection set foo
  .t delete foo


  Yields the result:

  .t selection set: Cannot select unknown node "foo".
      while executing
  "selection .t set foo"
      ("eval" body line 1)
      invoked from within
  "eval selection $path set $sel"
      (procedure "Tree::delete" line 18)
      invoked from within
  "Tree::delete .t foo"
      ("eval" body line 1)
      invoked from within
  "eval Tree::$cmd .t $args"
      (procedure ".t" line 1)
      invoked from within
  ".t delete foo "

  This only occurs if the deleted node is selected.  If
  you remove the "selection set" line, everything works fine.


tkt_uuid: 621331ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Allow delete of selected Tree nodes
cmimetype: text/plain
submitter: decosterjos
assignee: hobbs
closer: hobbs
closedate: 2002-10-14T19:27:41
comment:
  Hi,

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

  Jos.


tkt_uuid: 622927ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ProgressBar update problem
cmimetype: text/plain
submitter: decosterjos
assignee: hobbs
closer: hobbs
closedate: 2002-10-14T19:24:37
comment:
  Hi,

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

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

  Jos. 


tkt_uuid: 625327ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Works For Me
subsystem: smtp
priority: 5 Medium
foundin: None
title: Problem using i as a counter at level 0
cmimetype: text/plain
submitter: lduperval
assignee: gwlester
closer: gwlester
closedate: 2002-12-02T04:25:22
comment:
  set mailHost localhost
  set mailPort 25
  set myAddress lduperval@yahoo.com

  set addresses {
  lduperval@yahoo.com
  }

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

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

  for {set i 0} {$i < [llength $addresses]} {incr i} {
  puts "Sending [expr {$i+1}]/[llength $addresses]"
  send_simple_message [lindex $addresses $i] "Test: ne
  pas répondre"\
    "Ceci n'est qu'un test. Il n'est pas nécessaire de
  répondre.\n\nL"
  }

  This is the error I get:

  Sending 1/1
  can't read "i": no such variable
      (reading value of variable to increment)
      invoked from within
  "incr i"
      ("for" loop-end command)
      invoked from within
  "for {set i 0} {$i < [llength $addresses]} {incr i} {
  puts "Sending [expr {$i+1}]/[llength $addresses]"
  send_simple_message [lindex $addresses $i] "Te..."
      (file "sendmail.tcl" line 27)

  Now, if I change "i" to "ii", it works.


tkt_uuid: 626819ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: bwidget
priority: 5 Medium
foundin: None
title: incomplete doc for tree
cmimetype: text/plain
submitter: svogel
assignee: hobbs
closer: dev_null42a
closedate: 2006-09-28T15:46:44
comment:
  In the docs for tree the "widget command" 
  for "pathName find findInfo ?confine?" (an interesting and 
  needed function) and
  "pathName line node" (if that is public function?) is 
  missing.


tkt_uuid: 627521ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: app: tkchat
priority: 5 Medium
foundin: None
title: patch to searching the chat history
cmimetype: text/plain
submitter: pascalscheffers
assignee: patthoyts
closer: patthoyts
closedate: 2003-03-10T21:18:10
comment:
  This patch adds two commands /? and /! to start
  searching and cancel searching for a search string:

  /?pascal

  will search for the regular expression 'pascal' and
  mark it orange (by default). 

  /? 

  Will search again for the last expression and mark the
  next one found.

  /! will clear all markers and jump the widget back to
  [.txt see end]

  I've also added the color to the color preferences, so
  you can customize the color.


tkt_uuid: 627960ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: smtpd
priority: 5 Medium
foundin: None
title: welcome string hostname
cmimetype: text/plain
submitter: gionco
assignee: patthoyts
closer: gionco
closedate: 2002-12-11T16:56:59
comment:
  The welcome string is now "220 [info hostname] ..." also
  if you call "smtpd::start localhost" .

  This patch addresses this issue.


tkt_uuid: 628041ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: BWidget Tree node names with brackets
cmimetype: text/plain
submitter: decosterjos
assignee: hobbs
closer: hobbs
closedate: 2003-05-14T23:27:16
comment:
  Hi,

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

  Jos.


tkt_uuid: 630381ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: mime
priority: 5 Medium
foundin: None
title: Cannot save multi-part MIME
cmimetype: text/plain
submitter: jaspert
assignee: mrose
closer: patthoyts
closedate: 2003-01-06T23:39:18
comment:
  I am using the ActiveTcl 8.4.1 which I downloaded and installed yesterday
  on a Windows ME machine

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

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

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


tkt_uuid: 630405ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Duplicate
subsystem: bwidget
priority: 5 Medium
foundin: None
title: BWidget LabelEntry -textvariable option
cmimetype: text/plain
submitter: decosterjos
assignee: hobbs
closer: patthoyts
closedate: 2003-01-19T23:24:57
comment:
  As reported on CLT, te change to the _LabelFrame_
  widget were the _-textvariable_, _-image_ and _-bitmap_
  option were added to the _LabelFrame_ widget now causes
  problems with the _LabelEntry_ widget. This patc will
  solve this by renaming the 3 options mentioned above.


tkt_uuid: 630500ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: BWidget panedwindow _realize problem
cmimetype: text/plain
submitter: decosterjos
assignee: hobbs
closer: hobbs
closedate: 2003-02-25T08:01:24
comment:
  Hi,

  On CLT a problem with the __realize_ function of the
  _PanedWindow_ widget was reported. The call to
  __realize_ in the _add_ function caused incorrect
  beavior but is needed when adding new panes after te
  widget received a _Configure_ event. To solve this,
  __realize_ is only called from _add_ after te
  _Configure_ event is received.

  Jos.


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


tkt_uuid: 633250ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Out of Date
subsystem: doctools
priority: 8
foundin: None
title: mpexpand: Tcl 8.3 required
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-14T06:08:20
comment:
  Using configure will find required Tcl 8.3

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

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

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


  Please insert

  package require Tcl 8.3

  to mpexpand and it'll work.


tkt_uuid: 634258ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: None
priority: 5 Medium
foundin: None
title: package require tcllib returns "Don't ..
cmimetype: text/plain
submitter: skielty
assignee: dgp
closer: dgp
closedate: 2002-12-04T23:11:39
comment:
  etc. -- it seems this is a bit unconventional and
  really belongs in the docs --- package require
  <package> should  return package <package> not found or
  a version string. I expect to load a tcllib package
  when I do a package require so that I can maintain my
  code and still upgrade -- instead I get programming
  instructions..  


tkt_uuid: 636977ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: uri
priority: 5 Medium
foundin: None
title: news scheme not recognized
cmimetype: text/plain
submitter: davidw
assignee: andreas_kupries
closer: davidw
closedate: 2002-11-15T20:33:22
comment:
  The 'news' and 'nntp' schemes are not implemented. 
  These aren't that uncommon.  I will see about doing
  this if I have a moment.


tkt_uuid: 637695ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: smtpd
priority: 1 Zero
foundin: None
title: Invalid response after receiving DATA
cmimetype: text/plain
submitter: rokar
assignee: patthoyts
closer: rokar
closedate: 2002-11-13T10:59:25
comment:
  After receiving a DATA command, smtpd.tcl first replies
  "250 OK"  then "354 Enter mail ..." . RFC 2821 states
  that "DATA" should be answered by "354 ..." and "250
  ..." AFTER Data submission has finished.


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


tkt_uuid: 638075ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: uri
priority: 5 Medium
foundin: None
title: JoinHttpInner doesn't deal with fragment
cmimetype: text/plain
submitter: davidw
assignee: davidw
closer: davidw
closedate: 2002-11-15T20:34:49
comment:
  tclsh8.3 [~/workshop/tcllib/modules/uri]uri::split 
  http://tcl.apache.org/websh/faq.ws3#generic

  fragment generic port {} path websh/faq.ws3 scheme http
  host tcl.apache.org query {}

  uri::join fragment generic port {} path 
  websh/faq.ws3 scheme http host tcl.apache.org query {}

  http://tcl.apache.org/websh/faq.ws3

  The fragment is gone!

  This patch fixes that, and adds a test.


tkt_uuid: 638236ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: bwidget
priority: 5 Medium
foundin: None
title: BWidget: Entry "-state disabled" doesn't gray
cmimetype: text/plain
submitter: schroedter
assignee: damonc
closer: damonc
closedate: 2003-10-20T23:16:02
comment:
  There is a difference between TK's entry and BWidget's
  Entry
  concerning the -state disabled option.

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

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

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

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

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


tkt_uuid: 639036ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: uri
priority: 5 Medium
foundin: None
title: resolve doesn't work with url like ?N=D
cmimetype: text/plain
submitter: davidw
assignee: davidw
closer: davidw
closedate: 2002-11-15T20:34:22
comment:
  If you look at a page such as

  http://www.dedasys.com/freesoftware/patches/

  The HTML sources provide links like ?N=D which change
  the behavior of how Apache displays the file listings.
   These url's are valid.

  The problem is that 'resolve' doesn't handle these well:

  uri::resolve
  http://dedasys.com/freesoftware/patches/?M=A ?N=D
  http://dedasys.com/freesoftware/patches/?M=A?N=D

  This is not how a browser resolves these url's.


tkt_uuid: 640932ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 6
foundin: None
title: htmlparse not parsing incomplete tags
cmimetype: text/plain
submitter: scottg
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-03-25T05:18:49
comment:
  htmlparse is supposed to be able to parse incomplete 
  tags by stuffing the incomplete part into a global var and 
  then, apparently, fishing it back and prepending it to it's 
  next string input. This works fine only if the rest of the 
  incomplete tag is in the same string, but not if the 
  incomplete tag is in another string entirely, e.g. if 
  separate lines are being processed in a foreach loop. 
  I'm using tcllib 1.3.

  Here's a script that shows the bad behavior:

  #!/bin/tclsh

  package require Tcl 8.4
  package require struct 1.2.1
  package require cmdline 1.2
  package require htmlparse 0.3

  lappend lines {<root>}
  lappend lines {<tag>Hi there</tag>}  
  lappend lines {<tag}
  lappend lines {>Hi there</tag>}
  lappend lines {</root>}

  proc tag_handler { tag slash attr text } {
          if {[string equal $tag hmstart]} {
                  return
          }
          puts "TAG=$tag SLASH=$slash"
  }

  foreach localline $lines {
          ::htmlparse::parse -cmd tag_handler -incvar 
  partial_xml $localline
  }

  Here's the output:

  axis-goodwins> ./bad-htmlparse.tcl 
  TAG=root SLASH=
  TAG=tag SLASH=
  TAG=tag SLASH=/
  TAG=tag SLASH=/
  TAG=root SLASH=/

  You can see that the third 'tag' should be an opening 
  tag but is being marked as a closing tag. The opening 
  tag never gets processed, and no errors are thrown.

  If I use htmlparse to parse this string:

  set line {
  <root>
  <tag
  >Hi there</tag>
  </root>
  }

  it works fine.

  /s.


tkt_uuid: 643337ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: html
priority: 5 Medium
foundin: None
title: ::html::textInput does not process args
cmimetype: text/plain
submitter: gwlester
assignee: gwlester
closer: gwlester
closedate: 2002-11-25T02:36:23
comment:
  The documentation for ::html::textInput reads:

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

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

  For example: 

      ::html::textInput foo width=40

  generates:

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

  Instead of:

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


tkt_uuid: 647974ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: fileutil
priority: 7 High
foundin: None
title: find has problems recursing a metakit fs
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-07-05T04:18:24
comment:
  The command 'fileutil::find' has problems when recursing 
  a directory structure coming from a metakit filesystem 
  (fr example starkit). It reports the first file per directory 
  (and the directory), but nothing else.

  I believe the reason for this is that the metakit FS 
  returns bogus i-node information to [file stat]. And 'find' 
  uses 'file stat' to get i-node information to stop the 
  recursion for already visited files and directories. This 
  part of its handling of symbolic links, to break circular 
  link chain.

  A bug will be entered a tclvfs too, refering to this report.


tkt_uuid: 648679ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: cmdline
priority: 5 Medium
foundin: None
title: bad namespace usage
cmimetype: text/plain
submitter: dgp
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-11T00:56:25
comment:
  Many procs in the cmdline package call other procs 
  in same package in a strange way, something like:

  proc cmdline::getoptions {...} {
      ...
      while {[set err [cmdline::getopt ...]]} {...
      ...
  }

  Within the body of [cmdline::getoptions] the current
  namespace is ::cmdline, so either [getopt] should
  be called relying on that context or fully qualified
  [::cmdline::getopt] should be called.  I strongly prefer
  the former myself.

  As is, things will go haywire if someone defines
  a ::cmdline::cmdline namespace and defines a
  [getopt] command in it.


tkt_uuid: 649383ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: -textvariable mapped to label and entry
cmimetype: text/plain
submitter: nobody
assignee: hobbs
closer: patthoyts
closedate: 2003-01-17T21:59:12
comment:
  If I want to bind the entry of a LabelEntry to a text
  variable by option -textvariable, not only the entry
  but also the label field is bound to it. So I can't
  give a fix text for the label and bind the value typed
  in by the user to a variable automatically.

  Solution:
  I handle the option -textvariable in the same way as
  width, font, anchor, ..., i.e. add it to the prefix
  list of the Label - now the option -textvariable is
  only used for the entry field.

  Here is the diff of the original version of file
  'labelentry.tcl' and my corrected version:

  20c20
  <         prefix {label -justify -width -anchor -height
  -font -textvariable} \
  ---
  >         prefix {label -justify -width -anchor -height
  -font} \


tkt_uuid: 650919ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
resolution: Fixed
subsystem: pop3d
priority: 5 Medium
foundin: None
title: STAT command produces incorrect results
cmimetype: text/plain
submitter: neilhampton
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2002-12-09T18:15:40
comment:
  The POP3 RFC specifies that STAT returns a +OK 
  response followed by two numbers (number of 
  messages, and number of octets).

  The tcllib pop3d returns the first number and then 
  a string.  This causes some pop3d clients problems 
  (notably the Java Mail 1.3 Sun POP3 provider).


tkt_uuid: 650977ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: pop3d
priority: 5 Medium
foundin: None
title: bgerror when pop3 client disconnects
cmimetype: text/plain
submitter: neilhampton
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-10-21T21:09:37
comment:
  If the pop3 client closes its socket to the pop3d 
  server as soon as it has sent the QUIT message it 
  sometimes causes a background error when the 
  pop3d server tries to close the connection via an 
  after idle ... command.

  can't read "conn(sock248)": no such element in 
  array
  can't read "conn(sock248)": no such element in 
  array
      while executing
  "upvar $conn($sock) cstate"
      (procedure "::pop3d::CloseConnection" line 6)
      invoked from within
  "::pop3d::CloseConnection mailserver sock248"
      ("after" script)


tkt_uuid: 652140ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Rejected
subsystem: smtpd
priority: 5 Medium
foundin: None
title: HELO and EOL cumulative patches
cmimetype: text/plain
submitter: gionco
assignee: patthoyts
closer: patthoyts
closedate: 2002-12-13T23:35:33
comment:
  I've noticed a small bug in smtpd triggered by MS
  Outlook. Sometimes, when you send a PDF file attached
  to a message, Outlook sets the MIME type to
  "quoted-printable" and the file is not base-64 encoded.

  Since we read one line at a time, lines ending with
  CR+LF will be converted by TCL in LF only; this causes
  errors
  with both Acroread and ghostview.

  The patch splits the DATA section on LF only; CR is
  considered a normal character; includes (and thus
  obsoletes) the previously submitted patches for 
  hostname in HELO, QUIT, etc...


tkt_uuid: 653266ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ListBox Shift-extended selection fails
cmimetype: text/plain
submitter: ndwinton
assignee: hobbs
closer: hobbs
closedate: 2003-07-17T19:40:03
comment:
  Extending a selection using the shift key in a BWidget 
  ListBox causes a failure if the list item tags are not 
  integers (and maybe if they are too). It appears to 
  assume that the tags are numbers and applies "incr" to 
  them. I have attached a patch to fix this problem.


tkt_uuid: 654762ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: doctools
priority: 7 High
foundin: None
title: doctools - Add backend 'docbook'
cmimetype: text/plain
submitter: davidw
assignee: andreas_kupries
comment:
  It would be nice to have a backend for doctools that
  produces docbook.  Because docbook has more information
  than doctools, this transformation cannot be completely
  automated, and requires human intervention to complete,
  but at least it would be a start.

  Eventually, it would be nice to see Tcl itself make use
  of docbook, but I  don't suppose that will happen any
  time soon.


tkt_uuid: 654976ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Invalid
subsystem: app: tkchat
priority: 5 Medium
foundin: None
title: Text highlighting for chat window
cmimetype: text/plain
submitter: lukekalemyers
assignee: eee
closer: patthoyts
closedate: 2004-02-08T00:22:59
comment:
  Adds a menu entry called "Find" to the File menu. This
  menu invokes a UI to highlight a string of text in the
  chat window.


tkt_uuid: 656336ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Duplicate
subsystem: app: tkchat
priority: 5 Medium
foundin: None
title: Highlighting for tkchat
cmimetype: text/plain
submitter: nobody
assignee: hartweg
closer: eee
closedate: 2002-12-19T16:29:39
comment:
  This code provides to highlight interesting text in the
  tkchat message window.

  The user interface can be invoked in two ways:
  1.) Through the Find entry on the FIle menu.
  2.) By entering /find in the message post window.
  (command line) The /find command may have an optional
  argument, which will then be used as the search string.

  To highlight an exact string or regexp pattern, enter
  it in "Find text" field.  All matches in the chat
  window will be highlighted.  Should the search be a
  time consuming one, it will pause when the Find dialog
  is closed and resume when it is re-opened.

  To remove all highlighting, clear the "Find text" field
  in the Find dialog.

  Known caveats:

  Sub-strings are not highlighted separately from the
  rest of the matching text when using regexp
  sub-matching. The whole match will be highlighted the
  same. This is a limitation of of the [text] -search
  command.


tkt_uuid: 659238ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: ftp
priority: 6
foundin: None
title: FTP Support for MDTM setting ModTime
cmimetype: text/plain
submitter: ddrogahn
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-03-31T22:58:19
comment:
  Some simple changes to allow setting of file modified 
  time on FTP servers that allow it (which apparently isnt 
  many)

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

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

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

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

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


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


tkt_uuid: 664392ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: uri
priority: 6
foundin: None
title: Test failures in uri module for Win32
cmimetype: text/plain
submitter: patthoyts
assignee: andreas_kupries
comment:
  The uri package is failing the recent uri::canonicalize
  tests under Win32 systems.

  The problem is some of the tests are using the file
  scheme with a hostname part:
    file://localhost/a/b/c

  When using Windows a split and join operation results in
    file://localhost:/a/b/c
  due to code in the uri::join for the file scheme.

  Common usage under windows is to permit the drive
  letter to be used as the host part and we are
  supporting this - however, we must also support the RFC
  specification too.

  We can expect to use  file://c:/autoexec.bat (although
  this should strictly be file:///c:/autoexec.bat - thus
  using a null host part). Also we must permit
  file://localhost/c:/ as this is what the RFC specifies.

  Other problems: the path section must be in the URL/URI
  style.
  % uri::join scheme file path {c:\windows}
  file://c:\windows

  This _MUST_ be file://c:/windows. Backslashes are
  illegal in URLs. This goes for Mac's and VMS too. I
  believe that [file normalize] will fix the host's path
  into very nearly correct RFC style. Probably just need
  some quoting of illegal characters (like space). [file
  native] should probably be invoked in the uri::split
  function too.


tkt_uuid: 665737ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: exif
priority: 7 High
foundin: None
title: (v1.3) coding error causes failure in exif::makerNote
cmimetype: text/plain
submitter: timje
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-01T19:42:56
comment:
  In tcllib 1.3's exif module, in the exif::makerNote
  procedure, under the "$tag == 15" elseif (line 544),
  there are eight references in 'if' expressions to '$v'
  instead of the proper '$value'.  This bug goes
  unnoticed in many cases, but an error will occur if
  '$v' happens to contain a value that TCL can't convert
  to a boolean.  In my case, parsing JPEGs from a Canon
  EOS-D60, 3 files out of 150 caused a problem.  In each
  case, $v returned "+1/3", which TCL refused to booleanize.

  The fix ($v => $value in the eight 'if' clauses) fixed
  things nicely.


tkt_uuid: 671821ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Duplicate
subsystem: None
priority: 5 Medium
foundin: None
title: ScrolledWindow flashing scrollbars
cmimetype: text/plain
submitter: lewca43
assignee: nobody
closer: hobbs
closedate: 2003-02-25T10:03:12
comment:
  ScrolledWindow has a bug that the scrollbars will be
  gridded, then imediately ungridded indefinately under
  special circumstances. For instance, if a text widget
  is placed in the ScrolledWindow and the very  last
  viewable line causes the horizontal scrollbar to be
  gridded, the scrollbar will cause the last line to go
  out of view, thus causing itself to be ungridded,
  causing the last line to be viewable again, causing the
  scrollbar to be gridded .........

  This patch will fix the scrollbar flash.

  Note, using the same example as above, if the last line
  in a text field causes the scrollbar to be gridded, the
  scrollbar will cover the last line and the scrollbar's
  handle will be fully expanded, making the scrollbar
  somewhat unneeded. But it is better than the
  alternative of an infinitel loop that eventually causes
  a bgerror.


tkt_uuid: 672956ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: math
priority: 8
foundin: None
title: New submodule for math - optimisation
cmimetype: text/plain
submitter: arjenmarkus
assignee: kennykb
closer: andreas_kupries
closedate: 2003-04-14T07:32:07
comment:
  I would like to submit a first version of a new
  submodule, optimize.
  It contains two working procedures, to optimize a given
  function. Work is being carried out to add a linear
  program solver.

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


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

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

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


tkt_uuid: 674330ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: dns
priority: 5 Medium
foundin: None
title: dns: Tcl requirement not specified
cmimetype: text/plain
submitter: dgp
assignee: patthoyts
closer: patthoyts
closedate: 2003-01-25T21:46:08
comment:
  package require Tcl $requiredVersion

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


tkt_uuid: 674331ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: irc
priority: 5 Medium
foundin: None
title: irc: Tcl requirement not specified
cmimetype: text/plain
submitter: dgp
assignee: davidw
closer: dgp
closedate: 2003-01-25T18:06:27
comment:
   package require Tcl $requiredVersion

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


tkt_uuid: 674468ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Out of Date
subsystem: bwidget
priority: 5 Medium
foundin: None
title: LabelEntry -textvariable fails
cmimetype: text/plain
submitter: aspenlogic
assignee: hobbs
closer: hobbs
closedate: 2003-01-25T21:16:53
comment:
  The -textvariable option of the LabelEntry widget
  causes both the label text and the entry contents to
  reflect the value of the specified variable. This is
  not desirable. 

  set wages "29.00"
  LabelEntry .lb -label "Wage \$" -textvariable wages

  causes something like this to appear when .lb is packed:

                  +-----------------+
       29.00  |  29.00           |
                  +-----------------+

  Instead of

                  +----------------+
     Wage $ | 29.00           |
                  +----------------+

  This is from ActiveTcl 8.4.1.0 Release, BWidget 1.5


tkt_uuid: 676976ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: uri
priority: 5 Medium
foundin: None
title: Regexp in uri::split allows ',' characters
cmimetype: text/plain
submitter: jasonmills
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-11T21:18:16
comment:
  The first regexp command in the uri::split function 
  is:

  regexp -- {^([a-z0-9+-.][a-z0-9+-.]*):} $url 
  dummy scheme

  I think it should be:

  regexp -- {^([a-z0-9+.-][a-z0-9+.-]*):} $url 
  dummy scheme

  The way it is currently, the range of characters '+' 
  through to '.' are included, which incorrectly 
  includes ',' in addition to the intended 
  characters '+', '-', and '.' (assuming ASCII character 
  set).


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


tkt_uuid: 681734ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: tkchat - logging data change
cmimetype: text/plain
submitter: lvirden
assignee: patthoyts
comment:
  It would be useful if /msg and /memo messages were
  logged uniquely in tkchat, so that someone could look
  through the log output if they needed to locate the
  whispers sent during an extended period of time of
  distraction from the chat.


tkt_uuid: 682187ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: math
priority: 8
foundin: None
title: Add a statistics module
cmimetype: text/plain
submitter: arjenmarkus
assignee: arjenmarkus
closer: andreas_kupries
closedate: 2003-04-16T19:46:29
comment:
  The module I propose to add contains a set of
  statistical procedures for analysing and manipulating
  data. It comes with a full set of documentation and a
  reasonable set of tests.

  Though still work in progress, I would like to submit
  it, as the parts that are complete may be useful for
  somebody. 


tkt_uuid: 684462ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: parasite rectangle in BWidget demo - since 1.3.1
cmimetype: text/plain
submitter: vwartelle
assignee: hobbs
closer: hobbs
closedate: 2003-05-15T00:07:02
comment:
  In the BWidget demo, 
  selecting the Tree tab creates a rectangle at the left
  of the main window. 

  This behaviour has appeared since BWidget 1.3.1 at 
  least. 


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

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

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


tkt_uuid: 685270ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 5 Medium
foundin: None
title: README documentations requirement?
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-03-28T17:22:08
comment:
  the README, v 1.3 says:

  * the module should have both documentation (in XML,
  man, or HTML
    form) and a test suite (in the form of a group of
  *.test files in
    the module directory).


  the formats listed do not seem to include doctools -
  yet that _seems_ to be the preferred format these days.
   Should not that format be listed?


tkt_uuid: 686065ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
title: popups!
cmimetype: text/plain
submitter: dgp
assignee: hartweg
closer: patthoyts
closedate: 2004-04-30T13:41:34
comment:
  When the multi-line entry is used
  to enter an action message
  (one that begins /me) and that
  message spans multiple lines,
  tkchat pops up a window for 
  each line.


tkt_uuid: 687912ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: crc
priority: 5 Medium
foundin: None
title: crc16.tcl missing in tcllib-1.[23].tar.gz
cmimetype: text/plain
submitter: nobody
assignee: patthoyts
closer: patthoyts
closedate: 2003-02-17T21:03:23
comment:
  % gunzip < tcllib-1.2.tar.gz | tar tf - | grep crc
  tcllib-1.2/modules/crc/
  tcllib-1.2/modules/crc/crc32.n
  tcllib-1.2/modules/crc/sum.n
  tcllib-1.2/modules/crc/pkgIndex.tcl
  tcllib-1.2/modules/crc/cksum.test
  tcllib-1.2/modules/crc/crc32.test
  tcllib-1.2/modules/crc/sum.tcl
  tcllib-1.2/modules/crc/cksum.tcl
  tcllib-1.2/modules/crc/crc32.tcl
  tcllib-1.2/modules/crc/ChangeLog
  tcllib-1.2/modules/crc/sum.test
  tcllib-1.2/modules/crc/cksum.n

  % gunzip < tcllib-1.3.tar.gz | tar tf - | grep crc
  tcllib-1.3/modules/crc/
  tcllib-1.3/modules/crc/pkgIndex.tcl
  tcllib-1.3/modules/crc/ChangeLog
  tcllib-1.3/modules/crc/cksum.man
  tcllib-1.3/modules/crc/cksum.n
  tcllib-1.3/modules/crc/cksum.tcl
  tcllib-1.3/modules/crc/cksum.test
  tcllib-1.3/modules/crc/crc32.man
  tcllib-1.3/modules/crc/crc32.n
  tcllib-1.3/modules/crc/crc32.tcl
  tcllib-1.3/modules/crc/crc32.test
  tcllib-1.3/modules/crc/sum.man
  tcllib-1.3/modules/crc/sum.n
  tcllib-1.3/modules/crc/sum.tcl
  tcllib-1.3/modules/crc/sum.test
  tcllib-1.3/doc/html/crc32.html
  tcllib-1.3/doc/nroff/crc32.n


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

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


tkt_uuid: 688070ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Out of Date
subsystem: bwidget
priority: 5 Medium
foundin: None
title: LabelFrame/LabelEntry -label/-text/-textvariable broken
cmimetype: text/plain
submitter: ingemarh
assignee: hobbs
closer: hobbs
closedate: 2003-02-17T18:19:34
comment:
  BWidget 1.5:


  When creating a LabelFrame with -label, -text and 
  -textvariable options the -label option is ignored.


  The label's text will be the contents of the textvariable.




  The last line in the below block from labelframe.tcl is 
  changed.


  v1.4.1:


      Widget::bwinclude LabelFrame BWLabel .l \


          remove     {


              -highlightthickness -highlightcolor 
  -highlightbackground


              -takefocus -relief -borderwidth


              -bitmap -image -cursor -textvariable




  v1.5:


      Widget::bwinclude LabelFrame BWLabel .l \


          remove     {


              -highlightthickness -highlightcolor 
  -highlightbackground


              -takefocus -relief -borderwidth


              -cursor




  Workaround. Include the following block right after 
  "package require BWidget":


  namespace eval LabelFrame {


      BWLabel::use




      Widget::bwinclude LabelFrame BWLabel .l \


          remove     {


              -highlightthickness -highlightcolor 
  -highlightbackground


              -takefocus -relief -borderwidth


              -cursor -textvariable


              -dragenabled -draginitcmd -dragendcmd 
  -dragevent -dragtype


              -dropenabled -droptypes -dropovercmd  
  -dropcmd} \


          initialize {-anchor w}


      proc use {} {}


  }




  I probably breaks something else, but it at least works for 
  me.


tkt_uuid: 688227ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Notebook left side not drawn (0 borderwidth)
cmimetype: text/plain
submitter: lewca43
assignee: hobbs
closer: hobbs
closedate: 2003-05-14T23:50:07
comment:
  In a NoteBook widget, if the canvas has 0 borderwidth
  (perhaps set by option database), the left side of the
  notebook will be drawn at -1 x coordinate and will not
  be visible. This patch fixes that by never allowing the
  left side to be drawn at an x coordinate that is negative.

  This bug was found in the bwidget1.5 distribution as
  released with ActiveTcl 8.4.1

  - Bryan Schofield


tkt_uuid: 688696ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
title: Memory Leak in tkchat
cmimetype: text/plain
submitter: dkf
assignee: hartweg
closer: rmax
closedate: 2003-02-18T15:44:40
comment:
  There is a memory leak in tkchat; it does not clean up 
  unused URL-* tags anywhere.  This doesn't matter too 
  much in the main window, where URLs are fairly 
  uncommon, but the users-online window at the side is 
  filled with URLs and it gets refreshed (with completely 
  new URL-* tags) each time.  And yet none of the old 
  tags are ever deleted, resulting in the accumulation of 
  several thousand dead tags an hour!  This is not good.  
  Not good at all!

  A possible fix for this is to add the following code to the 
  procedure updateNames immediately after the line that 
  deletes the old content of the .names widget:
    foreach tagname [.names tag names] {
       if {[string match URL-* $tagname]} {
          .names tag delete $tagname
       }
    }

  Please fix this ASAP, as it is a serious leak for anyone 
  using Tkchat for longer than an hour or two (as seems 
  to be fairly common.)


tkt_uuid: 688965ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: fileutil
priority: 5 Medium
foundin: None
title: better -? help for fileutil::touch
cmimetype: text/plain
submitter: glennjnn
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-03-25T05:25:15
comment:
  the cmdline::getoptions help is a bit bull-headed about
  displaying argv0.  This isn't great for using
  getoptions internally for procs.

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

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

  ("tclsh options:"??)

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


tkt_uuid: 689258ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Segmentation fault when restoring sash coords
cmimetype: text/plain
submitter: jaspert
assignee: hobbs
closer: hobbs
closedate: 2003-02-21T02:05:39
comment:
  We have a tool that uses the BWidget MainFrame to display 
  data on a number of panes and notebook pages. Part of the 
  functionality is that it can save and restore the configuration 
  of the various subdivisions within the frame. 
   
  We found that if these were saved under Windows and then 
  restored under Linux a segmentation fault resulted. 
   
  Attached is the file mre.tcl which implements our tool, and 
  the saved state file from Windows which causes the crash 
  when loaded under Linux (Red Hat 7.3/8.0) 
   
  Here's how to reproduce it: 
  [jaspert@spirograph Run]$ wish 
  % source mre.tcl 
  % RunEnv::Create dummy 
  .mre 
  % open EmptyWindows.shf r 
  file4 
  % RunEnv::LoadViewFile file4 {600 400 0 0} 
  Segmentation fault 
   
  Also attached is a corresponding viewfile produced under 
  Linux which does not cause the crash 


tkt_uuid: 693009ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Works For Me
subsystem: bwidget
priority: 7 High
foundin: None
title: ScrolledWindow infinite loop
cmimetype: text/plain
submitter: pkienzle
assignee: hobbs
closer: hobbs
closedate: 2003-04-12T01:46:56
comment:
  Bug #472718 ScrollWindow update idletask

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

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

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


tkt_uuid: 693059ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: log
priority: 2
foundin: None
title: logger 0.1 depends on Tcl 8.2
cmimetype: text/plain
submitter: dgp
assignee: andreas_kupries
comment:
  The command [string map] is used in logger 0.1.

  Thus, logger 0.1 ought to

    package require Tcl 8.2

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

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

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


tkt_uuid: 693194ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: textutil
priority: 5 Medium
foundin: None
title: string map vs regsub (textutils)
cmimetype: text/plain
submitter: davidw
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-01T00:21:20
comment:
           ./textutil/tabify.tcl:94:    regsub -all --
  $str $string "\t" string
           ./textutil/tabify.tcl:102:    regsub -all --
  "\t" $string $str string
   
  These two lines can probably be redone with string map,
  which will speed the code up significantly.


tkt_uuid: 694894ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: md5
priority: 3 Low
foundin: None
title: md5: modularize in order to use with chunks of data
cmimetype: text/plain
submitter: davidw
assignee: patthoyts
closer: patthoyts
closedate: 2003-08-05T20:45:04
comment:
  According to the md5 RFC, it's possible to use this
  algorithm with arbitrarily large chunks of data, and
  infact the C code that implements the algorithm is
  capable of loading a file a chunk at a time and
  processing it incrementally.  From what I can see, the
  Tcl code we have doesn't make this possible, which
  makes it impossible to use it with, for instance, large
  files (or other things - say data coming in off a socket).


tkt_uuid: 697022ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: bwidget
priority: 5 Medium
foundin: None
title: In Button, -repeatdelay command not cancelled on release
cmimetype: text/plain
submitter: snuffy2
assignee: damonc
closer: damonc
closedate: 2003-10-20T23:17:26
comment:
  Say you have a Button that uses the -armcommand -
  repeatdelay -repeatinterval commands:

  Button .vol.up -image imgvolup  -borderwidth 0 -
  highlightthickness 0 -repeatdelay 700 -repeatinterval 
  200 -armcommand {VolUp}

  (Note: VolUp just increses by 1 the volume)

  If you press the .vol.up button repeatedly then hold it 
  down it goes much faster than it should.  I think it is 
  because the after $delay "Button::_repeat $path" delay 
  command is never cancelled when the button is 
  released.

  I was trying to fix this and was able to do that in 
  button.tcl in the Button::_release procedure. I just 
  added an after cancel command and it appeared to fix 
  the problem:

  proc Button::_release { path } {
      variable _current
      variable _pressed

      if { $_pressed == $path } {
          set _pressed ""
          set relief [Widget::getMegawidgetOption $path -
  relief]
          #####################
          after cancel "Button::_repeat $path" 
          #####################
          if { ![string compare $relief "link"] } {
              set relief raised
          }
          $path:cmd configure -relief $relief
  set cmd [Widget::getMegawidgetOption 
  $path -disarmcommand]
          if { $cmd != "" } {
              uplevel \#0 $cmd
          }
          if { $_current == $path &&
               [string compare [$path:cmd cget -
  state] "disabled"] && \
       [set cmd [Widget::getMegawidgetOption 
  $path -command]] != "" } {
              uplevel \#0 $cmd
          }
      }
  }


tkt_uuid: 697183ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
title: latest chat logout menu selection broken
cmimetype: text/plain
submitter: lvirden
assignee: hartweg
closer: patthoyts
closedate: 2003-03-10T13:34:58
comment:
  tkchat 1.80 logout feature produces this output using
  Tcl/Tk 8.4.2:

  invalid command name "logonScreen"
      while executing
  "logonScreen"
      invoked from within
  ".#mbar.#mbar#file invoke active"
      ("uplevel" body line 1)
      invoked from within
  "uplevel #0 [list $w invoke active]"
      (procedure "tk::MenuInvoke" line 47)
      invoked from within
  "tk::MenuInvoke .#mbar.#mbar#file 1"
      (command bound to event)


  To fix it, I changed all the invocations of logonScreen
  to ::tkchat::logonScreen and it seems to work.


tkt_uuid: 6af0aca06c924a6c0c3cfede04581d792ca9265b
type: Bug
status: Closed
resolution: Fixed
subsystem: tklib
priority: 5 Medium
severity: Minor
foundin: 0.1.1
private_contact: bc1b9dbe1c30f60557cddc418446a731c0d44061
title: widget::listsimple de.msg a clip } too much
cmimetype: text/plain
submitter: anonymous
assignee: aku
closer: aku
closedate: 2456478.20725928
comment:
  widget::listsimple and widget::listentry
  error in ../msgs/de.msg
  in column 8, end

  msgcat::mcset de wle.tip.add         {Fuege neues Element in die Liste ein}}

  last } too much


tkt_uuid: 700327ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: base64
priority: 5 Medium
foundin: None
title: uuencode/uudecode using Trf
cmimetype: text/plain
submitter: rniva
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-03-24T23:35:23
comment:
  The following bug occurs when trying to uuencode a line
  beginning with '-' using the uuencode command in
  Trf(from base64/uuencode.tcl):

  Error: ::uuencode: wrong # args, all options require an
  argument

  Errorinfo: ::uuencode: wrong # args, all options
  require an argument
      while executing
  "::uuencode -mode encode $s"

  Using '--' to stop processing of arguments should fix it.

  tcllib1.3/base64/uuencode.tcl

  line 81:

   return [::uuencode -mode encode $s]

  should be:

    return [::uuencode -mode encode -- $s]

  Same with the call to uudecode.

  The bug was discovered using ActiveState Tcl 8.4.2, but
  also exists in the CVS repository as far as I can tell.


tkt_uuid: 700781ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
title: tkchat - Hide Users doesn't scroll userlist
cmimetype: text/plain
submitter: lvirden
assignee: patthoyts
closer: wildcard_25
closedate: 2005-06-15T07:06:04
comment:
  when I pop up the Visibility->Hide Users menu, the
  result is a huge series of checkboxes so large that the
  list proceeds off screen, unable to access them all.

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

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


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

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


tkt_uuid: 701077ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tclbench
priority: 9 Immediate
foundin: None
title: normbench can't process newest runbench output
cmimetype: text/plain
submitter: techentin
assignee: hobbs
closer: hobbs
closedate: 2003-08-07T00:58:55
comment:
  normbench.tcl fails to process the results of the latest 
  runbench.tcl, with this stack trace.

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


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

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

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

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


tkt_uuid: 701288ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: ftp
priority: 5 Medium
foundin: None
title: Version 1.26 mods cause NList to fail
cmimetype: text/plain
submitter: dav480
assignee: patthoyts
closer: patthoyts
closedate: 2003-03-18T22:30:48
comment:
  Following simple example works in version 1.25, but
  fails in 1.26 & 1.27:

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

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

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


tkt_uuid: 702169ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: tcl nits picked in tkchat
cmimetype: text/plain
submitter: lvirden
assignee: nobody
closer: patthoyts
closedate: 2003-07-27T22:05:23
comment:
  I'm attaching a patch to this feature request - it is
  just a set of changes to add -- to regexp, add switch
  default actions, and to brace some expr's.


tkt_uuid: 704171ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: doctools
priority: 7 High
foundin: None
title: doctools - ease of use - no quoting required
cmimetype: text/plain
submitter: royterry
assignee: andreas_kupries
comment:
  Would be nicer if most commands did not require a 
  single argument. For example, I would like [comment] to 
  take any number of args so that I can simply type the 
  comment w/o bothering to open/close quoting.


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

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

  - "version" is nice but ought to be optional

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

  Thanks for this very useful tool! - Roy Terry


tkt_uuid: 704187ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: doctools
priority: 5 Medium
foundin: None
title: doctools - manpage_begin doc error re args
cmimetype: text/plain
submitter: royterry
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-03-24T23:59:02
comment:
  The doc I have says:
  manpage_begin command section version 
  This command begins a manpage. Nothing is allowed to 
  precede it. Arguments are the name of the command 
  described by the manpage, the section of the manpages 
  this manpages lives in, the version of the module 
  containing the command, the name of the module itself 
  and two descriptions, one short for the command and 
  one a bit longer for the module. Both have to fit on one 
  line.

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


tkt_uuid: 704219ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: doctools
priority: 5 Medium
foundin: None
title: doctools - HTML customization features
cmimetype: text/plain
submitter: royterry
assignee: andreas_kupries
comment:
  (Hope I'm not just missing something)

  Would like a way to "tune" the output for HTML, such as 
  specificy H1 vs. H2 or custom tag for section headers. 
  Also the built-in headers like NAME and DESCRIPTION 
  should be optional and their text should be settable. For 
  example, the user may wish initial caps instead of all 
  caps. Fonts? Colors, etc.

  Is there a plan for customizability of HTML?

  Cheers,
  Roy Terry


tkt_uuid: 707009ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: fileutil
priority: 5 Medium
foundin: None
title: fileutil::stripPwd [pwd] produces error
cmimetype: text/plain
submitter: hgiese
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-03-25T23:57:18
comment:
  Hello,
  fileutil::stripPwd produces an error when called like
      fileutil::stripPwd [pwd]
  While I would suggest to return '.' in this case, it
  might make  sense to return $path unchanged, but in any
  case it should not produce an error.

  I attach a version where '.' is returned in this
  particular case - and some typos corrected.
  Best regards
  Helmut Giese


tkt_uuid: 707607ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 5 Medium
foundin: None
title: Tcllib source README missing web info
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-03-24T23:09:12
comment:
  the README for the tcllib source or install
  distribution does not mention the sf.net web site.

  The attached patch adds a mention of the site to the
  README file.
  I'm uncertain where in the installation directory such
  a mention should go - should the README be installed?


tkt_uuid: 708502ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: struct
priority: 7 High
foundin: None
title: Longest common subsequence of two lists
cmimetype: text/plain
submitter: kennykb
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-02T07:48:39
comment:
  The core of a differential file comparison program,
  such as Unix 'diff', is the ability to compute or
  approximate the longest common subsequence
  of two lists. In response to requests from Pascal
  Scheffers and Jean-Claude Wippler for a pure-Tcl
  'diff' for wikit, I've developed Tcl code that implements
  the Hunt-McIlroy algorithm for longest common
  subsequence.

  It strikes me that this fits the [chart of proposed
  additional list functionality] that Andreas has
  placed on the Wiki, and that a natural place to
  put it in Tcllib would be as

       [::struct::list lcs $list1 $list2]

  But of course, we don't have the ::struct::list
  command yet, so I've no framework in which to
  fit this.

  I'm attaching source code, test suite, and a
  draft manual page for the comparison code
  to this article for your review.  I'm presuming
  that it should fit nicely with feature request
  # 577055. But I think that Andreas should
  review it and commit if he approves, since he
  seems to be the leader for this functionality.


tkt_uuid: 709123ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: csv
priority: 5 Medium
foundin: None
title: ::csv::split with | as separator
cmimetype: text/plain
submitter: jhonan
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-03-31T22:39:33
comment:
  I am trying to use ::csv::split2matrix with | as the
  separator char.

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

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

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

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


tkt_uuid: 709375ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: crc
priority: 7 High
foundin: None
title: current tcllib test suite failures report
cmimetype: text/plain
submitter: lvirden
assignee: patthoyts
closer: patthoyts
closedate: 2003-04-02T21:39:41
comment:
  SPARC Solaris 2.6, Tcl/Tk 8.4.2:

  Using the tcllib CVS head downloaded from activestate
  ftp site snapshots on march 25, 2003, I see these errors:


  base64 2.2.1 (Trf based)
  modules/base64/uuencode.test
  Trf present

  ==== uuencode-1.6 encode dash-string FAILED
  ==== Contents of test case:

      catch {::uuencode::encode -BC} result
      set result

  ---- Result was:
  ::uuencode: wrong # args, all options require an argument
  ---- Result should have been (exact matching):
  +4)#
  ==== uuencode-1.6 FAILED

  ==== uuencode-1.7 decode dash-string FAILED
  ==== Contents of test case:

      catch {::uuencode::decode "-4)#"} result
      set result

  ---- Result was:
  ::uuencode: wrong # args, all options require an argument
  ---- Result should have been (exact matching):
  5BC
  ==== uuencode-1.7 FAILED


  Module: crc
  modules/crc/cksum.test
  modules/crc/crc16.test
  modules/crc/crc32.test

  ==== crc32-2.2 crc32 and unsigned integer FAILED
  ==== Contents of test case:

          ::crc::crc32 $msg
      
  ---- Result was:
  1136572392
  ---- Result should have been (exact matching):
  3904355907
  ==== crc32-2.2 FAILED

  ==== crc32-2.3 crc32 and unsigned integer FAILED
  ==== Contents of test case:

          ::crc::crc32 $msg
      
  ---- Result was:
  3259049013
  ---- Result should have been (exact matching):
  891568578
  ==== crc32-2.3 FAILED

  ==== crc32-2.4 crc32 and unsigned integer FAILED
  ==== Contents of test case:

          ::crc::crc32 $msg
      
  ---- Result was:
  2141000992
  ---- Result should have been (exact matching):
  538287487
  ==== crc32-2.4 FAILED


  ==== crc32-2.5 crc32 and unsigned integer FAILED
  ==== Contents of test case:

          ::crc::crc32 $msg
      
  ---- Result was:
  3176146764
  ---- Result should have been (exact matching):
  1277644989
  ==== crc32-2.5 FAILED

  ==== crc32-2.6 crc32 and unsigned integer FAILED
  ==== Contents of test case:

          ::crc::crc32 $msg
      
  ---- Result was:
  3538338335
  ---- Result should have been (exact matching):
  532866770
  ==== crc32-2.6 FAILED

  ==== crc32-2.7 crc32 and unsigned integer FAILED
  ==== Contents of test case:

          ::crc::crc32 $msg
      
  ---- Result was:
  1917495676
  ---- Result should have been (exact matching):
  2091469426
  ==== crc32-2.7 FAILED

  ==== crc32-2.8 crc32 and unsigned integer FAILED
  ==== Contents of test case:

          ::crc::crc32 $msg
      
  ---- Result was:
  3857639600
  ---- Result should have been (exact matching):
  2968055525
  ==== crc32-2.8 FAILED

  ==== crc32-3.2 crc32 as hexadecimal string FAILED
  ==== Contents of test case:

          ::crc::crc32 -format 0x%X $msg
      
  ---- Result was:
  0x43BEB7E8
  ---- Result should have been (exact matching):
  0xE8B7BE43
  ==== crc32-3.2 FAILED

  ==== crc32-3.3 crc32 as hexadecimal string FAILED
  ==== Contents of test case:

          ::crc::crc32 -format 0x%X $msg
      
  ---- Result was:
  0xC2412435
  ---- Result should have been (exact matching):
  0x352441C2
  ==== crc32-3.3 FAILED

  ==== crc32-3.4 crc32 as hexadecimal string FAILED
  ==== Contents of test case:

          ::crc::crc32 -format 0x%X $msg
      
  ---- Result was:
  0x7F9D1520
  ---- Result should have been (exact matching):
  0x20159D7F
  ==== crc32-3.4 FAILED

  and so on for quite some time...

  Module: struct
  modules/struct/graph.test
  modules/struct/matrix.test
  modules/struct/queue.test
  modules/struct/record.test

  ==== record-0.1 test error with circular records FAILED
  ==== Contents of test case:

      record define circular {
          one
          {record circular cir}
      } cir(1)

  ---- Result was:
  Can not have circular records. Structure was not created.
  ---- Result should have been (exact matching):

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ==== record-0.1 FAILED

  ==== record-0.1 test error with circular records FAILED
  ==== Contents of test case:

          namespace eval myns {
      record define circular {
                  one
              {record ::myns::circular cir}
          } cir(1)
          }

  ---- Result was:
  Can not have circular records. Structure was not created.
  ---- Result should have been (exact matching):

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ==== record-0.1 FAILED


  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: log
  modules/log/log.test
  log 1.0.1
  modules/log/logger.test
  [Tue Mar 25 06:16:40 EST 2003] [global] [error] 'Danger
  Will Robinson!'
  [Tue Mar 25 06:16:40 EST 2003] [global] [warn] 'Danger
  Will Robinson!'
  modules/log/loggerperformance.test
  Date is now Tue Mar 25 06:16:41 EST 2003
  Date is now Tue Mar 25 06:16:41 EST 2003
  Date is now Tue Mar 25 06:16:41 EST 2003
  and hundreds of more Date outputs


tkt_uuid: 709495ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Wont Fix
subsystem: bwidget
priority: 5 Medium
foundin: None
title: SpinBox widget problem
cmimetype: text/plain
submitter: nobody
assignee: hobbs
closer: hobbs
closedate: 2003-07-17T19:21:25
comment:
  I have made changes to the SpinBox widget of the
  BWidget library that seem to fix the following:

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

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

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


tkt_uuid: 710139ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Out of Date
subsystem: bwidget
priority: 5 Medium
foundin: None
title: BWidget 1.4.1 ListBox dropovercmd bugs
cmimetype: text/plain
submitter: anhlephuoc
assignee: hobbs
closer: hobbs
closedate: 2007-10-31T19:43:40
comment:
  I encountered 2 bugs in the same proc  ListBox::_over_cmd

  1) The variable xs can escape intialisation in some case, causing runtime error.
  Can be produced by dragging (slowly) an entry vertically from
  a droppable area to a non-droppable area or reverse.

  2) -dropovercmd command, get called back with a missing parameter $path

  Below is a small context diff for the the changes:

  $ diff -c listbox.tcl*
  *** listbox.tcl Wed Mar 26 14:31:00 2003
  --- listbox.tcl.orig    Tue Aug 27 05:56:26 2002
  ***************
  *** 1164,1170 ****
            set yi   [expr {$line*$dy}]
            set ys   [expr {$yi+$dy}]
            set xi   0
  -         set xs   $xi
            set pos  $line
            if { [Widget::getoption $path -multicolumn] } {
                set nrows $data(nrows)
  --- 1164,1169 ----
  ***************
  *** 1225,1231 ****

        if { $vmode && [set cmd [Widget::getoption $path -dropovercmd]] != "" } {
            # user-defined dropover command
  !         set res   [uplevel \#0 $cmd [list $path $source $target $op $type $dnddata]]
            set code  [lindex $res 0]
            set vmode 0
            if {$code & 1} {
  --- 1224,1230 ----

        if { $vmode && [set cmd [Widget::getoption $path -dropovercmd]] != "" } {
            # user-defined dropover command
  !         set res   [uplevel \#0 $cmd [list $source $target $op $type $dnddata]]
            set code  [lindex $res 0]
            set vmode 0
            if {$code & 1} {


tkt_uuid: 710658ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Focusproblem with Widget::focusOK
cmimetype: text/plain
submitter: rniva
assignee: jenglish
closer: jenglish
closedate: 2003-05-18T17:26:58
comment:
  We have some internally developed widgets which return
  an empty string on unknown commands/options. This
  causes problems for Widget::focusOK in widget.tcl,
  which uses cget -editable:

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

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

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

  to:

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

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


tkt_uuid: 712028ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Works For Me
subsystem: bwidget
priority: 3 Low
foundin: None
title: v1.6 bug in LabelEntry Creation
cmimetype: text/plain
submitter: aspenlogic
assignee: hobbs
closer: hobbs
closedate: 2003-04-08T21:54:12
comment:
  invalid command name ".#BWidget#frame"
      while executing
  "$path cget $realopt"
      (procedure "Widget::_test_tkresource" line 6)
      invoked from within
  "$Widget::_optiontype($type) $option $value [lindex
  $optdesc 3]"
      (procedure "Widget::init" line 62)
      invoked from within
  "Widget::init LabelFrame $path $args"
      (procedure "LabelFrame::create" line 2)
      invoked from within
  "LabelFrame::create .payroll.f.le0.labf -text {Payroll
  Date} -width 20 -anchor w -relief flat -borderwidth 0
  -focus .payroll.f.le0.e"
      ("eval" body line 1)
      invoked from within
  "eval LabelFrame::create $path.labf $maps(.labf) 
  -relief flat -borderwidth 0 -focus $path.e"
      (procedure "LabelEntry::create" line 8)
      invoked from within
  "LabelEntry::create .payroll.f.le0 -label {Payroll
  Date} -labelwidth 20 -labelanchor w -textvariable
  var_payroll_date"
      ("eval" body line 1)
      invoked from within
  "eval LabelEntry::create $path $args"
      (procedure "LabelEntry" line 1)
      invoked from within
  "LabelEntry $f -label $label -labelwidth 20
  -labelanchor w -textvariable $textvar"
      (procedure "gui_LabelEntry" line 6)
      invoked from within
  "gui_LabelEntry $gui_payroll.le0 "Payroll Date"
  var_payroll_date "
      invoked from within
  "grid [gui_LabelEntry $gui_payroll.le0 "Payroll Date"
  var_payroll_date ] -sticky e"
      (file "payroll.tcl" line 473)
      invoked from within
  "source payroll.tcl"


tkt_uuid: 712951ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: doctools
priority: 5 Medium
foundin: None
title: Potential infinite loop in doctools::cvs::scanLog
cmimetype: text/plain
submitter: jenglish
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-03-31T22:15:56
comment:
  In doctools/cvs.tcl, ~line 63:

  while { ! [regexp "(-----*)|(=====*)" $line] } {
      append comment $line "\n"
      incr i
      set line [lindex $text $i]
  }

  This will fail to terminate if the input doesn't end
  with a "-----*" or "=====*" line.  The while loop
  controlling clause should also include a test for " ...
  && $i < $n", to account for the possibility of bad
  input.


tkt_uuid: 714209ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct :: list
priority: 8
foundin: None
title: test failure: struct module
cmimetype: text/plain
submitter: patthoyts
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-02T22:48:13
comment:
  Test platform: tcl 8.4.2 on intel Windows 2000

  Module:struct
  modules/struct/graph.test
  modules/struct/list.test

  ==== flatten-2.1 flatten errors FAILED
  ==== Contents of test case:

      list [catch {flatten} msg] $msg

  ---- Result was:
  1 {no value given for parameter "?-full?" to
  "::struct::list::Assign"}
  ---- Result should have been (exact matching):
  1 {wrong # args: should be "::struct::list::Assign
  ?-full? ?--? sequence"}
  ==== flatten-2.1 FAILED


tkt_uuid: 714211ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ncgi
priority: 5 Medium
foundin: None
title: test failure: ncgi module
cmimetype: text/plain
submitter: patthoyts
assignee: welch
closer: andreas_kupries
closedate: 2003-04-28T22:35:04
comment:
  Test platform: tcl 8.4.2, intel Windows 2000

  Multiple failure in the ncgi tests. I've attached the
  failure log as it's fairly large.


tkt_uuid: 714214ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: fileutil
priority: 1 Zero
foundin: None
title: test failures: fileutils module
cmimetype: text/plain
submitter: patthoyts
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2007-08-08T19:49:18
comment:
  Test platform: tcl 8.4.2 on intel Windows 2000

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

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

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

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


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

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

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


tkt_uuid: 714947ffffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: widget
priority: 5 Medium
foundin: None
title: widget: digraph.tcl needs TIP 44 update
cmimetype: text/plain
submitter: dgp
assignee: hobbs
comment:
  Doesn't seem to be a Category for
  the "widget" directory of the tcllib
  project repository.

  Anyhow the file

  cvsroot/tcllib/widget/library/digraph.tcl

  calls internal Tk commands by their
  pre-Tk-8.4 names.  This code needs
  an update to work with Tk 8.4.


tkt_uuid: 715193ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: htmlparse
priority: 5 Medium
foundin: None
title: unwanted PCDATA space trim
cmimetype: text/plain
submitter: fapael
assignee: andreas_kupries
comment:
  ### test code ###

  package require cmdline 1.1
  package require htmlparse 0.3

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

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

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

  ### expected result ###

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

  ### discussion ###

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


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


tkt_uuid: 717921ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Rejected
subsystem: bwidget
priority: 4
foundin: None
title: v1.6 BWidget LabelEntry fails (was id 712028)
cmimetype: text/plain
submitter: aspenlogic
assignee: damonc
closer: oehhar
closedate: 2009-07-01T08:36:53
comment:
  The attached file, when sourced twice in a row, fails
  to create the LabelEntry widget.

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


tkt_uuid: 718985ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: irc
priority: 8
foundin: None
title: Potential infinite loop
cmimetype: text/plain
submitter: dkf
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-14T06:39:29
comment:
  The Tcllib IRC module is capable of going into an
  infinite loop if the IRC server closes the socket
  unexpectedly.

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

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

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


tkt_uuid: 719616ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: None
priority: 8
foundin: None
title: alter install.tcl to support re-installs
cmimetype: text/plain
submitter: timmoss
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-21T18:35:13
comment:
  Index: install.tcl
  =========================================
  ==========================
  RCS file: /cvsroot/tcllib/tcllib/install.tcl,v
  retrieving revision 1.2
  diff -w -b -r1.2 install.tcl
  18c18
  <             file copy $file $sub
  ---
  >             file copy -force -- $file $sub

  30c30
  < file copy pkgIndex.tcl $installdir
  ---
  > file copy -force -- pkgIndex.tcl $installdir


tkt_uuid: 720024ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 5 Medium
foundin: None
title: BWidget ComboBox claims selection on FocusIn
cmimetype: text/plain
submitter: jenglish
assignee: jenglish
closer: hobbs
closedate: 2003-04-12T19:37:47
comment:
  The BWidget ComboBox automatically selects the (entire)
  entry contents whenever it receives a <FocusIn> event,
  (asserting ownership of the PRIMARY selection in the
  process).

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


tkt_uuid: 720206ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: profiler
priority: 7 High
foundin: None
title: test failure: profiler module with tcl8.3
cmimetype: text/plain
submitter: patthoyts
assignee: nobody
closer: patthoyts
closedate: 2003-04-29T08:20:56
comment:
  Using tcl 8.3 to run the tcllib test suite we get the
  following errors  not present when using tcl 8.4
  Test platform: tcl 8.3.5 Windows 2K intel.

  Module:profiler
  modules/profiler/profiler.test

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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


tkt_uuid: 720208ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ntp
priority: 7 High
foundin: None
title: test failure: ntp module with tcl 8.3
cmimetype: text/plain
submitter: patthoyts
assignee: patthoyts
closer: andreas_kupries
closedate: 2003-04-24T19:55:25
comment:
  Test platform: tcl 8.3.5 Windows 2K intel.

  The following failures produced when using tcl 8.3.5 to
  run the tcllib test suite. These do not occur with tcl 8.4

  It seems these tests rely on features only present in
  tcltest 2.2+ (the ::tcltest::interpreter proc)

  Module:ntp
  modules/ntp/time.test

  ==== time-1.1 time::gettime FAILED
  ==== Contents of test case:

      global token
      list [catch {
          set f [createServerProcess]
          gets $f port
          set token [::time::gettime -protocol tcp
  localhost $port]
          set r {}
      } msg] $msg    

  ---- Result was:
  1 {invalid command name "::tcltest::interpreter"}
  ---- Result should have been:
  0 {}
  ==== time-1.1 FAILED


  ==== time-1.2 time::status FAILED
  ==== Contents of test case:

      global token
      list [catch {time::status $token} m] $m

  ---- Result was:
  1 {can't read "State(status)": no such variable}
  ---- Result should have been:
  0 ok
  ==== time-1.2 FAILED


  ==== time-1.2 time::unixtime FAILED
  ==== Contents of test case:

      global token
      list [catch {
          set t [time::unixtime $token]
          string is integer -strict $t
      } m] $m

  ---- Result was:
  1 {can't read "State(status)": no such variable}
  ---- Result should have been:
  0 1
  ==== time-1.2 FAILED


tkt_uuid: 720318ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Out of Date
subsystem: None
priority: 5 Medium
foundin: None
title: modules can't be requested in safeBase
cmimetype: text/plain
submitter: mic42
assignee: nobody
closer: gwlester
closedate: 2004-03-02T22:32:07
comment:
  Code to demonstrate the problem:

  % ::safe::interpCreate test
  test
  % test eval {package require base64}
  permission denied

  Problem:
  related to [Bug 599306].

  The modules subdirs of tcllib are not included in the
  default valid access path for safeBase, as they are not
  inside the auto_path. So simple load of tcllib modules
  isn't possible.

  Workaround:
  Add all needed tcllib modules subdirs to the accessPath
  option of ::safe::interpCreate.

  A decision should be made how safe interpreter support
  is handled by tcllib.


tkt_uuid: 720348ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: struct :: graph
priority: 5 Medium
foundin: None
title: patch to support drop in cgraph library
cmimetype: text/plain
submitter: mic42
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-14T07:26:59
comment:
  Hi,

  adding this at the top of graph.tcl

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

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

  I pushed cgraph to version 0.6.

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

  Michael


tkt_uuid: 720933ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: struct :: graph
priority: 2
foundin: None
title: testsuite makes incorrect assumptions about walk order
cmimetype: text/plain
submitter: mic42
assignee: andreas_kupries
comment:
  The tests in graph.test assume a particular order while
  walking a graph, even if multiple valid orderings exist.

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

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

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

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

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



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


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


tkt_uuid: 720934ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: math
priority: 9 Immediate
foundin: None
title: Test failures in math::fuzzy
cmimetype: text/plain
submitter: andreas_kupries
assignee: arjenmarkus
closer: andreas_kupries
closedate: 2003-04-23T17:28:19
comment:
  When running the testsuite for 'math' I get three
  failures in the math::fuzzy testsuite. Attached the log
  for the whole math package.


tkt_uuid: 722192ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 3 Low
foundin: None
title: Use lsearch -exact in bwidget/tree.tcl
cmimetype: text/plain
submitter: jenglish
assignee: hobbs
closer: hobbs
closedate: 2003-05-14T23:54:20
comment:
  The attached patch is mechanical ly replaces all
  occurrences of [lsearch] in tree.tcl with [lsearch
  -exact]; this is to avoid problems in case node IDs
  contain  "*" or other glob characters.

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


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

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

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

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

  contact me with any questions.

  Dave Bigelow
  davidhbigelow@compuserve.com


tkt_uuid: 723318ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: tree
priority: 8
foundin: None
title: struct::tree -- Report maxdepth of struct from node
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-08-08T18:29:07
comment:
  myTree depth $node -- Depth of Current Node
  myTree size $node -- Returns number of Children for 
  that Node


  How about a:

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

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

  For Example:

  myTree maxdepth root
  ---> 3

  myTree maxdepth 6
  ---> 3

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


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

  Any Questions?

  David Bigelow
  davidhbigelow@compuserve.com


tkt_uuid: 723402ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: tree
priority: 8
foundin: None
title: Key/Value Filtering Support: myTree children $node -key len*
cmimetype: text/plain
submitter: davidhbigelow
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2004-02-15T06:50:01
comment:
  It sure would be nice to be able to collect children of a 
  node within a struct::tree by filtering for key names 
  and/or values.

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


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

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

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

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

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

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


  Any Questions?

  David Bigelow
  davidhbigelow@compuserve.com


tkt_uuid: 723426ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ntp
priority: 8
foundin: None
title: Testsuite failures
cmimetype: text/plain
submitter: andreas_kupries
assignee: patthoyts
closer: dgp
closedate: 2003-04-24T20:46:33
comment:
  I ran the testsuite of ntp using a tclsh 8.3.4 and a tclkit 
  8.4.1. In both cases I got failures, but different. Enclosed 
  the log files.


tkt_uuid: 723677ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: struct :: tree
priority: 5 Medium
foundin: None
title: ADD --> ::struct::tree -exists -- myTree
cmimetype: text/plain
submitter: davidhbigelow
assignee: andreas_kupries
comment:
  Currently there appears to be no way to detect if 
  a ::struct::tree name exists without usign non-lib 
  functions to capture what is availiable.

  CURRENT METHOD:
  if ![string match [info commands myTree] myTree] {
      ::struct::tree myTree
  }

  PROPOSED METHOD:
  if ![::struct::tree -exists -- myTree] {
      ::struct::tree myTree
  }


  We have found, when we are using the ::struct::tree as a 
  central location for data (instead of arrays or lists), that 
  we need to verify if the tree exists before we continue 
  with other program logic.  Since we have many procs 
  referencing the same ::struct::tree, and any of them 
  could be called at any time by the end user, we need to 
  check to see if the ::struct::tree exists so we make sure 
  to create it if it is not there.

  Even though there is a way to detect if the ::struct::tree 
  exists using other Tcl commands - it would be easier 
  and more complete to have this basic call in 
  the ::struct::tree lib as a standard option.


  Any Questions?

  David Bigelow
  davidhbigelow@compuserve.com


tkt_uuid: 723684ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: tree
priority: 5 Medium
foundin: None
title: ADD: ::struct::tree -delete -- myTree
cmimetype: text/plain
submitter: davidhbigelow
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-04-18T15:08:17
comment:
  Currently there appears to be no way to delete 
  a ::struct::tree without usign non-lib functions to capture 
  what is availiable.

  CURRENT METHOD:
  rename myTree {}


  PROPOSED METHOD:
  ::struct::tree -delete -- myTree


  Any Questions?

  David Bigelow
  davidhbigelow@compuserve.com


tkt_uuid: 723692ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: tree
priority: 8
foundin: None
title: ADD: ::struct::tree -copy -- myTree myTree2
cmimetype: text/plain
submitter: davidhbigelow
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-08-08T18:28:16
comment:
  Currently there appears to be no way to copy 
  a ::struct::tree without walking the tree and setting 
  contents to a new tree structure.

  CURRENT METHOD:

  # note - "myTree" already exists in this example (which 
  does not account for keys and values - just node 
  transfer)

  # New Tree Structure
  ::struct::tree myTree2

  ::struct::tree walk root -command {
      if {"%n" != "root"} {
         myTree2 insert [myTree parent %n] end %n
      }
  }


  PROPOSED METHOD:
  ::struct::tree -copy -- myTree myTree2


  This command would greatly simplify and enhance the 
  ability to duplicate a tree and all of the attributes within it 
  and it's nodes as compared to the the current work 
  around.

  Any Questions?

  David Bigelow
  davidhbigelow@compuserve.com


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




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


  1. No restrictions (walk)


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


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




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




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




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




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




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


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


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

  Moving the line graph.tcl 1884:

     set visited($node) .

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

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


tkt_uuid: 725231ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: math
priority: 8
foundin: None
title: math:statistics has scope errors
cmimetype: text/plain
submitter: dgp
assignee: arjenmarkus
closer: andreas_kupries
closedate: 2003-04-24T19:08:12
comment:
  the routines in the file liststat.tcl
  accept $expression arguments.

  These routines can only work correctly
  if [uplevel] is used to evaluate those
  $expression values.

  Currently [uplevel] is omitted and
  none of these commands works;
  does not even pass its own test
  suite.


tkt_uuid: 725557ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 8
foundin: None
title: tcllib installer failure
cmimetype: text/plain
submitter: lvirden
assignee: nobody
closer: andreas_kupries
closedate: 2003-04-24T17:33:04
comment:
  I fetched the 20030419 cvs snapshot from Activestate
  ftp site.
  $ rm -rf tcllib
  $ gtar xfz tcllib-20030419.tar.gz
  $ mkdir tcllib/unix
  $ cd tcllib/unix
  $ ../configure --prefix=/usr/tcllib
  $ make all
  $ make install
   $ make install;exit                  
  /usr/tcl84/bin/tclsh8.4 `echo ../installer.tcl` \
          -pkg-path   /usr/tcl84/lib/tcllib1.4 \
          -no-examples -no-html -no-nroff \
          -no-wait -no-gui
  Installing Tcllib 1.4
  You have chosen the following configuration ...

  Packages:      /usr/tcl84/lib/tcllib1.4
  Examples:      Not installed.
  Documentation: Not installed.

  .........error copying "../modules/calendar/tclIndex"
  to "/usr/tcl84/lib/tcllib1.4/calendar/tclIndex": file
  already exists
      while executing
  "file copy [file join $distribution modules $module
  tclIndex]  [file join $libdir $module]"
      (procedure "_tci" line 5)
      invoked from within
  "_tci calendar /usr/tcl84/lib/tcllib1.4"
      ("eval" body line 1)
      invoked from within
  "eval $guide($m,$type) $m $args"
      (procedure "xinstall" line 4)
      invoked from within
  "xinstall   pkg $config(pkg,path)"
      (procedure "doinstall" line 5)
      invoked from within
  "doinstall"
      (procedure "main" line 11)
      invoked from within
  "main"
      (file "../installer.tcl" line 579)
  *** Error code 1
  make: Fatal error: Command failed for target
  `install-libraries'
  Connection closed.


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

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

  struct::tree.n

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


tkt_uuid: 726352ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: bwidget
priority: 5 Medium
foundin: None
title: bwidget configure/Makefile fails to install
cmimetype: text/plain
submitter: lvirden
assignee: damonc
closer: dev_null42a
closedate: 2006-11-10T21:33:08
comment:
  The currently distributed configure.in and Makefile.in
  that are in bwidget CVS result in a Makefile that looks
  for config/mkinstalldirs , but that file is no longer a
  part of the TEA 2 sample extension's distribution.

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


tkt_uuid: 727678ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: stats - deprecated
priority: 5 Medium
foundin: None
title: latest tcllib from CVS test suite has two stats module failu
cmimetype: text/plain
submitter: lvirden
assignee: welch
closer: patthoyts
closedate: 2003-04-29T08:24:41
comment:
  Source is 20030424 cvs snapshot from activestate ftp site.

  When I get this code and run make test, I see the
  following output - even though here on SF.net, the
  category says the module is deprecated...



  Module: stats
  modules/stats/stats.test
  incr scaler 4 microseconds per iteration
  incr array 6 microseconds per iteration
  rawcount 16 microseconds per iteration
  simple 65 microseconds per iteration
  lastn 146 microseconds per iteration
  lastn 136 microseconds per iteration
  hist 186 microseconds per iteration
  hist2x 257 microseconds per iteration

  ==== stats-histlog stats::count FAILED
  ==== Contents of test case:

      stats::countInit histlog -histlog 10
      stats::count histlog 0.1
      stats::count histlog 0.5
      stats::count histlog 0.9
      stats::count histlog 1.0
      stats::count histlog 2
      stats::count histlog 3
      stats::count histlog 5
      stats::count histlog 10
      stats::count histlog 30
      stats::count histlog 50
      stats::count histlog 100
      stats::count histlog 300
      stats::count histlog 500
      stats::count histlog 1000
      stats::countGet histlog -hist

  ---- Result was:
  -23 1 -6 1 -1 1 0 1 6 1 10 1 16 1 23 1 34 1 39 1 46 1
  57 1 62 1 69 1
  ---- Result should have been (exact matching):
  0 1 1 7 2 2 3 1 6 1
  ==== stats-histlog FAILED

  Pausing during timehist tests
  timehist 224 microseconds per iteration

  ==== stats-countNames stats::countNames FAILED
  ==== Contents of test case:

      stats::countInit simple
      stats::countInit avg
      stats::countInit lastn -lastn 4
      stats::countInit hist -hist 10
      stats::countInit hits -timehist 4
      lsort [stats::countNames]

  ---- Result was:
  avg hist histlog hits lastn simple
  ---- Result should have been (exact matching):
  avg hist hits lastn simple
  ==== stats-countNames FAILED


  followed later by

  Tests ended at Fri Apr 25 14:35:33 EDT 2003
  all.tcl:        Total   3178    Passed  3121    Skipped
  57      Failed  0


  So somehow these FAILED tests don't get counted.  Is
  this part of the deprecation?  And should the test
  suite not test the code if it is intended to go away?


tkt_uuid: 727694ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: general request
priority: 8
foundin: None
title: sak validate imposes [package provide] format
cmimetype: text/plain
submitter: dgp
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-05-01T00:18:05
comment:
  Several packages in tcllib had a structure like:

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

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

  namespace eval foo {
  ...
  }

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

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

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

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


tkt_uuid: 729709ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tclapps :: tkchat
priority: 6
foundin: None
title: tkchat no longer pops to top or beeps on alerts
cmimetype: text/plain
submitter: lvirden
assignee: patthoyts
closer: patthoyts
closedate: 2003-04-30T21:48:42
comment:
  somewhere in the last change or two, tkchat at least
  for me has lost the functionality of alerting me when
  someone whispers to my login id.

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

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

  This no longer is the case.

  from $HOME/.tkchatrc, I see:

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

  plus more.

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


tkt_uuid: 731252ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: enhanced tkchat help requested
cmimetype: text/plain
submitter: lvirden
assignee: nobody
closer: patthoyts
closedate: 2003-07-27T22:06:29
comment:
  When I check the tkchat Help menu item as well as /help in
  tkchat, I don't see commands such as /?<regexp> .  Thus,
  it appears this feature, and perhaps others, are not
  documented
  at this time anywhere other than within the source code.

  After determining where best this info should be found
  (perhaps in a  special help menu item?) , perhaps
  environment variables, features,  commands, etc. that
  one  can use within tkchat, but which have no menu
  setting, could be documented?


tkt_uuid: 731457ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
title: results are lost for send -async calls
cmimetype: text/plain
submitter: hemanglavana
assignee: hobbs
closer: hobbs
closedate: 2003-05-10T23:48:30
comment:
  The documentation suggests that the results of RPC and
  remote errors are lost when -async option is specified
   with comm::comm send.

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

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

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

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

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

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

  Andreas

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

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

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


tkt_uuid: 731759ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: mime
priority: 5 Medium
foundin: None
title: line endings wrong for buildmessage
cmimetype: text/plain
submitter: gunzel
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-05-05T07:15:42
comment:
  Using buildmessage and therefore buildmessageaux to generate a 
  mime message results in the headers and boundaries having LF as 
  their line ending. According to RFC2045 these should be CRLF. 

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

  I have attached a suggested patch for mime.tcl

  Thanks

  Matthew


tkt_uuid: 732512ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: mime
priority: 5 Medium
foundin: None
title: encoded word encoding may be lower or upper case
cmimetype: text/plain
submitter: gunzel
assignee: andreas_kupries
closer: mrose
closedate: 2003-05-13T17:16:03
comment:
  RFC2047 specifies that the encoding for an encoded-word in a 
  Message Header may be specified by an upper or lower case letter, 
  currently ::mime::word_decode only accepts upper case. I have 
  attached a (very simple) patch to remedy this and added a couple of 
  simple tests to check for it.

  Thanks

  Matthew


tkt_uuid: 732597ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: general request
priority: 5 Medium
foundin: None
title: move tcllib doc generation to build step
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
comment:
  Currently the tcllib generated Makefile generates the
  nroff documentation each time one does a make install.

  This means that if one has to install the library on
  1000 machines, the doc has to be generated a 1000 times.

  A change to make use of the Makefile, the target could
  be set up to only build the pieces which are out of
  date, and to do so once, at build time, saving computer
  resources and user time.


tkt_uuid: 733407ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
title: Please extend tcllib ::csv for multi-line records
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2006-01-17T03:53:29
comment:
  From comp.lang.tcl, the following interaction occurred.

  > According to Andreas Kupries  <akupries@shaw.ca>:
  > : The
  > :higher level routines (split2*, read2* from a
  channel) however
  > :unfortunately do assume that one record == one line
  and thus bust it.
  > 
  > Is there a way that these could either be extended,
  or that parallel
  > commands able to deal with multiple lines could be
  developed?

  Maybe. Well, at least parallel commands should be
  possible, but 
  they
  will need some sort of extended parser, i.e. read the
  whole channel,
  then parse the whole string into records and split
  records, without
  regarding to lines. I am currently unsure if the
  low-level split will
  return an error if it sees an incomplete record or if
  it will do a
  best-effort of generating something.


  The point is this - the lower level csv commands , with
  appropriate settings (which may need documenting) can
  read and process multiline records.

  However, the higher level read2matrix, etc. procs
  appear to have some built in limitations with respect
  to newline terminated records.


tkt_uuid: 733442ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: md5
priority: 5 Medium
foundin: None
title: procheck reports parse error
cmimetype: text/plain
submitter: hemanglavana
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-05-12T23:50:41
comment:
  unix> procheck md5.tcl
  ...
  md5.tcl:349 (parse) parse error: PARSE syntax 13757
  {syntax error in expression " ($x << $i) | (($x >> R$i)
  & S$i)"}
  expr { ($x << $i) | (($x >> R$i) & S$i)}
       ^
  ...

  On examining the md5.tcl file, lines 328 - 351 are
  never executed because of if {0} {...} block. But it
  would be better if procheck did not report any parse
  errors.


tkt_uuid: 735450ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ftpd
priority: 5 Medium
foundin: None
title: ftpd - Check usage of fcopy
cmimetype: text/plain
submitter: andreas_kupries
assignee: gwlester
closer: gwlester
closedate: 2004-05-23T18:12:26
comment:
  We have to check if fcopy is properly used with respect 
  to -encoding on control and data channels, for versions 
  of Tcl from 8.3/8.4. Especially binary versus text 
  downloads.


tkt_uuid: 737162ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: mime
priority: 5 Medium
foundin: None
title: prevent infinite loop on unterminated multipart
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: mrose
closedate: 2003-05-13T17:21:08
comment:
  in mime.tcl, change
  set line "--$boundary--"
  to
  set x [string length [set line "--$boundary--"]]
  (apparently works, and not setting x is obviously faulty)

  however, since missing MP boundaries are very frequent
  in spam and very rare in legitimate mail, I'd suggest
  to remove the comment sign from the preceeding line
  error "termination string missing in $state(content)"
  (or make it a config option)


tkt_uuid: 737171ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: Documentation
priority: 5 Medium
foundin: None
title: Suggested fix for two typos in dtp docs
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-05-14T05:37:29
comment:
  dtp , a program in tclapps, should have the following
  two typos fixed:

  approx. line 42 - change appropiate to appropriate.

  approx. line 50 - copleted should be completed.


tkt_uuid: 737770ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: csv
priority: 8
foundin: None
title: add example of alternate parsing to csv docs
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-11-23T06:11:28
comment:
  with the latest version of csv, there is now two
  behaviors with regards to the string "" .

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


tkt_uuid: 739387ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: pop3
priority: 5 Medium
foundin: None
title: -ERR authorization first on pop3::open
cmimetype: text/plain
submitter: mindtrader
assignee: andreas_kupries
closer: sf-robot
closedate: 2006-10-13T02:20:09
comment:
  I have trouble connecting to one of my mailservers with
  pop3::open. 
  It gives me:
  +OK (for socket)
  +OK (for user)
  -ERR autorization fist (for password), I will enquire
  as to the specifics of this server, but I wanted to
  post this first in case anyone else had come across a
  similar problem.

  My other mailserver works with no problems.

  I will attempt to investigate this myself and post
  followup if I find something.


tkt_uuid: 739393ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ftp
priority: 5 Medium
foundin: None
title: mkdir error/bug
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-10-21T20:53:59
comment:
  I get an error lile this:

  debug      | ---> MKD test
  bgerror failed to handle background error.
      Original error: can't read "multi_line": no such variable
      Error in bgerror: invalid command name "bgerror"

  i think the multi-line cannot handy the ftp output like this:

  MKD test
  Skipping... hidden...
  257 "test" created.
  EXEMPTED
  PWD

  i think it cannot handle with the output may someone 
  can help me

  thx


tkt_uuid: 740474ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: bwidget
priority: 5 Medium
foundin: None
title: DropSite::register documenation error
cmimetype: text/plain
submitter: pointsman
assignee: hobbs
closer: dev_null42a
closedate: 2006-11-10T21:56:08
comment:
  The current DropSite HTML page says:

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

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

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

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

  Arguments passed to the command are:

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


tkt_uuid: 740478ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 5 Medium
foundin: None
title: make install fails due to a documentation bug
cmimetype: text/plain
submitter: lvirden
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-06-06T17:25:35
comment:
  while attempting to install the latest CVS snapshot for
  tcllib, I get this error, causing installation to cease:

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

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


tkt_uuid: 740484ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Markup error in DragSite and DropSite HTML docu.
cmimetype: text/plain
submitter: pointsman
assignee: jenglish
closer: jenglish
closedate: 2003-10-28T02:37:43
comment:
  Both DragSite and DropSite HTML docu pages are -
  starting in the -droptype docu and then until the end
  of the page - shown completely in bold. (Well, at least
  in mozilla.)

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


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

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

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


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

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


tkt_uuid: 744095ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 8
foundin: None
title: file output for dtp
cmimetype: text/plain
submitter: dzolli
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-11-23T03:29:09
comment:
  Would it be possible to add a subcommand for dtp, or to add an 
  arg to doc subcommand to switch output from stdout to a 
  file.

  For example :

  dtp doc html graph.man 
  graph.html

  or :

  dtp filedoc graph.man 
  ?graph.html?


tkt_uuid: 744109ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 8
foundin: None
title: easier help access for dtp
cmimetype: text/plain
submitter: dzolli
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2004-05-17T07:27:37
comment:
  It's not very easy for a tcl beginner to access to dtp help: no 
  manual or help file is given so you have to use dtp embeded 
  help. But it's not so easy to get it, you have to call dtp with a wrong 
  arg if you want a *real* subcommand list. Adding available 
  subcommands list to dtp (with no arg) output might be a good 
  thing.

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

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


tkt_uuid: 744276ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: ftp
priority: 5 Medium
foundin: None
title: ftp::Get of a nonexistent file
cmimetype: text/plain
submitter: rohanpall
assignee: gwlester
comment:
  I'm using ftp 2.4, and mandrake linux 9.1

  This occurs when ftp::VERBOSE and ftp::DEBUG are both 0.

  Open a connection in passive mode, try to get a
  nonexistent file, and it will hang with tclkit
  200303.001, tkcon, and tclsh 8.3.3

  When ftp::VERBOSE and ftp::DEBUG are turned on, no
  problems occur.

  % package require ftp 2.4
  2.4
  % ftp::Open $server $name $pass -mode passive
  0
  % ftp::Get 0 nonexistent_file
  can't unset "ftp(state.data)": no such element in array
      while executing
  "unset ftp(state.data)"
      ("default" arm line 4)
      invoked from within
  "switch -exact -- $rc {
                  1 {
                      set ftp(State) get_close
                  }
                  default {
                    ..."
      ("get_sent" arm line 2)
      invoked from within
  "switch -exact -- $ftp(State) {
          user {
              switch -exact -- $rc {
                  2 {
                      PutsCtrlSock $s "USER $ftp(U..."
      (procedure "::ftp::StateHandler" line 71)
      invoked from within
  "::ftp::StateHandler 0 sock4"
  error     error | E: Timeout of control connection
  after 600 sec.!
  debug      | 0 bytes sent in 600 seconds (0 Bytes/s)
  1
  %


tkt_uuid: 744391ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ntp
priority: 7 High
foundin: None
title: empty result with FreeBSD tcp 37 time service
cmimetype: text/plain
submitter: juliannoble
assignee: patthoyts
closer: patthoyts
closedate: 2003-05-29T00:45:55
comment:
  The line in ::time::QueryTime of time.tcl:
  puts -nonewline $State(sock) "abcd"
  causes problems with a FreeBSD 4.7 time service. 

  Test against ntp.webpub.net to see that $State
  (data) is empty. 
  Removing that line fixes it - and I see it still works 
  without that line for the sample given, 
  ntp2a.mcc.ac.uk 
  According to rfc868, the server should respond 
  with the time upon connection.
  Is this line above, a hack to work around some 
  particular server implementation that needs to 
  receive bit of data before responding?  If so, could 
  it be changed to an option such as -prod? 


tkt_uuid: 746160ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: mime
priority: 5 Medium
foundin: None
title: hang on parsing
cmimetype: text/plain
submitter: nobody
assignee: mrose
closer: mrose
closedate: 2003-05-30T18:23:53
comment:
  mime::initialize -file MDNPart3 hang on parsing.
  This is real file from sendmail MTA

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


tkt_uuid: 746176ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: mime
priority: 5 Medium
foundin: None
title: hang on parse
cmimetype: text/plain
submitter: jlewandowski
assignee: mrose
closer: mrose
closedate: 2003-06-01T17:44:14
comment:
  hang on parsing
  mime::initialize -file MDNPart3 hang on parsing.
  This is real file from sendmail MTA

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


tkt_uuid: 746960ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: bwidget
priority: 5 Medium
foundin: None
title: BWidget Tree insert bug
cmimetype: text/plain
submitter: petasis
assignee: damonc
closer: damonc
closedate: 2003-10-20T23:17:35
comment:
  In the current implementation of the BWidget tree
  widget, not enough checks are performed when
  adding new nodes into the tree.

  For example, the current code allows
  somebody to create a new tree node
  that contains into its node name any
  instances of the characters &, |, ^, !.
  However, if you add such nodes, expect
  problems: as a canvas widget is
  used for implementing the widget and these
  characters have special meaning in tag
  names (are considered operators - the
  canvas man page does not stress this issue but thats
  another story :-)) you end
  up with various errors when the widget gets
  drawn (for example errors during
  canvas bbox). The user is not
  always able to trace down the source of error
  (I had to check the canvas implementation to
  locate the error message, see what the
  code tried to do (a search upon the tags)
  and then go to the man page to find out what is wrong).

  I can think of two possible solutions:
  1) Check for these characters when a node is created
  and through an error if any of these characters are used.
  2) Allow these characters, but silently replace them
  with something else.

  George


tkt_uuid: 747541ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: mime
priority: 5 Medium
foundin: None
title: ::mime::word_decode: lowercase method
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: mrose
closedate: 2003-06-02T15:57:32
comment:
  ::mime::word_decode expects the encoding method to be either B or Q. While testing code with one of the Debian mailing lists, I encountered one mail with a lowercase letter "q".

  Attached is the (simple) patch for tcllib 1.4.


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

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

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


tkt_uuid: 748344ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Bug: packing a Tk listbox into a BWidget ScrolledWindow
cmimetype: text/plain
submitter: nobody
assignee: hobbs
closer: hobbs
closedate: 2003-06-03T20:17:10
comment:
  The minimal
  script to reproduce this problem appears to be:

      package require -exact BWidget 1.6
      set sw_t [ScrolledWindow .sw -auto both]
      set t_listbox [listbox [$sw_t getframe].lb]
      $sw_t setwidget $t_listbox
      pack $sw_t
      pack $t_listbox


tkt_uuid: 748758ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: ftp
priority: 5 Medium
foundin: None
title: ::ftp::NList + WS in FileNames
cmimetype: text/plain
submitter: nobody
assignee: gwlester
closer: andreas_kupries
closedate: 2006-09-22T23:11:37
comment:
  Hi,

    I have files like:
      ttwosadmin2 Wed Jun 04 11:39:11 MEST 2003.tar.gz
    on a ftp-server.
    if I use the command:
      foreach F [::ftp::NList $FH [info hostname]*] { ... }
    I get every part of the name as single token
    like: ttwosadmin2, Wed, Jun ...


  mfg

    aotto


tkt_uuid: 753170ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ScrolledWindow hang
cmimetype: text/plain
submitter: jaspert
assignee: hobbs
closer: jaspert
closedate: 2003-06-16T09:23:19
comment:
  A dialogue box that works OK with a frame causes a hang
  when it is replaced by a ScrolledWindow -- sorry there
  is so much stuff in the attached example file but I
  couldn't get the hang to happen with just the
  ScrolledWindow on its own

  [jaspert@spirograph Run]$ uname -r
  2.4.20-8
  [jaspert@spirograph Run]$ /usr/local/ActiveTcl/bin/wish
  % info patchlevel
  8.4.3
  % package require BWidget
  1.6
  % source disag.tcl
  % Disaggregate .mswindow00001.canvas {Desktop} white
  generated 1.0 {} Default {} {} 0 0 0

  <at this point it is hung>


tkt_uuid: 753770ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: ftp
priority: 5 Medium
foundin: None
title: unwanted log output
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: afaupell
closedate: 2003-07-28T18:07:03
comment:
  The ftp-modules in tcllib 1.4 produces a line of output
  for every transfer: "xxxx bytes sent in yyy seconds
  (zzzz Bytes/sec)".

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

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

  The attached patch should change this.


tkt_uuid: 754920ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: mime
priority: 5 Medium
foundin: None
title: text/html file content causes socket error
cmimetype: text/plain
submitter: royterry
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2005-03-08T21:41:07
comment:
  My original experimental code combined three MIME 
  parts into a single message and used SMTP to send 
  successfully. The parts where a plain text file, a binary 
  file and an html file.

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

  400: error writing "sock248": invalid argument

  out of mime::copymessageaux

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

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

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

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

         set hfile mime-bad.htm

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

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


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

  }


tkt_uuid: 756334ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ComboBox doesn't take focus during keyboard traversal
cmimetype: text/plain
submitter: pointsman
assignee: damonc
closer: oehhar
closedate: 2009-07-01T08:27:48
comment:
  A ComboBox with -editable false doesn't take the focus
  during keyboard traversal even with an explicite
  -takefocus 1.

  It's documented to work this way, but it's IMHO the
  wrong behaviour. Even with -editable false the user is
  able to select a value with the arrow keys. As it is
  know, with a ComboBox with -editable false, a User must
  always leaf the keyboard and first click the ComboBox,
  to choose a value.

  Proposed behaviour: with a explicite -takefocus 1 the
  ComboBox takes always the focus during keyboard
  traversal, even if -editable false.


tkt_uuid: 756893ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: smtpd
priority: 5 Medium
foundin: None
title: Error in rcpt
cmimetype: text/plain
submitter: barcellos
assignee: patthoyts
closer: patthoyts
closedate: 2003-06-19T21:51:53
comment:
  When I use a "command" rcpt , I receive an eror:
  ----
  mail from:x
  501 Syntax error in parameters or arguments
  ----

  In server a message log is:

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

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

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

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

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

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

  Thank you.

  FB

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


tkt_uuid: 756939ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: ncgi
priority: 8
foundin: None
title: No way to get a list of only the known keys
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2005-09-30T22:23:35
comment:
  The package provides a command to ask if a key is 
  present in the ncgi package, but has no command to 
  return a list of all known keys ...

  Indirectly possible through 'nvlist' and stripping out the 
  data elements.


tkt_uuid: 756948ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: html
priority: 7 High
foundin: None
title: html::select's use of ncgi not correct ?
cmimetype: text/plain
submitter: andreas_kupries
assignee: welch
closer: mic42
closedate: 2006-07-02T20:16:42
comment:
  tcllib CVS head.

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

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

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

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


tkt_uuid: 759881ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 9 Immediate
foundin: None
title: Move TclDES extension into tcllib
cmimetype: text/plain
submitter: mcody
assignee: patthoyts
closer: andreas_kupries
closedate: 2005-09-30T19:05:05
comment:
  I am interensted in moving my TclDES 0.5 extension into
  tcllib. Doing this would make it more accessible to the
  Tcl community. I want to continue to be the maintainer
  of the extension. The des extension, currently in
  tcllib but not listed, would be deprecated or replaced
  with the code of TclDES and/or TclDESjr.

  There is possibly an issue with import/export
  restrictions with TclDES since it contains support for
  3DES (considered "strong encryption"). There is not so
  much a problem with TclDESjr, which does not contain
  3DES. Placing TclDES into the tcllib distribution may
  "taint" the entire distribution, per se.

  A middle ground may be to place TclDESjr into tcllib,
  leaving TclDES as a separate extension. The problem
  with this is that plain DES is relatively weak
  encryption and not used for many applications these
  days. Still, it is easy enough to derive 3DES from
  plain DES, so perhaps, TclDESjr is sufficient.
  Conversly, if deriving 3DES from plain DES is so
  simple, why worry about it and just place both TclDES
  and TclDESjr into tcllib.


tkt_uuid: 763669ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: mime
priority: 5 Medium
foundin: None
title: Problems with qp_encode and encoded_word, no_softbreak
cmimetype: text/plain
submitter: gunzel
assignee: mrose
comment:
  There are a number of bugs in qp_encode:

  When in no_softbreak mode it eats the last character.

  When in encoded_word mode it:

  - inserts softbreaks for lines over 72 chars
  - does not encode underscores leading to them being 
  decoded as spaces
  - does not encode question marks, potentially leading to 
  badly broken encoded words
  - does not encode tabs

  I have attached a patch to fix these and also to test them 
  and a couple of other RFC2047 requirements. With regard to 
  softbreaks in encoded words it's still not legal to just let 
  them ron on as an encoded word is not meant to be longer 
  than 75 characters itself. I'll file a bug report and patch for 
  that soon.

  Matthew


tkt_uuid: 763712ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: mime
priority: 5 Medium
foundin: None
title: add optional charset decode to mime::getbody
cmimetype: text/plain
submitter: gunzel
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2004-05-04T20:38:18
comment:
  when calling mime::getbody, the body returned is still in
  the charset as specified in the Content-Type, it seems to
  me that it would be good if it could be decoded using 
  ::encoding convertfrom before being returned. As doing this 
  automatically will probably break existing scripts I have 
  added a -decode switch to getbody that when specified 
  causes the charset to be decoded.

  I've attached a patch that does this and some tests to test it. 
  I'd strongly suggest adding my patch submission #758742, 
  "charset mapencoding improvements" at the same time.

  Matthew


tkt_uuid: 763731ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: mime
priority: 5 Medium
foundin: None
title: word_encode makes encoded words that are too long
cmimetype: text/plain
submitter: gunzel
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2006-10-25T23:19:40
comment:
  RFC2047 says that encoded words should be no longer than 
  75 characters including all delimiters. The current 
  implementation of word_encode places no bounds upon the 
  length of encoded word it will attempt to create. If using the 
  quoted-printable method it will insert soft newlines at 72 
  characters of encoded content which is not permitted. If 
  using the base64 method it will wrap the content of the 
  encoded word at 60 encoded characters (45 bytes of 
  encoded content) which is also not permitted. 

  I have attached a patch that fixes these problems and also 
  addresses other restrictions of RFC2047, namely that 
  encoded words must end with integral characters (no 
  encoded character may be spread between two encoded 
  words). This requires that the encoding proc knows the 
  actual length of each character in the chosen encoding and 
  to calculate this it has been necessary to convert the given 
  strings back to UTF so that the encoded words can be built 
  up character by character in order to meet these 
  requirements. As this conversion is quite likely to just have 
  happened in the other direction a switch has been added to 
  indicate that the string is still in UTF form and conversion 
  from the passed in charset is not necessary.

  There is also a new switch for the maximum length of the 
  resulting encoded word for situations where the maximum 
  length must be less than the default (currently set at 66 
  which works for the Subject: header) such as in an Address 
  field where it must coexist with the email address within the 
  76 character limit.

  As the passing in of a long string or the requirement for a 
  shorter one may cause the generation of more than one 
  encoded word they are returned in the "wrapped" format, 
  separated by "\n " so they can still br dropped straight into a  
  header field and be valid.

  I have also fixed some reversed terminology in the docs for 
  field_decode.

  I have attached a patch with these fixes and a large number 
  of tests for both RFC compliance and implementation errors 
  made along the way. Some of the tests and implementation  
  rely on improvements from Patch #758742 "charset 
  mapencoding improvements" and bugfixes from Bug 
  #763669 "Problems with qp_encode and encoded_word, 
  no_softbreak"

  Matthew


tkt_uuid: 764702ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: mime
priority: 5 Medium
foundin: None
title: unknown charset 'utf-8' in ::mime::word_decode
cmimetype: text/plain
submitter: rspsf
assignee: mrose
closer: andreas_kupries
closedate: 2003-11-21T06:08:45
comment:
  The UTF-8 charset is currently not handled by
  ::mime::word_decode and related procs:

  tclsh8.4% ::mime::word_decode =?utf-8?Q?H=C3=BCrz?=
  unknown charset 'utf-8'

  Suggested change:

  Add UTF-8 mapping to encList in mime.tcl:
  diff -c1 mime-1.33.tcl mime.tcl
  *** mime-1.33.tclWed Jul  2 17:31:44 2003
  --- mime.tclWed Jul  2 17:58:16 2003
  ***************
  *** 183,185 ****
                unicode "" \
  !             utf-8 ""]
    
  --- 183,185 ----
                unicode "" \
  !             utf-8 UTF-8]
    


tkt_uuid: 765321ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct :: list
priority: 5 Medium
foundin: None
title: lcsInvertMerge dies with: can't read "type": no such variabl
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-07-05T05:31:42
comment:
  Create following proc

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

  call with:

     diff2 ab "a b"

  and it dies with

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

  Hope this is enough info.

  Regards,

  Ashley Sanders a.sanders@mcc.ac.uk


tkt_uuid: 765667ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 4
foundin: None
title: Backward tabbing over ComboBox needs 2 tabs.
cmimetype: text/plain
submitter: pointsman
assignee: jenglish
closer: jenglish
closedate: 2007-10-22T04:45:18
comment:
  package require BWidget

  entry .w1
  ComboBox .w2
  entry .w3

  pack .w1 .w2 .w3
  focus .w1

  While 'tabbing forward' over the entries (with the Tab
  key), only one tab is needed, to leave the ComboBox
  (.w2) and to have the focus on .w3. While 'tabbing
  backward' (with Shift-Tab), there are two Shilft-Tab
  events necessary, to go from .w2 to w1. 

  Expected behaviour: For backward tabbing, only one
  Shilft-Tab is needed, to go to the next (previous) widget.


tkt_uuid: 766245ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: inifile
priority: 5 Medium
foundin: None
title: ini::commit bug
cmimetype: text/plain
submitter: andreas_kupries
assignee: afaupell
closer: andreas_kupries
closedate: 2003-07-15T18:29:28
comment:
  Bug description added to the code ...

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


tkt_uuid: 766765ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: tree
priority: 8
foundin: None
title: myTree keys node ?PatternMatch?
cmimetype: text/plain
submitter: davidhbigelow
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-08-08T18:26:16
comment:
  It sure would be nice to query only the keys you need 
  from a strut::tree.  -- Like you can with Arrays.

  For Example:

  ARRAY NAMES:  array get names *NAME_*

  New Key Name Extraction: 

  myTree keys %n *NAME_*

  This would save a lot of extra analysis if the information 
  could be extracted directly using pattern matching 
  instead of extracting all keys.

  Any Questions?

  David Bigelow


tkt_uuid: 767522ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: tree
priority: 8
foundin: None
title: add tree command list processing
cmimetype: text/plain
submitter: davidhbigelow
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2004-02-15T06:48:53
comment:
  NOTE: This builds on the use of the "-key ?Pattern?" 
  enhancement request that I made earlier.


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

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

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

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


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

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

  Questions?

  Dave Bigelow


tkt_uuid: 768610ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Works For Me
subsystem: bwidget
priority: 5 Medium
foundin: None
title: NoteBook can't accept page named "C:\foo\bar"
cmimetype: text/plain
submitter: vincentdarley
assignee: hobbs
closer: hobbs
closedate: 2003-07-17T19:58:49
comment:
  % NoteBook .book
  % .book insert end {C:\foo\bar} -text {C:\foo\bar}

  throws an error:

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

  ...


tkt_uuid: 769871ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Wont Fix
subsystem: mime
priority: 5 Medium
foundin: None
title: 2 apparent protocol violations
cmimetype: text/plain
submitter: royterry
assignee: mrose
closer: patthoyts
closedate: 2006-11-06T21:57:12
comment:
  These may not matter but as I'm troublshooting
  obscure failures they come to my attention.

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

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

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

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

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


tkt_uuid: 772300ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
title: Tiny doc patch for TkTable
cmimetype: text/plain
submitter: hgiese
assignee: nobody
closer: andreas_kupries
closedate: 2003-07-16T15:41:22
comment:
  Looks like this is not the right place to talk about
  TkTable. Whoever gets this request: please assign it to
  Jeff Hobbs.

  In the documentation for TkTable please add in the section
      Embedded Windows
          ...
      -window pathName

  a line like: "When a pathName of "" is specified,
  TkTable ceases to display any widget which might have
  been associated with the cell in question."
  Best regards
  Helmut Giese


tkt_uuid: 772430ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: snit
priority: 5 Medium
foundin: None
title: snit: clean up error stacks, hide internals.
cmimetype: text/plain
submitter: andreas_kupries
assignee: duquette
comment:
  From a mail by Will, author of snit:

  I'd like Snit to do a much better job of cleaning up error 
  stack trace so that the Snit internals are hidden by 
  default.


tkt_uuid: 772435ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
title: snit: Initialization of type variables
cmimetype: text/plain
submitter: andreas_kupries
assignee: duquette
closer: duquette
closedate: 2003-10-18T04:07:38
comment:
  From a mail by Will, author of snit:

  * I'd like to add a good way to initialize array 
  typevariables.


tkt_uuid: 772442ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: snit
priority: 5 Medium
foundin: None
title: snit: Explore alternative for pkg mgmt setup
cmimetype: text/plain
submitter: andreas_kupries
assignee: duquette
closer: duquette
closedate: 2003-10-21T02:17:51
comment:
  Snit currently does

      catch {package require snit::__dummy__}

  to setup package management in the internal slave 
  interp it uses to process class definitions.

  This is a bit of a hack. Explore if an alias for 'package' 
  can be used as well.


tkt_uuid: 772461ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
title: snit: Allow masking of options (undefine)
cmimetype: text/plain
submitter: andreas_kupries
assignee: duquette
closer: duquette
closedate: 2003-11-21T23:16:12
comment:
  I wrote a 'mklabel' (adaptor) which gets
  its information from a metakit view/cursor. It 
  has a new
  option, handled in the megawidget, and uses 
  the label's
  -text and -textvariable to set the data.

  I don't want the megawidget to expose -text, 
  nor
  -textvariable. I currently have to alternatives 
  for doing so:

  1)List all options of the label we expose 
  and
  delegate them individually.

  - Long list, error prone, break when 
  label gets more
    options (= maintenance problem).

  2)Delegate option * and define -text -
  textvariable
  on the megawidget level, with 
  onconfigure/oncget
  as no-ops.

  - Still exposes the variables, although 
  as nulls.
    Setting them has no effect, reading 
  returns empty
    string

  I would like to be able to 'undefine' an option. 
  Causing the
  megawidget to know: This option is illegal, not 
  defined for
  the megawidget, nor must it be delegated.

  Then I would be able to

  undefine -text
  undefine -textvariable
  delegate option * to hull

  for my label, making it safe against unwanted 
  manipulation of
  the contents.


tkt_uuid: 772489ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: doctools
priority: 7 High
foundin: None
title: doctools: latex, add document internal cross-referencing
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
comment:
  In LaTex:
  - \label to define a location by name, and
  - \ref to create reference to a named location.


tkt_uuid: 772491ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 7 High
foundin: None
title: doctools: html out - generate in-document toc (of sections)
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2004-05-04T22:49:18
comment:
  HTML output should not only have
  a generated synopsis, but also a generated table of 
  contents (= list of sections in the file) at the head of 
  the file.


tkt_uuid: 772535ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: snit
priority: 3 Low
foundin: None
title: snit: implementation of mymethod command
cmimetype: text/plain
submitter: andreas_kupries
assignee: duquette
closer: duquette
closedate: 2004-08-08T04:21:16
comment:
  To deal with renaming of objects snit provides the 
  command [mymethod] to create code which can be 
  given to callback handlers.

  The generated code essentially refers to the variable 
  $Snit_instance in the unchanging private namespace of 
  the object, which contains the current name of the 
  intance = instance command.

  Example:
       mymethod foo
  generates
       "$Snit_instance foo"

  This is variable reference is a bit problematic. The code 
  executing the callback __must not__ any list command 
  when adding additional arguments to the callback. Which 
  is usual. The moment a list command is used, for 
  example [linsert], or [lappend] to build up the full cllback 
  command the variable reference will be quoted in braces, 
  and the final command will look like:

       "{$Snit_instance} foo arg1 arg2 ..."

  [eval]'ing this fails.

  Example stacktrace

  invalid command 
  name "$::ttable::ttable::Snit_inst1::Snit_instance"
      while executing
  "{$::ttable::ttable::Snit_inst1::Snit_instance} 
  NColChanged 0 3"
      ("uplevel" body line 1)
      invoked from within
  "uplevel #0 [linsert $options(-ncolcommand) end 
  $oldncols $ncols]"
      (procedure "Snit_configure-data" line 42)
      invoked from within

  You see how the command is constructed, and the 
  additional quoting generated by this.

  The big problem is that the usage of list commands to 
  construct an eval'able callback is the usual way of doing 
  this.


tkt_uuid: 773246ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: snit
priority: 3 Low
foundin: None
title: snit: Multi-delegation for options
cmimetype: text/plain
submitter: andreas_kupries
assignee: duquette
comment:
  For options it sometimes makes sense to delegate 
  changes to more than one component of a megawidget.

  For example: -background, -foreground of a megawidget 
  may go to all components.

  Currently we have no convenient way to specify such 
  multi-delegation. We can do it through an 'onconfigure' 
  handler, but this is inconvenient.


tkt_uuid: 776010ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: list
priority: 8
foundin: None
title: Add set operations.
cmimetype: text/plain
submitter: cleverly
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2004-02-04T05:47:57
comment:
  Date: 22 Jul 2003 17:46:51 GMT
  From: lvirden@yahoo.com
  Newsgroups: comp.lang.tcl
  Subject: Re: common elements in list of list


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

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


tkt_uuid: 777061ffffffffffffffffffffffffffffffffff
type: Patch
status: Open
resolution: None
subsystem: None
priority: 5 Medium
foundin: None
title: add images to widget::balloonhelp
cmimetype: text/plain
submitter: pkienzle
assignee: damonc
comment:
  Allow images in the balloonhelp label for
  balloonhelp.tcl using -image name.  For tcl 8.4, also
  accept -compound position.  

  Use resources to define the label properties.  

  Have label wrap at 3i.


tkt_uuid: 777568ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: None
priority: 5 Medium
foundin: None
title: tklib ipentry widget pkgIndex.tcl bug
cmimetype: text/plain
submitter: lvirden
assignee: afaupell
closer: afaupell
closedate: 2003-07-28T06:51:42
comment:
  the pkgEntry.tcl file for ipentry says:
  i# Tcl package index file, version 1.1

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


tkt_uuid: 780704ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: None
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Clear value of combobox
cmimetype: text/plain
submitter: decosterjos
assignee: hobbs
closer: dev_null42a
closedate: 2006-09-28T15:49:39
comment:
  When a BWidget ComboBox has an empty list of values,
  the value can no longer be cleared. This patch addes an
  'clearvalue' proc.

  Jos.


tkt_uuid: 781240ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
title: ssl tls
cmimetype: text/plain
submitter: nobody
assignee: nobody
closer: patthoyts
closedate: 2003-08-05T20:47:34
comment:
  would be nice to include an option in ftp::open to use 
  tls or not. i am sure u guys can tell me how to make it 
  work without having to wait for next version :)


tkt_uuid: 781652ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Selection display bug in BWidgets Listbox
cmimetype: text/plain
submitter: sgamon
assignee: hobbs
closer: hobbs
closedate: 2003-08-06T23:36:06
comment:
  When using a BWidgets Listbox, clicking on an item
  selects it, and highlights the text (that's normal). 
  However, clicking on other items does not remove the
  highlights from previous selections.  It is quickly
  possible to fill the listbox
  with apparently selected items.  Very confusing.

  The problem is located in ListBox::_redraw_selection:

              set id [eval [list $path.c create
  rectangle] $bbox \
        [list -fill $selbg -outline $selbg \
        -tags [list [list sel s:$item]]]]

  This is one [list] too many. Changing this line to:

              set id [eval [list $path.c create
  rectangle] $bbox \
        [list -fill $selbg -outline $selbg \
        -tags [list sel s:$item]]]

  solves the problem. 


tkt_uuid: 781973ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: textutil
priority: 8
foundin: None
title: ::textutil::expander mishandles unterminated macros
cmimetype: text/plain
submitter: duquette
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-08-06T23:13:47
comment:
  ::textutil::expander has an error mode setting that governs 
  how errors are handled when an error is found while 
  expanding a string.  For example, the error can be thrown 
  normally, the error message can be inserted into the output 
  in place of the macro, or the macro text can be left in the 
  output unchanged.

  If ::textutil::expander encounters an unterminated macro, 
  e.g., if it encounters the left macro bracket but there is no 
  matching right macro bracket, then it always throws a 
  normal error, ignoring the error mode.  This is a common 
  error for novices to make, and the current implementation 
  means that the unterminated macro error must be handled 
  differently from other errors in the expander's input.

  ::textutil::expander should be changed so that the 
  unterminated macro error is handled like all other errors.


tkt_uuid: 782367ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: ftp
priority: 5 Medium
foundin: None
title: ftp.tcl: file list empty after file get
cmimetype: text/plain
submitter: codeman1911
assignee: gwlester
comment:
  when I list a dir from root, say
  list /pub/linux/redhat

  I get a listing as usual. If I then do:

  get /pub/linux/redhat/readme.txt

  I get readme.txt , ok.

  If I now do :

  list /pub/linux/mandrake

  I get an empty dirlisting. If I do :

  list /pub/linux/mandrake

  I get the dirlisting with twice the contents .....
  pub is a symbolic link in root.

  If I do list, get, cd, list I get a normal listing.
  This problem occurs with different ftp daemons.


tkt_uuid: 782735ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: ncgi
priority: 5 Medium
foundin: None
title: import file
cmimetype: text/plain
submitter: nobody
assignee: gwlester
closer: mic42
closedate: 2006-07-02T20:36:54
comment:
  documentation refers to [importFile] but implementation 
  still has [import_file]

  attempt to invoke import_file gives
  invalid command name "pre"

  which is not surprising


tkt_uuid: 783878ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: ftp
priority: 5 Medium
foundin: None
title: FTP library responding WAY to slow on ftp connect timeout.
cmimetype: text/plain
submitter: atlems
assignee: gwlester
comment:
  I am currently programming a tcl script for an 
  eggdrop(www.egghelp.org) which shall tell me if a list of 
  ftp's are up and running or not. For making the coding a 
  lot more easy for me I am using the FTP library package 
  and I am running TCL 8.4.4 (did also try with 8.3.4). It is 
  a really great library and all seems to work ok, but a 
  rather large problem occurs when I am trying to connect 
  to a server which ends up with a timeout. It takes just 
  way to long time for the tcl library to give me the right 
  response: "-1".

  When I connect to this server in FlashFXP in Windows it 
  says;
  Connecting to 123.456.789.123
  Connection failed (Connection timed out)
   
  This is what I type & get in tcl cmd line;
  % ftp::Open 123.456.789.123 username password 
  -timeout 2 -port 12345 -mode passive
  -1
   
  As you can see, this works in theory, but it takes several 
  minutes before I get the "-1" response, even though I've 
  set the "timeout" setting.
   
  Those minutes causes my eggdrop to totally "crash" for 
  some minutes and usually disconnects from the IRC 
  server because of this... In short; I need it to tell me 
  MUCH faster if the ftp is responding or not...
   
  If this is not a bug in the tcl library, how can/shall I solve 
  my problem? If it is a bug, would it be possible for any of 
  you guys to give me a 
  fix? A fix is appreciated!
   
  Thanks!


tkt_uuid: 784157ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: fileutil
priority: 8
foundin: None
title: ::fileutil::find is now dependent upon Tcl8.4
cmimetype: text/plain
submitter: jhjl
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-08-06T22:43:45
comment:
  In fixing fileutil.tcl: Fixed SF tcllib bug [647974], the 
  Tcl8.4 [file system ...] command was used in the ::find 
  proc. 

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


tkt_uuid: 784269ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: bwidget
priority: 5 Medium
foundin: None
title: {Ctrl f} menu item accelerator broken
cmimetype: text/plain
submitter: mswan
assignee: damonc
closer: damonc
closedate: 2003-10-20T23:16:15
comment:
  I've been using BWidgets 1.6.0 to create a simple interface 
  for viewing some text.  One of my 'Edit' menu items is 
  'Find...' for which I wanted to use the control-f sequence as 
  an accelerator.  Try as I might, it didn't work so I dug into 
  how the menus are created in mainframe.tcl and discovered 
  a problem with the regular expression used when looking for 
  the F1 -> F19 special keyboard keys.

  As it turns out, the regular expression that's supposed to be 
  looking for "f1", "f2", ... "f19" is matching "f" as well.  Since 
  it matches, the variable gets converted to upper case, which 
  it apparently has to be for the special F keys.  However, this 
  changes what should be <Control-f> to <Control-F> which 
  means you have to hold the shift key in order to activate it.

  The regular expression checks I'm referring to is in 
  _parse_accelerator() routine near the bottom of 
  mainframe.tcl.  The expression is {f[1]?[0-9]*} but should 
  be, I believe, {f1?[0-9]}.  This new expression matches 
  everything its supposed to and doesn't match "f".

  I've attached a simple test case to show what I'm talking 
  about.


tkt_uuid: 784515ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: Documentation
priority: 7 High
foundin: None
title: Obsolete module instructions in README
cmimetype: text/plain
submitter: duquette
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-10-21T19:24:06
comment:
  The overall tcllib README file describes how to add new 
  modules to Makefile.in.  A casual inspection of Makefile.in 
  reveals that it's not done this way anymore.  README should 
  be updated to reflect the new method.


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

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


tkt_uuid: 784523ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: (unused)
priority: 7 High
foundin: None
title: make install fails on Mac OS X
cmimetype: text/plain
submitter: duquette
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-10-21T19:36:43
comment:
  On Mac OS X, configure generates a Makefile with 
  extraneous carriage returns in the VERSION and pkglibdir 
  variables.  There might be additional problems as well.

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

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


tkt_uuid: 785416ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Out of Date
subsystem: None
priority: 7 High
foundin: None
title: BWidget ScrolledWindow problem
cmimetype: text/plain
submitter: decosterjos
assignee: hobbs
closer: hobbs
closedate: 2007-10-31T18:49:49
comment:
  The BWidget ScrolledWindow widget no longer honours the
  '-borderwidth' and '-relief' options. This patch solves
  this problem.

  Kind regards,

  Jos.


tkt_uuid: 791886ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Invalid
subsystem: None
priority: 5 Medium
foundin: None
title: des: encoded and then decoded string does not match original
cmimetype: text/plain
submitter: nobody
assignee: nobody
closer: patthoyts
closedate: 2003-08-27T21:31:51
comment:
  Hello all,




  the following happens, when I try to encode and then 
  decode back a given string:




  set ciphertext [::DES::des -mode encode -key secret 
  oliver]


  set plaintext [::DES::des -mode decode -key secret 
  $ciphertext]




  string equal "oliver" $plaintext  --> 0 ??


  string length "oliver" --> 6


  string length $plaintext --> 8




  The reason for this is, the string in $plaintext now have 
  two more 'chars' at the end, both of hex 00.




  Regards Oliver




  P.S. By the way, I can't select 'des' as a category while 
  submitting a bug, it's not in the dropdown list.


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


  Code snippet ...
  ...
  ...

  #! /usr/bin/wish

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

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

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

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

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

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

  pack $sw_t -fill both -expand yes

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

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

  pack $mainframe -fill both -expand yes


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

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

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

  proc main { } {

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

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

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

  main
  wm geom . [wm geom .]


tkt_uuid: 792775ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: bwidget
priority: 5 Medium
foundin: None
title: BWidgets 1.6.0 BUG: tk crashes when selecting interdependent
cmimetype: text/plain
submitter: donp1
assignee: hobbs
closer: hobbs
closedate: 2003-08-22T16:00:42
comment:
  I am not sure if this is a bug or not. I am running 
  tcl8.3/tk8.3 with BWidgets 1.6.0. The application 
  crashes.


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

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

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


tkt_uuid: 795032ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: uri
priority: 5 Medium
foundin: None
title: [package require uri] alter some vars on global level
cmimetype: text/plain
submitter: pointsman
assignee: andreas_kupries
closer: patthoyts
closedate: 2003-08-27T21:27:54
comment:
  This script:

  set host test
  package require uri
  puts $host

  returns:
  ((([A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9]|[A-Za-z0-9])\.)*([a-zA-Z][A-Za-z0-9-]*[A-Za-z0-9]|[a-zA-Z]))|([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+))

  It's not, that [package require uri] simply pollutes
  the global namespace. A

  package require uri
  puts $host

  gives "can't read "host": no such variable" as
  expected. The var 'host' must be set prior to the
  [package require uri] to be altered by the package request.

  The same problem shows with other variable names, for
  example 'escape', 'hostOrPort', 'uChar' and very
  probably some more.

  As far, as I've tracked it down, it seems, that proc
  ::uri::register or the script args of the various
  ::uri::register calls at the end of uri.tcl are the
  source of the problem.


tkt_uuid: 795585ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: fileutil
priority: 5 Medium
foundin: None
title: regular expression bug in fileutil::fileType
cmimetype: text/plain
submitter: glennjnn
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-09-04T00:11:38
comment:
  The test to determine if a file is an interpreted
  script file has an error:

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

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

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


tkt_uuid: 795608ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: bwidget
priority: 5 Medium
foundin: None
title: tk binding problem in Gnome and Ximian
cmimetype: text/plain
submitter: donp1
assignee: jenglish
closer: sf-robot
closedate: 2009-07-16T02:21:56
comment:
  There seems to be a bug when a tk listbox is embedded 
  inside a BWidget paned window frame. I have tried 
  putting the listbox outside of the frame and it works 
  correctly. This problem does not occur in KDE or using a 
  vnc. Is this a tcl/tk bug or is there some default setting 
  in Gnome or Ximian that needs to be changed in order 
  for the double-click event to be recognized? 

  Don


tkt_uuid: 7bb539fa97259ede350f042337eff27aae0591c8
type: Bug
status: Closed
resolution: Fixed
subsystem: tklib :: crosshair
priority: 7 High
severity: Important
foundin: crosshair 1.2
private_contact: f463162b66810fbbda2c193cc3476868adfe003a
title: ::crosshair::off doesnt work properly
cmimetype: text/plain
submitter: anonymous
assignee: aku
closer: aku
closedate: 2456478.21402427
comment:
  In routine ::crosshair::off

  Replace "Hide" by "Hide $w"

  --> The command "Hide" needs an argument

  Replace "set pos [lsearch -exact $bindtags Configure]" by 
          "set pos [lsearch -exact $bindtags Crosshair]"


  --> Bindtag "Configure" doesnt exist


  Replace "eval [list bindtags $w] [lreplace $bindtags $pos $pos]" by
          "bindtags $w [lreplace $bindtags $pos $pos]"

  --> It is more robust on list of tags such as "graphics-.main.mid.plot0.mid.graph0.c .main.mid.plot0.mid.graph0.c Canvas .main all" where ".main.mid.plot0.mid.graph0.c" is the name of the canvas.


tkt_uuid: 804089ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Error in Place with multiple monitors.
cmimetype: text/plain
submitter: patthoyts
assignee: damonc
closer: damonc
closedate: 2004-02-10T20:41:20
comment:
  From Jeff Griffiths via ActiveState lists...

  Using Win2K SP4 win multiple monitors at different
  resoutions, when clicking on the package button to add
  a package in tclapp:

  bad geometry specifier "294x25762+232"
  bad geometry specifier "294x25762+232"
      while executing
  "wm geometry $path "${w}x${h}${x}${y}""
      (procedure "BWidget::place" line 134)
      invoked from within
  "BWidget::place $path 0 0 $place $parent"
      (procedure "Dialog::draw" line 36)
      invoked from within
  "Dialog::draw .main.frame.nb.f.pkgsel"
      ("eval" body line 1)
      invoked from within
  [snip]


tkt_uuid: 806420ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: comm
priority: 5 Medium
foundin: None
title: comm uses wrong fconfigure options
cmimetype: text/plain
submitter: mic42
assignee: hobbs
closer: hobbs
closedate: 2003-10-21T22:50:07
comment:
  Comm loses unicode chars on the way.

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

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

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

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


tkt_uuid: 806537ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: None
subsystem: bwidget
priority: 5 Medium
foundin: None
title: bwidget - Progressbar problem
cmimetype: text/plain
submitter: decosterjos
assignee: hobbs
closer: dev_null42a
closedate: 2006-09-27T02:35:14
comment:
  Hi,

  When using the progressbar widget with large values, it
  is not 
  correctly drawn.  The following script shows the
  behaviour on my (32 bit arithmetic) machine:


  package require BWidget

  set max  100000000
  set incr   1000000

  pack [ProgressBar .pb -maximum $max -variable x]

  for { set x 0 } { $x < $max } { incr x $incr } {
      after 10
      puts $x
  }


  The attached patch fixes this problem.

  Kind regards,

  Jos


tkt_uuid: 809821ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Accepted
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
title: tkchat 1.119 user info editor problem
cmimetype: text/plain
submitter: dkf
assignee: patthoyts
closer: patthoyts
closedate: 2003-09-20T20:38:09
comment:
  The tkchat user info editor dialog fails on my user
  info because some of it looks like Tcl code.  :^)

  Here's a patch to fix that.


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

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


tkt_uuid: 815405ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: pop3
priority: 5 Medium
foundin: None
title: pop3::top Hangs under wish/tkcon
cmimetype: text/plain
submitter: royterry
assignee: andreas_kupries
comment:
  I have a script that runs fine under tclsh84.
  When run by wish it hangs and then begins to
  take 100% of cpu. May work with 1 or 2 messages but 
  hangs consistently with more.

  I haved tried supplying a bgerror handler and supplying  
  a do-nothing log::log proc. Still hangs when

  Script attached

  INPUT: (add to top of script)
  mailserver
  login
  pass


  Windows 2000
  Tcl/Tk 8.4.2


tkt_uuid: 817351ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: comm
priority: 5 Medium
foundin: None
title: error for new comm channels
cmimetype: text/plain
submitter: hemanglavana
assignee: andreas_kupries
closer: hobbs
closedate: 2003-10-21T23:15:10
comment:
  The documentation example shows following usage to
  create a new comm channel:

  ::comm::comm new ::comm::comm -port 0 -local 1 ...

  However, when I try to specify ::comm::p2 as the
  channel name, it fails to create the internal variables
  correctly. If I specify p1 without full namespace, it
  works properly. See the following interactive session:

  hlavana-u5:64> tclsh
  % package require comm
  4.1
  % ::comm::comm new p1 -port 0 -local 1 -listen 1
  % p1 self
  invalid command name "p1"
  % ::comm::p1 self
  40695
  % ::comm::comm new ::comm::p2 -port 0 -local 1 -listen 1
  % ::comm::p2 self
  can't read "comm(p2,port)": no such element in array
  %  ::comm::comm channels
  ::comm::comm p1 ::comm::p2

  This looks like a bug to me.

  Hemang.


tkt_uuid: 820807ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: math
priority: 7 High
foundin: None
title: Bug in ::math::statistics::mean ?
cmimetype: text/plain
submitter: woj
assignee: arjenmarkus
closer: andreas_kupries
closedate: 2003-11-21T05:47:37
comment:
  I am running math version 1.2.2 and statistics version0.06.

  The following line of code:
  ::math::statistics::mean "0.06 0.06 0.06 0.06 0.06 0.06
  0.06 0.06"

  returns error:
  domain error: argument not in valid range

  After reducing the number of elements from 8 to 7, the
  bug no longer shows up.

  Thanks.  


tkt_uuid: 821126ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: base64
priority: 7 High
foundin: None
title: uninitialized "$output" in ::base64::decode
cmimetype: text/plain
submitter: gionco
assignee: patthoyts
closer: andreas_kupries
closedate: 2003-10-24T17:47:22
comment:
  Bug: '$output' is not defined in some situations at the
  end of
  proc ::base64::decode

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

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

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


tkt_uuid: 822850ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: None
priority: 8
foundin: None
title: incorrect eval use in various modules
cmimetype: text/plain
submitter: mic42
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2004-05-03T22:56:54
comment:
  As pointed out by Jeff Hobbs on TCLCORE, eval is used
  in incorrect and unsafe ways in various modules. This
  should be fixed.

  Michael


tkt_uuid: 823346ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: htmlparse
priority: 5 Medium
foundin: None
title: Minor updates to htmlparse
cmimetype: text/plain
submitter: mic42
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-10-24T19:39:46
comment:
  The attached patch contains some minor updates to
  htmlparse, so that it uses string functions in some
  places where regexp/regsub isn't needed and simplifies
  some code.

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


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


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

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

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

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

  What do you think of that?

  Best regards
    Stefan


tkt_uuid: 827436ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: mime
priority: 5 Medium
foundin: None
title: smtp::sendmail does not send correct ending sequence
cmimetype: text/plain
submitter: col_ford
assignee: mrose
closer: patthoyts
closedate: 2006-11-06T21:11:33
comment:
  I've been using the smtp::sendmail and mime types to
  send attachements (base64 encoded). The system I use is
  Windows 2000. 

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

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

  the sent sequence is just "."

  If I change line 1254 in smtp.tcl from:

  set result [talk $token $secs .]

  to 

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

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

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


tkt_uuid: 827643ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct :: tree
priority: 5 Medium
foundin: None
title: Root node for walk-thru
cmimetype: text/plain
submitter: setok
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-10-21T20:08:27
comment:
  It is not documented that the node called "root" can be
  used with the [walk] subcommand to tell it to start
  from the root. Indeed, it would probably be wise to
  separately document that the root node is actually
  called "root" and can be used anywhere any other node
  can be used.


tkt_uuid: 827645ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: htmlparse
priority: 5 Medium
foundin: None
title: Missing documentation on contents of tree
cmimetype: text/plain
submitter: setok
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-10-21T19:51:35
comment:
  With the 2tree command there is no documentation on
  what actually lies within the tree. Ie. that the tag is
  specified within the "type" key and  character data
  appears in a child with a type of "PCDATA". Without
  this documentation usage of the tree is a bit of a mystery.


tkt_uuid: 828160ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: mime
priority: 5 Medium
foundin: None
title: "Holy cow"default headers break compatibility
cmimetype: text/plain
submitter: nobody
assignee: mrose
closer: patthoyts
closedate: 2006-11-06T22:05:25
comment:
  In generated by mime:: 
  messages there are two default headers, that are used
  nonconsistently and force hard-to-catch bugs
  1) Content-ID. There should be NO Content-ID inserted
  in main, the most outer message. The only parts that
  should get Content-ID are
  internal parts. Better remove default insertion of
  Content-ID or just
  note that in documentation, that if you generate a
  message, you should remove Content-ID from the main
  covering part.
  2) In all parts there is MIME-Version: header. This is
  not necessary,
  but it's not possible to remove that header by
  mime::setheader!
  It's better to make MIME-Version header removable by
  mime::setheader.
  3) it's not possible to create 
   Content-Disposition: attachment; filename="qqq"
   by usual means, Content-Disposition doesn't allow
  parameters, what is wrong.
  Denis Medvedev
  t_mdl@yahoo.com


tkt_uuid: 828717ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Not Applicable Here
subsystem: profiler
priority: 7 High
foundin: None
title: Enhancing the profiler
cmimetype: text/plain
submitter: fstockinger
assignee: nobody
comment:
  Hallo,

  this patch refers to my posting at comp.lang.tcl
  'Enhancing tcllib profiler' and
  tries to improve the profiler. For a most explicit
  discussion of my ideas see
  there, here I give a short summary.

  - 'canonical' names using 'namespace origin' in
  TraceHandler
    and some workaround for empty info levels and
  tkInit's self deletion (ARRG).

  - api extension for tcl 8.4 to add and remove procedure
  and commands to
    profiling (::profiler::addCmd {name}
  ::profiler::removeCmd {name})

  - start and stop of arranging procs for profiling.
  (BTW, I'm still looking for
    better names for these procedures).
    
  This are the points which are still open, IMHO (changed
  to comp.lang.tcl)
  - tracking renames of commands and procedures. Well, my
  first try was not very
    successful.
  - automatic workaround for namespace import difficulties.
  - leaving the profiler completely, something like
  package forget ...
  - have a closer look on recursive function calls
  - and maybe some day one could measure the coverage, too.

  BTW, the diff I add is against profiler version 0.2.1.
  Again, if you are interested I can send the complete
  file and some tcltests.
  <frank/>


tkt_uuid: 830075ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: fileutil
priority: 7 High
foundin: None
title: fileutil::cat doesn't concatenate files
cmimetype: text/plain
submitter: davidw
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-11-19T05:20:21
comment:
  fileutil::cat only accepts one filename as an argument,
  whereas the real cat takes files and concatenates them
  together.


tkt_uuid: 83065570159df142baf5814ed124a652fe7ee80c
type: Bug
status: Closed
resolution: Invalid
subsystem: tklib :: widget
priority: 5 Medium
severity: Minor
foundin: 0.1
private_contact: c355fe76647598e366b7455160fc6b2fe290cec1
title: validator problem
cmimetype: text/plain
submitter: anonymous
assignee: aku
closer: aku
closedate: 2456463.20650799
comment:
  seems that the widget::validator does not work properly.
  Widget set the proper state flag but does not change color.
  Tk 8.6 on Win7


tkt_uuid: 831496ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: bwidget
priority: 9 Immediate
foundin: None
title: BWidget combobox popdown keyboard traversal broken
cmimetype: text/plain
submitter: jenglish
assignee: damonc
closer: damonc
closedate: 2003-11-11T00:02:51
comment:
  In the combobox,  when the listbox is popped down,
  <Key-Up> and <Key-Down> could be used to change the
  selected item, and <Key-Return> would select it and
  unpost the listbox.

  Now (combobox r1.26),  pressing <Key-Up> or <Key-Down>
  immediately unposts the listbox after changing the
  selected item.


tkt_uuid: 832317ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tclapps :: taip
priority: 5 Medium
foundin: None
title: taip.mp3 tagged wrong in CVS
cmimetype: text/plain
submitter: dkf
assignee: karll
closer: hobbs
closedate: 2003-10-29T19:30:13
comment:
  All MP3 files should be binaries, but
  apps/taip/taip.mp3 is marked as a text file.  This
  makes it check out wrong on Windows.  Fix with:
    cvs admin -kb apps/taip/taip.mp3


tkt_uuid: 832487ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: Documentation
priority: 5 Medium
foundin: None
title: pattern arg for profiler::reset not documented
cmimetype: text/plain
submitter: hemanglavana
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-10-29T19:25:27
comment:
  Hi,

  The profiler man page does not document the optional
  argument ?pattern? for the reset command.

  Here's the patch for the same:

  godel:140> cvs diff profiler.man 
  Index: profiler.man
  ===================================================================
  RCS file:
  /cvsroot/tcllib/tcllib/modules/profiler/profiler.man,v
  retrieving revision 1.4
  diff -r1.4 profiler.man
  81c81
  < [call [cmd ::profiler::reset]]
  ---
  > [call [cmd ::profiler::reset] [opt [arg pattern]]]
  godel:141> 


tkt_uuid: 832488ffffffffffffffffffffffffffffffffff
type: Bug
status: Open
resolution: None
subsystem: None
priority: 8
foundin: None
title: License woes
cmimetype: text/plain
submitter: stwo
assignee: andreas_kupries
comment:
  Tcllib has three licenses:

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

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

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

  Thanks,

  Stu


tkt_uuid: 833034ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: ScrolledWindow fails after managed widget is destroyed
cmimetype: text/plain
submitter: schroedter
assignee: hobbs
closer: hobbs
closedate: 2003-10-30T17:43:25
comment:
  ScrolledWindow should be more robust, when the managed
  widget is destroyed, like it was for BWidget 1.5.

  Application background:
  -----------------------
  (1) After creating a ScrolledWindows $sw it has no
  widget and displays a gray background.
  (2) After assigning a widget [$sw setwidget $w] it
  manages the widget $w.
  (3) With 1.6 's not possible anymore to return to state
  (1).

  With BWidget 1.5 it was possible to destroy the widget $w.
  But BWidget 1.6 fails to display anything even after a
  fresh     
  [$sw setwidget ...].

  It would also be nice to have a
      $sw setwidget {}
  making the ScrolledWindow $sw manage no widget.

  Script illustrating the problem
  (runs with 1.5, fails with 1.6):
  -----------------------------
  catch {console show}
  package require -exact BWidget 1.6

  set sw [ScrolledWindow .sw -scrollbar both -auto both]
  pack $sw -fill both -expand yes
  wm geometry . 400x600

  for {set i 0} {$i < 2} {incr i} {
      text .text$i
      .text$i insert end [string repeat "This is text
  window $i\n" 5]
  }

  puts "The ScrolledWindow has no widget"
  after 3000 {$sw setwidget .text0; puts "Set widget 0"}
  after 6000 {destroy .text0; puts "Destroy widget 0"}
  after 9000 {$sw setwidget .text1; puts "Set widget 1"}


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

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

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


tkt_uuid: 836442ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: mime
priority: 9 Immediate
foundin: None
title: timeout with large data
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-11-19T05:26:59
comment:
  Hi,

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

    Problem: 

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

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

    the bug is in the code:

     [expr {$secs*1000}]

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

    to fix this problem i add some code:

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


  mfg

    aotto


tkt_uuid: 837818ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
resolution: Not Applicable Here
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: Quoting module
cmimetype: text/plain
submitter: dkf
assignee: nobody
comment:
  It'd be very nice if we could have a module to help
  with those trickier quoting tasks that newbies get
  slightly wrong.  Here's some example code adapted from
  a discussion on the chat...

  proc makeMap {} {
     set chars {{[\"$#; ]}}
     append chars \t
     set map [list \n \\n]
     foreach c [split $chars {}] {lappend map $c \\$c}
     return $map
  }

  variable addBackslashMap [makeMap]
  proc backslashQuote {string} {
     variable addBackslashMap
     string map $addBackslashMap $string
  }
  proc braceQuote {string} {
     list $string
  }

  There's probably other things that could be added too.


tkt_uuid: 839066ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: None
subsystem: bwidget
priority: 5 Medium
foundin: None
title: bwidget - Binding for whole Tree Area
cmimetype: text/plain
submitter: nobody
assignee: damonc
closer: dev_null42a
closedate: 2006-09-28T15:50:08
comment:
  I'm using BWidgets for creating a user interface for a
  test system.
  Among other things this user interfaces shows and
  handles data presented as a tree (which I have realized
  by BWidgets). By this I have to be able to show a
  context menu when the mouse is clicked upon the
  BWidgets tree. This means I need a binding not only for
  the text or the image of a node but for the entire tree
  area.

  I made a litte enhancement in the module tree.tcl which
  offers me the command
      $tree bindArea $event $script

  I added the following lines:
  15d14
  < #     - Tree::bindArea
  443,448d441
  < #
  ----------------------------------------------------------------------------
  < #  Command Tree::bindArea (added by MHO - Sigos GmbH)
  < #
  ----------------------------------------------------------------------------
  < proc Tree::bindArea { path event script } {
  <   bind $path.c $event $script
  < }


  I think this enhancement is useful for all users of
  BWidgets and therefore I would be encouraged, if you
  could take this enhancement over into the next version
  of BWidgets.

  Best regards
  Monika Holzammer

  E-Mail: Monika.Holzammer@sigos.de


tkt_uuid: 839181ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: inifile
priority: 5 Medium
foundin: None
title: Not Found
cmimetype: text/plain
submitter: nobody
assignee: afaupell
closer: afaupell
closedate: 2003-11-12T19:35:31
comment:
  Are you  sure inifile is in the distribution of tcllib1.4 ? 
  Please verify, becouse all package work, bug inifile isn't 
  found.


tkt_uuid: 839469ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 9 Immediate
foundin: None
title: entry doesn't work in 8.3
cmimetype: text/plain
submitter: hobbs
assignee: damonc
closer: hobbs
closedate: 2003-11-14T17:15:56
comment:
  In entry.tcl, the package vcompare should be more 
  clearly:

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

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


tkt_uuid: 840568ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
title: fileType: Detect audio
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2005-09-30T19:08:21
comment:
  Extend fileType to detect various audio file formats:
  wav
  ogg
  mp3
  ra (real audio)

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

         .8svx     Amiga 8SVX musical instrument
  description format.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

         vorbis    See .ogg format.

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

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


tkt_uuid: 840571ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
title: fileType: Detect video
cmimetype: text/plain
submitter: andreas_kupries
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2005-09-30T19:08:41
comment:
  Extended fileType to detect various video formats

  wmf - windows media player
  rm - real media
  mov - MOV format
  ogg/theora - ogg video format.
  mpeg2


tkt_uuid: 842066ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: ncgi
priority: 5 Medium
foundin: None
title: need ncgi::exists
cmimetype: text/plain
submitter: fridolin
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2005-09-30T22:23:40
comment:
  Hi, 

  I need this simple function:

  proc ::ncgi::exists { var } {
     variable value
     return [info exists value($var)]
  }

  ncgi::empty does _not_ what i want.

  Thanks,
  Christoph


tkt_uuid: 842408ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: struct
priority: 5 Medium
foundin: None
title: pool.tcl - requesting an allocated item returns error
cmimetype: text/plain
submitter: eriklns
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-11-19T06:40:18
comment:
  Observed:
  =======

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

  The last command fails, returning an error.

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

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

  Greetings,

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


tkt_uuid: 843932ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Fixed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Line continuation missing in entry.tcl
cmimetype: text/plain
submitter: oehhar
assignee: hobbs
closer: hobbs
closedate: 2003-11-17T20:16:23
comment:
  In the cvs from 2003-11-10, the is a line continuation 
  missing in file entry.tcl in function Entry::create.

  The diff is:

  112c112
  <             -foreground [Widget::getMegawidgetOption 
  $path -disabledforeground]
  ---
  >             -foreground [Widget::getMegawidgetOption 
  $path -disabledforeground]\


tkt_uuid: 844660ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: tklib :: install
priority: 5 Medium
foundin: None
title: tklib will not install documentation for some
cmimetype: text/plain
submitter: tmh
assignee: hobbs
closer: afaupell
closedate: 2003-11-30T02:02:10
comment:
  done
  Installing documentation for cursor
  install: `/opt/tcl8.5a0/man/mann/cursor.n' mode
  mismatch (0644 != 0444)
  Installing documentation for datefield
  install: `/opt/tcl8.5a0/man/mann/datefield.n' mode
  mismatch (0644 != 0444)
  Installing documentation for ipentry
  install: stat: ./modules/ipentry/*.n: No such file or
  directory
  install: installation of `./modules/ipentry/*.n' failed
  Installing documentation for autoscroll
  install: stat: ./modules/autoscroll/*.n: No such file
  or directory
  install: installation of `./modules/autoscroll/*.n' failed
  *** Error code 1 (ignored)
  chmod 444 /opt/tcl8.5a0/man/mann/*
  /usr/local/bin/install -c -m 644 ./man.macros
  /opt/tcl8.5a0/man


  The files in ipentry and autoscroll end in .man not .n


tkt_uuid: 844766ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: snit
priority: 6
foundin: None
title: need ability to split class defs across files
cmimetype: text/plain
submitter: hobbs
assignee: duquette
closer: duquette
closedate: 2004-02-08T01:00:36
comment:
  snit does not currently allow one to create classes that 
  spread across multiple files.  It would be very useful to 
  have commands that enable one to modify (type)
  method bodies after creation without knowing snit 
  internals.  Itcl does allow this.


tkt_uuid: 846422ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
resolution: Accepted
subsystem: struct :: matrix
priority: 5 Medium
foundin: None
title: New sort method for matrix object
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2004-01-23T21:13:38
comment:
  I needed to sort a matrix, and wound up spending an
  evening 
  implementing sort methods for the struct::matrix extension.

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


tkt_uuid: 849106ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
title: Leaking smileys from the bridge
cmimetype: text/plain
submitter: dkf
assignee: hartweg
closer: patthoyts
closedate: 2004-04-30T13:36:56
comment:
  When an action message containing a smiley comes over 
  tclbridge from someone using IRC, tkchat replicates that 
  smiley at the start of the following line.

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

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

  (Thanks to davidw for helping to test this!)


tkt_uuid: 849829ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
title: AutoScroll not set in TK 8.5a0
cmimetype: text/plain
submitter: dgp
assignee: hartweg
closer: patthoyts
closedate: 2004-04-30T13:32:03
comment:
  When Tk 8.5a0 is used to run tkChat 1.128,
  the chat area does not scroll to make
  new messages visible.

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

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


tkt_uuid: 850245ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Out of Date
subsystem: md5
priority: 5 Medium
foundin: None
title: Performance blow under md5 2
cmimetype: text/plain
submitter: hgiese
assignee: patthoyts
closer: patthoyts
closedate: 2004-03-31T23:27:35
comment:
  Hello out there,
  I got informed that one of my applications barely
  crawls under 8.4.5 and traced it back to the md5
  package. The script below shows it. The resulting
  timing is (Win98 on a 1,3 GHz machine):

  Version: 8.4.4
  md5 needed      1 ms for a string of     1000 chars
  md5 needed      1 ms for a string of    10000 chars
  md5 needed      4 ms for a string of   100000 chars
  md5 needed     42 ms for a string of  1000000 chars
  md5 needed    400 ms for a string of 10000000 chars

  Version: 8.4.5
  md5 needed     12 ms for a string of     1000 chars
  md5 needed     62 ms for a string of    10000 chars
  md5 needed    601 ms for a string of   100000 chars
  md5 needed   6005 ms for a string of  1000000 chars
  md5 needed  60086 ms for a string of 10000000 chars

  -----
  package require md5

  proc tstMD5 {str} {
      set start [clock clicks -millisecond]
      set cks [md5::md5 $str]
      set end [clock clicks -millisecond]
      return [expr {$end - $start}]
  }

  set l "0123456789"
  # l1000 is a string containing 1000 chars
  set l1000 [string repeat $l 100]

  puts "Version: [info patchlevel]"
  set i 0
  set str $l1000
  while { $i < 5 } {
      set time [tstMD5 $str]
      puts "md5 needed [format %6d $time] ms for a string
  of [format %8d [string length $str]] chars"
      set str [string repeat $str 10]
      incr i
  }
  ------

  Best regards
  Helmut Giese


tkt_uuid: 851090ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Duplicate
subsystem: fileutil
priority: 5 Medium
foundin: None
title: bug in tempfile
cmimetype: text/plain
submitter: nobody
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2003-11-30T20:07:06
comment:
  The env array should be declared global (or qualified 
  with ::) in fileutil::tempfile. Otherwis it doesn't 
  work as intended. (see the code)


tkt_uuid: 851495ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: Enable drag and drop by default for ListBox
cmimetype: text/plain
submitter: sgamon
assignee: hobbs
closer: hobbs
closedate: 2004-09-14T20:09:34
comment:
  I suggest adding two new defaults to ListBox widgets:

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


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


tkt_uuid: 852945ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: None
subsystem: snit
priority: 5 Medium
foundin: None
title: variable should check for :: in names
cmimetype: text/plain
submitter: hobbs
assignee: duquette
closer: duquette
closedate: 2004-02-07T23:21:51
comment:
  although 'variable' isn't meant to be the same as Tcl's 
  variable, it is and will be used similarly.  Therefore it 
  would be a good idea to check if something like
     variable ::foo::bar
  is used and not prepend the snit namespace in that 
  case.


tkt_uuid: 856280ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
title: Add deletion callbacks to logger
cmimetype: text/plain
submitter: mic42
assignee: davidw
closer: davidw
closedate: 2003-12-17T23:18:27
comment:
  At the moment there is no (public) way to do a clean
  shutdown of the logger system. If one uses a custom
  logproc that opens files etc. it is not possible to
  detect the correct time a logfile should be closed etc. 

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

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

  Michael 


tkt_uuid: 858218ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Not Applicable Here
subsystem: ftp
priority: 5 Medium
foundin: None
title: errors thrown with no explanation
cmimetype: text/plain
submitter: vincentdarley
assignee: andreas_kupries
comment:
  This new code:


              # get return code, check for multi-line text
              
              if {[regexp -- "^-?(^[0-9]+)( |-)?(.*)$"
  $bufline all rc multi_line msgtext]} {
  set errmsg "C: Internal Error @ line 255.
  Regex pattern not matching the input "$bufline""
  if {$VERBOSE} {
      DisplayMsg $s $errmsg control
  }
      } else {
  set buffer $bufline

  # multi-line format detected ("-"), get all the lines

  is throwing errors on both ftp servers I commonly use
  (ftp.santafe.edu and ftp.ucsd.edu).  Can the error
  message be made more information ('regex pattern didn't
  match' isn't very helpful -- what is it expecting? how
  did the observed string differ from that?).


tkt_uuid: 860753ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: textutil
priority: 5 Medium
foundin: None
title: plain justification does not work with hyphenation
cmimetype: text/plain
submitter: totschnig
assignee: vogeler
closer: andreas_kupries
closedate: 2004-03-07T07:57:18
comment:
  the script

  package require textutil

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

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

  generates the following error:

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

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


tkt_uuid: 861277ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: htmlparse
priority: 5 Medium
foundin: None
title: htmlparse.tcl: backslashes in content
cmimetype: text/plain
submitter: jenglish
assignee: jenglish
closer: andreas_kupries
closedate: 2004-10-04T18:58:23
comment:
  htmlparse::parse fails if backslashes appear in content:

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


tkt_uuid: 861287ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
resolution: Fixed
subsystem: htmlparse
priority: 5 Medium
foundin: None
title: htmlparse: comment delimiters
cmimetype: text/plain
submitter: jenglish
assignee: andreas_kupries
closer: andreas_kupries
closedate: 2004-09-22T03:10:03
comment:
  htmlparse::parse doesn't parse comments correctly.
  One example:

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

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

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


