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


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.


# ticket

tkt_uuid: 1295737fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Installer
priority: 5 Medium
foundin: None
resolution: Out of Date
title: installer - apps on windows .tcl
comment:
  When installing the applications on Windows they should
  be given the extension .tcl, to associate them with the
  installed tclsh/wish.


tkt_uuid: 1844104fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: json
priority: 5 Medium
foundin: None
resolution: Fixed
title: json test suite failures against tcl 8.5
comment:
  Platform: sparc solaris 9
  tcl: cvs head 8.5
  tcllib: cvs head

  The following tests failed:
  ==== json-1.1 test JSON widget FAILED
  ==== Contents of test case:
  set res [json::json2dict $JSON(widget)]
  ---- Result was:
  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 1
  00 alignment center onMouseUp {sun1.opacity = (sun1.opacity / 100) * 90;}}}
  ---- Result should have been (exact matching):
  widget {window {width 500 height 500 name main_window title {Sample Widget}} tex
  t {vOffset 100 name null style bold data {Click Here} onMouseUp {sun1.opacity = 
  (sun1.opacity / 100) * 90;} alignment center hOffset 250 size 36} debug on}
  ==== json-1.1 FAILED

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

  ==== json-1.4 test JSON menu FAILED
  ==== Contents of test case:
  set res [json::json2dict $JSON(menu)]
  ---- Result was:
  menu {id file value File: unival ?: popup {menuitem {{value Open onclick OpenDoc
  ()} {value Close onclick CloseDoc()}}}}
  ---- Result should have been (exact matching):
  menu {popup {menuitem {{value Open onclick OpenDoc()} {value Close onclick Close
  Doc()}}} value File: id file unival ?:}
  ==== 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} {id OpenNew label {Open New}} null {id Zoom
  In label {Zoom In}} {id ZoomOut label {Zoom Out}} null {id Help} {id About label
   {About Viewer...}}}}
  ---- Result should have been (exact matching):
  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 V
  iewer...} id About}}}
  ==== json-1.8 FAILED


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


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

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

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

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

  Eric


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

      global runcmdrc runcmdout runcmderr

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

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

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

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

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

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

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

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

          # Wait for command to complete
          vwait $runcmdrcvar
      }

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

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

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

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

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

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

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


tkt_uuid: 1409177fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: more secure alternative to [tempfile]
comment:
  The [tempfile] command creates
  a new file and returns its name.

  The caller is then free to
  [open] that filename.

  The separation of file creation
  and the [open] leaves an interval
  when an attacker might manipulate
  that file.  So care must be taken
  when using this facility.

  A more secure strategy is to have
  one command do all parts: generate
  the file name, create and open
  the file, and pass back the channel
  of the open file in addition to
  the file name.

  This is analogous to using 
  mkstmp() instead of tmpnam()
  in a C program.

  It would be good to either modify
  [tempfile] to improve security, or
  if compatibility is a concern, offer
  an alternative command for the more
  secure option.

  Note there are some security issues
  that cannot be addressed fully at
  Tcl script level with Tcl's current
  built-in commands, and will require
  a C-coded solution.  See TIP 210.


tkt_uuid: 2418580fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
resolution: Fixed
title: log debug level is suppressed by default
comment:
  If you do a "package require log" then "log::lvIsSuppressed debug" the command returns a 1.  All the other levels return 0.  I placed a puts statement in the eval portion of log.tcl after the suppressed array is created and debug is set to 0 but once the package finished initializing it is a one. 
  I was able to duplicate this in tcl version 8.3 on HP-UX and with activestates windows install of 8.5.2.

  I found this while trying to turn on the verbose switch in the ftp package.  I ended up having to execute "::log::lvSuppress debug 0" before executing any ftp command to get the ftp package to print anything out.

  Thanks,

  John Mercogliano


tkt_uuid: 1011102fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: counter
priority: 9 Immediate
foundin: None
resolution: Not Applicable Here
title: counter - dependent on ncgi & html, not in code, nor docs
comment:
  The HTML generation facilities of the counter package
  depend on the html and ncgi packages, but do not
  require them or check if they are present.

  Either the html generation code should be moved out of
  the counter package or be protected with appropriate
  checks/lazy pkg requires if html generation is used.


tkt_uuid: 2897419fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: statistics
priority: 8
foundin: None
resolution: Fixed
title: beta-distribution-1.0 test failure (sol 2.8, sparc, 8.4.19)
comment:
  Enclosed a test failure on a solaris 2.8 / sparc machine. Tcl 8.4.19/HEAD.

  ==== beta-distribution-1.0 Test pdf-beta FAILED
  ==== Contents of test case:

      set x [list  [::math::statistics::pdf-beta 1.3 2.4 0.2]  [::math::statistics::pdf-beta 1 1 0.5]  [::math::statistics::pdf-beta 3.7 0.9 0.0]  [::math::statistics::pdf-beta 1.8 4.2 1.0]  [::math::statistics::pdf-beta 320 400 0.4]  [::math::statistics::pdf-beta 500   1 0.2]  [::math::statistics::pdf-beta 1000 1000 0.50]]

  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: floating-point value too small to represent
      while executing
  "expr {exp($term1 + $term2)}"
      (procedure "::math::statistics::pdf-beta" line 24)
      invoked from within
  "::math::statistics::pdf-beta 500   1 0.2"
      invoked from within
  "list  [::math::statistics::pdf-beta 1.3 2.4 0.2]  [::math::statistics::pdf-beta 1 1 0.5]  [::math::statistics::pdf-beta 3.7 0.9 0.0]  [::math::statist..."
      invoked from within
  "set x [list  [::math::statistics::pdf-beta 1.3 2.4 0.2]  [::math::statistics::pdf-beta 1 1 0.5]  [::math::statistics::pdf-beta 3.7 0.9 0.0]  [::math::..."
      ("uplevel" body line 2)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: ARITH UNDERFLOW {floating-point value too small to represent}
  ==== beta-distribution-1.0 FAILED

  Any ideas where I should look in code or test for the problem ?


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

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

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


tkt_uuid: 3138526fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Wrong email server name gives unrelated error message
comment:
  If you pass the wrong server name to the smtp::sendmessage procedure, then the error message is:

  premature end-of-file from server

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

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


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

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

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

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

  Bugs:
  None that I knew of.


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

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

  (this repeats several times).

  Unneded horizontal and vertical scrollbars are displayed too.

  The problem goes away with this patch:

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

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


tkt_uuid: 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: 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: 1102131fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: log
priority: 8
foundin: None
resolution: Fixed
title: logger: does not print full service name
comment:
  Hi,

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

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


  package require logger

  namespace eval ::foo {

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

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

  }

  namespace eval ::foo::bar {

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

  }

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

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

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

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

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

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

  Hemang.


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


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

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

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

  Expected result:
  node1 node0 node2

  Actual result:
  node0 node1 node2


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


tkt_uuid: 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: 2840147fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: tar
priority: 5 Medium
foundin: None
resolution: Accepted
title: Add prefix to name of file added to tarball
comment:
  The git-archive utility has an option --prefix described as:

    --prefix=<prefix>/
        Prepend <prefix>/ to each filename in the archive.

  I found this useful in the case that the the parent directory of what I'm wrapping up as a tarball isn't named the way I'd like root directory within the tarball to be named. However, I also needed to add a few files to the tarball, and my command-line tar didn't have a corresponding option. Therefore I turned to adding a -prefix option to the tcllib [tar::add] command.

  The main change needed to implement this was to split [tar::createHeader] into two commands [tar::statFile] and [tar::formatHeader], as [tar::createHeader] hardwired the in-archive name of a file to be the same as the name in the normal file system. I think this is a good change, as it also opens up for adding items to a tarball that don't first have to exist within the normal filesystem (a kind of [tar::put], if you will).

  Another change required was that [tar::writefile] takes another argument: the name to use in the archive. [tar::add] and [tar::create] have been modified accordingly.

  While testing this, I also discovered a bug in the current [tar::add]: one cannot in general assume that the end of an archive occurs 1024 bytes before the end of the file. The catch is that tarballs are written with a specific "blocksize" (often 20 records, i.e., 10Kb), and are supposed to consist of an integral number of complete blocks. Therefore there may be extra padding after the 1024 end-of-archive nulls, and it is then impossible to tell if an all-null record at the end of a tarball is nulls at the end of a file, end-of-archive nulls, or padding until the end of a block. The only safe way to find the end is to read the tarball from the beginning.

  I added a third option -quick to [tar::add] which selects the old seek-from-end method of finding where to put the header for the first new file, but made the default be to read the tarball from start.

  Being a tcllib developer, I can probably check this into CVS myself, but I think you should have a chance to look at it first.


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

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


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

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

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

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

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

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


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


tkt_uuid: 647974ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 7 High
foundin: None
resolution: Fixed
title: find has problems recursing a metakit fs
comment:
  The command 'fileutil::find' has problems when recursing 
  a directory structure coming from a metakit filesystem 
  (fr example starkit). It reports the first file per directory 
  (and the directory), but nothing else.

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

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


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

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

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


tkt_uuid: 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: 3141584fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: units
priority: 5 Medium
foundin: None
resolution: Fixed
title: units::convert bug (when value is zero)
comment:
  tcllib version 1.1.2

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

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


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

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

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


tkt_uuid: 530907ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: exif
priority: 5 Medium
foundin: None
resolution: Fixed
title: exif 1.0 bug patch
comment:
  I found some bugs into exif 1.0.
  Maybe these are original bugs.
  I've improved on FlashPixVersion, ShutterSpeedValue,
  SubjectDistance, Flash and FlashMode.
  Here is a patch I've made.


tkt_uuid: 1224203fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Rejected
title: Tree widget substitutes wrong path for %W in command binding
comment:
  If you put %W in the command bound to an action on a
  Tree widget you expect to get the path of the tree
  widget in its place when the command is invoked. But
  instead you get a canvas called c which is a child of
  the tree widget, as in this simple example...

  [jaspert@nacho Simile]$ wish
  % package require BWidget
  1.7
  % pack [Tree .t]
  % .t insert end root foo -text FOO
  foo
  % proc putall {args} {puts $args}
  % .t bindText <Button-1> "putall %W"
  % # now click on the text FOO...
  % .t.c foo
  .t.c foo
  .t.c foo


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: 3036124fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: math :: linearalgebra
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: determineSVD gives wrong dimensions in U for m<n
comment:
  Given an m-by-n matrix A, lassign "[::math::linearalgebra::determineSVD $A] U S V" will return an m-by-n matrix U.  While this is often what you want for overdetermined systems (m>n), this is not what you want for underdetermined systems (m<n) and is not consistent with any definition of the SVD I know of.  If (m<n), the S and V matrices should be truncated if truncation is desired.

  Incidentally, sometimes I don't want the U matrix to be truncated when m>n, for example when I am as interested in the residuals than the actual fit.


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

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

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

  Also, the stanza,

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

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


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

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

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

  Thank you,
  Harald


tkt_uuid: 777568ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: None
title: tklib ipentry widget pkgIndex.tcl bug
comment:
  the pkgEntry.tcl file for ipentry says:
  i# Tcl package index file, version 1.1

  Installing this causes all tcl package require calls to
  fail due to the way package require reads all
  pkgIndex.tcl files and insists that none fail...


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

  Anyone aware of tests for this parser ?


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

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

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

  /Ashok


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

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


tkt_uuid: 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: 484117ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: html
priority: 5 Medium
foundin: None
resolution: Accepted
title: new html function
comment:
  I attached a new function for the html module. This
  function creates a bulleted list of links given a list
  of label, URL pairs. 

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


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


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

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


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

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

  Consider this small example:

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

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

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


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

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

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

    tag_bla 0
    tag1    0
    tag2    0

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

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

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

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


  Bastien


tkt_uuid: 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: 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: 1113348fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: logger
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: No way for logproc to discover servicename
comment:
  Currently there is no way for a logproc to discover its
  servicename.

  Example:
  set log [logger::init foo]
  proc customized {txt} {
     puts "How shall i find my servicename with this
  signature?: $txt"
  }
  ${log}::logproc error customized

  There is a workaround using the older logproc syntax
  though.

  set log [logger::init bar]
  proc customized {service txt} {
     puts "Logging service $service : $txt"
  }
  ${log}::logproc error txt {
     variable service
     ::customized $service $txt
  }

  The signature of the custom logproc should be enhanced
  with the loglevel, the service and the text and
  possible an args for future extensions.

  Michael


tkt_uuid: 1733098fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: tklib: khim
priority: 5 Medium
foundin: None
resolution: Accepted
title: Misc fixes + RU, PL and UK msg catalogs
comment:
  Short summary of changes:

  1. Added title to KHIM help window. It's translated where appropriated.

  2. Colors of character picker made more consistent.

  3. Added check for existence of character map window -- closes the bug occuring on, say, triple strikes of composition key.

  4. Added Russian, Polish and Ukrainian message catalogs.

  Note: unified diff is UTF-8.


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


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

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


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

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

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

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

  Here's a patch.


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

  Error message:

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

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

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

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


  Best regards,
  Christoph


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

  Here's a patch to fix that.


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

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


tkt_uuid: 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: 1735135fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: math
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: tcllib math::linearalgebra additions (matrix stuff)
comment:
  you can find at the bottom of this page http://wiki.tcl.tk/778 additions made by me for linearalgebra package.

  I hope you can include it into the tree.

   (actually only matrix rank is missing, but it would require combinatory functions; matrix determinant is computed with cofactor expansion, that -yes- is cpu expensive. I'll do a better version using Gauss-Jordan elimination in the future)


tkt_uuid: 2082457fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: cursor
priority: 5 Medium
foundin: None
resolution: Fixed
title: Cursor is not restored with mega-widgets
comment:
  Hi,

  Suppose that you want to manage the cursor of the megawidget ctext. The cursor is not correctly
  restored, because of the delegation of the
  configure on the sub-widgets.
  The fix consists in updating the tree of
  widgets, begining by the bottom,
  instead of begining by the top, as in the
  current implementation.
  A modified implementation is suggested,
  so that the previous versions are maintained.

  In the given test case, you first propagate the watch cursor over the
  widget tree, then restore back the original cursor.

      set mytext [ctext .mytext]
      set result {}
      lappend result [.mytext cget -cursor]
      ::cursor::propagate . watch
      lappend result [.mytext cget -cursor]
      ::cursor::restore .
      lappend result [.mytext cget -cursor]
      destroy $mytext
      set result $result

  The expected result would be "xterm watch xterm".
  The computed result is "xterm watch watch",
  that is, the cursor is not correctly restored
  on the ctext widget. The reason is the
  following.

  The widget .mytext cursor is backed up
  into the CURSOR variable, and the configure
  method is used to update the cursor :

  set CURSOR(.mytext) xterm
  .mytext config -cursor watch

  At that point the instance command in the
  ctext mega-widget delegates to the underlying
  text widget :

  .mytext._t configure -cursor watch

  The cursor package then propagates the configure
  down to the children widgets, begining
  by the linemap :

  set CURSOR(.mytext.l) xterm
  .mytext.l config -cursor watch

  When it comes to the underlying text, the
  backup variable is set to the wrong cursor value,
  because it has allready been updated to the
  "watch" state :

  set CURSOR(.mytext.t) watch
  .mytext.t config -cursor watch
  .mytext._t configure -cursor watch

  When the restore command is called, the
  widget .mytext is correctly updated :

  ::cursor::restore .mytext
  .mytext config -cursor xterm

  By delegation, it triggers the configure
  method on the .mytext._t sub-widget :

  .mytext._t configure -cursor xterm

  Instead, when it comes to the sub-widget directly,
  the watch cursor is configured :

  ::cursor::restore .mytext.t
  .mytext.t config -cursor watch
  .mytext._t configure -cursor watch

  The fix simply consists in restoring children first.
  This is done by implementing unpositionnal
  arguments and maintaining the previous interface
  with a special processing of options.

  See in the attachment for a test-case and
  a suggested modified version of cursor.tcl.

  Regards,

  Michaël


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

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

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


tkt_uuid: 2059415fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: None
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ctext error when widget destroyed
comment:
  Hi,

  The following error message appears :

  invalid command name ".t._t"
  invalid command name ".t._t"
      while executing
  "$twin search -count length -regexp -- {([^\s\(\{\[\}\]\)\.\t\n\r;\"'\|,]+)} $si $end"
      (procedure "ctext::highlight" line 25)
      invoked from within
  "ctext::highlight .t 1.0 1.19"
      ("after" script)

  This error is reported in background.

  The reason for that bug is that "after" scripts are not cleaned after the destruction of the ctext widget.
  Looking at the ctext::highlight command, it is triggered by the following after sequence :

  after idle [list ctext::highlight $self $lineStart $lineEnd]

  in ctext::instanceCmd command.
  Other "after" script are associated with the command "ctext::comments" as well.

  A solution is to keep track of all after script generated, and to clean them when the widget is destroyed.
  For example, one can add a variable to keep track of the last after script associated with the highlight command :

  namespace eval ctext {
      variable lastafterscript ""
  }

  One can store the after ID with :

  set ::ctext::lastafterscript [after idle [list ctext::highlight $self $lineStart $lineEnd]]

  The Destroy method may contain :

  proc ctext::event:Destroy {win dWin} {
    after cancel $ctext::lastafterscript

  That solves the problem for one ctext only, and only for the last "after" highlight command.
  The real fix needs to store all after scripts, for the current ctext widget only.

  The bug can be reproduced with the unit test script in attachment.

  Regards,

  Michaël


tkt_uuid: 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: 1430694fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: smtp
priority: 7 High
foundin: None
resolution: Not Applicable Here
title: smtp or socket issue causes error 400 in Windows XP Pro
comment:
  I thought I had submitted this back in 2005 but I do 
  not see it in the bug database so I am sumbitting 
  again.

  I am using tcllib mime and smtp to send email from a 
  tcl tool. Unfortunately, it seems that a socket error 
  is being thrown if the body size gets beyond around 
  10KB. I'm unsure if it's a socket issue or a tcllib 
  issue. It seems to be consistent as I have tried this 
  with 3 different body texts. I already sumbitted this 
  to ActiveState and they referred me over here. Please 
  see the submission on ActiveStates bug system. The 
  bug ID is 42067. I have upload several files there. I 
  would really appreciate it if you guys could take a 
  look at this.

  Thanks,
  Robert Joy


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

  These tests fails on a 64-bit system:

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

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


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

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


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

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

  (Bug work-around shown.)

  ----

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

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

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

  ----

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

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

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

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

  ---- Trace of it dying

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

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

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

  ----

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

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

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

     set popRet [string trim [gets $chan]]

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


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

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


tkt_uuid: 534334ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 8
foundin: None
resolution: Fixed
title: add tk-specific man page macro: tkoption
comment:
  standard tk widget man pages have a section 
  named "Widget Specific Options" that has a format that 
  is tedious to code with the existing mpexpand formats. 
  Options are typically described like this:

  -----------------------
  Command-Line Name: -value
  Database Name: value
  Database Class: Value


  Specifies the value for the foo widget.
  -----------------------

  To mark this up with the existing man page markup one 
  needs to create a definitions list for the list of 
  option names, which is tedious. I suppose there are 
  other ways, too. 

  I propose a special keyword just for this construct. 
  I've written one for the html renderer as a prototype. 
  It is used like this:

  ------------------------
  [tkoption -value value Value "Specifies the value for 
  the foo widget."]
  ------------------------

  It takes four arguments: the command line name, the 
  database name, the database class, and a description. 
  The description could be left off of the API, since 
  normal paragraphs would work, too. In my prototype 
  implementation, if the db name or class is null, those 
  parts don't appear in the output. This, for 
  megawidgets that may not have option database support.

  I've attached my hacked version of fmt.html with the 
  proposed macro. To make it work, one also needs to add 
  the macro to a foreach command in mpexpand where it 
  makes interp aliases for each of the macros. I don't 
  know if this is the best implementation, but it's a 
  starting point...


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

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


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

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

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


  Michael


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

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

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

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

  See the attached patch against tcllib head.

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


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

  change lines 392-396

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

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

  (effectively deleting 392-394, 396)

  in listbox.tcl (see attached file)


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

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

  The text should appear in its entirety on all tabs.


tkt_uuid: 1800411fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: Missing CSS class names
comment:
  The following doctools markup:

    [cmd ns_logctl] [arg hold]


  Produces the following HTML:

    <b class='cmd'>ns_logctl</b> <i class='arg'>hold</i>


  Which is good. However, many of the other doctools macros don't include CSS class names. For example, fun, type, const and method all produce <strong>, no class name.

  Should the rule for basic, non-structural doctools macros be that the name of the macro becomes the CSS class?

  [fun function]: <strong class="fun">function</strong>


  (btw. cmd produces <b> whereas fun produces <strong>. I'm not sure there's a lot of extra symantic info in <strong>, but for consistency, maybe they should be the same?)


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

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

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

  Suggestions?

  John


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

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


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


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


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

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


  Sample:

  % package req csv

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


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

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

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


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

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

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

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

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

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


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

  package require ftp

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

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

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

  ftp::Cd $h_ftp edidata

  # Case 3
  ftp::NList $h_ftp  Catalog

  # Case 4
  ftp::NList $h_ftp  Catalog/


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

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

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

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

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

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


tkt_uuid: 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: 575376ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: profiler
priority: 8
foundin: None
resolution: Accepted
title: use execution traces for tcl8.4+
comment:
  Module: profiler

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

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

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

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

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

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

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

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


tkt_uuid: 1800413fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: dtplite errors/warnings reported twice
comment:
  Using CVS HEAD, running dtplite on some man pages produces:

  man3/Ns_Sls.man
  DocTools Warning (depr_ltype): In macro at line 69, column 0:
  DocTools Warning (depr_ltype): Deprecated list type "arg".
  DocTools Warning (depr_ltype): Please use "arguments" instead.
  DocTools Warning (depr_ltype): In macro at line 69, column 0:
  DocTools Warning (depr_ltype): Deprecated list type "arg".
  DocTools Warning (depr_ltype): Please use "arguments" instead.


  The same warning is printed twice. Same for genuine errors, not just depreciation warnings.

  The messages are quite verbose and can result in thousands of lines of output which is hard to read.


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


tkt_uuid: 539952ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 3 Low
foundin: None
resolution: Fixed
title: odd mime/smtp/Trf interaction
comment:
  in using Tcl 8.3.2nb2 and Trf2.1 with the current 
  tcllib, two odd things happen.

  first, trf sends a create/read and a delete/read on 
  the outgoing smtp channel, which smtp.tcl isn't 
  expecting.

  second, one of the my applications generates a CTE of 
  8bit, which the mime serializer complains about.

  patches attached.

  /mtr


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

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

  make install

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

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


tkt_uuid: 1196567fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Accepted
title: Automatic clean-up of the NickList
comment:
  This adds automatic removal of old nicks and 
  associated data (ie Color and Visibility) from the 
  resource file.
  Old nicks are removed after 30 days of non-usage, 
  except for your own. This is done through the 
  addition of a time stamp to the nick in the NickList.

  The 30 days is hard-coded but it should be easy 
  enough to make it into a configurable menu option.

  Old resource files are automatically updated to the 
  new format.


tkt_uuid: 480227ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Fixed
title: comm.n manpage needs update
comment:
  (per request)

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

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

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


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


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


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

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

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


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

  1) What does a manual page look like?

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


tkt_uuid: 2499603fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: fileutil::jail returns wrong results in repeated execution
comment:
  See console output below:

  (woof) 48 % package require fileutil
  1.13.5
  (woof) 49 % ::fileutil::jail /temp /a
  /temp/a
  (woof) 50 % ::fileutil::jail /temp /a
  /a
  (woof) 51 % ::fileutil::jail /temp /b
  /temp/b
  (woof) 52 % ::fileutil::jail /temp /b
  /b

  I see this as pretty serious given the intent of jail is to provide some level of security.

  Platform is Tcl 8.6b1 on XP

  /Ashok


tkt_uuid: 2063144fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Snit method name collision
comment:
  The following code creates two distinct typemethods
  with but a single body between them:

  snit::type foobar {
      typemethod {a_b c} {} { return 1 }
      typemethod {a b_c} {} { return 2 }
  }

  The command "foobar a_b c" will return 2, rather than
  1; the second typemethod overwrites the first 
  typemethod's proc.  The problem is that the name
  mangling for hierarchical typemethods assumes that
  it can use "_" as a token separator.

  Methods have the same problem, naturally.

  At a minimum, Snit should detect this case and
  throw an error; ideally, the two typemethods should
  have distinct bodies.


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

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

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


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

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

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

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

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


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

  close $ftp(SourceCI)

  Can you please change this to:

  catch {close $ftp(SourceCI)}

  to prevent crashes? Thanks!


tkt_uuid: 1412021fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: sasl
priority: 5 Medium
foundin: None
resolution: Accepted
title: Ignoring -service option in DIGEST-MD5
comment:
  Option -service is ignored in DIGEST-MD5 SASL auth
  method. digest-uri is always set to smtp/$realm.

  Possible fix is to replace smtp for $ctx(service).


tkt_uuid: 415001ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: xpm2image/bwidget
comment:
  Hi,
  it seems that not all graphic programs produce the same
  XPM output.

  Here's the difference:

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

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

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

  Greets

  Simon


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


tkt_uuid: 528287ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Invalid
title: Explodes for 'From: <>'
comment:
  I have some code to replicate a pop3 box by downloading
  it
  and resending it to N other popboxen via SMTP.

  Care is taken to pass the message thru "as is",
  from headers to MIME body.

  Running it against a real-world pop that had 14Mb of
  email,
  it blew up on the RFC valid "bounce" syntax of 'From:
  <>'.

  ----

  -header {Date {Wed, 20 Feb 2002 20:34:04 -0400 (EDT)}} 
  \
  -header {From <>}  \
  -header {Subject {Home Based Employment - No Selling}} 
  \
  -header {Bcc {}}  \
  -header {Message-id <805913@635096>}  \
   '.
  error in From: expecting mailbox in local-part (found
  >)
      while executing
  "error "error in $who: $aprops(error)""
      (procedure "smtp::sendmessage" line 144)
      invoked from within
  "smtp::sendmessage $part -servers vpop1.superb.net  
  -recipients
  [redacted]@orwellian.org,[redacted]@orwellian.org
  -header {Return-path <>}  \
  -header {..."
      ("eval" body line 1)
      invoked from within
  "eval $Build_SMTP"
      (procedure "Main" line 57)
      invoked from within
  "Main
  "
      (file "./Multiplier.tcl" line 130)
  Exit 1


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

  Attached is the (simple) patch for tcllib 1.4.


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

  * mime 1.4.1
  test name 'mime-7.1' re-used; prior use in
  /local/src/tcllib/modules/mime/mime.test
  env array elements created:     TZ


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

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

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

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


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

  Actual bug appears to be in queue_oo.tcl ?


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


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

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


tkt_uuid: 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: 747674ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ftp_lib.tcl
comment:
  hello
  just a question about this ftp_lib.tcl included in the 
  tcllib1.4
  in fact when i use this command ftp::Quote

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

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


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

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

  and have it generate 

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


tkt_uuid: 567326ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 8
foundin: None
resolution: Fixed
title: install.tcl script fails
comment:
  Platform: SPARC Solaris 2.6
  Tcl / Tk 8.4a5
  tcllib-20020610.tar.gz from ftp.activestate.com

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

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


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

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

  An example:

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

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

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

  Best regards,

  Martin Lemburg


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

  Should return c:/tempx/foo/bar

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


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

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

  The last command fails, returning an error.

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

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

  Greetings,

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


tkt_uuid: 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: 1708110fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: png
priority: 7 High
foundin: None
resolution: Fixed
title: [png::removeComments] destroy a png file.
comment:
  Hi.
  I noticed the bug that png::removeComments destroy a file.
  Version of png is CVS HEAD. It seems to me that the 
  cause is that output encoding isn't binary. 

  Please see attached patch.


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


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


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


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


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

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

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

  Other version info:

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


tkt_uuid: 974034ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Rejected
title: ArrowButton attributes insensitive to [option add]
comment:
  The command [option add *ArrowButton.$property 20 100]
  has no effect for at least the properties "width" and
  "height". (While it does have effect for the options
  "background" and "foreground").

  I have been using BWidget 1.7 in combination with
  Tcl/Tk 8.4.6


  Sincerely,

  Erik Leunissen


tkt_uuid: 1633074fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Accepted
title: tkchat extra features
comment:
  Hi,

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

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

  * /wikip <text>

  Search wikipedia with specified text

  * /wikid <text>

  Search Wiktionary with specified text

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

  * /googlefight

  Web interface changed

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

  * Highlight and raise alert for specified subjects

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

  Kind regards,

  Jos.


tkt_uuid: 483838ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 6
foundin: None
resolution: Fixed
title: minor changes to several BWidget widgets
comment:
  I've attached the result of a 'cvs diff' between my
  local BWidget
  sources and the current CVS head (20-nov-2001). This
  diff
  contains the following changes:

  1) tree.tcl

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

  2) dialog.tcl

  Added '-transient' and '-place' flag

  3) listbox.tcl

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

  4) widget.tcl

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

  5) progressbar.tcl

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

  6) panedw.tcl

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

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


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

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

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

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


tkt_uuid: 1597840fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: tablelist
priority: 5 Medium
foundin: None
resolution: None
title: Infinite loop when using ScrolledFrame
comment:
  A tablelist in an iWidgets::Scrolledframe fails - looks like an infinite loop.

  I'am using ActiveState distribution 8.4.13 with tklib 0.4 on Win XP.

  Sample code appended. Call 'create' two times - dont know why it hangs on the second time - in my bigger application it hangs up immediately.

  thx


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

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


tkt_uuid: 495976ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 8
foundin: None
resolution: Fixed
title: install copies from base dir not modules
comment:
  install.sh tries to copy from the base directory, not
  the modules subdirectory, so cp does not find the
  module directories:

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

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

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

  to:

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


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

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

  Here's the problem.

  The SMTP server responded:

  250-AUTH LOGIN CRAM-MD5 PLAIN

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

  535 authorization failed.(#5.7.0)

  Once that failed, no further AUTHs would work.

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

  502 unimplemented (#5.5.1)

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

  I had the user edit this line:

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

  to be:

  foreach mech [list LOGIN PLAIN] {

  And he reported it was working.

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

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


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

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

  hist2x 435 microseconds per iteration
  Pausing during timehist tests

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

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

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

  timehist 291 microseconds per iteration


tkt_uuid: 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: 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: 992481ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
resolution: Duplicate
title: typo in logger::services proc
comment:
  The logger::services always returns "services", see below:

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

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

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


tkt_uuid: 3609183fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: oo::util
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ooutil::singleton not working when it is used as mixin class
comment:
  Example of how to use ooutil::singleton at http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/ooutil/ooutil.html is not working.
  Below is the extract of the example from the mentioned website:

  oo::class create example {
     self mixin singleton
     method foo {} {self}
  }

  puts [[example new] foo]
  puts [[example new] foo]


  I tried it and the return does not shown as the same object reference.


tkt_uuid: 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: 3613644fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tepam
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: incorrect namespace formatting results in no vars defined
comment:
  The procedure "ProcedureArgumentEvaluation" incorrectly assumes that if a procedure name returned by [info level -1] doesn't start with "::" then the procedure isn't qualified with a namespace designation at all, neglecting the possibility of a relative namespace qualifier.  This leads to failure to match the called procedure with its definition stored in array ProcDef, and no arguments corresponding to command line flags are defined.

  The problem is illustrated in the attached file.  A tepam procedure is defined, then called first with an absolute namespace qualifier, then again with a relative qualifier.  The first call succeeds, the second fails.

  The "if" statement starting at line 642 appears to be the cause of the problem.  Replacing the entire "if" statement with the line "set ProcName [uplevel 2 "info command $ProcName"]" appears to fix the problem (only lightly tested).

  tepam version 0.4.0


tkt_uuid: 2783215fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Invalid
title: search result is incorrect with multibyte characters
comment:
  This problem is best explained with the screenshot I attached.

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


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

  Something along the lines of

  ncgi::headers text/html

  is what I'm thinking of.


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

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

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

  This no longer is the case.

  from $HOME/.tkchatrc, I see:

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

  plus more.

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


tkt_uuid: 1798427fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: Doctools HTML output
comment:
  It is very difficult to make the HTML output of the dtplite command presentable.


  - SECTION TITLES ARE IN ALL CAPS. It's traditional for man pages with limited formatting capability, but not necessary for a web page.

  - The Table of Contents are indented with 4 non-breaking spaces and hard returns...

  - The Synopsis is formatted using nested table. It's not necessary.

  - Paragraphs and definition lists are unclosed.

  - Examples are wrapped in a table so that a thick line will be drawn down the left edge. It's not necessary.

  - dtplite is brittle in it's expectations for where things should live. For example, to use the automatic TOC and index building function I had to create a symlink forest of 'modules'. The directory names of the modules are used as the headings in the TOC.  It's not clear how to add C library docs to this.


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

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

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

  The following is a fix :

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

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

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


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

  The output is:
  32bit Linux:
  0b9422c2ca451b24fea81114412fb2c61e2ced68889466119b72d36c4ec3c337

  64bit Linux:
  1ec22d56dbbc91e849b00643bc4f10eb764441c93bde5c6090fe81db55cf6932

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

  Therefore, 32bit sha256 output seems to be incorrect.

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

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


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

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

  is converted to this dict snippet 

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

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

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

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

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


tkt_uuid: 1056892fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: statistics
priority: 5 Medium
foundin: None
resolution: None
title: math::statistics takes > 1 sec to load
comment:
  math::statistics sources pdf_stat.tcl which calls 
  Initialise-cdf-normal which "Initialise the private data for 
  the normal cdf". Unfortunately, on my 700mhz machine 
  this takes over 1 sec to accomplish. 

  I think a lot more people are interested in doing 
  standard deviations and means than in pdf-exponential, 
  and so I think that that expensive initialization should be 
  deferred until needed.

  Keith Vetter


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


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

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

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


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

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

  Solution is to add

  fconfigure $fh -translation binary 

  into jpeg::removeComments routine just after 

  set fh [open $file w]


tkt_uuid: 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: 1615159fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: diagrams
priority: 5 Medium
foundin: None
resolution: Out of Date
title: tklib::Diagrams examples need fix
comment:
  The code in draw_anchor.tcl , draw_fraction.tcl , and draw_heater.tcl need changed to use
  package require Diagrams
  instead of 
  source draw_diagram.tcl
  I think they all need a 
  package require Tk
  as well.
  The other examples may need modified to also use the package - I think they might include the package inline.


tkt_uuid: 1815519fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: fileutil::find does not return symlinks
comment:
  tcllib 1.9

  Running find over a directory containing symlinks does not return any reference to or mention of the symlinked names.

  I'm not sure whether that's intentional or not, but in looking at the source I see nothing which seems designed to cause this behaviour, so think it's a bug.


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

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

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

  namespace eval foo {
  ...
  }

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

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

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

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


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

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

  Testing for error messages should be as lax as possible.


tkt_uuid: 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: 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: 3433470fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Development Tools
priority: 9 Immediate
foundin: None
resolution: Fixed
title: Expired certificates
comment:
  The certificates 'receiver.crt' and 'transmitter.crt' have expired, causing test failures in modules 'comm' and 'pop3' if 'tcltls' is installed at the time the test suite is run.
  Also, the README in the devtools directory mentions that only the 'pop3' tests use these files, which is not true, as noted above.
  Please regen these certs with much later expiry dates.


tkt_uuid: 470211ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: uri
priority: 5 Medium
foundin: None
resolution: Accepted
title: urn: scheme handling for uri module
comment:
  This is a package to extend the uri module of tcllib to
  handle the urn: scheme.

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


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

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

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

  Thanks in advance,
  -Bhushit

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

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

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

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

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

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

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

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

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


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

  For the MainFrame widget the following occurs.

  .mf showstatusbar none
  .mf showstatusbar progression

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

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

  Greg Pierce


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

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

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

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


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

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

  in function ::ftp::ElapsedTime 

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


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


tkt_uuid: 720318ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Out of Date
title: modules can't be requested in safeBase
comment:
  Code to demonstrate the problem:

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

  Problem:
  related to [Bug 599306].

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

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

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


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


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

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


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

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

  And a solution, by Kevin:

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

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

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

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


tkt_uuid: 2814050fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: fix [notebook itemconfigure -helptext]
comment:
  This is a small fix for notebooks. When calling [itemconfigure -helptext] on a notebook tab, the helptext is currently not updated.
  The _set_help proc already contains code for checking whether the helptext has changed, but it is not called from itemconfigure.


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

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

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


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

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


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

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


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

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

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

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


tkt_uuid: 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: 782367ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ftp.tcl: file list empty after file get
comment:
  when I list a dir from root, say
  list /pub/linux/redhat

  I get a listing as usual. If I then do:

  get /pub/linux/redhat/readme.txt

  I get readme.txt , ok.

  If I now do :

  list /pub/linux/mandrake

  I get an empty dirlisting. If I do :

  list /pub/linux/mandrake

  I get the dirlisting with twice the contents .....
  pub is a symbolic link in root.

  If I do list, get, cd, list I get a normal listing.
  This problem occurs with different ftp daemons.


tkt_uuid: 1969847fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: yaml
priority: 5 Medium
foundin: None
resolution: Fixed
title: Testsuite failures
comment:
  Attached a quick run of the testsuite.

  It seems that a 'switch' command in yaml is not protected against the occurrence of '-' in its input, leading to misinterpretation as option.

  I.e. the code contains

      switch $ch

  and it should better be

     switch -- $ch


tkt_uuid: 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: 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: 891254ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: utils.tcl, place proc: does not place left or top
comment:
  BWidget V1.7 has very minor changes in the place proc 
  of utils.tcl (compared to V1.6).
  child windows will not display on top or to the left side of 
  the parent window. Probably coordinates run out of a 
  valid range.

  When I substitute the old place procedure within the 
  new utils.tcl, all works well.

  NOTE: the Activestate 8.4.5 distribution contails 
  BWidget V1.7, but the subdirectory under "lib" is still 
  named "bwidget1.6".


tkt_uuid: 2881739fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: interpolate
priority: 5 Medium
foundin: None
resolution: Fixed
title: Cubic spline interpolation is wrong
comment:
  Hi,

  I have discovered that the cubic splines interpolation in math::interpolate returns wrong results.

  Check this little example of a cuadratic function (from the tests):

      set xcoord {1 2 3 4 5}
      set ycoord {1 4 9 16 25}
      set coeffs [::math::interpolate::prepare-cubic-splines $xcoord $ycoord]

  I see a strange behaviour when evaluating the function close to one of the interpolated points:
  ::math::interpolate::interp-cubic-splines $coeffs 2.0 -> Result: 4.0
  ::math::interpolate::interp-cubic-splines $coeffs 1.96 -> Result:3.847744 (Seems ok)
  ::math::interpolate::interp-cubic-splines $coeffs 2.04 -> Result:4.19061942857 (Seems slightly inaccurate...)

  ::math::interpolate::interp-cubic-splines $coeffs 2.96 -> Result:9.58423771429 (Fully wrong! It is even much higher than 3^2)
  ::math::interpolate::interp-cubic-splines $coeffs 3.0  -> Result: 9.0
  ::math::interpolate::interp-cubic-splines $coeffs 3.04 -> Result:9.26423771429

  From this results it also looks like there is a discontinuity at x=3.0, which can not be.
  ::math::interpolate::interp-cubic-splines $coeffs 2.9999 -> Result: 9.85645715143
  ::math::interpolate::interp-cubic-splines $coeffs 3.0001 -> Result: 9.00065715143

  I suggest that somebody should check the algorithm implementation.

  As a comparison and additional help, here are the results I get when I use a cubic spline interpolation algorithm coded in Fortran (also assuming zero second derivative at the extremes of the interpolated interval):
       1.9600000000000    3.8477440000000
       2.0000000000000    4.0000000000000
       2.0400000000000    4.1563337142857
  ...
       3.9600000000000    15.676333714286
       4.0000000000000    16.000000000000
       4.0400000000000    16.327744000000

  Best regards,
  JM


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

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


tkt_uuid: 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: 1861565fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Fixed
title: comm: error msg not clear when server port is in use
comment:
  Hi,

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

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

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

  Hemang.


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

  approx. line 42 - change appropiate to appropriate.

  approx. line 50 - copleted should be completed.


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

  - Matthias

  mlange_lists(at)yahoo.com


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


tkt_uuid: 3064747fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pt (parsetools)
priority: 5 Medium
foundin: None
resolution: Invalid
title: Failure to match { and } in parser tools
comment:
  I'm trying to match everything, the entire Unicode charset (including special chars like {} () and such) up to a specific sequence of chars.
  With the supplied PEG grammar, I am able to parse unicode strings ok, but grouping chars is still a problem, it seems.

  I am using this test snipplet:


  ------------- BEGIN ---------------
  proc putss {p in } {
  global currparsing
  set currparsing $in
  set inast [$p parset $in ]
  puts $inast
  puts [pt::ast print $inast ]
  }
    
  puts "Simple case"
  putss $p {Structure=adasd} 
  puts "Simple case, wierd chars"
  putss $p {Structure='ƈɠħç§'}  
  puts "Simple case, escaped special grouping chars"
  putss $p {Structure='\}'}  
  ------------- END ---------------

  and what I get is:

  ------------- BEGIN ---------------
  Simple case
  expression 0 14 {labeltypeexpression 0 14 {labeltype 0 8} {stringcompareoperator 9 9} {labelsequence 10 14 {label 10 14 {asciistring 10 14}}}}
  <expression> :: 0 14
      <labeltypeexpression> :: 0 14
          <labeltype> :: 0 8
          <stringcompareoperator> :: 9 9
          <labelsequence> :: 10 14
              <label> :: 10 14
                  <asciistring> :: 10 14
  Simple case, wierd chars
  expression 0 16 {labeltypeexpression 0 16 {labeltype 0 8} {stringcompareoperator 9 9} {labelsequence 10 16 {label 10 16 {unicodestring 11 11} {unicodestring 12 12} {unicodestring 13 13} {unicodestring 14 14} {unicodestring 15 15}}}}
  <expression> :: 0 16
      <labeltypeexpression> :: 0 16
          <labeltype> :: 0 8
          <stringcompareoperator> :: 9 9
          <labelsequence> :: 10 16
              <label> :: 10 16
                  <unicodestring> :: 11 11
                  <unicodestring> :: 12 12
                  <unicodestring> :: 13 13
                  <unicodestring> :: 14 14
                  <unicodestring> :: 15 15
  Simple case, escaped special grouping chars
  pt::rde 10 {{n WHITESPACE} {n labelsequence}}
      while executing
  "$myparser complete"
      (procedure "::emuql_parser::Snit_methodparset" line 9)
      invoked from within
  "$p parset $in "
      (procedure "putss" line 4)
      invoked from within
  "putss $p {Structure='\}'}  "
      (file "Test_emuql_parser.tcl" line 145)
  ------------- END ---------------


  This is on a Mac Show Leopard and Tcl 8.6.

  /Fredrik


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

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

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

  ("tclsh options:"??)

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


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

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

  bug fix


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

      variable _recorddefn
      variable _defn
      variable _count
      variable _defaults

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

      switch -- $sub_ {

          instance -
          instances -
          inst    {


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


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

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

              
          }
          default   {
              error "Wrong arguments to delete"
          }

      }; # end switch

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

      return

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


  garyt@bmb.leeds.ac.uk


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

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

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

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

  package require tablelist

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

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

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

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

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

  pack .tl1 .tl2 .tl3 .b


tkt_uuid: 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: 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: 639036ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: uri
priority: 5 Medium
foundin: None
resolution: Accepted
title: resolve doesn't work with url like ?N=D
comment:
  If you look at a page such as

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

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

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

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

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


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

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

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

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

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

      (Should this go to a Wiki page?)

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

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

  -Jussi Kuosa


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

  Example

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

  T3JpZ2luYWwtUmVjaXBpZW50OiA8L2ZheD1ibHViYkBndW1taS5ib290PgpBY3Rpb246IGZhaWxl
  ZApEaWFnbm9zdGljLUNvZGU6IHNtdHA7IDU1MCAjNS4xLjAgQWRkcmVzcyByZWplY3RlZC4KUmVt
  b3RlLU1UQTogNTMuMjQuMjgyLjE1MA==


  The attached patch fixes this problem for base64 encoded messages.


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


tkt_uuid: 756948ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: html
priority: 7 High
foundin: None
resolution: Invalid
title: html::select's use of ncgi not correct ?
comment:
  tcllib CVS head.

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

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

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

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


tkt_uuid: 1078504fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 3 Low
foundin: None
resolution: Out of Date
title: application generates error
comment:
  Attempt to startup tkchat today results in this error
  being raised:

   $ tkchat.tcl
  Error in startup script: can't find package jlib
      while executing
  "package require jlib            "
      (procedure "logonChat" line 13)
      invoked from within
  "logonChat"
      (procedure "::tkchat::Init" line 202)
      invoked from within
  "::tkchat::Init"
      ("eval" body line 1)
      invoked from within
  "eval [linsert $argv 0 ::tkchat::Init]"
      invoked from within
  "if {![info exists ::URLID]} {
      eval [linsert $argv 0 ::tkchat::Init]
  }"
      (file "/projects/xopsrc/bin/tkchat.tcl" line 6560)

  What is jlib and where does one get it to install it?
  Seems like either tkchat should come with it, or it
  should come in tcllib or the tcl distribution if tkchat
  is going to depend on it.
  I don't even see a README in the tclapps distribution
  that references the library.

  There is, however, a note about irbridge being
  dependent on jlib.


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


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

  Apparently, the above changes break things badly:

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

  And I get (look at the date):

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

  body
  ---

  Tcl is 8.4.12 on a x86_64 machine.


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

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

  The relevant code snippet is:

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

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


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

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


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

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

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

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

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


tkt_uuid: 459186ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: stats - deprecated
priority: 4
foundin: None
resolution: Out of Date
title: counter & stats modules are almost same
comment:
  A cursory look at the diffs of counter.tcl and stats.tcl files
  gives the impression that both are essentially the same.
  Moreover, the ChangeLog file under counter module says:

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

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


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

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


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


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

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


tkt_uuid: 780704ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: Clear value of combobox
comment:
  When a BWidget ComboBox has an empty list of values,
  the value can no longer be cleared. This patch addes an
  'clearvalue' proc.

  Jos.


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

    procedure: ::csv::joinlist

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


tkt_uuid: 821126ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: base64
priority: 7 High
foundin: None
resolution: Fixed
title: uninitialized "$output" in ::base64::decode
comment:
  Bug: '$output' is not defined in some situations at the
  end of
  proc ::base64::decode

  Rationale:
  Citing base64::decode comments:
       # RFC 2045 says that line breaks and other
  characters not part
       # of the Base64 alphabet must be ignored, and that
  the decoder
       # can optionally emit a warning or reject the
  message.  We opt
       # not to do so, but to just ignore the character.
  So, if you pass to base64::decode a totally bad string,
  you should
  get "" on return, not an error, since for the empty
  string we get "".

  How to reproduce:
  tcl>package require base64
  tcl>base64::decode "  "
  Error: can't read "output": no such variable

  Proposed patch:
  At the beginning of base64::decode (base64.tcl, line 281):
  set output ""


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

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

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


tkt_uuid: 433970ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: frink/procheck results
comment:
  Applied frink 2.1.1 and procheck to the script code in
  tcllib. The enclosed patch is the results, fixing bugs,
  warnings, partially supressing warnings which are
  bogus.


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

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

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

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


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


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

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


tkt_uuid: 1099581fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Accepted
title: New module submission: docstrip
comment:
  This is a suggested new module for tcllib, containing two 
  packages 'docstrip' and 'docstrip::util'.

  What the docstrip package provides is primarily the ability 
  to use source files that are not in the traditional "raw code" 
  form, but may contain also much other material (typically 
  documentation). Secondarily this makes it convenient to use 
  a form of literate programming that is very common in the 
  LaTeX community also for Tcl programs.

  (For an example, see
    http://cvs.sourceforge.net/viewcvs.py/alphatcl/Developer/
  Source/dialogs/dialogsNew.dtx?rev=HEAD&view=log   
  (source file)
  and
    http://cvs.sourceforge.net/viewcvs.py/alphatcl/Help/
  Dialogs%20Help.pdf?rev=HEAD&content-type=application/
  pdf   (typeset form of the above)
  .)

  The attached archive contains seven files.
    docstrip.tcl
    docstrip.man
    docstrip.test
    docstrip_util.tcl
    docstrip_util.man
  are the traditional .tcl sources, doctools-style 
  documentation, and test suite required a tcllib module. The 
  sixth file
    tcldocstrip.dtx
  is the _actual_ source for the entire module. The first five 
  files can be regenerated from it by LaTeXing the seventh file
    tcldocstrip.ins
  For what good would a source documentation system be if 
  one couldn't use it to document itself?


tkt_uuid: 520279ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Accepted
title: New package - dns lookups in Tcl
comment:
  I have produced a dns package to permit Tcl-only Domain
  Name Service lookups using the usual fileevent
  framework to allow for timeouts and asynchronous
  network transmission. This is modelled on the http package.

  Also extends the uri package to support the dns URI
  scheme. This code should probably end up in the uri
  package later on.

  For example:
   set tok [dns::resolve www.google.com]
   dns::address $tok
   dns::cleanup $tok

   dns::resolve "dns:tcl.tk;type=MX" -command handler

  No tests but there is a .man page.


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

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

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

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


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

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

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

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

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


tkt_uuid: 1059528fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct
priority: 5 Medium
foundin: None
title: lock-free data structures
comment:
  Would you like to see non-blocking implementations 
  of common data structures be added to a TCL library 
  module?
  - http://www.cs.chalmers.se/~noble/
  - http://groups.google.de/groups?
  threadm=YVyfd.10491%24HA.550%
  40attbi_s01&group=comp.programming.threads


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

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


tkt_uuid: 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: 907904ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 8
foundin: None
resolution: Accepted
title: Patches to adjust startup for modules and examples
comment:
  These are the patches used in the OpenBSD port of
  Tcllib to adjust the 'exec tclsh' lines of scripts.


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: 820807ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 7 High
foundin: None
resolution: Fixed
title: Bug in ::math::statistics::mean ?
comment:
  I am running math version 1.2.2 and statistics version0.06.

  The following line of code:
  ::math::statistics::mean "0.06 0.06 0.06 0.06 0.06 0.06
  0.06 0.06"

  returns error:
  domain error: argument not in valid range

  After reducing the number of elements from 8 to 7, the
  bug no longer shows up.

  Thanks.  


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

  Example:

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

  generate error

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

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


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

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


tkt_uuid: 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: 520907ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Out of Date
title: Notebook tab color bug (and patch)
comment:
  Motivation:

  Using another color than the standard grey, I saw that
  the Notebokk tabs do not honor the chosen background
  color. The submitted patch goes a step further and adds
  a -tabbackground (similar to -activebackground) option
  to be able to specify another colour if wanted.

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


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

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


tkt_uuid: 1060460fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: dns
priority: 5 Medium
foundin: None
resolution: Fixed
title: ip::normalize & ipv6 rfc3513 sect 2.2.3 addressing
comment:
  Hi there,

  I really really like the IP:: package. Thanks very much for this.

  I have an IPv6 feature request.  Would it be possible to handle also
  the format described in section 2.2.3 of rfc3513, like so

          0:0:0:0:0:0:13.1.68.3
          0:0:0:0:0:FFFF:129.144.52.38

  I think contract is already handling this fine, but I wonder if it would be 
  possible to add a flag to normalize which would cause it to return the 
  last two 16 bit fields as decimal dotted octets, like the above?

  Thanks,

  Selina


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


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

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

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

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


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

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

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

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

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

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

  Thanks in advance.


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

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

  The patch also includes updates to the manual page.


tkt_uuid: 466094ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: tkchat 'logging' info move
comment:
  Currently tkchat produces logging info to stdout .
  An option to either log it to a file or to
  a tk window would be a useful addition.


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

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

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

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

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

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

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


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

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


tkt_uuid: 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: 523109ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: textutil
priority: 5 Medium
foundin: None
resolution: None
title: expand handling of plain text
comment:
  When using macro arguments the processor does not run 
  the constant parts of such arguments through the 
  handler for plain text. It should.

  Example:

  In
     [bla "ditz   [foo] bla"]
           *******     ****

  the parts marked with * should be run through the
  handler for plain text before invoking the macro "bla"

  Doing this change ensures that macros can always be 
  sure that all special characters and what not are 
  already handled when they are invoked. I.e. they
  can assume that their arguments are already formatted
  for the requested output format.

  This issue came up with in doctools.

  Joe, anything else to say, or different ?


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

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

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

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


  Please insert

  package require Tcl 8.3

  to mpexpand and it'll work.


tkt_uuid: 899207ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Fixed
title: snit test failures
comment:
  In the tcllib 1.6 release,
  with Tcl/Tk 8.4.6 on Solaris 9:

  - snit 0.93

  ==== install-2.2 Delegate option * for a shadowed
  option.  Foreground is declared
      as a non-delegated option, hence it will pick up
  the option database
      default.  -foreground is not included in the
  "delegate option *", so
      the text widget's -foreground option will not be
  set from the
      option database. FAILED
  ==== Contents of test case:

      cleanup

      widget myframe {
          option -foreground white
          delegate option * to text

          typeconstructor {
              option add *Myframe.foreground red
          }

          constructor {args} {
              install text using text $win.text
          }

          method getit {} {
              $text cget -foreground
          }
      }

      myframe .frm
      set a [.frm cget -foreground]
      set b [.frm getit]
      destroy .frm
      tkbide

      list $a $b

  ---- Result was:
  red #000000000000
  ---- Result should have been (exact matching):
  red Black
  ==== install-2.2 FAILED


  ==== widgetclass-1.6 implicit widgetclass applied to
  hull FAILED
  ==== Contents of test case:

      cleanup

      widget dog { 
          typeconstructor {
              option add *Dog.background green widgetDefault
          }

          method background {} {
              $hull cget -background
          }
      }

      dog .dog
      
      set bg [.dog background]

      destroy .dog
      
      set bg

  ---- Result was:
  #FF00D6009000
  ---- Result should have been (exact matching):
  green
  ==== widgetclass-1.6 FAILED


  ==== widgetclass-1.7 explicit widgetclass applied to
  hull FAILED
  ==== Contents of test case:

      cleanup

      widget dog { 
          widgetclass DogWidget

          typeconstructor {
              option add *DogWidget.background green
  widgetDefault
          }

          method background {} {
              $hull cget -background
          }
      }

      dog .dog
      
      set bg [.dog background]

      destroy .dog
      
      set bg

  ---- Result was:
  #FF00D6009000
  ---- Result should have been (exact matching):
  green
  ==== widgetclass-1.7 FAILED


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

  In SelectFont::create procedure, add

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

  after existing bindings

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


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

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

  Gaetan

   


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

  Here's an example (only two modules):

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

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


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

  So, instead of this (current):

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

  It would look like this:

    Query and control log parameters
    ns_accesslog

    Server callbacks
    ns_atprestartup, ns_atstartup, ns_atsignal, ns_atshutdown, ns_atexit

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

    ...

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


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


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

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

  return $ret
  }


tkt_uuid: 1042420fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: png
priority: 9 Immediate
foundin: None
resolution: Fixed
title: png/crc: 237 failed tests! (64-bit)
comment:
  About half of the tests on the
  png 0.1 package  (or is it
  the crc32 1.2 package?) are
  failing.  Many produce CKSUM
  where OK is expected.

  Others throw a "header checsum failed"
  error.

  Suggest one common error that hits
  a large number of tests.

  I see these failures on a 64-bit
  system, so I suspect they all
  derive from some place where
  the code has assumed 32-bit operations.


  NOTE: no "png" Category to assign to


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


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

  % package require struct
  2.1

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

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

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

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


  nathan/grarp
  ndparrish@yahoo.com


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


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

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

  Thanks,


tkt_uuid: 474859ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Accepted
title: interpreter startup string
comment:
  The current tkchat.tcl has a full path name to wish
  in the first line.  This tiny patchlet changes that to
  look for wish in the user's path.


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


tkt_uuid: 3316478fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: simulation::random
priority: 7 High
foundin: None
resolution: Fixed
title: prng_rectangle is overwritten by prng_block implementation
comment:
  he implementation of prng_Block is mis-named as prng_Rectangle, overwriting the prng_Rectangle procedure coming just before it.
  Making both Rectangle and Block unusable.


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

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

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


tkt_uuid: 503336ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
title: Add no_softbreak flag to qp_encode
comment:
  Add the argument "no_softbreak" with a default value 
  of false to the argument list of mime::qp_encode.
  If this flag is set to true, the extra handling of 
  lines longer than 72 (shouldn't it be 76?) characters 
  should be skipped.

  Reason:  It is possible to qp_encode the subject 
  string. If you do this and the subject exceeds 72 
  characters, a soft break is inserted. This scrambles 
  the entire message at least if read with Outlook 
  Express. If the insertion of soft breaks is skipped, 
  it appears to work right with subject strings of 
  arbitrary length (tried with strings up to about 200 
  chars).


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

  At the end of example.tcl, simple add:

  puts [plug list]

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


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

  MINOR_VERSION=6

  This should really be:

  MINOR_VERSION=7

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


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

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


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

  ...

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

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

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

  ---- install-2.2 start

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

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

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


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


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

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


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

  thx


tkt_uuid: 1692954fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: grammar_fa
priority: 5 Medium
foundin: None
title: Expand the grammar::fa::dexec
comment:
  A very simple modification to the grammar::fa::dexec package, to add a current_state introspection and a new callback param, the state. 

  State callback will carry the current state that the FA just entered after a put.

  I have a simple implementation against Tcllib 1.9 ready.

  Thanks,
  Bogdan.
  rftghost@gmail.com


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

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

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


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

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

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

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

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

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


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

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

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

  So, this check should be relaxed as 

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

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

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


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

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


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

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

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

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

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

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


  Any Questions?

  David Bigelow
  davidhbigelow@compuserve.com


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

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


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

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


tkt_uuid: 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: 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: 3441173fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: pki
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Implement OpenPGP/GPG
comment:
  From mail:

  Andreas,

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

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

  Thanks,
      Roy Keene


  On Tue, 22 Nov 2011, Andreas Kupries wrote:

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


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


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




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


  1. No restrictions (walk)


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


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




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




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




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




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




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


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


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


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

      catch {new} msg
      set msg

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

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

      catch {new} msg
      set msg

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

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

      catch {new} msg
      set msg

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


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


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

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

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


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

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

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

  Example:

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

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

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

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

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



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


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


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

  (or whatever path is reasonable for the apps)


tkt_uuid: 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: 471418ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: textutil
priority: 5 Medium
foundin: None
title: csv to formatted output function?
comment:
  A function that would be useful to have is
  a 'template' type module - perhaps even generalized
  enough to be used with things other than csv - but
  basically that would allow you to supply
  'records'/arrays/csv lines (some kind of input) and out
  would come 'formletter' type output.

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

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


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

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

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

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

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


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


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


  Module: control
  modules/control/do.test

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

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

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


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

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

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

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

  to:

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

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


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

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


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

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

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

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

  Hope this helps


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


tkt_uuid: 981771ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tklib: plotchart
priority: 5 Medium
foundin: None
title: Add radial diagram to the repertoire
comment:
  Often semi-numerical data (scores on categories) are
  represented in a circular diagram. Each score is a
  point on a spoke of the circle and these scores are
  then connected by lines.

  Such a diagram could be a useful addition to Plotchart
  too.


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

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

  kind regards
  -- Matthias Kraft


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

  Something like 

  option -thisOrThat

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

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

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

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

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

  option -thisÄtschThat

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

  string is upper Ä
  ==> 1


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


tkt_uuid: 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: 457489ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
title: httpd
comment:
  Add the kernel of an HTTP server as module.
  Just the core part, i.e. collection of incoming
  requests. Dispatch via a singe callback. Everything
  else can be grafted to this from there.

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

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


tkt_uuid: 3440058fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: pki
priority: 5 Medium
foundin: None
title: (pki) Key related stuff
comment:
  ::pki::rsa::generate and ::pki::pkcs::parse_key procs only handles the n,e,d vaules of a key, and calculates the size.  On file attached, there is the full info of the rsa key set.

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

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

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

  Regards,

  -=Raul=-


tkt_uuid: 1798337fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 5 Medium
foundin: None
resolution: Fixed
title: struct::list permutations can't handle 1-element list
comment:
  % source h:/tcl/lib/tcllib1.10/struct/list.tcl
  % package present struct::list
  1.6.1
  % ::struct::list permutations {a b}
  {a b} {b a}
  % ::struct::list permutations {a}
  bad option "a": must be :struct::list::Lforeachperm, :struct::list::Lsplit, :struct::list::Lreverse, :struct::list::Liota, :struct::list::Lfold, :struct::list::Lmapfor, :struct::list::Lmap, :struct::list::Lflatten, :struct::list::Lequal, :struct::list::LlongestCommonSubsequence, :struct::list::Lrepeat, :struct::list::LlongestCommonSubsequence2, :struct::list::LlcsInvert, :struct::list::LlcsInvertMerge, :struct::list::Lswap, :struct::list::Lfirstperm, :struct::list::LlcsInvert2, :struct::list::LlcsInvertMerge2, :struct::list::Lfilterfor, :struct::list::Lassign, :struct::list::LdbJoin, :struct::list::Lfilter, :struct::list::Lshift, :struct::list::Lrepeatn, :struct::list::LdbJoinKeyed, :struct::list::Lpermutations, or :struct::list::Lnextperm

  The Lpermutations proc contains this check

      if {[llength $list] < 2} {
  return [list $list]
      }

  The [list] command in the return statement needs to be referenced from the global namespace.


tkt_uuid: 456255ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: base64
priority: 5 Medium
foundin: None
resolution: Fixed
title: export public API only
comment:
  In some modules, there is a single line code:

      namespace export *

  This exports public as well as private API.

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


tkt_uuid: 1234831fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: runtime-error when owner of file is wrong
comment:
  Hi,

  I do a anonymous ftp from a UNIX machine to a "windows
  2000 server" (in passive mode):

  The owner of the file is Administrator, i try to
  overwrite it
  with anonymous account (i-user on windows).

  This should give a ftp error 550 instead I get 
  the error at the end of this post.

  After deleting the files and re-creating them with
  anonymous account my problem was solved, small
  non-blocking issue for me...

  Regards,

  Christophe

  :<<
  can't unset "ftp(state.data)": no such element in array
      while executing
  "unset ftp(state.data)"
      ("default" arm line 4)
      invoked from within
  "switch -exact -- $rc {
                  1 -
  2 {
                      set ftp(State) put_close
                  }
                  default {
              ..."
      ("put_sent" arm line 2)
      invoked from within
  "switch -exact -- $ftp(State) {
          user { 
              switch -exact -- $rc {
                  2 {
                      PutsCtrlSock $s "USER $ftp(U..."
      (procedure "::ftp::StateHandler" line 78)
      invoked from within
  "::ftp::StateHandler 0 sock5"
  >>


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


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


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

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


tkt_uuid: 3608943fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: dns
priority: 5 Medium
foundin: None
resolution: Fixed
title: [::ip::version] crashes when receives empty string
comment:
  tcllib version 1.15, when empty string passed as arg, proc ip::version crashes:
  % package require dns
  1.3.3
  % ip::version {}
  can't read "addr": no such variable
  % set errorInfo
  can't read "addr": no such variable
      while executing
  "IPv4? $addr"
      (procedure "ip::version" line 4)
      invoked from within
  "ip::version {}"

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


tkt_uuid: 879812ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
resolution: Accepted
title: Patch for FRE 879451
comment:
  An initial patch for better introspection and a new
  interface for logproc to optionally use an existing proc.


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

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

         .8svx     Amiga 8SVX musical instrument
  description format.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

         vorbis    See .ogg format.

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

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


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

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

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

  Regards,

  -=Raul=-


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

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


tkt_uuid: 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: 1272798fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: exif
priority: 2
foundin: None
resolution: Fixed
title: exif - failed test with Tcl 8.5
comment:
  ==== exif-makernote-19.0 makernote field 19 (afpoint)
  is optional FAILED
  ==== Contents of test case:

      # AFPoint == AutoFocus Point

      set f [open [file join $::tcltest::testsDirectory
  noafpoint.jpg] r]
      fconfigure $f -translation binary
      set res [dictsort [exif::analyze $f]]
      close $f
      set res

  ---- Result was:
  AFPointsUsed {3 right} AperatureValue 7.1 AutoFocusMode
  {AI servo} CameraMake Ca
  non CameraModel {Canon PowerShot S100} ColorSpace 1
  ComponentsConfigured 0x00030
  201 Contrast Normal DateTime {2004:09:06 05:22:56}
  DateTimeDigitized {2004:09:06
   05:22:56} DateTimeOriginal {2004:09:06 05:22:56}
  ExifImageHeight 1200 ExifImage
  Width 1600 ExifInteroperabilityOffset 1088 ExifVersion
  0210 ExposureBiasValue 0 
  ExposureTime {1/250.0 seconds} FNumber 7.1 FileSource
  {3 - Digital camera} Firmw
  areVersion {Firmware Version 1.0} Flash no FlashMode
  auto FlashPixVersion 0100 F
  ocalLength {5.40625 mm} FocalPlaneResolutionUnit inch
  FocalPlaneXResolution 7766
  .9902912621355 FocalPlaneYResolution 7741.935483870968
  ISO unknown ImageFormat {
  IMG:JPEG file} ImageNumber 140-4060 ImageQuality Fine
  ImageSize large MacroMode 
  normal MeteringMode unknown Orientation 1 Owner Irochka
  ResolutionUnit inch Satu
  ration Normal SensingMethod 2 Sharpness Normal
  ShootingMode {Single frame} Shutt
  erSpeedValue {250 Hz} SubjectDistance {3.358 m}
  UnknownTag-0x10 100925440 UserCo
  mment {554 - } WhiteBalance Auto XResolution 180.0
  YCbCrPositioning {Center of p
  ixel array} YResolution 180.0
  ---- Result should have been (exact matching):
  AFPointsUsed {3 right} AperatureValue 7.1 AutoFocusMode
  {AI servo} CameraMake Ca
  non CameraModel {Canon PowerShot S100} ColorSpace 1
  ComponentsConfigured 0x00030
  201 Contrast Normal DateTime {2004:09:06 05:22:56}
  DateTimeDigitized {2004:09:06
   05:22:56} DateTimeOriginal {2004:09:06 05:22:56}
  ExifImageHeight 1200 ExifImage
  Width 1600 ExifInteroperabilityOffset 1088 ExifVersion
  0210 ExposureBiasValue 0 
  ExposureTime {1/250.0 seconds} FNumber 7.1 FileSource
  {3 - Digital camera} Firmw
  areVersion {Firmware Version 1.0} Flash no FlashMode
  auto FlashPixVersion 0100 F
  ocalLength {5.40625 mm} FocalPlaneResolutionUnit inch
  FocalPlaneXResolution 7766
  .99029126 FocalPlaneYResolution 7741.93548387 ISO
  unknown ImageFormat {IMG:JPEG 
  file} ImageNumber 140-4060 ImageQuality Fine ImageSize
  large MacroMode normal Me
  teringMode unknown Orientation 1 Owner Irochka
  ResolutionUnit inch Saturation No
  rmal SensingMethod 2 Sharpness Normal ShootingMode
  {Single frame} ShutterSpeedVa
  lue {250 Hz} SubjectDistance {3.358 m} UnknownTag-0x10
  100925440 UserComment {55
  4 - } WhiteBalance Auto XResolution 180.0
  YCbCrPositioning {Center of pixel arra
  y} YResolution 180.0
  ==== exif-makernote-19.0 FAILED


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

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

  Test program: 

      package require aes 

      set key [binary format a32 0123456789012345678901234567890123456789] 

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

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


  Issue: 

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


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

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


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

  What are these good for, then?

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

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

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

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


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

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


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

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

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


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

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

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

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


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

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

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


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

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

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


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

  set addresses {
  lduperval@yahoo.com
  }

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

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

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

  This is the error I get:

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

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


tkt_uuid: 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: 1774859fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: sasl
priority: 5 Medium
foundin: None
resolution: Accepted
title: Process auth error in X-GOOGLE-TOKEN SASL mechanism
comment:
  Currently incorrect authentication using X-GOOGLE-TOKEN SASL mechanism returns strange error "can't read "g(SID)": no such variable".

  The attached patch allows to return more meanighful message.


tkt_uuid: 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: 1844106fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Fixed
title: snit test suite failures against tcllib cvs head
comment:
  platform: sparc solaris 9
  tcl: cvs head 8.5
  tcllib cvs head 2.2.1



  ---- dtypemethod-1.6a start

  ==== dtypemethod-1.6a delegating unknown typemethod to existing typecomponent wi
  th error FAILED
  ==== Contents of test case:

      type dog {
          delegate typemethod * to stringhandler

          typeconstructor {
              set stringhandler string
          }
      }

      dog foo bar

  ---- Result was:
  unknown or ambiguous subcommand "foo": must be bytelength, compare, equal, first
  , index, is, last, length, map, match, range, repeat, replace, reverse, tolower,
   totitle, toupper, trim, trimleft, trimright, wordend, or wordstart
  ---- Result should have been (exact matching):
  bad option "foo": must be bytelength, compare, equal, first, index, is, last, le
  ngth, map, match, range, repeat, replace, reverse, tolower, toupper, totitle, tr
  im, trimleft, trimright, wordend, or wordstart
  ==== dtypemethod-1.6a FAILED

  ==== dmethod-1.6a delegating unknown method to existing component with error FAI
  LED
  ==== Contents of test case:

      type dog {
          constructor {args} {
              set stringhandler string
          }

          delegate method * to stringhandler
      }

      dog create spot
      spot foo bar

  ---- Result was:
  unknown or ambiguous subcommand "foo": must be bytelength, compare, equal, first
  , index, is, last, length, map, match, range, repeat, replace, reverse, tolower,
   totitle, toupper, trim, trimleft, trimright, wordend, or wordstart
  ---- Result should have been (exact matching):
  bad option "foo": must be bytelength, compare, equal, first, index, is, last, le
  ngth, map, match, range, repeat, replace, reverse, tolower, toupper, totitle, tr
  im, trimleft, trimright, wordend, or wordstart
  ==== dmethod-1.6a FAILED


tkt_uuid: 1039961fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Fixed
title: htmlparse - numeric character references with leading 0s
comment:
  Numeric character references with leading zeros are
  misparsed as octal.  For example, &#038;  (in case the
  SF bug tracker mangles that, it's: "ampersand, pound
  sign, zero, three, eight, semicolon").

  Attached patch fixes the problem and adds a test case.


tkt_uuid: 3189786fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: cmdline
priority: 5 Medium
foundin: None
resolution: Fixed
title: option processing default incorrect for .arg and .secret
comment:
  It looks like a regexp is not escaped properly, so an option myarg creates a default m in the argument array.

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

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

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

  Run the attached script "arg -h".


tkt_uuid: 1060353fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Invalid
title: ldap::search problem with spaces in filter specs
comment:
  The original report is
  http://bugs.activestate.com/show_bug.cgi?id=34774

  Running Active State Tcl 8.4.7 on Windows 2000 server.

  Problem with ldap package in tcllib 1.6. Ldap search
  does not pick up CNs with space in the CN name.

  % set tcl_version
  8.4

  % info patchlevel
  8.4.7

  % package require ldap
  1.2

  Ldap search does not pick up CNs with space in the name.

  TestCase.

  Search with "General*" works.

  % ldap::search $donnelly "o=HBF" "cn=General*" {cn}
  {{CN=General Management,O=HBF} {}}

  Search with "General Managemernt" fails.

  % ldap::search $donnelly "o=HBF" "cn=General Management" {}
  % 

  The filter string needs to be enclosed in "{}" or a list.

  % set f [ list "cn=General Management" ]
  {cn=General Management}

  (bin) 244 % ldap::search $donnellyServer "o=HBF" $f {cn}
  {{CN=General Management,O=HBF} {}}

  Doco may need to be updated.


tkt_uuid: 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: 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: 579853ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Fixed
title: Backslashes escaped but not unescaped
comment:
  ::htmlparse::PrepareHtml protects characters that are
  special to Tcl (braces and backslash).  The ob & cb
  (open & closing brace) escapes are converted back
  because there are keys for ob & cb in the
  ::htmlparse::escapes array, but there is no entry for
  ::htmlparse::escapes(bsl).


tkt_uuid: 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: 620062ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pop3
priority: 5 Medium
foundin: None
resolution: Fixed
title: bug in retrieve
comment:
  There is a bug in the main loop within the 
  pop3::retrieve proc. I think this bug may be caused 
  by the fact that the Tcl 8.3 scan command behaves 
  differently from the documentation. In the loop over 
  index from start to end, there is a switch statement. 
  This bug may occur for either the retr or the list 
  elements in the switch statement.
  The bug is caused by these lines:

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

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

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

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

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

  As another example we should have in the list branch:

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


tkt_uuid: 472009ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: mime/smtp/Trf
comment:
    mime/smtp/Trf package bug

    the proc "smtp::wdata(949)" got a command
  "create/read" form procedure
    "transform(902)". This command is not supported

  <-- 220 linux02.otto-net ESMTP Sendmail
  8.11.2/8.11.2/SuSE Linux 8.11.1-0.5; Wed, 17 Oct 2001
  10:47:02 +0200
  --> EHLO localhost (wait upto 300 seconds)
  <-- 250-linux02.otto-net Hello localhost [127.0.0.1],
  pleased to meet you
  <-- 250-ENHANCEDSTATUSCODES
  <-- 250-8BITMIME
  <-- 250-SIZE
  <-- 250-DSN
  <-- 250-ONEX
  <-- 250-ETRN
  <-- 250-XUSR
  <-- 250 HELP
  --> ONEX (wait upto 300 seconds)
  <-- 250 2.0.0 Only one transaction
  --> MAIL FROM:<dev2usr@linux02> (wait upto 600 seconds)
  <-- 250 2.1.0 <dev2usr@linux02>... Sender ok
  --> RCPT TO:<dev1usr@linux02> (wait upto 3600 seconds)
  <-- 250 2.1.5 <dev1usr@linux02>... Recipient ok
  --> DATA (wait upto 300 seconds)
  <-- 354 Enter mail, end with "." on a line by itself
  Call: smtp::wtextaux ::smtp::1 ::mime::1
  Call: smtp::wdata ::smtp::1 create/write {}
  Call: smtp::wdata ::smtp::1 create/read {}
  --> RSET (wait upto 0 seconds)
  --> QUIT (wait upto 0 seconds)
  Unknown command "create/read"
      while executing
  "error "Unknown command \"$command\"""
      ("default" arm line 2)
      invoked from within
  "switch -- $command {
          create/write
              -
          clear/write
              -
          delete/write {
              set state(crP) 0
          ..."
      (procedure "smtp::wdata" line 8)
      invoked from within
  "smtp::wdata ::smtp::1 create/read {}"
      invoked from within
  "transform -attach $state(sd) -command [list
  smtp::wdata $token]"
      (procedure "smtp::wtextaux" line 11)
      invoked from within
  "smtp::wtextaux $token $part "
      invoked from within
  "smtp::sendmessage $M1  -debug  yes     \
                                                  -header
  [ list To "Dev1Usr <dev1usr@linux02>" ] \
                                                  -header
  [ list From "Andreas Otto <dev2usr@linux02>..."


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

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

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

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


tkt_uuid: 753170ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Invalid
title: ScrolledWindow hang
comment:
  A dialogue box that works OK with a frame causes a hang
  when it is replaced by a ScrolledWindow -- sorry there
  is so much stuff in the attached example file but I
  couldn't get the hang to happen with just the
  ScrolledWindow on its own

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

  <at this point it is hung>


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

  FIX: 

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

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

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

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

  ...


tkt_uuid: 1021240fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: bwidget table of contents in doctools format
comment:
  I took a stab at converting the first of the bwidget
  files to doctools format.
  I don't have a lot of time - I would love to see all
  the bwidget pages reformatted.  


tkt_uuid: 526404ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: tclbench
priority: 5 Medium
foundin: None
resolution: Accepted
title: new [catch] benchmark: complex bodies
comment:
  On finding an error, [catch] scans all exceptionRanges
  of the bytecode. I am planning to patch
  GetExceptRangeForPc (in generic/tclExecute.c) with a
  faster algorithm (see Tcl-patch  #453709).

  I enclose here a patch which is necessary to illustrate
  the improvement, as it is only important when [catch]
  is part of a complex proc body, with many ranges and
  many nesting levels.

  Any comments before I commit?


tkt_uuid: 978962ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 7 High
foundin: None
resolution: Fixed
title: tkchat timestamp problems.
comment:
  dkfFor example, too often it gets the tabs wrong (puts
  a zero tab at the start of every line) and odd things
  happen when you have timestams visible but entry/exit
  messages off...
  patthoytsThe main issues I have are that it breaks the
  history download when turned off. If there are hidden
  users then we still get a timestamp. And as dkf has
  said, if you hide the timestamps it doesn't align the
  tab spacing properly.
  dkfIf you turn timestamps on then off again, the
  loaded history ends up correct.
  dkfAnd seems to stay that way thereafter.
  dkfThe other issues are less critical. You just get
  blank lines...


tkt_uuid: 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: 3428262fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: json
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: JSON: Trailing spaces added to number value
comment:
  When the source json is { "a" : 0 }, then the resulting dict is: { a {0 } } (not {a 0}). This may be significant when comparing json results coming from two different sources.

  To fix this problem, please change near this line:
  string is double -failindex last $txt
  the following line:
  set num [string range $txt 0 [expr {$last - 1}]]
  into:
  set num [string trim [string range $txt 0 [expr {$last - 1}]]]


tkt_uuid: 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: 1245508fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ntp
priority: 5 Medium
foundin: None
resolution: Fixed
title: NTP handling wrong
comment:
  The handling of (s)ntp by the ntp package is wrong; you
  can't talk ntp (these days) over tcp and you certainly
  can't use 'abcd' as a request message!

  And the package claims to be the time package for
  [package require], despite being in the ntp dir within
  the distribution.


tkt_uuid: 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: 948063ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: MenuFrame: no 'getmenustate' method
comment:
  Apparently, there is not way, to query the state of a
  menu tag.

  The state of menu tags could be set with:

  $mainframe setmenustate tag state

  I would be very handy, to be able to query the state of
  a tag. Something like a getmenustate method with syntax
  like

  $mainframe getmenustate tag

  returning the state. Or enhanced setmenustate syntax

  $mainframe setmenustate tag ?state?

  If the optional new state is omitted, then the current
  state of the tag is returned. (And emtpy string for not
  knows tags? Or error? Curently,  setmenustate simply
  ignores unknown tags - which shuld be mentioned in the
  documentation.)

  The current setmenustate implementation in
  mainframe.tcl still includes the old tag state
  mechanism commented out. I agree, that the current
  state system is better. Shouldn't this code be removed?

  The documentation should mention at one place, that
  only state "disabled" disables the tag and that every
  other state enables it.


tkt_uuid: 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: 886304ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidgets1.7.0 bug in Notebook:bindtabs command
comment:
  I am using ActiveTcl8.4.4.0 with BWidgets1.7.0. The 
  Notebook widgets bindtabs command seems to be 
  stripping off the first two characters of the tabname. 
  Here is a small script to replicate the bug. 

  #!/bin/env wish

  proc print_tab_name {tab} {
  puts $tab
  }

  # Load BWidget package into the interpreter
  package require BWidget

  wm withdraw .

  # Create Notebook
  set notebook [NoteBook .nb]
  $notebook insert end TestTab -text "Test Tab"
  $notebook compute_size
  pack $notebook -fill both -expand yes -padx 4 -pady 4
  $notebook raise [$notebook page 0]
  $notebook bindtabs <Button-1> "print_tab_name"

  wm deiconify .


tkt_uuid: 3325112fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Accepted
title: ftp -- too enthusiastic use of reverse DNS
comment:
  The calls to [fconfigure -peer/sockname], which incur reverse DNS lookups, are not ideally placed in the code. This matters when the reverse DNS lookup is likely to fail slowly (with a timeout). TYpical are ill-configured resolvers. Especially the lookup on the client's own IP is likely to fail when it's NATted. See https://groups.google.com/group/comp.lang.tcl/browse_frm/thread/65b6637a503f4966?hl=fr# .

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


tkt_uuid: 1842346fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: BWidget::place does not work as expected
comment:
  When BWidget::place is called like 
  BWidget::place widget width 0 above otherwidget
  or
  BWidget::place widget width 0 left otherwidget
  then widget is not placed at the expected position.

  Attached file of utils.tcl solves the problem.


tkt_uuid: 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: 3117246fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Accepted
title: Mime maildemo file is missing the tclsh startup bits
comment:
  Here's the patch:

  --- examples/mime/maildemo.tcl.orig     Wed Feb  4 09:25:12 2009
  +++ examples/mime/maildemo.tcl  Wed Feb  4 09:26:45 2009
  @@ -1,3 +1,7 @@
  +#! /bin/sh
  +# the next line restarts with tclsh \
  +exec tclsh "$0" ${1+"$@"}
  +
   # maildemo.tcl - Copyright (C) 2005 Pat Thoyts <patthoyts@users.sf.net>
   # 
   # This program illustrates the steps required to compose a MIME message and 


tkt_uuid: 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: 1276680fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: bignum
priority: 5 Medium
foundin: None
resolution: Fixed
title: math::bignum namespace not exported properly
comment:
  See tcllib/math/bignum.tcl, line 828:

      828 namespace eval bignum {
      830     namespace export *
      831 }

  The namespace is ::math::bignum, not ::bignum.  This
  results in an empty export list in ::math::bignum. 
  Found this in Tcllib 1.7.0.1.


tkt_uuid: 1160005fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: plotchart
priority: 5 Medium
foundin: None
resolution: None
title: tklib plotchart test suite failure using tcl/tk 8.5 alpha
comment:
  Platform: sparc solaris sun c compiler
  Tcl/Tk latest from cvs
  tklib latest from cvs

  After configure and building, I ran the test suite and
  got this
  error:

  Module: plotchart
  modules/plotchart/plotchart.test
  Plotchart 1.0
  modules/plotchart/plotcontour.test
  couldn't read file "plotchart.tcl": no such file or
  directory
      while executing
  "source plotchart.tcl"
      (file
  "/vol/tclsrcsol/tcl85/tklib/modules/plotchart/plotcontour.test"
  line 3)
      invoked from within
  "source [pSet file]"


  Before the error appeared, a series of tk widgets
  appeared with plotting information.


