# attachment

src: 6e73380502c198a93d2e627bfe7ea88d193abd00
target: 981605ffffffffffffffffffffffffffffffffff
filename: bwidget_calendar_06282004.patch.gz
user: cmay
comment:
  Gzipped output of diffs with current CVS using -u option, apply with patch -p0 in top source bwidget directory.


src: a86dfa2fe1380d605cb3e19d1bf72e001ed48f63
target: 1935658fffffffffffffffffffffffffffffffff
filename: tkchat-20080406.patch
user: nobody@86.57.139.233
comment:
  tkchat.tcl, tkchat_clock.tcl: If someone change the default font settings, some controls are changed too. Fix that.


src: 1543256dad79fc9576b286fd6792f316d5ddc721
target: 3584575fffffffffffffffffffffffffffffffff
filename: cmdline.patch
user: amitguptainn
comment:
  Attached file has code changes for this feature request and #3584575. It supports must,file,dir type commandline parameters.


src: 580f1bcf8e05ef7f635ef9f2fd8020fab283298d
target: 1254934fffffffffffffffffffffffffffffffff
filename: testmd5.php
user: erl
comment:
  A PHP script to receive an HTTP uploaded file. Despite the name, it doesn't use MD5, just prints the length of the file.


src: 569bf7aaf4472b5d21e891fa048d0c0a1f8c989f
target: 3613162fffffffffffffffffffffffffffffffff
filename: logger.patch
user: amitguptainn
comment:
  Attached is the patch showing code changes for saving log to a file. ''logfile" needs to be set to logfile name for enabling the log saving


# ticket

tkt_uuid: 484123ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Patch for BWidget::place
comment:
  When BWidget::place is called with location different
  from 'at' and 'center' and without a prarent (arglen =
  1), variable 'widget'  is undefined. I added an 'else'
  case the if statement setting the variable widget to
  make sure the variable widget is always set.

  Result of 'cvs diff utils.tcl':

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


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

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


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

  record define fitParams {
      amp
      unmod
      jcoup
      t2star
  }

  record define fitData {
      delays
      values
  }

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

  record define fitXYData {

      silent
      verbose
      macro
      confidence
      
      {record fitInput input}
   }

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

  gives

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


  from garyt@bmb.leeds.ac.uk


tkt_uuid: 1765052fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Duplicate
title: nmea library; undefined variable error in ::nmea::read_port
comment:
  In the library modules/nmea/nmea.tcl the procedure read_port is as follows:

  proc ::nmea::read_port {f} {
      set line [gets $f]
      if {$::nmea::nmea(log) != ""} {
          puts $nmea(log) $line
      }
      ::nmea::parse_nmea $line
  }

  When logging is turned on this fails with an "unknown variable $nmea(log)" since nmea is undefined. I believe it should read:

  proc ::nmea::read_port {f} {
      variable nmea
      set line [gets $f]
      if {$::nmea::nmea(log) != ""} {
          puts $nmea(log) $line
      }
      ::nmea::parse_nmea $line
  }

  I hope this is correct. Thank you for your time!


tkt_uuid: 2941841fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Fixed
title: htmlparse crashes on really badly formed html
comment:
  % htmlparse::parse  "<a<a/>>" 
  extra characters after close-brace

  The string being parsed here is nonsense.  I'm not sure what a sane way to parse it would be.  Perhaps as a singleton tag named "a<a" followed by a naked ">".

  Erroring out is undesirable, because it doesn't attempt to do any partial parsing.


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

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

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



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

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


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

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


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


tkt_uuid: 3025582fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: inifile
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: comments lost, positions changing
comment:
  - when updating an ini file, comments, which are placed at the very top of the inifile are eventually placed elsewhere after update.
  - a comment immediately following the last keyword in a section is dropped, regardless if it begins in column 1.
  - The order of sections changes and there is no way to determine the original order.
  - comments, which not begin in column one are entirely lost. I think in windows, leading blanks are ignored for comments (I'm not 100% sure, though).

  INI files are human readable material, in which especially comments (and there position!) are very importand, as so does the order of entries in general.
  There is a small chance that only my code is wrong. I would be very sorry if this is the case...
  The code is the first try of a tool that updates an existing ini (old.ini) with new entries (specified in man.ini), and writes the result to new.ini.


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

    tclsh sak.tcl test

  run:

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

      ::units::convert 1.0calorie joule

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


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

      ::units::convert 09mm meter

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

  No failures from

    tclsh sak.tcl test units

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


tkt_uuid: 620754ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Patch to allow TkResource with toplevels
comment:
  Hi,

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

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

  Jos.


tkt_uuid: 795032ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: uri
priority: 5 Medium
foundin: None
resolution: Fixed
title: [package require uri] alter some vars on global level
comment:
  This script:

  set host test
  package require uri
  puts $host

  returns:
  ((([A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9]|[A-Za-z0-9])\.)*([a-zA-Z][A-Za-z0-9-]*[A-Za-z0-9]|[a-zA-Z]))|([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+))

  It's not, that [package require uri] simply pollutes
  the global namespace. A

  package require uri
  puts $host

  gives "can't read "host": no such variable" as
  expected. The var 'host' must be set prior to the
  [package require uri] to be altered by the package request.

  The same problem shows with other variable names, for
  example 'escape', 'hostOrPort', 'uChar' and very
  probably some more.

  As far, as I've tracked it down, it seems, that proc
  ::uri::register or the script args of the various
  ::uri::register calls at the end of uri.tcl are the
  source of the problem.


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



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


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

  Example below shows the issue:

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

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


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

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

  Best regards and keep up the good work
  Helmut Giese


tkt_uuid: 785416ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 7 High
foundin: None
resolution: Out of Date
title: BWidget ScrolledWindow problem
comment:
  The BWidget ScrolledWindow widget no longer honours the
  '-borderwidth' and '-relief' options. This patch solves
  this problem.

  Kind regards,

  Jos.


tkt_uuid: 740484ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Markup error in DragSite and DropSite HTML docu.
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: 714214ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 1 Zero
foundin: None
resolution: Fixed
title: test failures: fileutils module
comment:
  Test platform: tcl 8.4.2 on intel Windows 2000

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

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

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

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


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

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

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


tkt_uuid: 609750ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Out of Date
title: Makefile.in should support --libdir
comment:
  tcllib (and TEA in general) should support the --libdir 
  configure option to set its $(pkglibdir), it currently hardcodes 
  this to $(prefix)/lib , which breaks on Mac OS X where libdir is 
  completely unrelated to prefix.

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

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


tkt_uuid: 2795699fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: yaml
priority: 5 Medium
foundin: None
resolution: Fixed
title: does not work on TCL 8.4?
comment:
  I tried copying the tcllib 1.11.1 yaml package into my ActiveTcl 8.4.19 lib and got "can't read data(current)" when I ran ::yaml::yaml2dict.  Looking at the yaml code, it looks like it relies on TCL 8.5 array behavior where "incr a(1)" is legal even if a(1) doesn't exist yet.  That wasn't legal in TCL 8.4, so despite the fact that dict was backported to 8.4 and yaml package requires dict if running on a TCL version < 8.5, it doesn't actually work in 8.4.

  I haven't gone through the code changing the incr calls on uninitialized data(current) because I was afraid there might be other TCL 8.4 incompatibilities beyond just those, but I may do that in the near future after my current project ships (until then I can't really justify a lot of yak shaving).


tkt_uuid: 449521ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: control
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Add waitForAny to control module
comment:
  Here is a new package for your consideration: control.  I would be happy with a different name, 
  but this is how it was originally named on the Wiki.

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

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

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

  Regards,
  Ken Cox


tkt_uuid: 746176ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Duplicate
title: hang on parse
comment:
  hang on parsing
  mime::initialize -file MDNPart3 hang on parsing.
  This is real file from sendmail MTA

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


tkt_uuid: 1796255fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: Emoticons insertion
comment:
  on linux x68 when inserting emoticons, for some there are inserted three instead of one:
  cry:^(   :-(   :(

  these are also shown with ShowEmoticons menu (see attached file)


tkt_uuid: 1110076fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
title: 'jail' filenames
comment:
  One of the uses of commands such as stripPwd is as part
  of a system to 'jail' filenames in a certain directory.

  A 'jail' command that prevents URLs from escaping from
  that directory would be useful.  It would work
  something like this:

  fileutil::jail /var/www/ $somefile

  and returns an absolute pathname within /var/www

  $somefile is turned into a nativename

  if $somefile starts with /var/www, the filename is
  returned.

  otherwise, $somefile is appended to the 'jail', /var/www


tkt_uuid: 470206ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Accepted
title: HTTP Redirect for TkChat
comment:
  This is two patches to the TkChat source because
  I can't disentangle them reliably and the cvs
  source has been changed since I posted my first
  patch and it'll clash now.

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

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

  Pat Thoyts


tkt_uuid: 795585ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: regular expression bug in fileutil::fileType
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: 1362899fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: ButtonBox does calculate homogenous sizes correctly
comment:
  Given a ButtonBox with -homogeneous 1 and -orient
  horizontal, it is possible for buttons to be
  incorrectly sized.  The [_redraw] procedure attempts to
  determine the maximum button width and then sets the
  columns' minsize.  However, it has not scanned /all/ of
  the buttons and thus only knows the maximum size up to
  that point; there could be an even larger button later
  in the list.

  The following code was tested under Linux/x86, Tk 8.4,
  and BWidgets 1.7:

  % package require BWidget
  1.7
  % Dialog .test -homogeneous 1
  .test
  % .test add -text "ok" ; .test add -text "really long
  cancel button"
  .test.bbox.b1
  % puts [grid columnconfigure .test.bbox 0 -minsize];
  puts [grid columnconfigure .test.bbox 2 -minsize]
  44
  169
  % .test draw

  Attached to this bug report is a patch that correctly
  calculates button widths.  It should work for all cases.


tkt_uuid: 1316233fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: struct :: tree
priority: 8
foundin: None
resolution: Not Applicable Here
title: struct::tree - need more testcases - walk, deserialize
comment:
  For deserialize - handling of attributes for root node

  For walk - Handling of walks modifying the tree while
  they are running (move/delete/add of children,
  move/delete of parent, etc). The current behaviour is
  highly implementation defined, and likely  different
  between Tcl and critcl implementations.


tkt_uuid: 739387ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pop3
priority: 5 Medium
foundin: None
resolution: Invalid
title: -ERR authorization first on pop3::open
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: 1631379fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Works For Me
title: ComboBox pulldown appears on wrong screen
comment:
  This occurs when using a MacBook with osx 10.4.8, ActiveTcl 8.4.14 including BWidget 1.8. The ComboBox works OK if the app is on the notebook's own screen, but if it is on the external screen, when you click the pulldown arrow the entry list appears briefly on the left of that screen then jumps to the internal screen. Also it has the decorations, which probably shouldn't be there.


tkt_uuid: 712028ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 3 Low
foundin: None
resolution: Works For Me
title: v1.6 bug in LabelEntry Creation
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: 717921ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 4
foundin: None
resolution: Rejected
title: v1.6 BWidget LabelEntry fails (was id 712028)
comment:
  The attached file, when sourced twice in a row, fails
  to create the LabelEntry widget.

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


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

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

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


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

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

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


tkt_uuid: 830075ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 7 High
foundin: None
resolution: Fixed
title: fileutil::cat doesn't concatenate files
comment:
  fileutil::cat only accepts one filename as an argument,
  whereas the real cat takes files and concatenates them
  together.


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

  ---- tie-file-2.1 start

  ==== tie-file-2.1 file get FAILED
  ==== Contents of test case:

      set f [makeFile {array set {b 2 a 1}} journal]
      tie::std::file x $f
      set res [dictsort [x get]]
      x destroy
      removeFile journal
      set res

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: invalid command name "::uplevel"
      while executing
  "::uplevel #0 {array set {b 2 a 1}
  }"
      invoked from within
  "$ip eval [list ::uplevel \#0 $data]"
      (procedure "::tie::std::file::Snit_methodReplay" line 33)
      invoked from within
  "::tie::std::file::Snit_methodReplay ::tie::std::file ::tie::std::file::Snit_ins
  t12 ::x ::x"
      ("eval" body line 1)
      invoked from within
  "eval [linsert $args 0  ::tie::std::file::Snit_method$method ::tie::std::file ::
  tie::std::file::Snit_inst12 ::x $self]"
      (procedure "::x" line 10)
      invoked from within
  "$self Replay"
      (procedure "::tie::std::file::Snit_methodLoadJournal" line 10)
      invoked from within
  "::tie::std::file::Snit_methodLoadJournal ::tie::std::file ::tie::std::file::Sni
  t_inst12 ::x ::x"
      ("eval" body line 1)
      invoked from within
  "eval [linsert $args 0  ::tie::std::file::Snit_method$method ::tie::std::file ::
  tie::std::file::Snit_inst12 ::x $self]"
      (procedure "::x" line 10)
      invoked from within
  "$self LoadJournal"
      (procedure "::tie::std::file::Snit_methodget" line 10)
      invoked from within
  "::tie::std::file::Snit_methodget ::tie::std::file ::tie::std::file::Snit_inst12
   ::x ::x"
      ("eval" body line 1)
      invoked from within
  "eval [linsert $args 0  ::tie::std::file::Snit_method$method ::tie::std::file ::
  tie::std::file::Snit_inst12 ::x $self]"
      (procedure "x" line 10)
      invoked from within
  "x get"
      invoked from within
  "dictsort [x get]"
      invoked from within
  "set res [dictsort [x get]]"
      ("uplevel" body line 4)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== tie-file-2.1 FAILED

  ---- tie-file-3.0 start

  ==== tie-file-3.0 file set, wrong#args FAILED
  ==== Contents of test case:

      set f [makeFile {} journal]
      tie::std::file x $f
      set     res {}
      catch {x set} msg
      x destroy
      removeFile journal
      set msg

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: command "::x" already exists
      while executing
  "error "command \"$name\" already exists""
      (procedure "::snit::RT.type.typemethod.create" line 22)
      invoked from within
  "::snit::RT.type.typemethod.create ::tie::std::file x /vol/tclsrcsol/tcl85/tclli
  b/unix/journal"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "tie::std::file x $f"
      ("uplevel" body line 3)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== tie-file-3.0 FAILED

  ---- tie-file-3.1 start

  ==== tie-file-3.1 file set, wrong#args FAILED
  ==== Contents of test case:
      set f [makeFile {} journal]
      tie::std::file x $f
      set     res {}
      catch {x set a b} msg
      x destroy
      removeFile journal
      set msg

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: command "::x" already exists
      while executing
  "error "command \"$name\" already exists""
      (procedure "::snit::RT.type.typemethod.create" line 22)
      invoked from within
  "::snit::RT.type.typemethod.create ::tie::std::file x /vol/tclsrcsol/tcl85/tclli
  b/unix/journal"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "tie::std::file x $f"
      ("uplevel" body line 3)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== tie-file-3.1 FAILED

  ---- tie-file-3.2 start

  ==== tie-file-3.2 file set FAILED
  ==== Contents of test case:

      set f [makeFile {} journal]
      tie::std::file x $f
      set     res {}
      lappend res [x set {c 3 b 2 a 1}]
      lappend res [viewFile journal]
      x destroy
       removeFile journal
      set res

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: command "::x" already exists
      while executing
  "error "command \"$name\" already exists""
      (procedure "::snit::RT.type.typemethod.create" line 22)
      invoked from within
  "::snit::RT.type.typemethod.create ::tie::std::file x /vol/tclsrcsol/tcl85/tclli
  b/unix/journal"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "tie::std::file x $f"
      ("uplevel" body line 3)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== tie-file-3.2 FAILED

  ---- tie-file-4.0 start

  ==== tie-file-4.0 file names, wrong#args FAILED
  ==== Contents of test case:

      set f [makeFile {array set {b 2 a 1}} journal]
      tie::std::file x $f
      catch {x names a} msg
      x destroy
      removeFile journal
      set msg

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: command "::x" already exists
      while executing
  "error "command \"$name\" already exists""
      (procedure "::snit::RT.type.typemethod.create" line 22)
      invoked from within
  "::snit::RT.type.typemethod.create ::tie::std::file x /vol/tclsrcsol/tcl85/tclli
  b/unix/journal"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "tie::std::file x $f"
      ("uplevel" body line 3)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== tie-file-4.0 FAILED

  ---- tie-file-4.1 start

  ==== tie-file-4.1 file names FAILED
  ==== Contents of test case:

      set f [makeFile {array set {b 2 a 1}} journal]
      tie::std::file x $f
      set res [lsort [x names]]
      x destroy
      removeFile journal
      set res

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: command "::x" already exists
      while executing
  "error "command \"$name\" already exists""
      (procedure "::snit::RT.type.typemethod.create" line 22)
      invoked from within
  "::snit::RT.type.typemethod.create ::tie::std::file x /vol/tclsrcsol/tcl85/tclli
  b/unix/journal"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within

  "tie::std::file x $f"
      ("uplevel" body line 3)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== tie-file-4.1 FAILED

  ---- tie-file-5.0 start

  ==== tie-file-5.0 file size, wrong#args FAILED
  ==== Contents of test case:

      set f [makeFile {array set {b 2 a 1}} journal]
      tie::std::file x $f
      catch {x size a} msg
      x destroy
      removeFile journal
      set msg

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: command "::x" already exists
      while executing
  "error "command \"$name\" already exists""
      (procedure "::snit::RT.type.typemethod.create" line 22)
      invoked from within
  "::snit::RT.type.typemethod.create ::tie::std::file x /vol/tclsrcsol/tcl85/tclli
  b/unix/journal"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "tie::std::file x $f"
      ("uplevel" body line 3)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== tie-file-5.0 FAILED

  ---- tie-file-5.1 start

  ==== tie-file-5.1 file size FAILED
  ==== Contents of test case:

      set f [makeFile {array set {b 2 a 1}} journal]
      tie::std::file x $f
      set res [x size]
      x destroy
      removeFile journal
      set res

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: command "::x" already exists
      while executing
  "error "command \"$name\" already exists""
      (procedure "::snit::RT.type.typemethod.create" line 22)
      invoked from within
  "::snit::RT.type.typemethod.create ::tie::std::file x /vol/tclsrcsol/tcl85/tclli
  b/unix/journal"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "tie::std::file x $f"
      ("uplevel" body line 3)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== tie-file-5.1 FAILED

  ---- tie-file-6.0 start

  ==== tie-file-6.0 file unset, wrong#args FAILED
  ==== Contents of test case:

      set f [makeFile {array set {foo bar fox snarf a 3}} journal]
      tie::std::file x $f
      set     res {}
      catch {x unset a b} msg

      x destroy
      removeFile journal
      set msg

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: command "::x" already exists
      while executing
  "error "command \"$name\" already exists""
      (procedure "::snit::RT.type.typemethod.create" line 22)
      invoked from within
  "::snit::RT.type.typemethod.create ::tie::std::file x /vol/tclsrcsol/tcl85/tclli
  b/unix/journal"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "tie::std::file x $f"
      ("uplevel" body line 3)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== tie-file-6.0 FAILED

  ---- tie-file-6.1 start

  ==== tie-file-6.1 file unset, default pattern FAILED
  ==== Contents of test case:

      set f [makeFile {array set {foo bar fox snarf a 3}} journal]
      tie::std::file x $f
      set     res {}
      lappend res [x unset]
      lappend res [viewFile journal]
      x destroy
      removeFile journal
      set res

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

  ---- errorInfo: command "::x" already exists
      while executing
  "error "command \"$name\" already exists""
      (procedure "::snit::RT.type.typemethod.create" line 22)
      invoked from within
  "::snit::RT.type.typemethod.create ::tie::std::file x /vol/tclsrcsol/tcl85/tclli
  b/unix/journal"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "tie::std::file x $f"
      ("uplevel" body line 3)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== tie-file-6.1 FAILED

  ---- tie-file-6.2 start

  ==== tie-file-6.2 file unset, by pattern FAILED
  ==== Contents of test case:

      set f [makeFile {array set {foo bar fox snarf a 3}} journal]
      tie::std::file x $f
      set     res {}
      lappend res [x unset f*]
      lappend res [viewFile journal]
      x destroy
      removeFile journal
      set res

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: command "::x" already exists
      while executing
  "error "command \"$name\" already exists""
      (procedure "::snit::RT.type.typemethod.create" line 22)
      invoked from within
  "::snit::RT.type.typemethod.create ::tie::std::file x /vol/tclsrcsol/tcl85/tclli

  b/unix/journal"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "tie::std::file x $f"
      ("uplevel" body line 3)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== tie-file-6.2 FAILED

  ---- tie-file-7.0 start

  ==== tie-file-7.0 file getv, wrong#args FAILED
  ==== Contents of test case:

      set f [makeFile {} journal]
      tie::std::file x $f
      set     res {}
      catch {x getv} msg
      x destroy
      removeFile journal
      set msg

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: command "::x" already exists
      while executing
  "error "command \"$name\" already exists""
      (procedure "::snit::RT.type.typemethod.create" line 22)
      invoked from within
  "::snit::RT.type.typemethod.create ::tie::std::file x /vol/tclsrcsol/tcl85/tclli
  b/unix/journal"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "tie::std::file x $f"
      ("uplevel" body line 3)


  ...

  and on and on and on...


tkt_uuid: 781240ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
title: ssl tls
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: 620852ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: Extra CRs added during copymessage (WinX
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: 2801587fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: jpeg
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::jpeg::getThumbnail help example code
comment:
  In ::jpeg::getThumbnail  help :
  If you open the file as given in the example : 
       set fh [open thumbnail.jpg w+]
  You get a corrupted thumbnail. In order to get a valid one, open it in binary mode :
       set fh [open thumbnail.jpg wb+]


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

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

  Kind regards,

  Jos.


tkt_uuid: 714209ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 8
foundin: None
resolution: Fixed
title: test failure: struct module
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: 439779ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: eval required in tkcon support code
comment:
  In ftp.tcl (v0.9 from cvs) at line 2776 can I humbly suggest that an eval is added after the "["

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

  When using 
  ftp::List connection dir

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


tkt_uuid: 1009543fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Rejected
title: Better handling of up/down in text widgets
comment:
  This is in regards to the tk text windows.

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

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

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

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

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


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

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


tkt_uuid: 1663970fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: Submitting code for multivar linear regression
comment:
  Hi,

  I have written some code for carrying out multivariate linear regressions. I think it would be a good candidate for tcllib's math::statistics module, and when I posted a version of it to the tcler's wiki, I was asked (by AM & LV) to submit it here.

  I'm attaching a zip file with the following contents:

   - mvlinreg.tcl : The code for the package
   - pkgIndex.tcl : A basic pkgIndex for the submitted code to work as its own package
   - mvlinreg_test.tcl : A single example that exercises the code in a "main path" way (no exceptions are tested)
   - mvlr.man.txt : A simple man page in plain text format (no *roff)

  Some comments:
   - Although I don't offer a test for the wls function directly (it's tested indirectly since it's called from the ols procedure), I've tested it as part of the SWLS code that I posted on the Tcler's wiki, and reproduced published results.
   - For the example included in the zip file, I compared the output from the example against the output for the same data using Excel's "LINEST" function and they match.
   - I'm submitting this using the BSD license, on the understanding that that is the license used for tcllib. But the main point is not BSD - I want to submit the code under a license that is compatible with it being used in tcllib, so let me know if BSD isn't the right choice.

  Thanks!
  Eric


tkt_uuid: 772489ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 7 High
foundin: None
resolution: Not Applicable Here
title: doctools: latex, add document internal cross-referencing
comment:
  In LaTex:
  - \label to define a location by name, and
  - \ref to create reference to a named location.


tkt_uuid: 638075ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: uri
priority: 5 Medium
foundin: None
resolution: Accepted
title: JoinHttpInner doesn't deal with fragment
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: 481161ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
title: put/get into channels
comment:
  The put and get methods currently read from a file or
  in-memory string, or write to a file or a variable.
  Both methods should support reading from and writing to
  a channel too.

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


tkt_uuid: 516723ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: doctools - javadoc like application
comment:
  Add library/application which does javadoc like 
  processing of .tcl files and thus auto-generates 
  documentation.


tkt_uuid: 1580120fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: snit
priority: 7 High
foundin: None
resolution: Fixed
title: Allow -class to be passed to snit::widget
comment:
  Attached is a patch that allows -class to be passed as
  an option to snit widgets.  This allows widgets like
  tklib's widget::scrolledwindow to be created with:

  widget::scrolledwindow .s -class SpecialScroller

  or used as a widgetadaptor like so:

  snit::widgetadaptor Scrolltree {
      ....
      constructor {args} {
  installhull using widget::scrolledwindow \
               -class Scrolltree
  install tree using treectrl $win.tree ...

  I think this is a natural extension to Snit and should
  be drop-in (backwards) compatible.  It just changed the
  undefined widgetclass behavior to allow for setting
  -class on the command line.


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


tkt_uuid: 433145ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: csv module man page fix needed
comment:
  The current csv.n file has data on the first line
  which caused man commands on some systems to fail.
  The first line of a man page is used to define
  specialized filters, such as tbl, are required to
  format the man page.

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

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


tkt_uuid: 565051ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: csv::split parsing bug
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: 601960ffffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: cmdline
priority: 5 Medium
foundin: None
resolution: None
title: New Proc: cmdline::parseargs
comment:
  Please see the attached cmdline.tcl file, which
  includes a new proc "cmdline::parseargs".

  Here is a usage example:

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

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

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

  -Ed


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


tkt_uuid: 3437641fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: valtype
priority: 5 Medium
foundin: None
title: new valtype function
comment:
  I prepare new valtype::iban file for validate Bank Identyficer Number. I think this is good add-ons for tcllib.


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

  This behaviour has appeared since BWidget 1.3.1 at 
  least. 


tkt_uuid: 1348430fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: None
title: math doc should hint at child namespaces
comment:
  http://tcllib.sourceforge.net/doc/math.html gives no 
  indication that there are sub-namespaces
  math::bignum - Arbitrary precision integer numbers
  math::bigfloat - Arbitrary precision floating-point numbers
  math::constants - Mathematical and numerical constants
  math::statistics - Basic statistical functions and 
  procedures
  math::calculus - Integration and ordinary differential 
  equations
  math::calculus::romberg - Romberg integration
  math::linearalgebra - Linear Algebra
  math::optimize - Optimisation routines
  math::fourier - Discrete and fast fourier transforms
  math::fuzzy - Fuzzy comparison of floating-point 
  numbers
  math::combinatorics - Combinatorial functions in the Tcl 
  Math Library
  math::geometry - Geometrical computations
  math::interpolate - Interpolation routines
  math::complexnumbers - Straightforward complex 
  number package
  math::polynomials - Polynomial functions
  math::special - Special mathematical functions 

  One only finds out when looking at 
  http://tcllib.sourceforge.net/doc/

  I suggest to put links to these on the math page.
  Richard.Suchenwirth-Bauersachs at siemens.com


tkt_uuid: 532791ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: matrix
priority: 5 Medium
foundin: None
resolution: Fixed
title: Error unsetting element in linked matrix
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: 1002143fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct
priority: 5 Medium
foundin: None
resolution: Fixed
title: struct::set difference broken under >=Tcl 8.4
comment:
  struct::set difference [list Maryland DC Virginia]
  [list DC Virginia]
  returns -> Maryland

  However,
  struct::set difference [list "Washington, DC (District
  of Columbia)" Maryland Virginia] [list "Washington, DC
  (District of Columbia)" Virginia]
  returns -> Maryland {Washington, DC }

  Any list element with parens seems to have the parens
  stripped. This doesn't happen under the alternate
  definition of "proc" for Tcl 8.[23]


tkt_uuid: 3105665fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget 1.x
priority: 5 Medium
foundin: None
resolution: Fixed
title: bwidget menu white on white
comment:
  Using BWidget v1.8.0 or v1.9.2 on Mac OS X 10.6.4, menu item text is white, on a white background! & only visible when the mouse cursor highlights the menu item. Key accelerators are in black however, & therefore visible.


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

  from comp.lang.tcl:

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

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

  Consider the following example:


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


  Invoked with -?:

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


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

  Regards,
  Andreas


tkt_uuid: 3511938fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Invalid
title: ScrolledWindow setwidget buggy
comment:
  Calling ScrolledWindow::setwidget does not make the widget intended to be scrolled visible since ScrolledWindow::setwindow method lacks a raise:

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

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

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

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


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


tkt_uuid: 3609342fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 7 High
foundin: None
title: dtplite should not generate keyword link if no keywords
comment:
  When the manpages do not define any keywords, the Keyword index links takes you to a blank page. I prefer the keyword link to be only generated if at least one keyword is present. Of course, some might say every page must have a keyword but I happen to disagree :-)

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


tkt_uuid: 981605ffffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: calendar
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: BWidget Calendar Dialog
comment:
  This adds support for a calendar dialog, very similar
  to the iwidget version.  The dialog operates in one of
  two modes: dialog or popup.  The latter is just a
  special case of the former, but returns after one date
  is selected and offers no confirmation or cancellation
  buttons.  An embeddable method that fires virtual
  <<CalendarSelection>> events is on the TODO list.

  Also adds a manual page to the BWman directory, and
  files to the demo directory are modified to include the
  calendar as either a separate note book page or as a
  sub frame of the Dialogs page.  I couldn't decide where
  it would fit best.


tkt_uuid: 3458158fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: widget
priority: 8
foundin: None
resolution: Fixed
title: widget::calendar 1.0
comment:
  widget::dateentry use widget::calendar for select date. New version widget::calendar 1.0 has wrong bindings. Click on month/year close calendar frame. Version 0.98 calendar works fine.


tkt_uuid: 446584ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 1 Zero
foundin: None
resolution: Fixed
title: Missing documentation
comment:
  The modules "cmdline", "base64", "fileutil" and "ftp" 
  neither have manpages nor other documentation.

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


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

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

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


tkt_uuid: 478478ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: ftp::ModTimePostProcess fails
comment:
  Admittedly this is most likely due to a server-side 
  problem, but I was unable to figure out which RFC 
  covered the MDTM command/response definition.  

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

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

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


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

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


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

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

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

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


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

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

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

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

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

  And then to use it in a document:

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

  ... and so on.

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

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

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

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


tkt_uuid: 1099722fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: log
priority: 7 High
foundin: None
resolution: Fixed
title: bug in logger's inheritance of level
comment:
  Hi,

  I am creating two services: foo and foo::bar using the
  logger command and seting the default log level to
  "notice" for the foo service. This means that the
  foo::bar will also have its default level set to
  "notice". However the following script shows that the
  debug logs are still printed for foo::bar service.

  godel:93> cat foobar.tcl 
  package require logger

  namespace eval ::foo {

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

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

  }

  namespace eval ::foo::bar {

      set log [logger::init foo::bar]
      logger::import -all -namespace log foo::bar
      # It should inherit foo's level, so do not set it here
      # log::setlevel notice
      puts "foo::bar level = [log::currentloglevel]"

  }

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

  ::foo::x
  ::foo::bar::y
  godel:94> tclsh foobar.tcl 
  foo level = notice
  foo::bar level = notice
  [Mon Jan 10 15:50:32 EST 2005] [foo] [warn] 'foo::x warn'
  [Mon Jan 10 15:50:32 EST 2005] [foo] [warn]
  'foo::bar::y warn'
  [Mon Jan 10 15:50:32 EST 2005] [foo] [debug]
  'foo::bar::y debug'    <---- this should not be printed.
  godel:95> 

  Note that the level for foo::bar is correctly set to
  "notice", however it still ends up printing debug logs.
  I suspect this is bug.

  Hemang.


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

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


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


tkt_uuid: 2662968fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: struct :: graph
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Have lappend method accept multiple values
comment:
  I.e. make it consistent with the core built command.
  Look at nodes, arcs, the graph itself, and struct::tree as well.


tkt_uuid: 502246ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: bwidget 1.3 documentation
comment:
   I have installed ActiveTCL 8.3.1.4 for Linux and I 
  use Bwidgets.

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

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


tkt_uuid: 1272983fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Fixed
title: snit v2 - rename-1.5 panic with Tcl 8.5
comment:
  $ setenv TCLTEST_OPTIONS "-verbose bpste"
  $ /local/src/tcl/solaris/tclsh sak.tcl test snit
  Shell is "/local/src/tcl/solaris/tclsh"
  tcllib tests
  Test platform: "SunOS-5.9-sun4u" using Tcl 8.5a4
  Tests running in working dir:  /local/src/tcllib
  Only running tests that match:  *
  Skipping test files that match:  l.*.test
  Only sourcing test files that match:  *.test
  Tests began at Thu Aug 25 13:49:09 -0400 2005
  Module: snit
  modules/snit/snit.test
  - Tcl  8.5
  - snit 2.0
  ...
  ---- rename-1.5 start
  TclAppendLimitedToObj called with shared object
  child killed: SIGABRT
      while executing
  "exec [info nameofexecutable]  [file join $distribution
  all.tcl]  -modules $modules  >@ stdout 2>@ stderr"
      (procedure "__test" line 12)
      invoked from within
  "__$cmd"
      (file "sak.tcl" line 2287)


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


tkt_uuid: 2804961fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 3 Low
foundin: None
resolution: Accepted
title: combobox syntactic nit
comment:
  bwidget/combobox.tcl:28 (warnContinuation) possibly bad continuation line, blank line after backslash
          initialize {-relief sunken -borderwidth 2} \
                                                     ^


tkt_uuid: 1427906fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: option for server timeout on initialize
comment:
  In ::smtp::initialize, you can pass a list of mail 
  servers to try, but the timeout to failover and try 
  the "next" server is hard-coded to 600 seconds.  It 
  would be better to have an option one could pass, 
  e.g. -servertimeout, to set this to something 
  different.

  In my installation I needed much faster failover, so 
  I took lazy approach and tweaked the 600 down to 10 
  for the "hear" statement below.

      ...
          if {[set code [catch { hear $token 600 } 
  result]]} {
              array set response [list code 400 
  diagnostic $result]
          } else {
              array set response $result
          }
      ...


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

  * report 0.3.1
  WARNING: cleanupTests deleting /local/src/tcllib/dummy...
  WARNING: cleanupTests deleting /local/src/tcllib/rep1...
  WARNING: cleanupTests deleting /local/src/tcllib/rep2...
  WARNING: cleanupTests deleting /local/src/tcllib/rep3...
  WARNING: cleanupTests deleting /local/src/tcllib/rep4...
  WARNING: cleanupTests deleting /local/src/tcllib/rep5...


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


tkt_uuid: 607749ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
title: BWidget ListBox/Tree Selection Outline
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: 952391ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
title: Add new optimisation and statistics procedures
comment:
  The work by myself and others as published on the Wiki
  should be added to the math module:
  - Optimisation procedures
  - Interpolation techniques
  - Cluster analysis
  - Discrete and Fast Fourier Transform
  - Linear regression (not on the Wiki yet)
  - Complex numbers 

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

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


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

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

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

  Change:

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

  to:

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

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


tkt_uuid: 985839ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Fixed
title: Can't send mail to Yahoo
comment:
  Using the smtp and mime packages to send email, I am
  having trouble sending email to Yahoo using Windows XP.
   It works fine from a Linux machine, also sending mail
  from the windows machine to hotmail.com works.  I am
  using the following code:

  proc send_simple_message {recipient email_server
  subject body} {
      package require smtp
      package require mime
      
      set token [mime::initialize -canonical text/plain \
     -string $body]
      mime::setheader $token Subject $subject
      
      puts [smtp::sendmessage $token \
        -recipients $recipient -servers $email_server]
      mime::finalize $token
  }
  send_simple_message andrewthompson10@hotmail.com
  mx3.mail.yahoo.com \
      "This is the subject." "\n\n This is the message.\n"


  It gives me an error:

  key message-id not in header
     while executing 
  "error "key $mixed not in header""

  This appears to be on line 1282 of mime.tcl.

  I tried to add things to the header with the following
  code inside proc send_simple_message:

  mime::setheader $token Subject $subject
  mime::setheader $token Message-ID \
  "<3140374180748234979238742391784313234@localhost>"
  mime::setheader $token Date "July 4, 2004"
      


  And I ended up with the following error:

  can't unset "state(route)": no such element in array
  while executing 
  "unset state($prop)"

  This appears to be referring to line 2675 of mime.tcl
  (I would expect that the catch would take care of the
  error, but apparently not).


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

  package require textutil

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

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

  generates the following error:

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

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


tkt_uuid: 527710ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: None
title: backslashes aren't always handled well
comment:
  In my man page I have something like this:

  [example {
     example 1:
     foo bar \
        baz

     example 1:
     foo bar \\
        baz
  }]

  When I convert that to html, example1 has baz on the 
  same line as "foo bar", and example2 shows the double 
  backslashes. That seems inconsistent, and makes it 
  impossible to get a single backslash.

  When I convert to nroff and run it through man, the 
  first example has baz on the same line as "foo bar", 
  and the second has a single backslash, pretty much as 
  I would expect.

  So, there's a bug there somewhere. My guess is, the 
  html converter is broken.


tkt_uuid: 893516ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: flush error when large "quoted-printable"
comment:
  I get a "400: error flushing "sock336": invalid argument" 
  when doing the following with a body larger than 4096 
  buffersize:

  set token [mime::initialize -canonical text/plain \
          -string $body]
  smtp::sendmessage $token -header [list Subject \
          $subject] -header [list From $sender] \
          -header [list To $recipient] -servers $email_server
  mime::finalize $token

  In the "string" arm of the ::mime::copymessageaux proc, 
  I noticed that the blocksize is computed but never 
  fconfigured. 

  The issue is resolved if I add "fconfigure $channel -
  buffersize $blocksize" after the blocksize computation 
  and before the "puts $channel [$converter -mode 
  encode -- $state(string)]" (approx. line 1687 of 
  mime.tcl).

  Thanks for including this fix in the next release,
  Todd Copeland
  todd.copeland@pervasive.com


tkt_uuid: 3603593fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ncgi
priority: 7 High
foundin: None
resolution: Fixed
title: New version of ncgi introduces proc in global namespace
comment:
  The version of ncgi as part of tcllib 1.5 introduces a new DecodeHex proc to help decode the CGI request. This proc is created in the global namespace. It would be better to have it in the ncgi namespace.


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

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

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

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

      fconfigure $chan -translation binary crlf

  I hope this helps.

  -- AH.


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

  * fileutil 1.8
  WARNING: removeDirectory removing
  "/local/src/tcllib/find 1":
    not created by makeDirectory
  WARNING: removeDirectory removing
  "/local/src/tcllib/find 1":
    not a directory
  WARNING: removeDirectory removing
  "/local/src/tcllib/dotfiles":
    not created by makeDirectory
  WARNING: removeDirectory removing
  "/local/src/tcllib/dotfiles":
    not a directory
  WARNING: removeDirectory removing
  "/local/src/tcllib/grepTest":
    not created by makeDirectory
  WARNING: removeDirectory removing
  "/local/src/tcllib/grepTest":
    not a directory
  WARNING: removeDirectory removing
  "/local/src/tcllib/touchTest":
    not created by makeDirectory
  WARNING: removeDirectory removing
  "/local/src/tcllib/touchTest":
    not a directory
  WARNING: removeDirectory removing
  "/local/src/tcllib/fileTypeTest":
    not created by makeDirectory
  WARNING: removeDirectory removing
  "/local/src/tcllib/fileTypeTest":
    not a directory
  WARNING: removeDirectory removing
  "/local/src/tcllib/installDst":
    not created by makeDirectory
  WARNING: removeDirectory removing
  "/local/src/tcllib/installDst":
    not a directory
  WARNING: removeDirectory removing
  "/local/src/tcllib/installSrc":
    not created by makeDirectory
  WARNING: removeDirectory removing
  "/local/src/tcllib/installSrc":
    not a directory
  WARNING: removeFile removing "/local/src/tcllib/dir.link":
    not created by makeFile
  WARNING: removeFile removing "/local/src/tcllib/dir.link":
    not a file
  WARNING: removeFile removing "/local/src/tcllib/dir2.link":
    not created by makeFile
  WARNING: removeFile removing "/local/src/tcllib/dir2.link":
    not a file
  WARNING: removeFile removing "/local/src/tcllib/link.file":
    not created by makeFile
  WARNING: cleanupTests deleting /local/src/tcllib/find 1...
  WARNING: cleanupTests deleting
  /local/src/tcllib/dotfiles...
  WARNING: cleanupTests deleting
  /local/src/tcllib/grepTest...
  WARNING: cleanupTests deleting /local/src/tcllib/catTest...
  WARNING: cleanupTests deleting
  /local/src/tcllib/touchTest...
  WARNING: cleanupTests deleting
  /local/src/tcllib/fileTypeTest...
  WARNING: cleanupTests deleting
  /local/src/tcllib/installDst...
  WARNING: cleanupTests deleting
  /local/src/tcllib/installSrc...
  WARNING: cleanupTests deleting
  /local/src/tcllib/dir.file...
  WARNING: cleanupTests deleting
  /local/src/tcllib/dir2.file...
  WARNING: cleanupTests deleting
  /local/src/tcllib/gorp.file...


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

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


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

  This patch addresses this issue.


tkt_uuid: 3608581fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Build System & Testing
priority: 8
foundin: None
resolution: Fixed
title: Small change to configure script Windows
comment:
  Under MSYS, ./configure fails to detect tclsh because it does not realize it is Windows and needs a .exe extension. Fossil patch attached


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

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


tkt_uuid: 953075ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Invalid
title: ScrolleableFrame packs weird
comment:
  The BWidget demo displays so wrong behaviour.
  In the ScrolleableFrame it packs 20 entry fields
  and packs them with -fill both and -expand yes.

  However its seems like the expand tag is lost
  somewhere.


tkt_uuid: 526094ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Unix console command
comment:
  It would be useful to have hooked into Tk the ability
  to invoke something like
  http://purl.org/tcl/wiki/ConsoleForUnix so that code
  could work cross-platform better.  If this can't go
  into Tk, it would be lovely to go into some package
  that is also going to be common.


tkt_uuid: 1913502fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: log
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Suppression level Enhancement
comment:
  I've worked as a scripter the last couple of years doing network testing with TCL. And 1 thing that has come up in at least the last 2 places that I've had work, is the use of the tcllib's log package.

  The enhancement I'd like to see would be levels of suppression for any of the current levels defined.

  What we've all really wanted is levels of debug logging, but after thinking about it some why not just make the change for all of the different levels.

  We can still maintain the use of the idea of suppression but extend it some so that we can have additional levels of suppression for each logLevel (which for sake of discussion would be more appropriately defined as a category).

  Currently we have suppression defined as 0|1, on or off for any particular "category"  info,debug,alert....

  What I would like to see is say have a maximum suppression level of say 5.

  Which I would leave to your capable hands of determining if we change the definition of suppression or just learn what a suppresion level means.

  So we'd have suppression levels of say 0-5 with 0 meaning no suppression and everything less than the level number passed would be suppressed, or the other way around that everything less than the suppression level is suppressed and everything greater is logged.

  The major change to the package would be that the log::log command would require this additional parameter to be passed in. So now we'd have "log::log logLevel suppLevel msg"

  Currently you can just use the different logLevels but the name that gets tagged on the message tends to be misleading. I still only want certain info messages to be displayed at say production run time, but when I'm debugging or developing I'd want addtional "info" messages and not have to use another level like "alert". I'd like the logLevel to still be indicative of the severity of what I am logging.

  So like I said I think a lot of testers would really like levels of debug logging, but if were going to enhance then just lets just have levels of logging for all the current logLevels.


tkt_uuid: 3071973fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
title: add Kruskal-Wallis test to math::statistics
comment:
  I have done an implementation of the Kruskal-Wallis test. Feel free to adapt this and tweak it for the needs of math::statistics. Personally, I would make two commands from this code (the names can be something else more descriptive of course):

  ::math::statistics::test-Kruskal-Wallis ?data ...?
  ::math::statistics::rank ?data ...?

  Find the implementation here: http://wiki.tcl.tk/27149


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

  test name 'asn-17.5' re-used; prior use in
  /local/src/tcllib/modules/asn/asn.test
  test name 'asn-18.6' re-used; prior use in
  /local/src/tcllib/modules/asn/asn.test


tkt_uuid: 1087173fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Fixed
title: too much [package require]
comment:
  htmlparse starts out with

  package require struct 2

  but near as I can tell, the only
  command used is [::struct::stack]
  which is provided by the
  considerably smaller package

  package require struct::stack 1.2.1

  No need to drag in all the other
  struct stuff and then not use it.


tkt_uuid: 1800338fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: dtplite can't find it's matching tcllib if --prefix used
comment:
  Installing tcllib from CVS head with a prefix:

    ./configure --prefix=/home/me/local/tclllib-HEAD
    make install

    $ ~/local/tcllib-HEAD/bin/dtplite


  If no other tcllib is installed then dtplite errors out -- it can't find a tcllib (this is the case e.g. on sourceforge)

  If there's a tcllib installed on the system then dtplite prefers that, making testing of new version tricky.


  Can the utility commands that ship with tcllib always link against the version of tcllib they ship with?


tkt_uuid: 619548ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: mime::field_decode is case sensitive
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: 2762361fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: ComboBox Backround error "ambiguous state"
comment:
  A backround error was invoked using a BWidget combo box:

  > ambiguous state "": must be active, disabled, or normal
  >     (processing "-state" option)
  >     invoked from within
  > "$path configure $realopt $value"
  >     (procedure "Widget::_test_tkresource" line 7)
  >     invoked from within
  > "$_optiontype($type) $option $value [lindex $optdesc 3]"
  >     (procedure "Widget::configure" line 31)
  >     invoked from within
  > "Widget::configure $path $args"
  >     (procedure "configure" line 2)
  >     invoked from within
  > "configure $path -state $_grab(oldstate)"
  >     (procedure "ArrowButton::_leave" line 6)
  >     invoked from within
  > "ArrowButton::_leave .wizard.layoutFrame.advanced.clientArea.c1.a.c"
  >     (command bound to event)

  This indicates, that the leave event may be invoked without a former enter event.

  To fortify the widget against this situation, the following two patches may be used:

  arrow.tcl Line 73:
  Old contents:
      array set _grab {current "" pressed "" oldstate "" oldrelief ""}
  New contents:
      array set _grab {current "" pressed "" oldstate "normal" oldrelief ""}

  Alternate patch:
  (Line 436)
  proc ArrowButton::_leave { path } {
  ...
  configure $path -state $_grab(oldstate)
  ...
  The configure line may be protected to empty string contents by:
  if {0 == [string length $_grab(oldstate)]} {
      configure $path -state $_grab(oldstate)
  }

  Version information:
  BWidget 1.8.0
  TCL8.4.16
  Windows XP (not shure)


tkt_uuid: 507929ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: Error in TitleFrame using Tk 8.3.0
comment:
  BWidget requires Tk 8.1.1 according to its
  pkgIndex.tcl file.

  However, when using BWidget 1.3.1 with Tk 8.3.0,
  the following script results in an Error:

  % TitleFrame .title
  unknown option "-state"
      while executing
  "$foo configure $realopt"
      (procedure "Widget::declare" line 80)
      invoked from within
  "Widget::declare TitleFrame {
          {-relief      TkResource groove 0 frame}
          {-borderwidth TkResource 2      0 frame}
          {-font        T..."
      (in namespace eval "::TitleFrame" script line 2)
  [cut]

  This seems a mere versioning problem, as it is
  gone when using Tk 8.3.4. But if so, BWidget should
  request the higher version.


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

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

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

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

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

  Here is where the error occurred in proc sendmessage:

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

  Here is my runtime diagnostic: 

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

  ----

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

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

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

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

  Same error.

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

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

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

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


tkt_uuid: 873666ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: scrollw.tcl does not support -relief
comment:
  BWidget's ScrolledWindow does not support options
  -relief and -bd at creation time

  May be the statement 
  set sw    [frame $path \
              -relief flat -borderwidth 0 -background $bg \
      -highlightthickness 0 -takefocus 0]
  is to change to
  set sw    [eval frame $path \
      -background $bg \
      -highlightthickness 0 -takefocus 0  \   
  [Widget::subcget $path :cmd]]


tkt_uuid: 1874961fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: package traverse doesn't load
comment:
  OS: WindowsXP

  I installed version 1.13.3 of the fileutil package into a Tcl 8.4 lib directory that otherwise had tcllib 1.6 installed.

  When I did "package require traverse" I got the following error message:

   wrong # args: should be "::snit::Comp.statement.option optionDef ?defvalue?" 

  Snit backward compatibility problem?  Should package traverse require a minimum version of snit?


tkt_uuid: 3603260fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: profiler
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Descendants info not reset on profiler::reset
comment:
  Look at the result of this script:
  -----------
  package require profiler
  profiler::init
  proc profile_a {} {
  for {set f 0} {$f<100} {incr f} {
      profile_b
      }
  }

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

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


tkt_uuid: 611477ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: ProgressDlg bug
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: 2169167fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: json
priority: 5 Medium
foundin: None
resolution: Fixed
title: test failures
comment:
  Running Tcl 8.4.19 with the
  package "dict 8.5.1", I see
  these test failures:

  ---- json-1.1 start

  ==== json-1.1 test JSON widget FAILED
  ==== Contents of test case:
  set res [json::json2dict $JSON(widget)]
  ---- Result was:
  widget {window {width 500 height 500 name main_window title {Sample Widget}} text {vOffset 100 name null style bold data {Click Here} onMouseUp {sun1.opacity = (sun1.opacity / 100) * 90;} alignment center hOffset 250 size 36} debug on}
  ---- Result should have been (exact matching):
  widget {debug on window {title {Sample Widget} name main_window width 500 height 500} text {data {Click Here} size 36 style bold name null hOffset 250 vOffset 100 alignment center onMouseUp {sun1.opacity = (sun1.opacity / 100) * 90;}}}
  ==== json-1.1 FAILED

  ---- json-1.2 start

  ==== json-1.2 test JSON glossary FAILED
  ==== Contents of test case:
  set res [json::json2dict $JSON(glossary)]
  ---- Result was:
  glossary {mixlist {{a "" str} -0.09 null {} {member true}} title {example glossary} GlossDiv {GlossList {{GlossSeeAlso {GML XML markup} GlossTerm {Standard \" Language} Acronym SGML\\ ID SGML Abbrev {ISO 8879:1986} GlossDef {A meta-markup language, used ...}}} title S}}
  ---- Result should have been (exact matching):
  glossary {title {example glossary} mixlist {{a "" str} -0.09 null {} {member true}} GlossDiv {title S GlossList {{ID SGML GlossTerm {Standard \" Language} Acronym SGML\\ Abbrev {ISO 8879:1986} GlossDef {A meta-markup language, used ...} GlossSeeAlso {GML XML markup}}}}}
  ==== json-1.2 FAILED

  ==== json-1.4 test JSON menu FAILED
  ==== Contents of test case:
  set res [json::json2dict $JSON(menu)]
  ---- Result was:
  menu {popup {menuitem {{value Open onclick OpenDoc()} {value Close onclick CloseDoc()}}} value File: id file unival 怡:}
  ---- Result should have been (exact matching):
  menu {id file value File: unival 怡: popup {menuitem {{value Open onclick OpenDoc()} {value Close onclick CloseDoc()}}}}
  ==== json-1.4 FAILED
  ==== json-1.8 test JSON menu2 FAILED
  ==== Contents of test case:
  set res [json::json2dict $JSON(menu2)]
  ---- Result was:
  menu {header Viewer items {{id Open} {label {Open New} id OpenNew} null {label {Zoom In} id ZoomIn} {label {Zoom Out} id ZoomOut} null {id Help} {label {About Viewer...} id About}}}
  ---- Result should have been (exact matching):
  menu {header Viewer items {{id Open} {id OpenNew label {Open New}} null {id ZoomIn label {Zoom In}} {id ZoomOut label {Zoom Out}} null {id Help} {id About label {About Viewer...}}}}
  ==== json-1.8 FAILED

  ==== json-1.9 test JSON array FAILED
  ==== Contents of test case:
  set res [json::json2dict $JSON(array)]
  ---- Result was:
  {Country US Latitude 37.7668 precision zip State CA City {SAN FRANCISCO} Address {} Zip 94107 Longitude -122.3959} {Country US Latitude 37.371991 precision zip State CA City SUNNYVALE Address {} Zip 94085 Longitude -122.026020}
  ---- Result should have been (exact matching):
  {precision zip Latitude 37.7668 Longitude -122.3959 Address {} City {SAN FRANCISCO} State CA Zip 94107 Country US} {precision zip Latitude 37.371991 Longitude -122.026020 Address {} City SUNNYVALE State CA Zip 94085 Country US}
  ==== json-1.9 FAILED


tkt_uuid: 1034924fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: tree
priority: 5 Medium
foundin: None
resolution: Fixed
title: children with filter requires struct::list
comment:
  It is necessary for a user of [tree children] with
  filter to have [package require]d struct::list, or
  it'll crash.

  Solution is either to put a package require into the
  children source, or to document the dependency.


tkt_uuid: 648679ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: cmdline
priority: 5 Medium
foundin: None
resolution: Fixed
title: bad namespace usage
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: 637695ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtpd
priority: 1 Zero
foundin: None
resolution: Invalid
title: Invalid response after receiving DATA
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: 682187ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: math
priority: 8
foundin: None
title: Add a statistics module
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: 2890743fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Fixed
title: comm crashes on large amount of data from server
comment:
  Since Tcl 8.0, using lindex and lreplace forces comm to have received a well-formed list from the comm server. If there is a large amount of data from the server, it is possible that the list does not become well-formed before running up against memory constraints resulting in a crash.


tkt_uuid: 1885621fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 2
foundin: None
resolution: Works For Me
title: ListBox "see" fails in ScrolledWindow
comment:
  "ListBox see" command only works correct after "update".

  Example code:
    pack [set sw [ScrolledWindow .sw]] 
    set lb [ListBox $sw.lb]
    $sw setwidget $lb
    for {set i 0} {$i<30} {incr i} {
      $lb insert end "Item_$i" -text "This is item $i"
    }
    $lb selection set Item_27
    ### update ; ### "see" doesn't work without "update"
    $lb see Item_27

  Tested on 1.8 and some older versions.


tkt_uuid: 765667ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 4
foundin: None
resolution: Fixed
title: Backward tabbing over ComboBox needs 2 tabs.
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: 631314ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: mime
priority: 9 Immediate
foundin: None
resolution: Not Applicable Here
title: infinite loop on bad data
comment:
  The while {$moreP} loop in mime::parsepart will loop
  forever when fed bad data such as the file attached,
  which is a spam email.  I'm sure it's formatted badly,
  but that should cause an error, not an infinite loop.


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


tkt_uuid: 620612ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: crc
priority: 5 Medium
foundin: None
resolution: None
title: Testsuite failures
comment:
  I ran the tcllib testsuite, using a tclsh 8.3.4 on a
  linux/ix86 system. The build directory was outside of
  the tcllib source directory, actually a direct sibling.
  Enclosed the log generated when testing crc.


tkt_uuid: 828160ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: None
title: "Holy cow"default headers break compatibility
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: 709375ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: crc
priority: 7 High
foundin: None
resolution: Fixed
title: current tcllib test suite failures report
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: 1030051fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: Incorrect use of http::status
comment:
  The [Debug|Retrieve Script] menu option uses 'if
  {[http::status $token] == "ok"} { ... }' to test
  whether or not the download was successful.

  This is incorrect: [http::status] only reflects whether
  the HTTP transaction completed, it's still necessary to
  check if [http::ncode] is 200 to see if the resource
  was actually retrieved.  404, 502, and various other
  error conditions are possible and $status will still be
  "ok".


tkt_uuid: 898067ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ftp::NList error when directory empty
comment:
  When executing ftp::NList on an empty directory
  follwing error message appears
  "error     error | E: Error getting directory listing!"

  The manual says:
  This command has the same behavior as the ::ftp::List 
  command, ...

  Ths ftp::List command does not show an error on emty
  dirs ...

  This a non-blocking message ...

  Regards,

  Christophe De Clercq


tkt_uuid: 674468ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Out of Date
title: LabelEntry -textvariable fails
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: 438415ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Invalid
title: bwidget leaves widget droppings...
comment:
  BWidget leaves "widget droppings" scattered about. 
  Witness the following session:

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


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

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

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


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


tkt_uuid: 2820727fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Linux standalone executable not working on x86_64
comment:
  Using archlinux x86_64, just downloaded tkchat 1.465 standalone executable for linux. When i try to run it in a terminal i get:

  $  /home/saedelaere/Downloads/tkchat-linux-ix86
  couldn't load file "/tmp/tclfsB20G": libXft.so.2: wrong ELF class: ELFCLASS64
      while executing
  "load /home/saedelaere/Downloads/tkchat-linux-ix86/lib/tk8.5/../libtk8.5.so Tk"
      ("package ifneeded Tk 8.5.7" script)
      invoked from within
  "package require Tk  8.4"
      (file "/home/saedelaere/Downloads/tkchat-linux-ix86/bin/tkchat.tcl" line 36)
      invoked from within
  "source [file join $starkit::topdir bin tkchat.tcl]"
      (file "/home/saedelaere/Downloads/tkchat-linux-ix86/main.tcl" line 28)

  Some infos about my system
  $  uname -a
  Linux 2.6.30-ARCH #1 SMP PREEMPT Sat Jul 4 02:24:43 CEST 2009 x86_64
  tcl/tk 8.5.7

  Using a tclkit (8.5.1) and tkchat.kit works.

  Regards


tkt_uuid: 1588808fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: Combobox autocomplete won't turn on/off
comment:
  ## Bug info
  I'm making a tool that has a combobox.  I tried adding
  an option to allow the user to turn autocomplete
  on/off, but it doesn't seem to be configurable after
  it's been created.  (Using Tcl/Tk 8.4.13 with BWidget 1.8)

  The tool does this via the '$path configure
  -autocomplete $value' command, where $path is obviously
  to the combobox and $value is 0 or 1. Doing a cget
  shows the value is changing, but the functionality of
  autocomplete never changes.

  ## Patch info
  I decided to take a peek into the code and found it was
  easy to add.  While testing, I found autopost suffered
  from the same problem so I added it as well.  I'm
  attaching the patch to enable/disable both with the
  configure command.

  The patch was made from combobox.tcl in BWidget 1.8.0.
   Unless there is reason not to, I would appreciate it
  if you would incorporate this patch to make
  autocomplete/autopost configurable.

  HTH,
  Chris


tkt_uuid: 588880ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Duplicate
title: flicker in ScrolledWindow and frame
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: 514476ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: textutil
priority: 5 Medium
foundin: None
title: Add Pool_Base string functions
comment:
  Add the string processing facilities of
  Pool_Base, see

  http://www.purl.org/net/akupries/soft/pool/f_base_strin
  g.tcl.html


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

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

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

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

  The error stack is

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

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

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


tkt_uuid: 1015402fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Add cmd to fileutil: which, a wrapper around auto_execok
comment:
  I have added a which package to the tcllib v1.4 library
  we are shipping with our Quartus II software developed
  here at Altera. I thought I'd submit the package back
  to the tcllib team for possible consideration as a
  standard tcllib package. This is a pure-Tcl which
  implementation that has the same interface on
  Windows/Unix (eases cross-platform scripting a bit).
  There's not much too it. It doesn't support MacOS (we
  don't ship for MacOS so I have no way to test it) but
  it shouldn't be hard to extend to the Mac platform.


tkt_uuid: 1218397fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 8
foundin: None
resolution: Invalid
title: "Can't find package md5c" error
comment:
  While using the (slightly modified - added username and
  password switches) "send_simple_message" sample code
  from the SMTP (v1.4) module's help file, I receive the
  following error:

  Error in startup script

  can't find package md5c
  while executing
  "package require md5c"
  invoked from within
  "smtp::sendmessage $token -recipients $recipient
  -servers...

  Here's the actual code...

  proc send_simple_message {recipient email_server
  subject body} {
      package require smtp
      package require mime

      set token [mime::initialize -canonical text/plain \
      -string $body]
      mime::setheader $token Subject $subject
      smtp::sendmessage $token \
      -recipients $recipient -servers $email_server \
      -username <myusername> -password <mypassword>
      mime::finalize $token
  }

  send_simple_message <email> <myserver> \
                    "Auto Send" "This is an
  auto-generated message"

  Obviously, data between "<...>" contains real (though
  somewhat sensitive) data in my case...

  Jeff


tkt_uuid: 1750656fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
resolution: Invalid
title: math test suite interacts badly with the tcllib test suite p
comment:
  When I run the tcllib cvs head on top of the tcl cvs head, I see the following:



  [    ]  [8.5a7] log         ~~       T   354 P   354 S     0 F     0
  [  * ]  [8.5a7] math        Error in statistics.tcl: unknown namespace in import[  * ]  [8.5a7] math        <fourier.test>                                      [  * ]  [8.5a7] math        ---- dft-1.0                                        [  * ]  [8.5a7] math        PASS dft-1.0                                        [ *  ]  [8.5a7] math        ---- dft-1.1                                        [ *  ]  [8.5a7] math        PASS dft-1.1                                        [ *  ]  [8.5a7] math        ---- dft-1.2                                        [ *  ]  [8.5a7] math        PASS dft-1.2                                        [ *  ]  [8.5a7] math        ---- dft-1.3                                        [*   ]  [8.5a7] math        PASS dft-1.3                                        [*   ]  [8.5a7] math        ---- dft-2.1                                        [*   ]  [8.5a7] math        PASS dft-2.1                                        [*   ]  [8.5a7] math        ---- dft-2.2                                        [*   ]  [8.5a7] math        PASS dft-2.2                                        

  and so on for pages and pages.

  That first error regarding the namespace appears to cause the graphical wrapper to stop working.


tkt_uuid: 449276ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 6
foundin: None
resolution: Fixed
title: SelectColor widget can't be created
comment:
  On behalf of: Bruce Hartweg <brhartweg@bigfoot.com>.

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


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

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

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

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

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

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

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

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

  Thank you very much for your time and consideration.


tkt_uuid: 1610330fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: dns
priority: 5 Medium
foundin: None
resolution: Accepted
title: DNS: Asynchronous connect to server
comment:
  Currently DNS tcllib module uses synchronous connection to DNS server when TCP is using.

  Sometimes server admins close TCP port 53 and even drop all TCP packets addressed to this port. When Tcl/Tk application connects to such a server it becomes irresponsible until TCP connect timeout reaches.

  Attached patch makes ::dns::resolve using asynchronous socket connect.


tkt_uuid: 1584520fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: add option to tcllib's configure
comment:
  Using configure / make test gives a nice animated
  output to the console. If, however, these steps are
  within an integrated build environment, the resulting
  log is unusable.

  This animation stuff was introduced with tcllib 1.9 and
  made default behavior. So please add an option to be
  able to restore the old behavior.

  Appended is a patch for configure.in and Makefile.in
  which does just that. It introduces an option
  '--enable-animation' which defaults to enabled. But
  everybody can now run './configure --disable-animation'
  and 'make test' again returns just the plain test log.

  kind regards -- Matthias Kraft


tkt_uuid: 3168761fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Themed widgets cause Tcl errors
comment:
  Multiple widgets - including Entry, LabelFrame and LabelEntry cause errors when used after [Widget::theme 1] was called.

  Included are fixes I made against 1.9.4 release.


tkt_uuid: 939532ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: exif
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: exif read fails when subIFD has unknown tag
comment:
  The if/elseif/else for tag recognition in 
  proc ::exif::exifSubIFD ends with 'error "unknown 
  tag ..."'.

  I highly doubt the author intended this, as this renders 
  the exif unusable whenever a camera manufacturer adds 
  a new exif tag. 

  My suggestion: change 'error' to 'debug'. 


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

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

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


tkt_uuid: 3312880fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: Fixed
title: FTP command "RNFR" checks filesystem paths
comment:
  RNFR checks the native filesystem for the pathname specified.

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

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

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


tkt_uuid: 1805192fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: linearalgebra
priority: 5 Medium
foundin: None
resolution: None
title: ::math::linearalgebra::eigenvectorsSVD does not work
comment:
  ::math::linearalgebra::eigenvectorsSVD does not work coz of a $matrix variable not defined.. maybe it should be the $A matrix instead 

  from danielfisico@gmail.com


tkt_uuid: 772535ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: snit
priority: 3 Low
foundin: None
title: snit: implementation of mymethod command
comment:
  To deal with renaming of objects snit provides the 
  command [mymethod] to create code which can be 
  given to callback handlers.

  The generated code essentially refers to the variable 
  $Snit_instance in the unchanging private namespace of 
  the object, which contains the current name of the 
  intance = instance command.

  Example:
       mymethod foo
  generates
       "$Snit_instance foo"

  This is variable reference is a bit problematic. The code 
  executing the callback __must not__ any list command 
  when adding additional arguments to the callback. Which 
  is usual. The moment a list command is used, for 
  example [linsert], or [lappend] to build up the full cllback 
  command the variable reference will be quoted in braces, 
  and the final command will look like:

       "{$Snit_instance} foo arg1 arg2 ..."

  [eval]'ing this fails.

  Example stacktrace

  invalid command 
  name "$::ttable::ttable::Snit_inst1::Snit_instance"
      while executing
  "{$::ttable::ttable::Snit_inst1::Snit_instance} 
  NColChanged 0 3"
      ("uplevel" body line 1)
      invoked from within
  "uplevel #0 [linsert $options(-ncolcommand) end 
  $oldncols $ncols]"
      (procedure "Snit_configure-data" line 42)
      invoked from within

  You see how the command is constructed, and the 
  additional quoting generated by this.

  The big problem is that the usage of list commands to 
  construct an eval'able callback is the usual way of doing 
  this.


tkt_uuid: 2790985fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tar
priority: 5 Medium
foundin: None
resolution: Fixed
title: fail to extract tar created by mks tools
comment:
  The 3rd call to readHearder blows up attempting to tar::untar this file made by windows tar.exe from MKS. Single file tar test case attached.
  FWIW, bsdtar windows exe running on same machine with same file) can extract the file fine. There is apparently confusion over the seek for preceding read as it seems not to return a proper header block. But bsdtar isn't affected. Thanks for any help.. Roy

  ERROR LOOKS LIKE THIS
  (app) 268 % ::tar::untar  ../dia/srch-30apr-01may-2009/test-mks.tar
  expected integer but got "0"


tkt_uuid: 2906306fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: md5
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: md5::md5 -file option error on close
comment:
  calling md5:
     set result "WUB[::md5::md5 -hex -file [dict get $req -file]]"

  bgerror: {can not find channel named "file51"} {-code 1 -level 0 -errorcode {TCL LOOKUP CHANNEL file51} -errorinfo can\ not\ find\ channel\ named\ \"file51\"\n\ \ \ \ while\ executing\n\"close\ \$opts(-channel)\"\n\ \ \ \ (procedure\ \"::md5::md5\"\ line\ 44)\n\ \ \ \ invoked\ from\ within\n\"::md5::md5\ -hex\ -file\ \[dict\ get\ \$req\ -file\]\"\n\ \ \ \ (procedure\ \"etag\"\ line\ 4)...

  pardon my backslashes.


tkt_uuid: 1005377fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: struct :: stack
priority: 9 Immediate
foundin: None
resolution: Not Applicable Here
title: struct::stack name collisions
comment:
  The command ::struct::stack generates a new stack object with an 
  automatically generated name. If the automatically generated 
  name is the name of an existing command, ::struct::stack throws 
  an error instead of automatically generating a unique name.

  The only way to protect against this is to specify the name 
  explicitly, which works; however, it's an undocumented feature.


tkt_uuid: 2828086fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: Add <<TreeSelect>> event for keyboard navigation
comment:
  The attached patch updates tree.tcl to support the <<TreeSelect>> virtual event for KeyPress-Up and KeyPress-Down. Many users use the keyboard to navigate tree widgets and this brings the BWidget tree in line with current UI best practices. 


tkt_uuid: 1606391fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: parse gets confused inside script tags
comment:
  The following example shows how the parser in htmlparse gets confused by the JavaScript expression i<w..., incorrectly recognizing it as a tag.

  <HTML>
  <HEAD>
  <TITLE>Demonstrate Bug</TITLE>
  <SCRIPT LANGUAGE="JavaScript">
          function resetTheForm()
          {
              var i;
              
              // Make sure the forms object exists
              if(window.document.forms)
              {
                  // Reset each form
                  for(i=0; i<window.document.forms.length; i++)
                      window.document.forms[i].reset();
              }
          }
  </SCRIPT>
  </HEAD>
  <BODY>
  <P>Nothing interesting here; move along.</P>
  </BODY>
  </HTML>

  (Running it through the debugCallback will show the incorrect parsing.


tkt_uuid: 1672340fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Fixed
title: test expose-1.1 fails witch tcl 8.5a5
comment:
  The expose tests reports "expose" instead of ::snit::Comp.statement.expose.

  Tested on Linux and FreeBSD.
  See attached patch.


tkt_uuid: 1191854fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: profiler
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: profiler - No sense to clutter output when total calls = 0
comment:
  This is a kind of enhancement.
  I changed my local version by moving the piece 
  if { !$callCount($name) } {
      append result "\n"
      continue
  }
  in ::profiler::print towards the beginning of foreach loop. 
  Of course I removed the line append result "\n"


tkt_uuid: 1198465fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Documentation
priority: 5 Medium
foundin: None
resolution: None
title: Documentation glitch in ActiveStates's 8.4.9.1 release
comment:
  Hello out there,
  not entirely sure whether this is the right place but I
  couldn't find a better one.
  In the HTML docs the 'start page' for TkLib
  (.../tklib/toc.html) in the new release (8.4.9.1) by
  ActiveState is empty at least when viewed with Firefox
  (asking for this page's source code showed a blank page
  as well).
  Best regards
  Helmut Giese

  PS: There is another - albeit different - small issue
  with TkTable's start page, which I will report at there.


tkt_uuid: 3313923fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: http :: autoproxy
priority: 7 High
foundin: None
resolution: Fixed
title: configure -authProc does not grab the correct argument
comment:
  package require autoproxy
  autoproxy::init
  autoproxy::configure  ; # show what was found
  autoproxy::configure -authProc defAuthProc
  autoproxy::configure  ; # see the BUG?
  autoproxy::cget -authProc  ; # see the BUG more clearly!

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

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


tkt_uuid: 1774302fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Fixed
title: error in CommRunHook error handling
comment:
  In proc ::comm::CommRunHook there is a block of code that looks like this:

      if {<something> {
  set code [catch {interp eval $interp $cmd} res]
      } else {
  set code [catch {uplevel 1 $cmd} res]
      }

      switch -exact -- $code {
  0 {}
  1 {
      return -errorinfo $::errorInfo -errorcode $::errorCode -code error $result
  }
  3 {return}
  4 {}
  default {return -code $code $res}
      }


  Notice that the first few lines set the variable "res" as the result of the catch, but the "1" case in the switch tries to use the variable $result.


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


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

  Here's a patch to workaround the problem.


tkt_uuid: 3613725fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ::rest::get & "format" config option...
comment:
  (This is about the rest package)

  Hi all,

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

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

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

  George


tkt_uuid: 1581453fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: unset ftp(state.data) error
comment:
  I added this comment to bug 1234831, but wasn't sure 
  if that comment was monitored.  

  If there is an error in any file transfer in passive 
  mode, this error will come up:

  can't unset ftp(state.data)

  I have been able to trace this problem down to 
  the ::ftp::CopyNext routine and the StateHandler 
  routine. 

  The CopyNext routine will always unset ftp
  (state.data) 
  once the transfer is complete or there is an error.  
  Then 
  the StateHandler routine in the put_sent switch arm, 
  will 
  try to unset it again if the return code is not 1 or 
  2, 
  and it's passive mode.  

  All that's needed to fix this is either a catch, or a 
  cleaner way would be something like:

  if [info exists ftp(state.data)] {unset ftp
  (state.data)} 
  in the StateHandler routine.


tkt_uuid: 458446ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget: faster ListBox inserts
comment:
  Motivation:

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

  Problem analysis:

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

  Proposed patch:

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

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

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

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

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

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

  is 2 times faster than its pendant

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

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


  Code:

  In listbox.tcl:

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

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

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

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

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

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

  incr count
      }

      _redraw_idle $path 2
      return $item
  }

         

  In widget.tcl:

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

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

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

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

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

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

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


tkt_uuid: 461434ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: html
priority: 5 Medium
foundin: None
resolution: None
title: docs mention formatCode
comment:
  The man page for html mentions the proc formatCode 
  which isn't implemented in the library.  It's only in 
  the proc list, not in the main body.  

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


tkt_uuid: 1329207fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: fileutil :: magic
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: mimetype, filetype result empty for text files
comment:
  modules/fumagic/filetypes.test
  - tcltest 2.2.8
  - fileutil::magic::filetype 1.0
    - fileutil::magic::rt     1.0

  ==== fumagic.filetype-1.2 test file directory FAILED
  ==== Contents of test case:

      set f [file join $dir fileTypeTest]
      set res [catch {fileutil::magic::filetype $f} msg]
      regsub {file[0-9]+} $msg {fileXXX} msg
      list $res $msg

  ---- Result was:
  0 {}
  ---- Result should have been (exact matching):
  1 {error reading "fileXXX": illegal operation on a
  directory}
  ==== fumagic.filetype-1.2 FAILED

  modules/fumagic/mimetypes.test
  - tcltest 2.2.8
  - fileutil::magic::mimetype 1.0
    - fileutil::magic::rt     1.0

  ==== fumagic.mimetype-1.2 test file directory FAILED
  ==== Contents of test case:

      set f [file join $dir fileTypeTest]
      set res [catch {fileutil::magic::mimetype $f} msg]
      regsub {file[0-9]+} $msg {fileXXX} msg
      list $res $msg

  ---- Result was:
  0 {}
  ---- Result should have been (exact matching):
  1 {error reading "fileXXX": illegal operation on a
  directory}



  In fact, trying to apply to a text file, such as
  /var/log/messages or /COPYRIGHT returns nothing --
  [rt::resultv] seems to be an empty list.

  Using the procedure on some other things -- like
  picture files -- seems to work, however.


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

  Application nnsd 

  fixes this bug. Corrected file attached.


tkt_uuid: 899225ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pop3
priority: 5 Medium
foundin: None
resolution: Fixed
title: tests pop3-6.* hang
comment:
  The [setupServer] command hangs
  in tests pop3-6.0 and pop3-6.1 when
  running the pop3 tests.  The hangs
  trace to the [vwait] command within
  [::subserv::muservSpawn] .

  This is on Linux/Alpha, a 64-bit system.


tkt_uuid: 732512ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Accepted
title: encoded word encoding may be lower or upper case
comment:
  RFC2047 specifies that the encoding for an encoded-word in a 
  Message Header may be specified by an upper or lower case letter, 
  currently ::mime::word_decode only accepts upper case. I have 
  attached a (very simple) patch to remedy this and added a couple of 
  simple tests to check for it.

  Thanks

  Matthew


tkt_uuid: 1751871fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Fixed
title: ldap::search : too many nested evaluations (infinite loop?)
comment:
  Hello 

  I have a trouble trying to search a element.
  this element is names eduid. When I'm trying to search on it , I obtain the following display:
  tcl> ldap::search $handle "ou=people,dc=XXX,dc=com" "eduid=ed148869" "uid"
  too many nested evaluations (infinite loop?)

  this uid exists as a search on the name return that:
  tcl> ldap::search $handle "ou=people,dc=XXX,dc=com" "uid=AERTY" "eduid"
  {eduid=ed043414,ou=people,dc=XXX,dc=com {eduid ed043414}}

  can you help me?

  regards
  Jerome


tkt_uuid: 526835ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 8
foundin: None
resolution: Fixed
title: install.bat not quite satisfactory
comment:
  install.bat to install tcllib on Windows platforms may
  fail for two reasons:
  - The TCLINSTALL variable is set to the wrong directory
  - the user is 
     supposed to set this variable him/herself by editing
  the batch file prior
     to installation.
  - The TCLINSTALL variable may be not be set correctly
  due to problems
     with the environment space. This means that the
  files will be copied into
     an arbitrary directory \lib\tcllib1.2, rather than
  under the proper subdirectory 
     of the installation.

  A solution might be: use %1 instead of %TCLINSTALL.
  Checking that this
  first argument is not empty is easy and gives the batch
  file the opportunity to notify the user:

      if /%1 == / goto :message
      rem Install the stuff
      ...

      goto :end

      :message 
      echo Usage: install <tcl-directory>
      pause 
      :end
   


tkt_uuid: 3575707fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
resolution: Accepted
title: add opt arg to csv::join to force insertion of delimiter
comment:
  the proc ::csv::join currently surrounds values by the delimiter characters only when a value contains the delimiter. The patch attached adds an optional argument to ::csv::join, ::csv::joinlist, and ::csv:joinmatrix to make ::csv::join always surround fields by the delimiter character.


tkt_uuid: 815405ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: pop3
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: pop3::top Hangs under wish/tkcon
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: 1191607fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: Multi-line ftp messages are lost
comment:
  In ::ftp::StateHandler multilines messages are not
  handled correctly, only the first messageline is kept.

  The loop :
  while { [string equal $multi_line "-"] } {
  --> Throws away the 'buffer' variable

  eg. When I do a manual ftp via UNIX ftp I get:
  ftp> put timesheet.xml
  200 PORT Command successful
  150 ASCII Data Connection
  550- Error Response
  ORA-31038: Invalid boolean value: "False"
  550 End Error Response
  ftp>


  --> In ::ftp::DisplayMsg the msg inputparameter
  only contains " Error Response " and not the 2 next lines
  with more info (I want to log this errors).


  I think the multiline text should be concatenated in
  msgtext.

  Regards,
  Christophe De Clercq


tkt_uuid: 1260196fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: ip
priority: 9 Immediate
foundin: None
resolution: Accepted
title: ip: various procs for ip package
comment:
  a review is requested for various additional procs for
  the tcllib ip package.

  tar.gz file contains tcl code, embedded doc, and
  optional C extension code

  html file contains html view of documentation
  man file contains a manpage style view of documentation


tkt_uuid: 1720901fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
title: test suite enhancement - add tests for all modules
comment:
  Right now, there are at least 12 modules which apparently have no tests: bench, ftp, ftpd, grammar_peg, http, irc, javascript, jpeg, nmea, nntp, page, pluginmgr . It seems like it would be worthwhile to have experts of these modules provide a few tests to begin the development of testing for these modules.


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

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

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

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


tkt_uuid: 3000293fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: ListBox bindText <Button-1> stops selection
comment:
  Given a Listbox with the patch of bug 2995969 (which uses ButtonRelease events instead Button for selection) and the following script:
  pack [ListBox .l -selectmode single]
  .l insert end list:#auto -text 111
  .l insert end list:#auto -text 222
  .l insert end list:#auto -text 333
  .t.l configure -width 10
  proc p {args} {puts "p $args"}
  ListBox::bindTag .t.l <Button-1> p
  ---
  After the bindTag command, selection will not work any more.


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

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

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


tkt_uuid: 689258ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Segmentation fault when restoring sash coords
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: 1260174fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
resolution: None
title: ip: various procs for ip package
comment:
  below is the current man page for the extension to the
  ip package.

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



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



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

  SSYYNNOOPPSSIISS
         package require ipExtension



  AAUUTTHHOORRSS
         Aamer Akhter / aakhter@cisco.com


  SSUUPPPPOORRTT
         aakhter@cisco.com


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


  RREEQQUUIIRREEMMEENNTTSS
         package require logger
         package require ip



  NNOOTTEESS
         1.



  PPRROOCCEEDDUURREESS
         ::ip::prefixToNative




                convert from dotted from to native (hex) form




                       prefixToNative <prefix>



                Options:



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



                Return values:



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



                Examples:



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




         ::ip::nativeToPrefix




                convert from native (hex) form to dotted form




                       nativeToPrefix <native>



                Options:



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



                Return values:



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



                Examples:



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




         ::ip::intToString




                convert from an integer/hex to dotted form




                       intToString <integer/hex>



                Options:



                       <integer>
                           ip address in integer form



                Return values:



                       ip address in dotted form



                Examples:



                       ip::intToString 4294967295
                       255.255.255.255




         ::ip::ToInteger




                convert dotted form ip to integer




                       ToInteger <ipaddr>



                Options:



                       <ipaddr>
                           decimal dotted from ip address



                Return values:



                       integer form of <ipaddr>



                Examples:



                       % ::ip::ToInteger 1.1.1.0
                       16843008




         ::ip::ToHex




                convert dotted form ip to hex




                       ToHex <ipaddr>



                Options:



                       <ipaddr>
                           decimal dotted from ip address



                Return values:



                       hex form of <ipaddr>



                Examples:



                       % ::ip::ToHex 1.1.1.0
                       0x01010100




         ::ip::MaskToInt




                convert mask to integer




                       MaskToInt <mask>



                Options:



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



                Return values:



                       integer form of mask



                Examples:



                       ::ip::MaskToInt 24
                       4294967040




         ::ip::broadcastAddress




                return broadcast address given prefix




                       broadcastAddress <prefix>



                Options:



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



                Return values:



                       ipaddress of broadcast



                Examples:



                       ::ip::broadcastAddress 1.1.1.0/24
                       1.1.1.255

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




         ::ip::MaskToLength




                converts dotted or integer form of mask
  to length




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



                Options:



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



                Return values:



                       prefix length



                Examples:



                       ::ip::MaskToLength 0xffffff00
                       24

                       % ::ip::MaskToLength 255.255.255.0
                       24




         ::ip::LengthToMask




                converts mask length to dotted mask form




                       LengthToMask <maskLength>



                Options:



                       <maskLength>
                           mask length



                Return values:



                       mask in dotted form



                Examples:



                       ::ip::LengthToMask 24
                       255.255.255.0




         ::ip::nextNet




                returns next an ipaddress in same
  position in next network




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



                Options:



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



                Return values:



                       ipaddress in same position in next
  network in hex




         ::ip::isOverlap




                checks to see if prefixes overlap




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



                Options:



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



                Return values:



                       1 if there is an overlap



                Examples:



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

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




         ::ip::isOverlapNative




                checks to see if prefixes overlap
  (optimized native form)




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



                Options:



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



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

                Return values:



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



                Examples:



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

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




         ::ip::IpToLayer2Multicast




                converts ipv4 address to a layer 2
  multicast address




                       IpToLayer2Multicast <ipaddr>



                Options:



                       <ipaddr>
                           ipaddress in dotted form



                Return values:



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



                Examples:



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




         ::ip::IpHostFromPrefix




                gives back a host address from a prefix




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



                Options:



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



                Return values:



                       ip address



                Examples:



                       %::ip::IpHostFromPrefix  1.1.1.5/24
                       1.1.1.1

                       %::ip::IpHostFromPrefix  1.1.1.1/32
                       1.1.1.1




         ::ip::reduceToAggregates




                finds nets that overlap and filters out
  the more specifc nets




                       ::ip::reduceToAggregates <list of
  ipprefixes>



                Options:



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



                Return values:



                       non-overlapping ip prefixes



                Examples:




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




         ::ip::longestPrefixMatch




                given host IP finds longest prefix match
  from set of prefixes




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



                Options:



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



                Return values:



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



                Examples:



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




         ::ip::cmpDotIP




                helper function for dotted ip address for
  use in lsort




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



                Options:



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



                Return values:



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



                Examples:



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








  ATS                                  Cisco            
       ipExtension.tcl(l)


tkt_uuid: 620753ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: New options for labelframe
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: 764702ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: unknown charset 'utf-8' in ::mime::word_decode
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: 987305ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: uuid::compare should be uuid::equal
comment:
  From the uuid manpage:

  | ::uuid::uuid compare id1 id2
  |                                                     
                             
  | Compares two uuids. If equal the result is 0 
  | otherwise the result will be either +1 or -1.

  It's almost never necessary to check if one UUID is
  less than or greater than another; UUIDs don't really
  have a natural ordering relation.  

  It's far more common to check UUIDs for equality.  I'd
  suggest that:

  | ::uuid::uuid equal $id1 $id2
  |  Returns 1 if $id1 and $id2 are equal, 0 otherwise.

  would be a more useful API.


tkt_uuid: 759881ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 9 Immediate
foundin: None
title: Move TclDES extension into tcllib
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: 553732ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: base64
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: uuencode.test warnings
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: 1541436fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: Problems on asn package
comment:
  The module asn.tcl contains errors that makes the 
  module ldap not working

  proc ::asn::asnGetApplication {data_var appNumber_var 
  {contet_var {}}} {


  should use content_var instead of contet_var and the 
  following test

  if {[string length content_var]} {

  shoud be

  if {[string length $content_var]} {


tkt_uuid: 1627892fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Networking: what about SSH ??
comment:
  Hi,

  There are ssh library for ruby, for python but NOTHING for tcl !!

  I am really talking about SSH (not SSL).

  I think it could be a part of the Networking module and you could start with an ssh client (i.e not server).

  for ssh see:
  http://www.ssh.com/products/ssh_secure_shell/

  http://www.googlesyndicatedsearch.com/u/ietf?hl=fr&ie=ISO-8859-1&q=ssh&btnG=Rechercher

  thank you
  bye
  FD 


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


tkt_uuid: 654976ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Invalid
title: Text highlighting for chat window
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: 1923685fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: graph
priority: 9 Immediate
foundin: None
resolution: Fixed
title: Crash in tcllibc with struct::graph...
comment:
  I have observed a crash with tcllibc and the struct::graph package. Under ActiveTcl 8.5.1, the attached script crashes. Using teacup to uninstall tcllibc, the script runs fine. Please note that both attached files must be in the same directory to get the attached script to run.


tkt_uuid: 478989ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: control
priority: 5 Medium
foundin: None
resolution: Fixed
title: Test failure
comment:
  tcllib CVS head, configure, make test.

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

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

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

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


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

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

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

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

  Whatever choice is made, it should be documented.


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

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

  Regexps get it wrong...

  Michael


tkt_uuid: 1300795fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: struct :: prioqueue
priority: 5 Medium
foundin: None
resolution: Accepted
title: fix for prioqueue binary serach
comment:
  === patch ===

  --- prioqueue.tclFri Sep 23 13:28:13 2005
  +++ new/prioqueue.tclFri Sep 23 13:28:21 2005
  @@ -417,6 +417,7 @@
              } elseif {$test > 0 } {
                   # search lower section
                   set upper $pivot
  +                set bound $upper
                   set pos -1
              } else {
                   # search upper section 

  === testcase ===

  ::struct::prioqueue -integer testI

  testI put 1 1
  testI put 2 5
  testI put 3 7
  testI put 4 6
  testI put 5 0

  puts "[testI get]   =   3"
  puts "[testI get]   =   4"
  puts "[testI get]   =   2"
  puts "[testI get]   =   1"
  puts "[testI get]   =   5"

  Submitted by:
  Krzysztof Ska&#322;ecki <krys@dacsystem.pl>
  Tomasz Kosiak <tk@dacsystem.pl>


tkt_uuid: 448634ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Accepted
title: pop3 uidl support
comment:
  Added support for (optional) pop3 UIDL command.
  Changed version to 1.3
  Some minor formatting changes to pop3.tcl.
  pop3.tcl sorted by proc name.
  Added uidl command summary to man page.
  Some minor formatting to man page.
  Updated pkgIndex.tcl for version 1.3


tkt_uuid: 1266913fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: struct :: skiplist
priority: 1 Zero
foundin: None
resolution: Not Applicable Here
title: skiplist - Walking through a range
comment:
  To walk through the skiplist, we already have the
  [walk] subcommand.
  But wouldn't it be better if we could walk, for instance,
  from one key to another like in SQL :
  SELECT... WHERE ID>='BOB' AND ID<='SMALL'
  I think this would be valuable.


tkt_uuid: 2038217fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: irc
priority: 5 Medium
foundin: None
resolution: Fixed
title: the irc package is misusing namespace variables
comment:
  The irc package neglects to use [variable] within the namespace eval to get the right scope in proc ::irc::connection.

  The following is an example:
  % set ::sock "I'm a global value"
  I'm a global value
  % source ./irc.tcl
  % set c [::irc::connection] 
  ::irc::irc0::network
  % set ::sock
  % 

  The following namespace variables should be used with [variable]:
  sock, dispatch, linedata, config, logger

  Right now this totally defeats the purpose of using a namespace.


  It also results in this interesting bug if the dispatch global variable exists.

  % set dispatch global
  % set c [irc::connection]
  can't array set "dispatch": variable isn't array

  You may want to check the bug tracker for similar bugs from existing globals that the irc package tries to overwrite.

  There may be more problems lurking in the irc package.


tkt_uuid: 606141ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 8
foundin: None
resolution: Fixed
title: csv bug: empty field in middle of row
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: 2913700fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Rejected
title: extra character in range [!..~]
comment:
  When parsing email messages, I ran across 1 message of thousands that mime would not parse. It's a spam message, none the less, it should parse? The error is:

  expecting character in range [!..~]
      while executing
  "$state(encoding) -mode decode  -- $state(string)"
      (procedure "mime::getbody" line 104)
      invoked from within
  "mime::getbody $m"
      (procedure "_body" line 5)
      invoked from within
  "_body $m"
      (procedure "insert" line 55)
      invoked from within
  "insert $content"
      (procedure "import_file" line 17)
      invoked from within
  "import_file {*}$args"
      (procedure "::mailroom::message::import" line 5)
      invoked from within
  "::mailroom::message import -file $filename"
      ("foreach" body line 3)
      invoked from within
  "foreach filename $messages {
    puts "Importing $filename"
    ::mailroom::message import -file $filename
  }"
      (file "test.tcl" line 12)


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

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


tkt_uuid: 985568ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 7 High
foundin: None
title: doctools - better error messages
comment:
  The error messages generated by doctools are bad with
  regard to reporting the location they happen at. They
  should report not only what is wrong, but exactly where.


tkt_uuid: 1283594fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: $object info self command
comment:
  When an object inherits publically from another, it
  would sometimes be useful to be able to determine the
  object name from outside - this suggested instance
  standard command would enable that, by returning (for
  any object) its $self value.

  I don't believe there's any other way to do this
  introspectively.


tkt_uuid: 3603562fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tklib: crosshair
priority: 7 High
foundin: None
title: confine crosshair::crosshair to a canvas area
comment:
  Hi,

  Sorry but I could not find a crosshair category.

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

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

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

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

  Thanks in advance,
  Frank


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


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

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

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


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

  Here is the correct code:


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

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


  Keith Vetter


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

  However, on line 145 one finds the command

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

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

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

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

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


tkt_uuid: 1927092fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ncgi
priority: 1 Zero
foundin: None
resolution: Not Applicable Here
title: ncgi documentation - confusing use of term 'session'
comment:
  The man page for ncgi appears to be using the word 'session' in a way that doesn't fit with the common concept of a session in web-application environments.

  e.g  
  "Set the query data and Content-Type for the current CGI session."

  "If url is specified, then it defines the URL for the current session"

  My suggestion is to replace the word 'session' with 'invocation'.


tkt_uuid: 784523ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: (unused)
priority: 7 High
foundin: None
resolution: Fixed
title: make install fails on Mac OS X
comment:
  On Mac OS X, configure generates a Makefile with 
  extraneous carriage returns in the VERSION and pkglibdir 
  variables.  There might be additional problems as well.

  My suspicion is that the following calls to sak.tcl in 
  configure.in are responsible:

  PACKAGE=`$TCLSH_PROG ${srcdir}/sak.tcl name`
  MAJOR_VERSION=`$TCLSH_PROG ${srcdir}/sak.tcl major`
  MINOR_VERSION=`$TCLSH_PROG ${srcdir}/sak.tcl minor`


tkt_uuid: 607085ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: struct
priority: 8
foundin: None
resolution: Accepted
title: priority queue
comment:
  Hi, simple priority queue implementation.

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


tkt_uuid: 1779424fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 5 Medium
foundin: None
resolution: Fixed
title: Example Error ::struct::list filterfor
comment:
  Example in documentation for did not work.
  I remove the expr {..} layer and it worked as expected

  tcl_patchLevel 8.4.4
  % ::struct::list filterfor x {1 2 3 4 5} {expr {($x % 2) == 0}}
  syntax error in expression "expr {($x % 2) == 0}": variable references require preceding $
  % ::struct::list filterfor x {1 2 3 4 5} {($x % 2) == 0} 
  2 4


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

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

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

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

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

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

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

  msg1}

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

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

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

  msg1
  }
  ==== mime-3.4 FAILED


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


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

  foo}

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

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

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

  foo
  }
  ==== mime-3.6 FAILED


tkt_uuid: 1285549fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Out of Date
title: comm 4.2.1 doesn't work on Tk8.3.4
comment:
  Upgrading from tcllib1.3 to tcllib1.7 includes an upgrade 
  from comm-4.0 to comm-4.2.1. 

  Under tcl/tk 8.3.4 comm-4.0 works fine but comm-4.2.1 
  does not.

  The doco for comm says it requires 8.2.

  To test this try the following under 8.3.4

  Pre-conditions:
    Both versions of comm are somewhere in
    your auto-path. What I have done is install
    tcllib-1.3, copy tcllib/comm to a temp location
    as comm-1.3. Then uninstall tcllib-1.3 and install
    tcllib-1.7. Copy comm-1.3 back to tcllib/

  Test:
   1) Open two wish shells
   2) In both: package require -exact comm 4.0 -> 4.0
   3) In one: comm::comm self -> <id>
   4) In the other: comm::comm send <id> puts fred
      --> "fred" appears in console of first shell.

   Now repeat this but use this alternate step 2:
   2) In both: package require comm -> 4.2.1

   The outcome in the second case is that nothing
   happens.


tkt_uuid: 447042ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Accepted
title: Package versions and dependencies
comment:
  Here's a big patch that fixes many bugs dealing with
  what versions of what packages are in tcllib, and
  what versions of what packages they depend on.  Bugs
  fixed by this patch are:

  447038
  447035
  447033
  447013
  447012
  447011
  447010
  232017


tkt_uuid: 620103ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Bug in Button armcommand
comment:
  See the following script:

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


  By pressing the button you get the following error 
  message:

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


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

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


tkt_uuid: 3425269fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tepam
priority: 5 Medium
foundin: None
resolution: Fixed
title: Errors in tepam demo when TkCon not present
comment:
  The tepam demo will generate an error when TkCon isn't present, due to an uninitialized variable.
  Another error will be generated because the variable "tcl_platform" is not scoped properly.
  Attached patch also applies the same "prologue" as used in all the other examples.


tkt_uuid: 1167797fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: tklib: ctext
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: 8.5 speed improvement via -all
comment:
  Date: Thu, 10 Feb 2005 12:24:38 -0400
  From: Andrew Black <ablack@arva.net>
  To: GeorgePS@XMission.com
  Subject: ctext patch
  Parts/Attachments:
     1 Shown     14 lines  Text
     2   OK    ~7.4 KB     Text
  ----------------------------------------
  Hi George, Ive attached a patch to ctext.  It includes
  a highlight85 proc
  which uses the -all flag for searching (according to
  time I am seeing an
  average of 36% increase in speed)  And an overhaul of
  the linemap.  I did a full height widget with all
  linenumbers, and linked the yviews of the two text
  widgets.  There is also a change to use a tile frame if
  tile has been loaded.
   There were a couple of other minor tweaks, but they
  were purely personal, so review the patch carefully. 
  Mainly, I turned off quote matching and increased the
  flash time for bracematching.  Hope this helps.

  --
  Andrew J. Black
  Chief Engineer
  Automatic Rolls of Virginia
      [ Part 2, Text/X-PATCH (Name: "ctext.tcl.patch") 
  127 lines. ]

  ----
  The linemap changes may not handle images, or wrapping
  lines... -GPS


tkt_uuid: 2813069fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ftp client close hangs
comment:
  I've found a bug in the ftp client library 2.4.8 that bites
  when a connection is closed.  When you call ::ftp::Close $handle
  you sometimes get a TCL exception (thrown in an event handler
  so a catch around ::ftp::Close doesn't help) and sometimes
  you get an endless loop.  Depends on the ftp server you're
  talk to and doesn't happen consistently, but enough to be
  annoying.

  The faulty code is about line 35 of ::ftp::StateHandler which
  does "set number [gets $sock bufline]".  This code reads
  a continuation line, so normally isn't called after the
  socket is closed, but sometimes it is and an exception is
  the result.  The fix is to wrap in a catch.

  But then the second bug bites - this code is in a loop and
  if the gets returns <= 0, the loop is infinite.  The fix is to
  break from the loop, and change the code structure a little
  to ensure "if { [eof $ftp(CtrlSock)] } ..." gets called
  in this case.

  I believe this is a separate issue to 1076923 found by Keith
  Vetter - that was the gets on line 16 of ::ftp::StateHandler.

  If it's helpful I can provide source for the fix.


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

  Oliver


tkt_uuid: 1091766fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclbench
priority: 2
foundin: None
resolution: Fixed
title: runbench.tcl - documentation not up to date
comment:
  tclbench CVS as of 2004-12-27.

  doc/runbench.1 has

         -errors
                Takes  a  boolean  value  (0 or 1). True
  means that
                errors are thrown, else they are ignored.

  The runbench.tcl script itself exects:

          -throwerrors            # propagate errors in
  benchmarks files 

  The -threads option understood by the script isn't
  documented at all.


tkt_uuid: 1740573fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: html
priority: 5 Medium
foundin: None
resolution: Fixed
title: html - documentation, examples needed
comment:
  The documentation for the html package has some errors and typographical errors.

  The synopsis lists the procedures in not quite alphabetical order.  The init procedure appears between refresh and row.

  The explanation for ::html::cell uses upper case tags whereas lower case tags are really used.

  The explanation for ::html::openTag lists the arguments as "tags args" when the code uses "tags param".  Using multiple args (implied by args) will fail.

  ::html::row should say that it does NOT used defaults for the td tag as defined in the ::html::init call.

  Examples would be very instructive.


tkt_uuid: 553980ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: struct
priority: 8
foundin: None
resolution: Accepted
title: skiplist struct
comment:
  Code for a skiplist implementation, from Keith Vetter:

  "I'd like to submit a module for tcllib to be part of
  the ::struct group. The module implements skip lists
  which a data structure similar to balanced trees but
  which are faster and simpler."


tkt_uuid: 850245ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: md5
priority: 5 Medium
foundin: None
resolution: Out of Date
title: Performance blow under md5 2
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: 1151534fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Danish language file
comment:
  Hi, I just created a Danish language file for bwidget.
  Please feel free to include it in the distro.


  - elhaard


tkt_uuid: 445675ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Accepted
title: Enhanced mainframe toolbar
comment:
  I pack many buttons on to the mainframe toolbar
  and one thing I wanted to do was to put a few select
  buttons right justified (they are MDI kind of buttons)

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

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


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

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

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


tkt_uuid: 3606619fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pt (parsetools)
priority: 5 Medium
foundin: None
resolution: Fixed
title: test fail - pt-peg-to-json-3* *-ultracompact
comment:
  ==== pt-peg-to-json-3.0.0 pt::peg::to::json, basic arithmetic-ultracompact, ok FAILED
  ==== Contents of test case:

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

  tclsh8.6 sak.tcl test run -v pt

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


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


tkt_uuid: 1502400fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: math
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: add an option to math::statistics::histogram
comment:
  Hi,
  math::statistics::histogram groups datas in intervals
  according to this logical scheme :
  [x0,x1] ]x1,x2] ]x2,x3] ... ]xn-1,xn]
  I'd like to have the possibility of grouping the other
  way ie :
  [x0,x1[ [x1,x2[ [x2,x3[ ... [xn-1,xn]
  This is actually the grouping method commonly used in
  France (at least).

  Thank you, arjen :)

  dcobac@free.fr


tkt_uuid: 1016865fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: md5
priority: 9 Immediate
foundin: None
resolution: Fixed
title: md5 test suite causes tcl core dump!
comment:
  platform: sparc sunblade 100 solaris 8, sun c compiler,
  tcl 8.4.7, tcllib latest cvs snapshot - this has been
  going on for a day or so now.


  Module: md5
  modules/md5/md5.test
  - md5 1.4.3 (Trf based)
  modules/md5/md5x.test
  - md5 2.0.1 (Trf based)

  Module: md5crypt
  modules/md5crypt/md5crypt.test
  - md5crypt 1.0.0 (pure Tcl)
  child killed: bus error
      while executing
  "exec [info nameofexecutable]  [file join $distribution
  all.tcl]  -modules $modules  >@ stdout 2>@ s
  tderr"
      (procedure "__test" line 10)
      invoked from within
  "__$cmd"
      (file "../sak.tcl" line 1593)
  gmake: *** [test] Error 1

  The stack trace is a bit peculiar:
   $ dbx /usr/tcl84/bin/tclsh8.4 core
  Reading tclsh8.4
  core file header read successfully
  Reading ld.so.1
  Reading libtcl8.4g.so
  Reading libdl.so.1
  Reading libsocket.so.1
  Reading libnsl.so.1
  Reading libm.so.1
  Reading libc.so.1
  Reading libmp.so.2
  Reading libc_psr.so.1
  Reading libtk8.4g.so
  Reading libX11.so.4
  Reading libXext.so.0
  Reading libTrf2.1g.so
  Reading libz.so
  Reading libmemchan.so
  program terminated by signal BUS (invalid address
  alignment)
  dbx: warning: can't find file
  "/vol/tclsrcsol/tcl84/trf/md5.o"
  dbx: warning: see `help finding-files'
  0xfec5d4d8: md5_process_block+0x0130:   ld      [%l0], %l5
  dbx: warning: can't find file
  "/vol/tclsrcsol/tcl84/trf/md5dig.o"
  dbx: warning: can't find file
  "/vol/tclsrcsol/tcl84/trf/digest.o"
  dbx: warning: can't find file
  "/vol/tclsrcsol/tcl84/trf/registry.o"
  Current function is FlushChannel
   2078                   &errorCode);
  (dbx 1) where                                         
                 
    [1] md5_process_block(0xff00, 0xd76aa478, 0xff00,
  0xffbe80c0, 0x61, 0x5a71dc), at 0xfec5d4d8
    [2] md5_process_bytes(0x5a93a0, 0xc8, 0x5a71c0,
  0x5aa3b0, 0x719, 0x5aa3b8), at 0xfec5d324
    [3] MDmd5_UpdateBuf(0x5a71c0, 0x5a93a0, 0xc8, 0x1030,
  0x2234c, 0xfefc1ce4), at 0xfec45f7c
    [4] EncodeBuffer(0x2453e0, 0x5a93a0, 0xc8, 0x0,
  0xfec77ad8, 0x19e94c), at 0xfec44244
    [5] TrfOutput(0x5a7128, 0x5a93a0, 0xc8, 0xffbe8330,
  0x16ee4d, 0xff332b01), at 0xfec30d94
  =>[6] FlushChannel(interp = (nil), chanPtr = 0x270560,
  calledFromAsyncFlush = 0), line 2078 in "tclIO.c"
    [7] CheckFlush(chanPtr = 0x270560, bufPtr = 0x5a9380,
  newlineFlag = 0), line 3429 in "tclIO.c"
    [8] WriteBytes(chanPtr = 0x270560, src = 0x5a2fa0
  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  srcLen = 200), line 3040 in "tclIO.c"
    [9] Tcl_WriteObj(chan = 0x34ecd0, objPtr = 0x1fdfa8),
  line 2957 in "tclIO.c"
    [10] Tcl_PutsObjCmd(dummy = (nil), interp = 0x1fa328,
  objc = 4, objv = 0x19e9a4), line 132 in "tclIOCmd.c"
    [11] TclEvalObjvInternal(interp = 0x1fa328, objc = 4,
  objv = 0x19e9a4, command = (nil), length = 0, flags =
  0), line 3087 in "tclBasic.c"
    [12] TclExecuteByteCode(interp = 0x1fa328, codePtr =
  0xba750), line 1404 in "tclExecute.c"
    [13] TclCompEvalObj(interp = 0x1fa328, objPtr =
  0x19a088), line 982 in "tclExecute.c"
    [14] TclObjInterpProc(clientData = 0x1b3a70, interp =
  0x1fa328, objc = 3, objv = 0x19e998), line 1100 in
  "tclProc.c"
    [15] InvokeImportedCmd(clientData = 0x110bc8, interp
  = 0x1fa328, objc = 3, objv = 0x19e998), line 1476 in
  "tclNamesp.c"
    [16] TclEvalObjvInternal(interp = 0x1fa328, objc = 3,
  objv = 0x19e998, command = (nil), length = 0, flags =
  0), line 3087 in "tclBasic.c"
    [17] TclExecuteByteCode(interp = 0x1fa328, codePtr =
  0x3551e8), line 1404 in "tclExecute.c"
    [18] TclCompEvalObj(interp = 0x1fa328, objPtr =
  0x16aae0), line 982 in "tclExecute.c"
    [19] TclObjInterpProc(clientData = 0x3562b8, interp =
  0x1fa328, objc = 4, objv = 0xffbe9424), line 1100 in
  "tclProc.c"
    [20] TclEvalObjvInternal(interp = 0x1fa328, objc = 4,
  objv = 0xffbe9424, command = 0xff35b5e4 "", length = 0,
  flags = 524288), line 3087 in "tclBasic.c"
    [21] Tcl_EvalObjv(interp = 0x1fa328, objc = 4, objv =
  0xffbe9424, flags = 524288), line 3203 in "tclBasic.c"
    [22] AliasObjCmd(clientData = 0x24aa10, interp =
  0x1fa328, objc = 3, objv = 0xffbe95a8), line 1486 in
  "tclInterp.c"
    [23] TclEvalObjvInternal(interp = 0x1fa328, objc = 3,
  objv = 0xffbe95a8, command = 0x150b09
  "::md5crypt::md5crypt $passwd $salt\n    ", length =
  35, flags = 0), line 3087 in "tclBasic.c"
    [24] Tcl_EvalEx(interp = 0x1fa328, script = 0x150b00
  "\n        ::md5crypt::md5crypt $passwd $salt\n    ",
  numBytes = 48, flags = 262144), line 3683 in "tclBasic.c"
    [25] Tcl_EvalObjEx(interp = 0x1fa328, objPtr =
  0x1611e0, flags = 262144), line 4000 in "tclBasic.c"
    [26] Tcl_UplevelObjCmd(dummy = (nil), interp =
  0x1fa328, objc = 1, objv = 0x19e994), line 674 in
  "tclProc.c"  [27] TclEvalObjvInternal(interp =
  0x1fa328, objc = 3, objv = 0x19e98c, command = (nil),
  length = 0, flags = 0), line 3087 in "tclBasic.c"
    [28] TclExecuteByteCode(interp = 0x1fa328, codePtr =
  0x34f618), line 1404 in "tclExecute.c"
    [29] TclCompEvalObj(interp = 0x1fa328, objPtr =
  0x2ae910), line 982 in "tclExecute.c"
    [30] TclObjInterpProc(clientData = 0x247cb0, interp =
  0x1fa328, objc = 3, objv = 0x304960), line 1100 in
  "tclProc.c"
    [31] TclEvalObjvInternal(interp = 0x1fa328, objc = 3,
  objv = 0x304960, command = 0xff35b5e4 "", length = 0,
  flags = 262144), line 3087 in "tclBasic.c"
    [32] Tcl_EvalObjv(interp = 0x1fa328, objc = 3, objv =
  0x304960, flags = 262144), line 3203 in "tclBasic.c"
    [33] Tcl_EvalObjEx(interp = 0x1fa328, objPtr =
  0x96b98, flags = 262144), line 3997 in "tclBasic.c"
    [34] Tcl_UplevelObjCmd(dummy = (nil), interp =
  0x1fa328, objc = 1, objv = 0x19e988), line 674 in
  "tclProc.c"
    [35] TclEvalObjvInternal(interp = 0x1fa328, objc = 3,
  objv = 0x19e980, command = (nil), length = 0, flags =
  0), line 3087 in "tclBasic.c"
    [36] TclExecuteByteCode(interp = 0x1fa328, codePtr =
  0x371de0), line 1404 in "tclExecute.c"
    [37] TclCompEvalObj(interp = 0x1fa328, objPtr =
  0x1f9a68), line 982 in "tclExecute.c"
    [38] TclObjInterpProc(clientData = 0x25fa80, interp =
  0x1fa328, objc = 3, objv = 0x1a8348), line 1100 in
  "tclProc.c"
    [39] TclEvalObjvInternal(interp = 0x1fa328, objc = 3,
  objv = 0x1a8348, command = 0xff35b5e4 "", length = 0,
  flags = 262144), line 3087 in "tclBasic.c"
    [40] Tcl_EvalObjv(interp = 0x1fa328, objc = 3, objv =
  0x1a8348, flags = 262144), line 3203 in "tclBasic.c"
    [41] Tcl_EvalObjEx(interp = 0x1fa328, objPtr =
  0x24f138, flags = 262144), line 3997 in "tclBasic.c"
    [42] Tcl_UplevelObjCmd(dummy = (nil), interp =
  0x1fa328, objc = 1, objv = 0x19e97c), line 674 in
  "tclProc.c"
    [43] TclEvalObjvInternal(interp = 0x1fa328, objc = 3,
  objv = 0x19e974, command = (nil), length = 0, flags =
  0), line 3087 in "tclBasic.c"
    [44] TclExecuteByteCode(interp = 0x1fa328, codePtr =
  0x37ad00), line 1404 in "tclExecute.c"
    [45] TclCompEvalObj(interp = 0x1fa328, objPtr =
  0x250c70), line 982 in "tclExecute.c"
    [46] TclObjInterpProc(clientData = 0x12d048, interp =
  0x1fa328, objc = 5, objv = 0x19e960), line 1100 in
  "tclProc.c"
    [47] InvokeImportedCmd(clientData = 0x2527d8, interp
  = 0x1fa328, objc = 5, objv = 0x19e960), line 1476 in
  "tclNamesp.c"
    [48] TclEvalObjvInternal(interp = 0x1fa328, objc = 5,
  objv = 0x19e960, command = (nil), length = 0, flags =
  0), line 3087 in "tclBasic.c"
    [49] TclExecuteByteCode(interp = 0x1fa328, codePtr =
  0x8a6a0), line 1404 in "tclExecute.c"  [50]
  TclCompEvalObj(interp = 0x1fa328, objPtr = 0x98848),
  line 982 in "tclExecute.c"
    [51] Tcl_EvalObjEx(interp = 0x1fa328, objPtr =
  0x98848, flags = 0), line 4012 in "tclBasic.c"
    [52] Tcl_ForeachObjCmd(dummy = (nil), interp =
  0x1fa328, objc = 4, objv = 0xffbeb750), line 1863 in
  "tclCmdAH.c"
    [53] TclEvalObjvInternal(interp = 0x1fa328, objc = 4,
  objv = 0xffbeb750, command = 0x2a6408 "foreach {n salt
  passwd expected} [list \\n    1    {a}  {} 
  {$1$a$8CfZSfErbeskipdhZHtvu.} \\n    2    {a}  {a}
  {$1$a$44cUw6Nm5bX0muHWNIwub0} \\n    3    {a}  [string
  repeat a  100] {$1$a$vTAcWEblAgdUlX6KBz0NM.} \\n    4 
    {a}  [string repeat a  200]
  {$1$a$kC.K4D6mvUznpkjWJK8Tm0} \\n    5    {a}  [string
  repeat a  400] {$1$a$nBvNVTsAryOnHlW7L/gzf/} \\n    6 
    {a}  [string repeat a 1000]
  {$1$a$yhNnTV4IKHbl8oEB/eJaj0} \\n] {\n    test
  md5passwd-4.${n} {md5crypt check passwd} {\n       
  ::md5crypt::md5crypt $passwd $s" ..., length = 800,
  flags = 0), line 3087 in "tclBasic.c"
    [54] Tcl_EvalEx(interp = 0x1fa328, script = 0x2a55c8
  "# -*- tcl -*-\n# md5crypt.test:  tests for the
  md5crypt commands\n#\n# This file contains a collection
  of tests for one or more of the Tcllib\n# commands. 
  Sourcing this file into Tcl runs the tests and
  generates\n# output for errors.  No output means no
  errors were found.\n#\n# Copyright (C) 2003 Pat Thoyts
  <patthoyts@users.sourceforge.net>\n#\n# RCS: @(#) $Id:
  md5crypt.test,v 1.5 2004/02/14 05:59:21 andreas_kupries
  Exp $\n\n#
  -------------------------------------------------------------------------\n#
  Initialize the " ..., numBytes = 5337, flags = 0), line
  3683 in "tclBasic.c"
    [55] Tcl_FSEvalFile(interp = 0x1fa328, pathPtr =
  0x250628), line 1749 in "tclIOUtil.c"
    [56] Tcl_SourceObjCmd(dummy = (nil), interp =
  0x1fa328, objc = 2, objv = 0x19e958), line 1058 in
  "tclCmdMZ.c"
    [57] TclEvalObjvInternal(interp = 0x1fa328, objc = 2,
  objv = 0x19e958, command = (nil), length = 0, flags =
  0), line 3087 in "tclBasic.c"
    [58] TclExecuteByteCode(interp = 0x1fa328, codePtr =
  0x1c0a30), line 1404 in "tclExecute.c"
    [59] TclCompEvalObj(interp = 0x1fa328, objPtr =
  0x2321c0), line 982 in "tclExecute.c"
    [60] Tcl_EvalObjEx(interp = 0x1fa328, objPtr =
  0x2321c0, flags = 0), line 4012 in "tclBasic.c"
    [61] Tcl_CatchObjCmd(dummy = (nil), interp =
  0x1fa328, objc = 3, objv = 0x19e94c), line 254 in
  "tclCmdAH.c"
    [62] TclEvalObjvInternal(interp = 0x1fa328, objc = 3,
  objv = 0x19e94c, command = (nil), length = 0, flags =
  0), line 3087 in "tclBasic.c"
    [63] TclExecuteByteCode(interp = 0x1fa328, codePtr =
  0x12ba00), line 1404 in "tclExecute.c"
    [64] TclCompEvalObj(interp = 0x1fa328, objPtr =
  0x163978), line 982 in "tclExecute.c"
    [65] Tcl_EvalObjEx(interp = 0x1fa328, objPtr =
  0x163978, flags = 0), line 4012 in "tclBasic.c"
    [66] SlaveEval(interp = 0x23858, slaveInterp =
  0x1fa328, objc = 1, objv = 0x254b4), line 2094 in
  "tclInterp.c"
    [67] SlaveObjCmd(clientData = 0x1fa328, interp =
  0x23858, objc = 3, objv = 0x254ac), line 1933 in
  "tclInterp.c"
    [68] TclEvalObjvInternal(interp = 0x23858, objc = 3,
  objv = 0x254ac, command = (nil), length = 0, flags =
  0), line 3087 in "tclBasic.c"

    [69] TclExecuteByteCode(interp = 0x23858, codePtr =
  0x152030), line 1404 in "tclExecute.c"
    [70] TclCompEvalObj(interp = 0x23858, objPtr =
  0x4de78), line 982 in "tclExecute.c"
    [71] Tcl_EvalObjEx(interp = 0x23858, objPtr =
  0x4de78, flags = 0), line 4012 in "tclBasic.c"
    [72] Tcl_ForeachObjCmd(dummy = (nil), interp =
  0x23858, objc = 4, objv = 0x2549c), line 1863 in
  "tclCmdAH.c"
    [73] TclEvalObjvInternal(interp = 0x23858, objc = 4,
  objv = 0x2549c, command = (nil), length = 0, flags =
  0), line 3087 in "tclBasic.c"
    [74] TclExecuteByteCode(interp = 0x23858, codePtr =
  0xb2548), line 1404 in "tclExecute.c"
    [75] TclCompEvalObj(interp = 0x23858, objPtr =
  0x31300), line 982 in "tclExecute.c"
    [76] Tcl_EvalObjEx(interp = 0x23858, objPtr =
  0x31300, flags = 0), line 4012 in "tclBasic.c"
    [77] Tcl_ForeachObjCmd(dummy = (nil), interp =
  0x23858, objc = 4, objv = 0xffbecda8), line 1863 in
  "tclCmdAH.c"
    [78] TclEvalObjvInternal(interp = 0x23858, objc = 4,
  objv = 0xffbecda8, command = 0x34c55 "foreach module
  $modules {\n    set ::tcltest::testsDirectory [file
  join $root modules $module]\n\n    if { ![file
  isdirectory $::tcltest::testsDirectory] } {\n^Iputs
  stdout "unknown module $module"\n    }\n\n    set
  auto_path $old_apath\n    set auto_path [linsert
  $auto_path 0 $::tcltest::testsDirectory]\n\n    #
  foreach module, make a slave interp and source that
  module's tests into\n    # the slave.  This isolates
  the test suites from one another.\n    puts stdout
  "Module:\t[file tail $module]"\n    set c [interp
  creat" ..., length = 3554, flags = 0), line 3087 in
  "tclBasic.c"
    [79] Tcl_EvalEx(interp = 0x23858, script = 0x33de8 "#
  all.tcl --\n#\n# This file contains a top-level script
  to run all of the Tcl\n# tests.  Execute it by invoking
  "tclsh all.test" in this directory.\n#\n# To test a
  subset of the modules, invoke it by 'tclsh all.test
  -modules "<module list>"'\n#\n# Copyright (c) 1998-2000
  by Ajuba Solutions.\n# All rights reserved.\n# \n# RCS:
  @(#) $Id: all.tcl,v 1.19 2004/08/10 07:01:30
  andreas_kupries Exp $\n\nset old_auto_path
  $auto_path\n\nif {[lsearch [namespace children]
  ::tcltest] == -1} {\n    namespace eval ::tcltest {}\n
     proc " ..., numBytes = 7355, flags = 0), line 3683
  in "tclBasic.c"
    [80] Tcl_FSEvalFile(interp = 0x23858, pathPtr =
  0x2c8f8), line 1749 in "tclIOUtil.c"
    [81] Tcl_Main(argc = 3, argv = 0xffbed3f0,
  appInitProc = 0x10820 = &Tcl_AppInit(Tcl_Interp
  *interp)), line 292 in "tclMain.c"
    [82] main(argc = 4, argv = 0xffbed3ec), line 90 in
  "tclAppInit.c"
  (dbx 2) 


tkt_uuid: 2346118fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tklib
priority: 7 High
foundin: None
resolution: Not Applicable Here
title: canvas::sqmap limitations
comment:
  The items used to show the images in their cells are currently visible to the user of the canvas::sqmap, allowing hacks and tricks, and possibly confusing things, like when finding nearest/overlapping items.
  Fix this before going v1. Basically have to inspect all methods taking and returning items and filter the internal items out. Ditto for tags, our tag for the image items should not be visible outside.


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

  follwing code demonstrates the issue:

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

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

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

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

  Best regards,

  Martin Lemburg


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

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

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


tkt_uuid: 507242ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: crc
priority: 5 Medium
foundin: None
resolution: Fixed
title: test failed
comment:
  i got the following errors during \make test from crc:

  Module: crc
  modules/crc/cksum.test

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

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

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

  modules/crc/crc32.test

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

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

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

  modules/crc/sum.test

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

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

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


  ==== sum-4.1 sum file option (SysV) FAILED
  ==== Contents of test case:

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

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


  ********
  ******** solution?
  ********
  after, package require cksum in cksum.test, i added
  set ::argv0 [info script]

  that fixed it.


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


tkt_uuid: 435097ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Keynavigation failed in Tree
comment:
  Having supplied open/close-commands for the tree-
  widget, they are not called when pressing the "Right"-
  Button or the "Left"-Button.

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

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


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



  Best regards
    Stefan


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

  ::asn::asnGetPrintableString curr_part value

   by:

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

  Hope that helps

  Regards

  -=Raul=-


tkt_uuid: 828717ffffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: profiler
priority: 7 High
foundin: None
resolution: Not Applicable Here
title: Enhancing the profiler
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: 1261101fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: math :: bignum
priority: 5 Medium
foundin: None
title: Allow easy comparisons with 0 (zero)
comment:
  In ::math::bignum, most of the comparison functions
  (except for iszero) require two bignums as inputs.
  However, there are many cases where the comparison is
  between 0 and some number.

  Right now, you need to make a bignum of 0 to do the
  comparison. It should be possible to special case the
  comparisons so that the comparison is against the
  literal 0 would be permitted.

  Another possibility would be to predefine two useful
  numbers as bignum constants: 0 and 1. With those two
  predefined, a lot of tests would be able to avoid
  having to create them. (Other powers of two (2^1, 2^2,
  2^3, ...2^64) would be potentially useful as well, but
  perhaps less worth the overhead.)


tkt_uuid: 2935347fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Accepted
title: bug 2935339 (::ftpd::config)
comment:
  Here's a fix for bug 2935339 which is where calling ::ftpd::config a second time resets previously set values.The problem is that it uses cmdline::getoptions but supplies the application default values instead of the current values.


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


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

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

  /Ashok


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

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

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

  Erik Leunissen

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


tkt_uuid: 688227ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Notebook left side not drawn (0 borderwidth)
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: 1861700fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: math
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Submission: Beta dist and Incomplete Beta Function
comment:
  Hi,

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

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

  Eric


tkt_uuid: 724822ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: struct :: graph
priority: 7 High
foundin: None
resolution: Not Applicable Here
title: graph - simply increased functionality in walk
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: 723426ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ntp
priority: 8
foundin: None
resolution: Fixed
title: Testsuite failures
comment:
  I ran the testsuite of ntp using a tclsh 8.3.4 and a tclkit 
  8.4.1. In both cases I got failures, but different. Enclosed 
  the log files.


tkt_uuid: 2995969fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: ListBox: No multiple drag
comment:
  A BWidget listbox with multiple selection may not do multiple drag and drop.

  Code:
  pack [ListBox .l -selectmode multiple -dragenabled 1 -dropenabled 1]
  foreach item {A B C D E F} { .l insert end $item -text $item}

  Action:
  * Select item "A" and "B" with shift-select.
  Issue 1:
  * Click on the selection on "A" and move to the end of the list (to get a line) and drop (release mouse button)
    -> the click will unselect "B" and only item "A" will be moved to the end

  Issue 2:
  * (Restart script and select A and B)
  * Shift-Click on the selection on "A" and move to the end of the list (to get a line) and drop (release mouse button)
    -> Only item "B" will be moved to the end

  Reported by Robert Karen on c.l.t:
  http://groups.google.com/group/comp.lang.tcl/browse_thread/thread/90362f0d0200a5b9/22ffbc8fc3196a1f#22ffbc8fc3196a1f


tkt_uuid: 2811747fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
resolution: Fixed
title: Tests for graph(ops) - Don't import struct::graph into ::
comment:
  Get rid of
     namespace import -force struct::graph
  in modules/struct/graph/tests/Xsetup.

  This can mask bugs [graph] vs [struct::graph] in graph operations, by making the command available in the global namespace.

  Also: graphops.test seems to depend on setup done by graph.test, cannot run without. Fix.


tkt_uuid: 410100ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 6
foundin: None
resolution: Fixed
title: Package mgmt woes during development
comment:
  Assume the current codebase, an installed fileutil 1.0
  and a new
  fileutil 1.1 under development. The initialization of
  the tests scans
  the package directories and finds fileutil 1.0. The
  module then adds
  itself to the auto_path and then requires fileutil
  (without
  version). Now fileutil 1.0 is found by the pkg
  management, it is
  acceptable according to the rules of require and thus
  used. The new
  version is not considered at all, as changing the
  auto_path does *not*
  enforce a rescan of package directories.

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

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

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


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

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


tkt_uuid: 1316063fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tie
priority: 4
foundin: None
resolution: Fixed
title: tie/tie_rarray_comm.test prints extra info
comment:
  tie_rarray_comm.test includes gratuitous puts commands,
  cluttering the log.  It prints something about "self @
  xxxx," waiting for spawned comm system to boot" etc.


tkt_uuid: 1657338fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: blowfish
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Blowfish CFB mode
comment:
  Hi, 
  This patch enables CFB (Crypto Forward Block) stream encryption in the blowfish module.
  It has a simple test in the test suite, and I used it to decrypt data encrypted in a cryptofs (fuse userland encrypted filesystem) so I think it works.
  I'm no crypto expert...
  As far as I know, the limitation is that you can not call the encrypt/decrypt multipletimes if you don't use a full block, so ONLY the last block is allowed to be less than 64bits in size, which should not be a problem.

  Regards


tkt_uuid: 844660ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: install
priority: 5 Medium
foundin: None
resolution: None
title: tklib will not install documentation for some
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: 1860190fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Duplicate
title: tkchat: can't read "state(status)": no such variable
comment:
  tkchat v1.413:

  After trying to "Login via IRC ..." (menu File), I got:

  can't read "state(status)": no such variable
      while executing
  "return $state(status)"
      (procedure "http::wait" line 10)
      invoked from within
  "http::wait $token"
      (procedure "http::geturl" line 146)
      invoked from within
  "http::geturl http://www.tcl.tk/cgi-bin/tct/tip/tclIndex.txt  -timeout 15000  -p
  rogress ::tkchat::Progress  -command [list [namespace origin fetchurldo..."
      (procedure "GetTipIndex" line 2)
      invoked from within
  "GetTipIndex"
      (procedure "::tkchat::LoadHistory" line 14)
      invoked from within
  "::tkchat::LoadHistory"
      ("after" script)


tkt_uuid: 2779581fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: sid2SDDL function
comment:
  For converting sids to their text SDDL representations for further use in searches and/or saving to databases etc.


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

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

  make install works smoothly.

  man.macros is in place.

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

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

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

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

  (see target install-doc).


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



    -logineditable



  which would work like e.g. -passwdeditable



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



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

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

  and add it in this line

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

  So that it now reads:

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

  and

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


  Salut,
            Bastien

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


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

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

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

  Thanks!

  -john



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


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

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

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

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

  Greetings,
  Guy


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


tkt_uuid: 831496ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 9 Immediate
foundin: None
resolution: None
title: BWidget combobox popdown keyboard traversal broken
comment:
  In the combobox,  when the listbox is popped down,
  <Key-Up> and <Key-Down> could be used to change the
  selected item, and <Key-Return> would select it and
  unpost the listbox.

  Now (combobox r1.26),  pressing <Key-Up> or <Key-Down>
  immediately unposts the listbox after changing the
  selected item.


tkt_uuid: 1002936fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: Duplicate
title: ftpd can't handle pathnames with spaces
comment:
  ftpd 1.2+ tcl 8.4.6 and .7

  I start up ftpd on my win machine and use Windows
  Explorer to create a network shortcut.  The contents of
  my C:/ directory appear in Window Explorer as expected.
   I then double-click on "/Program Files" and get empty
  directory listing.  Log output from ftpd shows that
  ftpd tried to get list from "/Program" which is
  non-existent.

  Debugging shows that ::ftpd::command::CWD gets passed
  /Program Files/ as the value of list, then 

  set relativepath [lindex $list 0]

  results in relative path getting the value /Program. 
  The line should be 

  set relativepath [lindex [list $list] 0]

  All the other file access sub-commands seem to handle
  $list the same way.  Perhaps a switch statement in
  ::ftpd::read which properly quotes the value of $list
  in the call to the file access sub-commands would be
  better than fixing each individual command.


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

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

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


tkt_uuid: 1886636fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: snit
priority: 6
foundin: None
resolution: Not Applicable Here
title: [clock] inside snit::widgetadaptor
comment:
  In Tcl 8.5.0 with snit 2.2.1:

  ----
  package require snit
  snit::widgetadaptor sframe {
  option -foo[clock format [clock seconds] -format "%Y"]
  constructor {args} { installhull using frame }
  }
  ----

  Produces:
  ----
  invalid command name "::tcl::clock::format"
  ----


tkt_uuid: 1909681fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: md5crypt
priority: 5 Medium
foundin: None
resolution: Works For Me
title: Tcl version of md5crypt::aprcrypt error for some values
comment:
  Tested with 
    tcl8.5a4 & tcllib 1.8.01 
    &
    tcl8.5.2b1 & tcllib 1.10

  If tcllib is installed without the tcllibc module,
  certain values cause md5crypt::aprcrypt to fail with an error as shown below.

  % package require md5crypt
  1.1.0
  % md5crypt::aprcrypt a c
  can't use empty string as operand of "|"

  % set ::errorInfo
  can't use empty string as operand of "|"
      while executing
  "expr {([lindex $V 3] << 16) | ([lindex $V  9] << 8) | [lindex $V 15]}"
      (procedure "::md5crypt::md5crypt_tcl" line 71)
      invoked from within
  "md5crypt::aprcrypt a c"


  When tcllibc is present the error doesn't occur.


tkt_uuid: 1213527fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: mime: Adds spurious CRLF to each item
comment:
  I've been trying to use the mime package for HTTP form 
  data (see <http://wiki.tcl.tk/FileUploadWithTclSHttp>). 
   
  One problem is that mime::buildmessage adds a CRLF at the 
  end of every item and than again before each boundary. This 
  is one CRLF to much. 
   
  This is mostly harmless with HTML or GIF parts in mails, 
  because the additional CRLF is at the end of the file data and 
  just ignored by most viewers.  But for servers parsing it as 
  HTTP form data it is parsed as a significant part of the data. 
   


tkt_uuid: 1043107fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: MainFrame: Accelerator Ctrl f does not work
comment:
  A Ctrl f accelerator in a MainFrame menu definition
  does not work.

  Example script:

  package require BWidget

  set menuDef {
      "Datei" {} {} 0 {
          {command "E Entry" {} "" {Ctrl e} \
               -command  {puts "E Entry called"}}
          {command "F Entry" {} "" {Ctrl f} \
               -command  {puts "F Entry called"}}
          {command "G Entry" {} "" {Ctrl g} \
               -command  {puts "G Entry called"}}
      }
  }

  MainFrame .mf -menu $menuDef

  Control-e and Control-g fire, Control-f does not.

  The reason is in MainFrame::_parse_accelerator. The
  regexp {f[1]?[0-9]*} tries to select f1 etc, to
  capitalize the f, but unfortunately the regexp also
  match a single 'f'. This ends in the Binding
   <Control-Key-F> instead of the necessary <Control-Key-f>.


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

  Regards
  Simon Scott


tkt_uuid: 916160ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: tree
priority: 7 High
foundin: None
title: Add a prune operation to the tree walk command
comment:
  In version 2.0, struct::tree added handling for walk
  scripts to execute [break], [continue], and [return]. 
  A call to [break] or [return] will halt the walk
  altogether.  A call to [continue] allows the remainder
  of the walk script to be bypassed for a given iteration
  and doesn't modify which nodes are visited.  

  It would be nice to also have a prune command available
  that would alter the walk such that for a dfs, for
  instance, the walk would go no deeper than the node for
  which the prune is invoked.

  One way to implement this is as follows:

  Add the following arm to the [switch -exact -- $code]
  call in the function ::struct::tree::WalkCall:

      5 {
          # Force the rest of the current while loop
  iteration in 
          # the caller to be skipped, resulting in a
  "prune" effect
          return -code continue
      }

  And add the following function:

  #
  # For use within a walk call.  Stops the descent on the 
  # current node but continues walking the rest of the 
  # nodes for a dfs search
  #
  proc ::struct::prune {} {
      return -code 5
  }

  Here is a test that illustrates the operation:

  test tree-4.4.18 {prune in dfs walk} {
      tree mytree
      set t [list ]
      mytree insert root end 0 1 2
      mytree insert 0 end a b c
      mytree insert b end I II III
      lappend t ==
      mytree walk root {a n} {
  if {[string equal $n "b"]} {
              lappend t .

              # Skip the I, II, and III nodes
              ::struct::prune
          }
  lappend t $a $n
      }
      lappend t ==
      mytree destroy
      set t
  } {== enter root enter 0 enter a . enter c enter 1
  enter 2 ==}


tkt_uuid: 3439702fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: html
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ::html::js & ::html::css error
comment:
  Hi,

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

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

  Regards

  -=Raul=-


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

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

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

  Now everything works fine. 

  Zbigniew Diaczyszyn


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

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

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

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

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

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

  2)
  ::ftpd::fsFile::fs

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

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

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


tkt_uuid: 481022ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: matrix
priority: 5 Medium
foundin: None
title: new matrix related methods requested
comment:
  1. Ability to tell matrix to print itself out (ala
  parray)

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


tkt_uuid: 522529ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: possible log file parsing bug
comment:
  I have been seeing, during the past week or two, the
  following phenom:

  dkfI don't run the Tk test suite very often as it is
  much touchier than the Tcl test suite. In particular,
  some features (like focus handling and restacking
  timings) seem to be highly dependent on your window
  manager, and I also have problems because my Sun
  workstation has a lot more fonts than normal (I suspect
  that it is configured with extra font servers, but
  can't be bothered to check.)Sat Feb 23 14:33:54 2002
  217.118.43.2 [NEW USER] Bman  
  dan_kuchler.Sat Feb 23 19:46:49 2002 12.234.155.3 [NEW
  USER] ericm  
  dan_kuchlerhi there dude 


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

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


tkt_uuid: 1835240fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Duplicate
title: Error from http package during login
comment:
  Got:

  can't read "state(status)": no such variable
  can't read "state(status)": no such variable
      while executing
  "if {$state(status) eq "error"} {
      # Something went wrong while trying to establish the connection.
      # Clean up after events and such, but DON'..."
      (procedure "http::geturl" line 255)
      invoked from within
  "http::geturl http://www.tcl.tk/cgi-bin/tct/tip/tclIndex.txt  -timeout 15000  -progress ::tkchat::Progress  -command [list [namespace origin fetchurldo..."
      (procedure "GetTipIndex" line 2)
      invoked from within
  "GetTipIndex"
      (procedure "::tkchat::LoadHistory" line 14)
      invoked from within
  "::tkchat::LoadHistory"
      ("after" script)

  Note that this is using a partially patched http package from 8.5. In my case the body of the http::status command is:
  % info body http::status

      if {![info exists $token]} { return "error" }    
      upvar 0 $token state
      return $state(status)


tkt_uuid: 1345967fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
resolution: Fixed
title: graph serialize broken (easy fix)
comment:
  Serialize does not work properly when arc name
  contains spaces.
  Fix: in modules/struct/graph.tcl line 2269 should
  become "set arc [list $a]" instead of "set arc $a"


tkt_uuid: 1798413fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Documenting related commands on one man page
comment:
  It's difficult to write a man page about multiple commands. Here's an example:

  http://naviserver.sourceforge.net/n/naviserver/files/ns_memoize.html
  http://naviserver.cvs.sourceforge.net/naviserver/naviserver/doc/src/mann/ns_memoize.man?view=markup


  - Each command is given a numbered anchor, so to link to ns_memoize_flush the link is: .../ns_memoize.html#2. This will change if commands are added, removed or reordered.


  - If you use the [cmd ...] markup, the name of the command becomes a link but only if it has the same name as the page current page.

  In the example above, ns_memoize is a link to itself. However ns_memoize_flush is not a link at all. Neither is ns_cache_eval, which is documented on another page (named ns_cache).

  What would be useful is if each mention of a command would link to it's definition, i.e. .../ns_cache.html#ns_cache_eval


  - Some commands are in the form of subcommands, like Tcl's 'string'. It would be useful to be able to refer to  a subcommand like: [cmd "string is"] and have it parse the space and link to the correct place.


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

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

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

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

  Michael


tkt_uuid: 1743868fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: pop3d
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Fix extra line between message headers
comment:
  pop3d sends messages with a blank line between each header line. This causes Multipart Mime messages not to be recognized. In particular pop3 client fails to recognized a multipart message sent by pop3d.

  The error is caused by both the pop3d package and the mime package handling the network crlf standard. mime appends \r to all headers for mime::buildmessage and mime::copymessage. pop3d fconfigures the socket channel to crlf.

  This diff mods pop3d to follow the mime package convention; leaving the channel as translation lf and adding \r to strings where required.

  It has been tested for message sizes that can be sent as one segment.  The test suite was not run.


tkt_uuid: 1559489fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Installer
priority: 7 High
foundin: None
resolution: Fixed
title: GUI Installer writes error only to stdout
comment:
  The GUI mode installer.tcl terminates when it
  encounters a non writable install location. So far so
  good, but the error message only appears on stderr,
  which is not optimal on windows where someone might
  click on the installer.tcl file and start without
  stderr. The installer should open a message box and
  notify the user about the non writable location if in
  GUI mode.


tkt_uuid: 1695128fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: doctools - Add backend 'semantic'
comment:
  Create a backend which extracts all words which have been markup up in same way, and how (constants, options, commands, terms, etc. pp.), and return a dictionary (markup -> list of words).


tkt_uuid: 2595296fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: grammar_fa
priority: 5 Medium
foundin: None
resolution: Fixed
title: state rename bugs then state has transition to itself
comment:
  Executing:
  -----
  grammar::fa fa
  fa state add a
  fa next a {} --> a
  fa state rename a b
  -----

  Produces:
  -----
  can't read "order(a)": no such element in array
      while executing
  "upvar #0 ${selfns}::trans_$order($sin) jump"
      ("foreach" body line 3)
      invoked from within
  "foreach srcitem $transinv($snew) {
  struct::list assign $srcitem sin sym
  upvar #0 ${selfns}::trans_$order($sin) jump
  upvar 0 jump($sym) destin..."
      ("rename" arm line 35)
  ----- the rest is skipped -----


tkt_uuid: 476988ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: textutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: splitx and the empty string
comment:
  Using splitx on an empty string does not return

  an empty list.



  # test script

  package require textutil

  namespace import ::textutil::split::splitx

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

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





  The first line of the splitx should be

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


tkt_uuid: 1672347fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: set
priority: 5 Medium
foundin: None
resolution: Out of Date
title: test set-1.0 fails on tcl 8.5a5
comment:
  The test set-1.0 reports "setop" instead of ::struct::set
  in tcl 8.5a5

  Tested on Linux and FreeBSD.
  See attached patch.


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


tkt_uuid: 1176744fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: counter
priority: 5 Medium
foundin: None
resolution: Fixed
title: counter, improper use of alt=
comment:
  It should be title= as firefox doesn't (correctly)
  display a tooltip for alt.

  RCS file:
  /cvsroot/tcllib/tcllib/modules/counter/counter.tcl,v
  retrieving revision 1.18
  diff -c -r1.18 counter.tcl
  *** counter.tcl3 Oct 2004 23:06:55 -00001.18
  --- counter.tcl5 Apr 2005 02:04:43 -0000
  ***************
  *** 1019,1025 ****
            set img src=$options(-images)/$options(-gif)
        }
        append result "<td valign=bottom><img $img
  height=$height\
  !         width=$options(-width) alt=$value></td>\n"
        }
        append result "</tr>"
    
  --- 1019,1025 ----
            set img src=$options(-images)/$options(-gif)
        }
        append result "<td valign=bottom><img $img
  height=$height\
  !         width=$options(-width) title=$value></td>\n"
        }
        append result "</tr>"
    


tkt_uuid: 720208ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ntp
priority: 7 High
foundin: None
resolution: Fixed
title: test failure: ntp module with tcl 8.3
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: 1589111fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: Wrong keysym in combobox code
comment:
  This part of the BWidget Combobox code does work as
  intended (if it does) only by bug:

  proc ComboBox::_auto_post { path key } {
      ...
      if {([string length $key] > 1 && [string tolower
  $key] != $key) && \
  [string equal $key "Backspace"] != 0 && \
  [string equal $key "Up"] != 0 && \
  [string equal $key "Down"] != 0} {
   return
      }
      ...
  }

  There isn't a keysym "Backspace", that is "BackSpace".


tkt_uuid: 1019052fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: bwidget listbox makes wrong key-bindings
comment:
  versions: 1.6 and 1.7
  Tcl: TclKit 8.4.5 and Tcl/Tk 8.4.6
  OS: SuSE Linux 9.1 running KDE 3.2.1, verified in the 
  BWidget demo from ActiveTcl 8.4.5 (BWidget 1.7)

  The BWidget ListBox binds the <Key-Up> and <Key-
  Down> events to the class ListBox, which refers to the 
  frame. It should however be bound to the canvas inside 
  that frame.

  A quick hack for me was to add these two lines to the 
  end of ListBox::create:

  bind $path.c <Key-Up> \
  [list ListBox::_keyboard_navigation $path -1]
  bind $path.c <Key-Down> \
  [list ListBox::_keyboard_navigation $path 1]

  There is probably a nice way of doing this....


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

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

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

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

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


tkt_uuid: 532783ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: matrix
priority: 6
foundin: None
resolution: Fixed
title: Linked matrix not propagating changes
comment:
  The documentation for the ::struct::matrix operation implies 
  that after linking, changes to the matrix object will be propagated 
  to the linked array variable. However, it isn't happening. Here's a 
  simple test case run interactively:

  % package require 
  struct
  1.2
  % ::struct::matrix test
  test
  % test add columns 
  4
  % test add row {1 2 3}
  % test link arr
  % array get arr
  0,0 1 1,0 2 
  2,0 3 3,0 {}
  % test add row {a b c d}
  % array get arr
  0,0 1 1,0 2 2,0 3 
  3,0 {}

  Line 1245 of the source looks suspiciously like it has a 
  typo of the variable name "data":

  trace variable date  w  [list 
  ::struct::matrix::MatTraceOut $variable $name]

  However, 
  changing "date" to "data" in this line didn't work:

  % package 
  require struct
  1.2
  % ::struct::matrix test
  test
  % test add 
  columns 4
  % test add row {1 2 3}
  % test link arr
  % array get 
  arr
  0,0 1 1,0 2 2,0 3 3,0 {}
  % test add row {a b c d}
  can't set 
  "data(0,1)": can't set "array(0,1)": bad row index 1, row does not 
  exist


tkt_uuid: 1091764fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclbench
priority: 5 Medium
foundin: None
resolution: Fixed
title: runbench.tcl does not run on windows w/ msys
comment:
  runbench.tcl exec 'echo' in proc getInterps:

  if {[catch {exec echo "puts \[info patchlevel\] ;
  exit" | \
  $interp} patchlevel]} {...}

  This does not work with msys, because it doesn't come
  with an echo binary (but only an echo written in terms
  of a shell script, which obviously isn't recognized as
  executable in an exec call). runbench.tcl seems to
  expect a cygwin environment (which has an echo.exe).

  Though, since both cygwin and msys (and any unix
  anyway) have a sh, I propose to change that code in
  getInterps to:

  if {[catch {exec sh -c "echo puts \[info patchlevel\]
  ; exit" | \
  $interp} patchlevel]} {...}

  With only this change, runbench.tcl runs under msys or
  a windows console with the msys binariers in the PATH.


tkt_uuid: 3058654fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: doctools
priority: 8
foundin: None
resolution: Not Applicable Here
title: Incorrect nroff generation
comment:
  When generating nroff from a [titledesc] directive, it's important that the description of commands all be placed on a single line. This is because the apropos search tool assumes that these descriptions are on a single line following the ".SH NAME" directive. Right now, you generate output here that is multiline in some cases (found when preparing HTML documentation for the Thread package with Tcl's 'make html', which failed; that's now fixed, but even so...) It's also expected that the part of the NAME description before the \- will be a list of commands described by the manual page, and not the name of the manual page itself. This makes a difference when manual pages describe multiple commands or when the name is not a "good" filename (e.g., by containing a colon).

  It would also be useful if the generation of nroff from [example] used .CS/.CE to surround the example code instead of .nf/.fi as that is converted better. (.CS always marks sample code in some sense, .nf is used for many purposes.)


tkt_uuid: 1292966fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Performance: connection timeout
comment:
  Hi,

  When I try to connect via (latest version 2.4.1):
  ftp::Open $some_ip anonymous "" -mode passive

  I takes sometimes more than a minut (sometimes a timeout).
  * We only have this when starting on Solaris connecting
  to Windows via a Fortigate 200 Antivirus Appl. and a
  firewall.
  * Windows to Windows via Fortigate and firewall works fine.
  * Solaris to whatever OS not via Fortigate and firewall
  works fine
  * When I test the connection via regular UNIX ftp
  command -->
  no problem

  The line of code slowing down is located in ftp.tcl
  proc ftp::OpenControlConn
  --> set peer [fconfigure $ftp(CtrlSock) -peername]

  This line is used only for a DisplayMsg. (I think this
  line should be in the if statement, but this is not the
  real issue).

  I found an old bug report on fconfigure -peername (tcl
  project):
  [ 533301 ] fconfigure -peername very slow

  Does somebody have an idea?

  Moving the fconfigure line into the 
  #    if { $VERBOSE } {

  block fixes my problem when VERBOSE mode is off.


tkt_uuid: 479482ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Accepted
title: RFC: new smtpd module.
comment:
  I am submitting a skeleton Simple Mail Transfer
  Protocol daemon (smtpd) for inclusion into tcllib. This
  was written to permit testing of mail sending software
  (SOAP over SMTP) on the windows platform but may have
  other uses.

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

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

  Comments please!


tkt_uuid: 447141ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Accepted
title: Corrections for INSTALL_ROOT
comment:
  $(INSTALL_ROOT) should not only be prepended to prefix
  and exec_prefix, but also to libdir and mandir to
  provide a complete installation to a virtual location.


tkt_uuid: 772435ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
title: snit: Initialization of type variables
comment:
  From a mail by Will, author of snit:

  * I'd like to add a good way to initialize array 
  typevariables.


tkt_uuid: 1735601fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: grammar_fa
priority: 5 Medium
foundin: None
title: grammar::fa::op::toRegexp
comment:
  Just wanted to log this natural companion of fromRegexp.

  I don't need it myself right now, but I might do in the 
  future, and about a month ago two colleagues mentioned 
  it would be nice if their program could also convert the 
  automata it generated to regexps...

  I'll probably fill this RFE myself, eventually, unless 
  someone beats me to it. :-)


tkt_uuid: 1191326fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Fixed
title: ldap::add cannot handle multi-valuated attributes
comment:
  ::ldap::add cannot add entries with multiple values for an 
  attribute. 
   
  My test program: 
   
  ----------------------------------------------------- 
  #!/usr/local/bin/tclsh8.4 
   
  package require ldap 
  set ldapfd [::ldap::connect ldap.my.domain] 
   
  ::ldap::bind $ldapfd "cn=admin,o=test" "mypassword" 
  set dn "cn=Test,ou=persons,o=test" 
   
  set attrval1 { 
      objectClass person 
      cn          Test 
      sn          Test 
      telephoneNumber {+31415926535 +27182818285} 
  } 
   
  set attrval2 { 
      objectClass person 
      cn          {Test User} 
      sn          Test 
      telephoneNumber +31415926535 
      telephoneNumber +27182818285 
  } 
   
  ::ldap::add $ldapfd $dn $attrval1 
   
  ::ldap::disconnect $ldapfd 
  ----------------------------------------------------- 
   
  When $attrval2 is given to ::ldap::add, I get an error 
  since telephoneNumber is repeated twice. 
   
  When $attrval1 is given to ::ldap::add, there is one 
  occurrence of the telephoneNumber with the two 
  numbers, which is not the required result. 
   
  This may (also) be a documentation problem. 


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

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


tkt_uuid: 1078215fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: calculus
priority: 5 Medium
foundin: None
resolution: None
title: Possible bug in Runge-Kutta method
comment:
  Mark Stucky reported this in c.l.t.:

  I think that I've found a small bug / typo within
  tcllib 
  (tcllib::math::calculus)
  rungeKuttaStep routine.

  Possibly I am just missing something here (it wouldn't
  be the first time), 
  but
  here is the routine (from tcllib-1.7) with my suggested
  fix :

   proc ::math::calculus::rungeKuttaStep { t tstep xvec
  func } {

     set funcq    [uplevel 1 namespace which -command
  $func]

     #
     # Four steps:
     # - k1 = tstep*func(t,x0)
     # - k2 = tstep*func(t+0.5*tstep,x0+0.5*k1)
     # - k3 = tstep*func(t+0.5*tstep,x0+0.5*k2)
     # - k4 = tstep*func(t+    tstep,x0+    k3)
     # - x1 = x0 + (k1+2*k2+2*k3+k4)/6
     #
     set tstep2   [expr {$tstep/2.0}]
     set tstep6   [expr {$tstep/6.0}]

     set xk1      [$funcq $t $xvec]
     set xvec2    {}
     foreach x1 $xvec xv $xk1 {
        lappend xvec2 [expr {$x1+$tstep2*$xv}]
     }

     set xk2      [$funcq [expr {$t+$tstep2}] $xvec2]
     set xvec3    {}
     foreach x1 $xvec xv $xk2 {
        lappend xvec3 [expr {$x1+$tstep2*$xv}]
     }

     set xk3      [$funcq [expr {$t+$tstep2}] $xvec3]
     set xvec4    {}
     foreach x1 $xvec xv $xk3 {
        lappend xvec4 [expr {$x1+$tstep2*$xv}]

  >********************************************************************************
  >  Here is the "bug" : $tstep2 in the above line should
  actually be $tstep
  >  From the description above
  >           # - k4 = tstep*func(t+    tstep,x0+    k3)
  >  tstep is used rather than tstep*0.5 (ie tstep2)
  >********************************************************************************

     }

     set xk4      [$funcq [expr {$t+$tstep}] $xvec4]
     set result   {}
     foreach x0 $xvec k1 $xk1 k2 $xk2 k3 $xk3 k4 $xk4 {
        set dx [expr {$k1+2.0*$k2+2.0*$k3+$k4}]
        lappend result [expr {$x0+$dx*$tstep6}]
     }

     return $result
  }


  --Mark 


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


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

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

  400: error writing "sock248": invalid argument

  out of mime::copymessageaux

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

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

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

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

         set hfile mime-bad.htm

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

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


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

  }


tkt_uuid: 1267112fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: doctools - Add table support
comment:
  When composing the units man page, I used [example] to
  format the tables of units, because that appeared
  similar to preformatted, and was the only way I saw to
  make a table.

  It would be better if doctools supported [table]
  commands.  The html, latex, and nroff engines could be
  extended to support table output.  Tmml and wiki
  formats don't support tables, so those engines would
  have to generate some equivalent, perhaps preformatted,
  output.


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

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

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

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

  and similar for the MONTHS_SHORT array.

  Christopher


tkt_uuid: 1108569fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: latest tkchat.kit at least fails
comment:
  Since the tkchat code, by itself, no longer runs
  without bits and pieces of things installed that are
  undocumented, I've been running tkchat from the
  tkchat.kit mentioned at http://wiki.tcl.tk/tkchat . 
  Today, when I downloaded the version there, and
  attempted to run it on my sparc solaris 8 machine, I
  got an error about being unable to find tls.  So I
  downloaded from the sdarchive the latest tls.kit ,
  which sdarchive says works on solaris 8.  Here is the
  error that appears if the tls.kit starkit is in the
  same directory as tkchat.kit:

  couldn't load library
  "/volws/lwv28/ldatae/bin/tls.kit/lib/tls/SunOS-sparc/tls.so":
  no such file or directory
      while executing
  "load
  /volws/lwv28/ldatae/bin/tls.kit/lib/tls/SunOS-sparc/tls.so
  "
      ("package ifneeded" script)
      invoked from within
  "package require tls"
      ("foreach" body line 4)
      invoked from within
  "foreach tlsname {tls.kit tls-win.kit tls-lin.kit} {    
      if { [file exists [file join $kitdir $tlsname]] } {
          source [file join $kitdir $tls..."
      (file "/volws/lwv28/ldatae/bin/tkchat.kit/main.tcl"
  line 5)
      invoked from within
  "source /volws/lwv28/ldatae/bin/tkchat.kit/main.tcl"
      ("uplevel" body line 1)
      invoked from within
  "uplevel [list source [file join $self main.tcl]]"

  sdx.kit says:

   $ sdx lsk /ldatae/bin/tls.kit           

  /ldatae/bin/tls.kit:
                              dir  lib/
          92  2004/03/22 02:23:41  main.tcl

  /ldatae/bin/tls.kit/lib:
                              dir  tls/

  /ldatae/bin/tls.kit/lib/tls:
                              dir  Darwin-ppc/
                              dir  Linux-x86/
                              dir  OpenBSD-x86/
                              dir  Solaris-sparc/
                              dir  Windows-x86/
         552  2004/03/22 02:51:38  pkgIndex.tcl
        5289  2004/03/22 02:52:13  tls.tcl

  /ldatae/bin/tls.kit/lib/tls/Darwin-ppc:
       41564  2004/03/22 02:32:12  tls.dylib

  /ldatae/bin/tls.kit/lib/tls/Linux-x86:
     1119770  2004/03/22 02:26:32  tls.so

  /ldatae/bin/tls.kit/lib/tls/OpenBSD-x86:
       38807  2004/09/07 08:37:21  tls.so

  /ldatae/bin/tls.kit/lib/tls/Solaris-sparc:
       46000  2004/02/13 19:38:53  tls.so

  /ldatae/bin/tls.kit/lib/tls/Windows-x86:
      536576  2004/03/21 21:24:22  tls.dll

  It appears that tkchat is generating the directory
  names differently than tls.kit has them named...


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

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


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

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

  I'm handpassing this to you.


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

  [General]    
  key=value
  key2=value2


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

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


tkt_uuid: 528392ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Invalid
title: Missing commands in nroff format
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: 546423ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: Documentation
priority: 5 Medium
foundin: None
resolution: Out of Date
title: tcllib manpage
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: 1557268fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: html
priority: 5 Medium
foundin: None
resolution: Fixed
title: TABLE tag case
comment:
  This is a minor but easy thing. In looking through the
  html package there are a couple instances where the
  table tag is being passed back in UPPERCASE when it
  should all come back in lowercase.

  Look into the following procs:

  ::html::tableFromArray
  ::html::tableFromList

  As far as I can tell everything else is passed back as
  lowercase.


tkt_uuid: 1272910fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: statistics
priority: 5 Medium
foundin: None
resolution: None
title: math::statistics - failed tests with Tcl 8.5
comment:
  ==== Quantiles-1.0 Quantiles - raw data FAILED
  ==== Contents of test case:

    set values [::math::statistics::quantiles
  $::data_linear {0.25 0.55 0.95}]

  ---- Result was:
  2.0 6.0 10.0
  ---- Result should have been (tolerant matching):
  3.0 6.0 10.0
  ==== Quantiles-1.0 FAILED


tkt_uuid: 1739240fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: plotchart
priority: 8
foundin: None
resolution: None
title: tklib plotchart doc failure during build
comment:
  when i try to build the cvs head of tklib , I get this error:
  Generating /projects/sprs_lwv/tcl85/man/mann/plotchart.n
  Doctools Error in macro at line 150, column 24:
  [emph in days]
  --> wrong # args: should be "emph text"
      while executing
  "::doctools::_format dt {[comment {-*- tcl -*- doctools manpage}]
  [manpage_begin Plotchart n 1.3]
  [copyright {2007 Arjen Markus <arjenmarkus@users.sour..."
      ("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 plotchart nroff n /projects/sprs_lwv/tcl85/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 485)
  gmake: *** [install] Error 1


tkt_uuid: 697022ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: In Button, -repeatdelay command not cancelled on release
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: 1693491fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: grammar_fa
priority: 5 Medium
foundin: None
resolution: Accepted
title: Expand the grammar::fa::dexec
comment:
  Here is my implementation for the feature request. I only did the .tcl and the .man. I don't quite understand the .test format and procedures, so no .test file.

  Thanks,
  Bogdan.


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

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


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

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


tkt_uuid: 1898189fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: special
priority: 5 Medium
foundin: None
resolution: None
title: Unbalanced parenthesis in elliptic.tcl
comment:
  Hi,
  The line #209 of the file elliptic.tcl
  contains the evaluation of an expression containing an unbalanced parenthesis :

  return [expr {sqrt(...)}]

  where the closing parenthesis does not exist in the source.
  This prevents the math package from being included as-is in a compiled starkit or starpack.

  Best regards,

  Michaël


tkt_uuid: 1005948fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
title: LabelComboBox and LabelSpinBox
comment:
  It was - convenient to have such widgets with
  properties ComboBox and SpinBox in the version 1.2.x.
  It is convenient and readable at writing a code, and
  for example the command "$w -state disbled" will effect
  (to change color) both on Label and on ComboBox.
  In fact is LabelEntry - why to not make LabelComboBox
  and LabelSpinBox? :)
  Itself would write and send - a patch, but it is not
  confident, that I can write a good code.


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


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

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

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


tkt_uuid: 1866134fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
title: Submission: Student's t-distribution
comment:
  Hi,

  I'm submitting some code for pdf-students-t and random-students-t (cdf-students-t is already implemented). Both procs will allow noninteger degrees of freedom, but the algorithm for the random deviates requires a value >= 1.

  Eric


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

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

  The attached patch solves this.


tkt_uuid: 948273ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
resolution: Fixed
title: logger::services returns "services", not $services
comment:
  I believe the code in the logger::services

  proc ::logger::services {} {
      variable services
      return services
  }
                                                        
                                                        
                       
  should return $services, not "services"


  regards
  Jouni.Ryno@fmi.fi


tkt_uuid: 1852718fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Fixed
title: ldap filters with binary values not handled correctly
comment:
  The filter buildup proc doesn't handle escaped binary in the filter value correct. It should follow RFC 2254.


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

  tclsh8.6 ./sak.tcl validate

  I get following error

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


tkt_uuid: 1634416fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: -geometry option to BWidget Dialog undocumented
comment:
  The Dialog BWidget supports a -geometry option (which works well for me). However, the documentation for that widget doesn't even mention this option.


tkt_uuid: 576873ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
title: add autoscroll to tklib
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: 893259ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 8
foundin: None
title: Add simple plotting and charting package
comment:
  I have written a simple package for drawing plots and
  charts:
  - xy-plots
  - piecharts
  - barcharts
  - polar plots

  (I would like to add some simple 3D presentations too)

  It is still very much in its infancy, but I include
  the source nonetheless for early comments and
  suggestions.

  The basic design criterium was:

  Provide an easy-to-use package. It may not be as
  flexible as some others, but by offering lots of
  different chart types it should be worth looking
  into.


tkt_uuid: 1861370fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
title: Submission: Chi-squared distribution
comment:
  Hi,

  I'm submitting an implementation of the (central) chi-squared distribution.

  This time around, I did a more systematic job of testing the code, by using a test-driven development approach. To do that, I used my little "simple test" library.

  I'm attaching the code that implements the chi-squared library first. Then I'll post the simple test code.

  Dependencies:
   - Gamma distribution
   - Simple test

  Eric


tkt_uuid: 1800408fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: Extra spaces around link text
comment:
  Using cvs HEAD, the following doctools markup:

    See [cmd ns_rollfile] for details...

  Produces this HTML output:

    See <b class='cmd'><a href="../ns_rollfile.html"> ns_rollfile </a></b> for details...


  There is extra space before and after 'ns_rollfile' within the anchor tag.

  In the above example it's not noticeable as runs of spaces are collapsed in HTML, but if there is anything other than a space surrounding the link, e.g. brackets, parentheses or question marks, the extra spaces break the formatting.


tkt_uuid: 756334ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: ComboBox doesn't take focus during keyboard traversal
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: 601257ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Accepted
title: fix missing content boundary workaround
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: 776010ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: list
priority: 8
foundin: None
title: Add set operations.
comment:
  Date: 22 Jul 2003 17:46:51 GMT
  From: lvirden@yahoo.com
  Newsgroups: comp.lang.tcl
  Subject: Re: common elements in list of list


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

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


tkt_uuid: 795608ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: tk binding problem in Gnome and Ximian
comment:
  There seems to be a bug when a tk listbox is embedded 
  inside a BWidget paned window frame. I have tried 
  putting the listbox outside of the frame and it works 
  correctly. This problem does not occur in KDE or using a 
  vnc. Is this a tcl/tk bug or is there some default setting 
  in Gnome or Ximian that needs to be changed in order 
  for the double-click event to be recognized? 

  Don


tkt_uuid: 429695ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: base64
priority: 5 Medium
foundin: None
resolution: Fixed
title: Speed increase of base64 & md5
comment:
  The patch contains:

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

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


tkt_uuid: 772461ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
title: snit: Allow masking of options (undefine)
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: 953854ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: htmlparse
priority: 1 Zero
foundin: None
resolution: Accepted
title: Errors when parsing HTML to a tree
comment:
     Hello,

  In func

  proc ::htmlparse::mapEscapes

  line: return [subst $new]
  should change to:
     return [subst -nobackslashes -novariables $new]

  If not, if new has a backslash \, the subs breaks the 
  string (specially noted in paths on Windows)

  -------
  In func

  ::htmlparse::Reorder

  Lines:
      if {
         $sibling == {} ||
         (![string compare $tp [$tree get $sibling type]])
                   } {
                       break
                   }
  Should change to:
         if { $sibling == "" } { break }
         if { [lsearch "h1 h2 h3 h4 h5 h6 p li" [$tree get
                   $sibling type]] != -1 } {
      break
       }

    Second option is less agressive when reordering tags.

    Regards,

    Ramon Ribó
    ramsan@cimne.upc.es


tkt_uuid: 1158037fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: dns
priority: 5 Medium
foundin: None
resolution: Fixed
title: Resource exaustion
comment:
  dns::resolve fails after 65535 requests. It happens
  even with CVS head of dns.tcl.

  Error message:

  can't read "state(reply)": no such variable
  while executing
  "binary scan $state(reply) SS id flags"
  (procedure "Receive" line 6)
  invoked from within
  "Receive [namespace current]::$id"
  (procedure "::dns::UdpEvent" line 12)
  invoked from within
  "::dns::UdpEvent ::dns::66665"


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

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

  Best regards

  Ulrich


tkt_uuid: 943145ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 7 High
foundin: None
title: doctools - [namespace] markup request
comment:
  Please add a [namespace] markup command
  to the doctools format for marking a namespace
  name in the documentation.


tkt_uuid: 870429ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: html
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::html::textInput does not allow overriding of input.size
comment:
  Basically a trivial problem:

  ::html::textInput foo bar size=\"20\"

  on would expect (in the generated html):

  <input ... size="20"> 

  but one gets:

  <input ... size="45" size="20">

  This is documented in the source code comments for
  ::html::textInput, but i think it is plain stupid:

  Possible fix:
  expand defaults/tagParam to handle lists of params and
  use that in ::html::textInput to check for overridden
  default values.

  Michael


tkt_uuid: 2993029fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: aes
priority: 5 Medium
foundin: None
resolution: Fixed
title: aes procedure gives an error _just_ with a given vector
comment:
  After some "test and error", I find out that the vector that I am trying to decrypt triggers an error !!! but with similar vector the error does not happen!!!
  I upload a file with the ok vectors, and the bad one.
  Please, give me some feedback asas. Thank yo very much.
  Josep


tkt_uuid: 1220090fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 3 Low
foundin: None
resolution: Fixed
title: subsection markup doesn't detect duplicate anchors
comment:
  If a doctools file has two "subsection" tags with the same title, the 
  two subsections will have identical HTML anchor string.  Doctools 
  should issue a warning, and provide a way for the author to resolve 
  the ambiguity without necessarily changing their titles.


tkt_uuid: 621178ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget error in Tree under 8.4
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: 547331ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: stooop
priority: 7 High
foundin: None
resolution: Not Applicable Here
title: stooop redefines [::proc] !
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: 732597ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: general request
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: move tcllib doc generation to build step
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: 1416798fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: stooop
priority: 5 Medium
foundin: None
resolution: Fixed
title: stooop: test suite bug
comment:
  with -debug 1:

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


tkt_uuid: 232017ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
priority: 5 Medium
resolution: Not Applicable Here
title: "string" subcommands require at least Tcl8.1
comment:
  Usage of "string" subcommands: is, equal, map, repeat, replace, totitle
  are not implemented in tcl 8.0.

  tcllib modules should either "package require Tcl 8.1", or be made
  backwards compatible to tcl 8.0.

  The following tcllib source files are affected:
      base64.tcl, compare.tcl, typedCmdline.tcl, ftp.tcl, ftpd.tcl,
      html.tcl, mime.tcl, ncgi.tcl, pop3.tcl, profiler.tcl, graph.tcl,
      queue.tcl, stack.tcl, tree.tcl, uri.tcl


tkt_uuid: 443645ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pop3
priority: 5 Medium
foundin: None
resolution: Fixed
title: pop3::retrieve fails...
comment:
  I've been trying out the new tcllib pop3 module 
  included in the latest ActiveTcl distribution 
  (8.3.3.2) some more, and found that pop3::retrieve 
  fails on some POP3 servers with an unknown "size" 
  variable message...

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

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

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

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

  -- AH.


tkt_uuid: 1176295fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: memoize package
comment:
  A package that can be used to cache, load and save the
  values of expensive pure function calls i.e function
  without side effects

  Implmentation: http://wiki.tcl.tk/memoize

  Perl has it as a default package  since 5.8.0
  http://perl.plover.com/Memoize/

  regards,,
  Detlef


tkt_uuid: 412932ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: Works For Me
title: ftpd on win2000
comment:
  when running the server on a windows 2000 box
  the file transfers always fails, no errors are issued 
  but the downloaded file never downloads complete.and 
  ex. the pwd command does not work etc....

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


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

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


tkt_uuid: 3556779fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: widget
priority: 5 Medium
foundin: None
resolution: Out of Date
title: No calendar in August
comment:
  I use widget_calendar with this command:
  widget::calendar .z5fd.app.frdia.date -dateformat "%Y-%m-%d" -language de -textvariable zAr_uiDia(exposureDate)  -command z5ui_selectedDate

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

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

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

  well, i hope, you can help
  regards Bernd


tkt_uuid: 2928355fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ftp::Rename causes ftpd to crash
comment:
  Calling ftp::Rename as client causes the ftp-daemon into which I logged in to crash in proc ::ftpd::command::RNTO, because the variable sock is unknown. Including "upvar #0 ::ftpd::$sock data" - as used in the other procs - resolves the application error.


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

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

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

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

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

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


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

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


tkt_uuid: 553835ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: stooop
priority: 5 Medium
foundin: None
resolution: Fixed
title: Use [uplevel 1].
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: 1658061fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 3 Low
foundin: None
resolution: Fixed
title: Poor/misleading diagnostics from smtp::sendmessage
comment:
  After switching to a new server, my TCL mailing list software stopped working -- sending to all addresses would fail with "read from server timed out".

  The server (on localhost) would log simply "unexpectedly closed connection".

  It was not until I modified the script to print out the entire errorInfo, that I saw the _real_ problem: "can't find package tls".

  Similarly, on another installation, the SMTP server was modified (unbeknown to me) to require username and password. Instead of relaying the "553 Authorization required" error message to me, smtp::sendmessage began complaining:

  key message-id not in header
      while executing
  "error "key $mixed not in header""
      ("default" arm line 5)
      invoked from within
  "switch -- $key {
          "" {
              set result ""
              foreach lower $state(lowerL) mixed $state(mixedL) {
                  lappend result..."
      (procedure "::mime::getheader" line 7)
      invoked from within
  "::mime::getheader $part ${message-idL} "
      invoked from within
  [... my code ...]


tkt_uuid: 1693391fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Rejected
title: TitleFrame doesn't collapse after deleting all widgets
comment:
  I the following sample the TitleFrame reduces it's size, when the first widget $f.foo is deleted, but it doesn't collapse after deleting the last widget $f.bar:

  ##########
  package require BWidget
  TitleFrame .tf -text "title"
  grid .tf -sticky news

  set f [.tf getframe]
  label $f.foo -text "foo foo foo"
  label $f.bar -text "bar bar bar"
  grid $f.foo -sticky news
  grid $f.bar -sticky news

  after 3000 [list destroy $f.foo] 
  after 6000 [list destroy $f.bar] 
  ##########

  Rolf.


tkt_uuid: 1567320fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: sasl
priority: 5 Medium
foundin: None
resolution: Fixed
title: hpux, testcase SASL-DIGESTMD5-4.0 starts and hangs
comment:
  Running the tcllib testsuite on a hpux-parisc machine
  the testcase mentioned in the subject hangs without any
  type of feedback.


tkt_uuid: 1042613fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Can't drag into an emtpy tree widget
comment:
  A drag to a tree widget does not work, if the
  destination tree doesn't have any nodes. 

  This script illustrates the problem:

  package require BWidget

  proc dropcmd {dest source dropInfo operation dataType
  data} {
      set sourceTree [winfo parent $source]
      $dest insert end root $data \
           -text [$sourceTree itemcget $data -text]
      $sourceTree delete $data
  } 

  set t1 [Tree .t1 -dragenabled 1]
  $t1 insert end root aNode -text "A sample Node"

  set t2 [Tree .t2 -dropenabled 1 \
              -dropovermode w \
              -dropcmd dropcmd]
  # If the destination tree has at least one node,
  everything works
  # $t2 insert end root anotherNode  -text "Another node"

  pack $t1 $t2 -side left

  If the destination tree doesn't have a node, the
  dropcmd will not be called. As far, as I've debugged
  the problem, the reason, that the dropcmd isn't called,
  is in  Tree::_drop_cmd:
      if {[llength $data(dnd,node)]
          && [llength [set cmd [Widget::getoption $path
  -dropcmd]]]} {
          return [uplevel \#0 $cmd \
                      [list $path $source $data(dnd,node)
  $op $type $dnddata]]
      }
  If the destination tree doesn't have a node,
  $data(dnd,node) is empty (but should be "widget", as
  far, as I can tell)


tkt_uuid: 1115335fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: mclistbox
priority: 5 Medium
foundin: None
title: mclistbox patch: select color
comment:
  years ago, I have made a small change to mclistbox to
  get short options for -foreground and -background (-fg
  and -bg) and enable -selectforeground -selectbackground.

  Here it is now as diff to the current CVS.


tkt_uuid: 1168649fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Installer
priority: 5 Medium
foundin: None
resolution: Fixed
title: debian package regression 1.7 (from 1.6.1)
comment:
  I was trying to make a new Debian package of tcllib:
  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=300805
  but I found there's a regression in tcllib-1.7 from
  tcllib-1.6.1 since it tries to install dtplite direcly
  in /usr/bin/ instead the debian package directory.
  Could you fix this problem so I can make a Debian package?
  Any idea how to fix it?

  ---8<---
  error copying "./apps/dtplite" to "/usr/bin/dtplite":
  permission denied
      while executing
  "file copy -force $aexe    $adst"
      (procedure "ainstall" line 16)
      invoked from within
  "ainstall"
      (procedure "doinstall" line 26)
      invoked from within
  "doinstall"
      (procedure "main" line 11)
      invoked from within
  "main"
      (file "./installer.tcl" line 536)
  make[1]: *** [install] Error 1
  make[1]: Leaving directory `/tmp/tcllib/tcllib-1.7'
  make: *** [install-stamp] Error 2
  ---8<---


tkt_uuid: 772430ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: snit: clean up error stacks, hide internals.
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: 1308006fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ftp::List problem on Windows
comment:
  When connection to a windows server
  whith ftp::Open ...

  Then:
  ftp::List $h "filename-which-does-not-exists"
  --> error     error | E: Error receiving list!

  When I add try with "x*" no problem. 
  An empty string is returned: meaning no file starting
  with x.

  When I connect to a Solaris server:
  ftp::List $h "filename-which-does-not-exists"
  works fine (without adding the *)


tkt_uuid: 554062ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: stooop
priority: 5 Medium
foundin: None
resolution: None
title: tcllib test suite failures for stoop
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: 3419727fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: inifile
priority: 9 Immediate
foundin: None
resolution: Fixed
title: global variable key is destroyed during file open procedure
comment:
  code snipset out of
  # RCS: @(#) $Id: ini.tcl,v 1.15 2008/05/11 00:53:58 andreas_kupries Exp $

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

  destroys the content of the global variable  "key". 


tkt_uuid: 1642050fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: PasswdDlg <Return> traversal wrong when -passwdstate disable
comment:
  Create a PasswdDlg with -passwdstate disabled.  Type in the login name and hit Return.  It should destroy the dialog and perform the login, but instead it sets focus to the disabled password entry field.

  I believe the problem is that the -command option for the login entry is always set to [list PasswdDlg::_verifonpasswd $path $frame.labpass]                                regardless of the value of the -passwdstate option.  If the -passwdstate is disabled, the -command option for the login entry should be [list PasswdDlg::_verifonlogin $path $frame.lablog] instead.


tkt_uuid: 1409083fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: fileutil::find documentation improvement
comment:
  1.  typo:  "loose" -> "lose"
  2. The man page does not indicate that the filtercmd
  should return a boolean value.  An example would be
  warranted.  Suggested text to be appended to what
  currently exists:
  =====
  The result of [arg filtercmd] is a boolean value that
  indicates if the current file should be included in the
  list of interesting files.  Example:

  # find tcl files
  package require fileutil
  proc is_tcl {name} {return [string match *.tcl $name]}
  set tcl_files [fileutil::find . is_tcl]
  =====


tkt_uuid: 440051ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 3 Low
foundin: None
resolution: Fixed
title: latest sha1 test suite fails
comment:
  Note: I don't see sha1 listed in the sf tcllib project
  categories.

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

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

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

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

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

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

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

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

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

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

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

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


tkt_uuid: 1518803fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget::write fails for NoteBook widget
comment:
  The error message: 
    invalid command name "-classonly::use"

  The NoteBook widget uses (eventually) DynamicHelp.
  DynamicHelp uses "-classonly", as defined in
  $BWidget::use(DynamicHelp)

  The proc BWidget::classes (utils.tcl, line 563) will
  invoke "-classonly::use" for DynamicHelp.

  The following context diff will fix it:

  $ diff -c utils.tcl.orig utils.tcl
  *** utils.tcl.orig      Mon Apr 17 12:19:03 2006
  --- utils.tcl   Fri Jul  7 10:55:27 2006
  ***************
  *** 567,573 ****
        set classes [list $class]
        if {![info exists use($class)]} { return }
        foreach class $use($class) {
  !       eval lappend classes [classes $class]
        }
        return [lsort -unique $classes]
    }
  --- 567,575 ----
        set classes [list $class]
        if {![info exists use($class)]} { return }
        foreach class $use($class) {
  !         if {![string equal $class "-classonly"]} {
  !             eval lappend classes [classes $class]
  !         }
        }
        return [lsort -unique $classes]
    }


tkt_uuid: 1376323fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Duplicate
title: large message size causes error
comment:
  I reported this issue to ActiveState. You can 
  reference it by going to 
  http://bugs.activestate.com/show_bug.cgi?id=42067

  Basically, when using a remote server, sending a 
  message that is greater than ~9000 bytes on a windows 
  XP pro platform causes the function to crash.

  Since I don't want to upload everything all over 
  again please get the info at ActiveState.

  This issue is really limiting what I'm trying to do.


tkt_uuid: 836442ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 9 Immediate
foundin: None
resolution: Fixed
title: timeout with large data
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: 1784843fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Documentation
priority: 5 Medium
foundin: None
resolution: Accepted
title: minor spelling corrections to devdocs files
comment:
  There may be content-oriented updates needed to these files ... this patch is not that.

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


tkt_uuid: 521386ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Dialog freezing on Windows (and patch)
comment:
  The Dialog::draw routines freezes on Windows when the
  toplevel of the window is in state withdrawn, due to a
  tkwait visibility waiting forever.

  The supplied patch just skips over the visibility part
  if this is the case.

  Effects to existing code:
  Unknown, but improbable.


tkt_uuid: 1710644fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: treeql
priority: 5 Medium
foundin: None
resolution: Fixed
title: No {expand} for you!
comment:
  The file treeql85.tcl uses the
  {expand} syntax which is no longer
  approved.  Migrate to the {*} replacement.


tkt_uuid: 1581075fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: units
priority: 5 Medium
foundin: None
title: Feature submission: metric-imperial unit conversion
comment:
  I have recently created a simple set of procedures to
  convert imperial units of measurement to metric units
  and vice versa. I think it would be a useful addition
  to TCLLIB.

  Please see
  http://www.toxicantidote.net/scripts/tcl-metimp.shtml
  for details of usage and file download.


tkt_uuid: 2646568fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: jpeg
priority: 5 Medium
foundin: None
resolution: Accepted
title: jpeg::imageInfo opens files with r+
comment:
  The procedure never needs to write the file -- and really ought not to, of course.

  So, it is wrong for it to open the file with mode r+ -- doing so requires increased permissions (a program is unable to gather imageInfo on a file, that it is not allowed to overwrite), and is otherwise wrong.

  The simple patch is attached -- it will soon be part of FreeBSD's devel/tcllib port.

  Thanks.


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

  complains about overwriting an existing file.


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

  In the Windows implementation, the line:

      set filenames [glob -nocomplain * .*]

  should be:

      set filenames [glob -nocomplain *]

  ####
  fileutil version 1.6.1


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

  * struct::tree 1.2.2
  test name 'tree-11.2' re-used; prior use in
  /local/src/tcllib/modules/struct/tree1.test
  test name 'tree-13.3' re-used; prior use in
  /local/src/tcllib/modules/struct/tree1.test
  test name 'tree-14.2' re-used; prior use in
  /local/src/tcllib/modules/struct/tree1.test


tkt_uuid: 2801896fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: jpeg
priority: 5 Medium
foundin: None
resolution: Accepted
title: jpeg package: adds support for GPS Exif tags
comment:
  I needed something to interpret GPS tags in Exif headers, so I found the jpeg package and added it.  Nice job whoever wrote the _exif routine--it was very easy to extend.  I haven't done a patch before, so I'm probably doing it all wrong--I'm attaching the whole file I updated, and just put comments in the vicinity of my changes (I didn't comment the place where I added an optional argument...)--look for "mdp".


tkt_uuid: 1193023fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: smtp can have no originator/from
comment:
  Consider this code:

  -----------------------------
          # If no -originator was provided, get the
  originator from the "From"
          # header.  If there was no "From" header get it
  from the username
          # executing the script.

          set who "-originator"
          if {$originator == ""} {
              if {![info exists header($fromL)]} {
                  set originator $::tcl_platform(user)
              } else {
                  set originator [join $header($fromL) ,]

                  # Indicate that we're using the From
  header for the originator.

                  set who $fromM
              }
          }
          
  # If there's no "From" header, create a From header
  with the value
  # of -originator as the value.

          if {[lsearch -exact $lowerL $fromL] < 0} {
              lappend lowerL $fromL
              lappend mixedL $fromM
              lappend header($fromL) $originator
          }

  # ::mime::parseaddress returns a list whose elements
  are huge key-value
  # lists with info about the addresses.  In this case,
  we only want one
  # originator, so we want the length of the main list
  to be 1.

          set addrs [::mime::parseaddress $originator]
          if {[llength $addrs] > 1} {
              error "too many mailboxes in $who: $originator"
          }
          array set aprops [lindex $addrs 0]
          if {$aprops(error) != ""} {
              error "error in $who: $aprops(error)"
          }
  -----------------------------

  It is entirely possible that there is no originator,
  because tcl_platform(user) can be empty.  In that case,
  the above code will fail if no -originator is provided
  because aprops(error) will be empty.


tkt_uuid: 653266ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: ListBox Shift-extended selection fails
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: 1079712fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Works For Me
title: listbox item selection abnormally cancelled
comment:
  Version: ACTIVETCL 8.4.8.0
               BWidgets 1.7

  When using multiple selection widgets like
  listbox/combobox...in a same window,
  if you mouse-click other ones like combobox
  and select something, the selected item
  in listbox will be unselected at once,
  and if you use command:
  "set sel [listbox_path curselection]"

  $sel will be an empty string.
  This potentially denies the usage of listbox with some 
  other stuff.


tkt_uuid: 552972ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: tree
priority: 5 Medium
foundin: None
title: Feature Req: addtl introspection methods
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: 1838731fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: statistics
priority: 5 Medium
foundin: None
resolution: Fixed
title: Pretty quick inverse normal cdf
comment:
  Hello,

  I have written a pretty quick inverse normal cdf proc. I start with a decent (I think good to 10^-4 ??) approximation from Abramowitz and Stegun as a starting point and then use Newton's method to find a much better estimate.

  Use it as you like. I'm attaching the code, and providing it as public domain (no copyright).

  Incidentally, math::statistics::pnorm is much faster than math::statistics::cdf-normal, and it might be better to use it (??)

  Eric


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

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

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


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

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

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

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

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


tkt_uuid: 1547729fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib
priority: 5 Medium
foundin: None
resolution: Fixed
title: Tooltip isn't cleared correctly
comment:
  If an item has a tooltip, this tooltip is shown when
  the cursor enters this item. When I try to clear the
  tooltip with [tooltip::tooltip clear] when the cursor
  is on the item, the tooltip isn't cleared. Only after I
  move the mouse *and* click elsewhere is the tooltip
  removed.


tkt_uuid: 1213646fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 2
foundin: None
resolution: Fixed
title: French locale (fr) is blocking man pages making
comment:
  I tried to install tcllib-1.7 from the tar.gz archive.
  On my computer (under WinME) the doc generation step
  throws an error that I could localize in
  'modules/doctools/mpformats/fr.msg'.
  mcset (from msgcat package) is used with an incorrect
  number of arguments :

  mcset fr "tag" "english desc" "french desc"

  All we need to fix this bug is to remove the "english
  desc" from all similar calls. And this is still present
  in the current CVS snapshot.
  May this be useful.
   Stephane


