# ticket

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: 769871ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: 2 apparent protocol violations
comment:
  These may not matter but as I'm troublshooting
  obscure failures they come to my attention.

  Disclaimer: I haven't coded much with smtp/mime so my 
  authority for these claims is the O'Reilly 
  book "Programming Internet Email", David Wood.

  1. Wood says the headers for MIME parts should never 
  contain the MIME-version header. Yet they do appear.

  2. Boundary strings should never include '=' yet they do.

  Woods also comments that Content-ID is optional and 
  rare and must be world-unique. Is there value in tcllib 
  mime generating this header?

  Thanks for any clarification,
  Roy Terry
  (still stuck with premature socket close when reloading 
  the mime parts from a file)


tkt_uuid: 1280862fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: profiler
priority: 5 Medium
foundin: None
resolution: None
title: profiler - errorInfo modifiable in enter- & leaveHandler
comment:
  enterHandler and leaveHandler use catch statements to
  test for the existance of certain namespace varibales.

  if these catch statements fire, they modify errorInfo.

  catching an error, and trying to log errorInfo can log
  the wrong information if you are visiting a function
  for the first time.

  can't read
  "::profiler::descendants(process_message,::errlog)": no
  such element in array
      (reading value of variable to increment)
      invoked from within
  "incr ::profiler::descendants($caller,$name)"


  I added
     global errorInfo

      set origError $errorInfo

  to the beginning and

   set errorInfo $origError

  to the end of both enterHandler and leaveHandler.


tkt_uuid: 700781ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: tkchat - Hide Users doesn't scroll userlist
comment:
  when I pop up the Visibility->Hide Users menu, the
  result is a huge series of checkboxes so large that the
  list proceeds off screen, unable to access them all.

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

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


tkt_uuid: 1016141fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pop3d
priority: 5 Medium
foundin: None
resolution: Fixed
title: pop3d test suite reports package version conflict
comment:
  platform: sparc solaris 8
  tcl: 8.5a2 cvs snapshot
  tcllib: latest cvs snapshot

  From: "Andreas Kupries" <andreask@activestate.com>

  > Module: pop3
  > modules/pop3/pop3.test
  > - tcltest 2.2.6
  > - pop3    1.6.1
  >
  > Module: pop3d
  > modules/pop3d/pop3d.test
  > skipped pop3d.test: conflicting versions provided for
  package
  > "md5": 2.0.1, then 1.4.3
  > modules/pop3d/pop3d_dbox.test
  > skipped pop3d_dbox.test: conflicting versions
  provided for
  > package "md5": 2.0.1, then 1.4.3
  > modules/pop3d/pop3d_udb.test
  > - pop3d::udb 1.1
  >
  > Any ideas what might be going on here?

  Something loaded the v1 md5, some other part wants md5
  v2, and the package
  system of the core balks at the conflict. Bug.


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


tkt_uuid: 1854986fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 7 High
foundin: None
resolution: None
title: repeat-4.x test suite failures
comment:
  Using the cvs head for tcllib and tcl, I am seeing:

  ---- repeat-4.1 start

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

      catch {repeat} msg
      set msg

  ---- Result was:
  wrong # args: should be "::struct::list::Lrepeat positiveCount value ?value ...?"
  ---- Result should have been (exact matching):
  wrong # args: should be "lrepeat positiveCount value ?value ...?"
  ==== repeat-4.1 FAILED

  ---- repeat-4.2 start

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

      catch {repeat a} msg
      set msg

  ---- Result was:
  wrong # args: should be "::struct::list::Lrepeat positiveCount value ?value ...?"
  ---- Result should have been (exact matching):
  wrong # args: should be "lrepeat positiveCount value ?value ...?"
  ==== repeat-4.2 FAILED

  As one last error - despite these failures, the end of the test run reported :
  @@ End 1198158410
  all.tcl:        Total   4       Passed  4       Skipped 0       Failed  0
  Sourced 1 Test Files.
  Sourced 0 Test Files.
  Passed   14828 of  15016
  Skipped    185 of  15016
  Failed       3 of  15016
  #Errors      0

  which is really confusing - there are FAILed tests, yet 0 errors...


tkt_uuid: 2124523fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Fixed
title: ldapx.man warning from sak
comment:
  When I run sak.tcl nroff, the following warning is produced:

  Gen (nroff): ../../modules/ldap/ldapx.man
  DocTools Warning (missingsect): In macro at line 297, column 42:
  DocTools Warning (missingsect): Refered (Sub)Section "Data" is not known.

  This is from the latest CVS head of tcllib.


tkt_uuid: 2915921fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
title: Add commands for extended punctuation (em-dash, en-dash)
comment:
  It would be convenient to have a set of markup commands which would produce special punctuation signs on output.
  Of most interest are "wide dashes", namely, em-dash and en-dash.
  Such commands could be named as [mdash] and [ndash] respectively, and produce:
  [mdash]: &mdash; in HTML and \(em in nroff;
  [ndash]: &ndash; in HTML and \(en in nroff.

  Ideally, it would be nice to have a generic framework for defining special markup commands which would generate assigned Unicode characters on output, but I think this can't play together with nroff as it's not yet really Unicode-aware (while it's being developed to finally become UTF-8 compliant).
  So the two commands I proposed above could facilitate creation of a bit more beautiful manpages while being portable.


tkt_uuid: 587533ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: tree
priority: 5 Medium
foundin: None
resolution: Fixed
title: lappend error message misquoted.
comment:
  In the ::struct::tree::_lappend routine, when the incorrect 
  number of arguments is supplied, the error message 
  states

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

  I think that what should be in this error message is

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


tkt_uuid: 1753433fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: math
priority: 5 Medium
foundin: None
title: Code and man page for lognormal income distribution library
comment:
  Hello,

  I was invited by Arjen Markus to submit my code for a lognormal income distribution library. Thanks for asking! I'm uploading a copy of the source (released under a BSD license or whatever will make it compatible with tcllib).

  In the zip file I'm also including: a non-groffed man page (plain ascii), a test suite (comparing results to results obtained from Excel), and an example application file.

  Eric


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

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

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


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

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

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

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


tkt_uuid: 3379585fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Invalid
title: comm does not work in tclsh
comment:
  I tried to use ::comm as server in tclsh 8.5.9 and it does not work. sending a request works but i receive no answer. tclsh is not blocking.

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

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


tkt_uuid: 1571751fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: Installer
priority: 5 Medium
foundin: None
resolution: None
title: [OSX] Install paths for tcllib 1.9
comment:
  The default install path for executables came up as "/System/Library/bin". 
  It should default to the /usr path. I will leave it up to you where in /usr it 
  should default to (/usr/local/bin ?).

  Submitted by: Robert Hicks <sigzero@gmail.com>


tkt_uuid: 1409219fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ntp
priority: 7 High
foundin: None
resolution: Fixed
title: Bug in use of package ceptcl
comment:
  When package 'udp' is looked for in "ntp/time.tcl", the
  variable "options(-protocol)" is set to udp. For
  'ceptcl' however the variable "options(protocol)" is
  modified. Note the missing dash "-" before "protocol".
  I believe that that is wrong and should be
  "options(-protocol)" as well, i.e. with a dash.


tkt_uuid: 700327ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: base64
priority: 5 Medium
foundin: None
resolution: Fixed
title: uuencode/uudecode using Trf
comment:
  The following bug occurs when trying to uuencode a line
  beginning with '-' using the uuencode command in
  Trf(from base64/uuencode.tcl):

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

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

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

  tcllib1.3/base64/uuencode.tcl

  line 81:

   return [::uuencode -mode encode $s]

  should be:

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

  Same with the call to uudecode.

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


tkt_uuid: 3036841fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: docstrip
priority: 5 Medium
foundin: None
resolution: Fixed
title: Bad links
comment:
  There are three bad links to tug.org in the man page.  Not sure where these are currently located since I don't know what was there before.  The links are listed below:


    [1]    The tclldoc package and class, http://tug.org/tex-archive/macros/latex/contrib/tclldoc/.

         [2]    The DocStrip utility, http://tug.org/tex-archive/macros/latex/base/docstrip.dtx.

         [3]    The doc and shortvrb Packages, http://tug.org/tex-archive/macros/latex/base/doc.dtx.


tkt_uuid: 827645ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Fixed
title: Missing documentation on contents of tree
comment:
  With the 2tree command there is no documentation on
  what actually lies within the tree. Ie. that the tag is
  specified within the "type" key and  character data
  appears in a child with a type of "PCDATA". Without
  this documentation usage of the tree is a bit of a mystery.


tkt_uuid: 527114ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: Import pop3 demon in Pool
comment:
  Import the pop3 demon in package
  Pool_Net into tcllib, possibly
  modified. This will make testing
  the pop3 client possible. And it
  completes the pop3 implementation.


tkt_uuid: 1049503fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: Error messages go missing on Windows
comment:
  On Windows, you normally don't have a working proper
  console so any messages sent to stdout or stderr get
  lost.  These should either get logged (most cases) or
  popped up in dialog boxes (occasionally appropriate). 
  Offending lines (in tkchat.tcl v1.191)

  74: puts stderr $::errorInfo
  433: puts "ERROR: $new"
  445: puts "ERROR: $new"
  1734: puts [string map [list "\"" ""] $message]
  6081: puts "OPENSTREAM"


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

  * struct::list 1.5
  test name 'list-lcs-2.13' re-used; prior use in
  /local/src/tcllib/modules/struct/list.test
  test name 'list-lcs2-2.13' re-used; prior use in
  /local/src/tcllib/modules/struct/list.test


tkt_uuid: 2538424fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: base64
priority: 5 Medium
foundin: None
resolution: Fixed
title: unset in namespace has global side effects
comment:
  revision 1.29 of base64.tcl (latest revision) has an unset in the namespace eval base64 call when Trf isn't present. The specific line is:

  199: unset base64_tmp i char len val

  It also uses base64_tmp, i, char, len, and val earlier within the namespace eval. Since they're never declared with a "variable" call, they're resolved to global namespace. So the following example results in unappreciated behavior:

  set i 0
  package require base64
  puts $i

  The variable i is unset by base64. This should really be fixed by removing the "unset" call in namespace eval, and instead declaring these temporary variables in namespace scope with calls to variable.


  Fix:
  add after line 161: variable base64_tmp; variable i; variable char; variable len; variable val
  remove line 199: unset base64_tmp i char len val


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

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

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

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

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

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

  Matthew


tkt_uuid: 1537469fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: Installation
priority: 5 Medium
foundin: None
resolution: None
title: "make install" fails on cygwin
comment:
  tcllib installation fails on cygwin using ./configure;
  make install.  No error messages noted during
  installation, but afterward
   
  "package require fileutil" 
  returns "cant't find package fileutil"

  Nevertheless, installation succeeds by the alternate
  installation method, simply calling installer.tcl

  Windows XP Home Edition v. 5.1 Build 2600 Service Pack 2
  cygwin DLL version 1.5.19
  ash 20040127-3
  bash 3.0-14
  tcltk 20030901-1


tkt_uuid: 1464923fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: dependecy on mkinstalldirs not defined
comment:
  When bwidget comes from the CVS, an autoconf needs to
  occur to get a working configure. During that process,
  if the developer has only extracted the files for
  bwidget, the autoconf discovers that the config/tcl.m4
  fileis missing.  However, it doesn't check for the
  config/mkinstalldirs command, and configure doesn't
  check for it either. So the developer doesn't discover,
  until installation time, that bwidget has a dependency
  on it.

   


tkt_uuid: 2038279fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: The ftp package is misusing namespace variables
comment:
  $ tclsh8.5 
  % set serial global; set VERBOSE global; set DEBUG global;
  global
  % source ./ftp.tcl
  % set serial
  0
  % set VERBOSE
  0
  % ...

  It would probably help to audit tcllib's usage of namespace eval with set, so that we can fix these missing [variable] problems that result in globals being overwritten.

  See also:
  http://wiki.tcl.tk/1030


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: 1774995fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Duplicate
title: error in comm error processing
comment:
  (I woulda sworn I submitted this once; sorry if it's a duplicate)

  In comm there is this code in proc CommRunHook. Notice how catch saves its output in "res" but the return statement for case 1 uses $result:

      ...
  commDebug {puts stderr "<$chan> /interp $interp"}
  set code [catch {interp eval $interp $cmd} res]
      } else {
  commDebug {puts stderr "<$chan> /main"}
  set code [catch {uplevel 1 $cmd} res]
      }

      # Perform the return code propagation promised
      # to the hook scripts.
      switch -exact -- $code {
  0 {}
  1 {
      return -errorinfo $::errorInfo -errorcode $::errorCode -code error $result
  }
  3 {return}
  4 {}
  default {return -code $code $res}
      }


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


tkt_uuid: 1627868fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: term
priority: 5 Medium
foundin: None
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: 833034ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: ScrolledWindow fails after managed widget is destroyed
comment:
  ScrolledWindow should be more robust, when the managed
  widget is destroyed, like it was for BWidget 1.5.

  Application background:
  -----------------------
  (1) After creating a ScrolledWindows $sw it has no
  widget and displays a gray background.
  (2) After assigning a widget [$sw setwidget $w] it
  manages the widget $w.
  (3) With 1.6 's not possible anymore to return to state
  (1).

  With BWidget 1.5 it was possible to destroy the widget $w.
  But BWidget 1.6 fails to display anything even after a
  fresh     
  [$sw setwidget ...].

  It would also be nice to have a
      $sw setwidget {}
  making the ScrolledWindow $sw manage no widget.

  Script illustrating the problem
  (runs with 1.5, fails with 1.6):
  -----------------------------
  catch {console show}
  package require -exact BWidget 1.6

  set sw [ScrolledWindow .sw -scrollbar both -auto both]
  pack $sw -fill both -expand yes
  wm geometry . 400x600

  for {set i 0} {$i < 2} {incr i} {
      text .text$i
      .text$i insert end [string repeat "This is text
  window $i\n" 5]
  }

  puts "The ScrolledWindow has no widget"
  after 3000 {$sw setwidget .text0; puts "Set widget 0"}
  after 6000 {destroy .text0; puts "Destroy widget 0"}
  after 9000 {$sw setwidget .text1; puts "Set widget 1"}


tkt_uuid: 485717ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
title: add csvdiff to examples directory
comment:
  during the development of the csv module, the author,
  andreas kupries, wrote a csvdiff application that
  demonstrates yet again the usefulness of the
  application.


tkt_uuid: 3470437fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tklib :: ico
priority: 5 Medium
severity: Minor
foundin: None
resolution: Not Applicable Here
title: Padding on and mask rasters incorrect.
comment:
  in proc ::ico::getAndMaskFromColors {colors}

  Padding calculation might look better like this:

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


tkt_uuid: 1398330fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: tklib: ico
priority: 5 Medium
foundin: None
resolution: Fixed
title: memchan-based vfs compatibility patch
comment:
  The issue was discovered when I was trying to generate
  an icon dynamically and place it into in-memory vfs.
  writeIconICO does a wrong thing when [file size] is not
  updated immediately as the file is written. 

  Many VFSs implemented at the script level update file
  metadata only on [close], when the appropriate callback
  is called. Before closing the file, we may write 6
  bytes in it and still get [file size]==0.

  The patch presented here prevents writeIconICO from
  relying on [file size] of the newly-created file. As
  long as the ICO format is the only one that may be
  created from scratch, no issues with other formats are
  expected.


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: 1966608fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: ncgi example has 2 bugs
comment:
  To make the example on the ncgi page working:

  The following two lines are required at the beginning:
  package require ncgi
  ::ncgi::header

  Two lines later it should read:
  set filedata [::ncgi::value filedata]


tkt_uuid: 3539249fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: aes
priority: 5 Medium
foundin: None
resolution: None
title: Error in encrypting.
comment:
  Hello I am using the following tcl code 

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

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

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

  I sometimes get this error:-

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


tkt_uuid: 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: 1008619fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: None
title: htmlparse::2tree gets the HTML Doc structure wrong
comment:
  The following shows how to repeat the bug.

  $ cat wrong.tcl
   package require htmlparse
   set indent 0
   set t [struct::tree]
   set html
  {<html><head></head><body><h1>heading</h1><p>ayaken!</p></body></html>}
   proc painter {tree act node} {
          global indent
          if {$act == "enter"} then {
                  incr indent
                  puts ">[string repeat - [expr
  {$indent-1}]][$tree get $node type]"
          } else {
                  puts "<[string repeat - [expr
  {$indent-1}]][$tree get $node type]"
                  incr indent -1
          }
   }

   htmlparse::2tree $html $t
   $t walk root -order both -type dfs {act node} {painter
  $t $act $node}

   $ tclsh wrong.tcl
   >root
   >-hmstart
   >--html
   >---head
   <---head
   >---body
   >----h1
   >-----PCDATA
   <-----PCDATA
   >-----p
   >------PCDATA
   <------PCDATA
   <-----p
   <----h1
   <---body
   <--html
   <-hmstart
   <root

  You can see the p element is wrong in the hierarchy, it
  got sorted as a child of the h1 element, not, as it
  should be, as its sibling.

  I assume it's htmlparse innards which get it wrong, not
  2tree only, just a guess though.


  If there's need to contact me, I'm reachable at
  Ephaeton (at) gmx (dot) net.


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: 1695137fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: doctools
priority: 5 Medium
foundin: None
title: doctools - Misc processing ideas
comment:
  The results of the 'wordlist' and 'semantic' backends, see RFE 1695128, and RFE 1695126, can be used in lots of interesting ways. This RFE is a reminder of some of them, and the processing required.

  - spellchecking the words
  - word statistics
    -> find keywords for a document, set of documents
    (Need algorithm references which do stuff like this
     automatically - Bayes usable ?)


tkt_uuid: 1565836fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Fixed
title: ldapx man page ambiguous
comment:
  I grabbed the latest tcllib cvs snapshot from the
  activestate repository this morning. I ran the
  makefile, with a goal of installing it with tcl 8.5.

  I get this set of warnings:

  Generating /volws/lwv27/ldatae/man/mann/ldapx.n
  Manpage warning (sectambig): (Sub)Section title "Data"
  causes ambiguous section 
  references.
  Manpage warning (sectambig): (Sub)Section title
  "Options" causes ambiguous secti
  on references.
  Manpage warning (sectambig): (Sub)Section title
  "Example" causes ambiguous secti
  on references.
  Manpage warning (sectambig): (Sub)Section title "Data"
  causes ambiguous section 
  references.
  Manpage warning (sectambig): (Sub)Section title
  "Options" causes ambiguous secti
  on references.
  Manpage warning (sectambig): (Sub)Section title
  "Methods" causes ambiguous secti
  on references.
  Manpage warning (sectambig): (Sub)Section title
  "Example" causes ambiguous secti
  on references.
  Manpage warning (sectambig): (Sub)Section title "Data"
  causes ambiguous section 
  references.
  Manpage warning (sectambig): (Sub)Section title
  "Options" causes ambiguous secti
  on references.
  Manpage warning (sectambig): (Sub)Section title
  "Example" causes ambiguous secti
  on references.
  Manpage warning (sectambig): (Sub)Section title "Data"
  causes ambiguous section 
  references.
  Manpage warning (sectambig): (Sub)Section title
  "Options" causes ambiguous secti
  on references.
  Manpage warning (sectambig): (Sub)Section title
  "Methods" causes ambiguous secti
  on references.
  Manpage warning (sectambig): (Sub)Section title
  "Example" causes ambiguous secti
  on references.


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: 3389655fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tcl :: chan :: *
priority: 5 Medium
foundin: None
resolution: Fixed
title: memchan not working
comment:
  testing in tkcon produces these responses (also tested with 8.5.10)

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

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

  % package require tcl::chan::variable
  1.0.1 

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


tkt_uuid: 1815027fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib
priority: 5 Medium
foundin: None
resolution: None
title: ::tooltip::show; wrong order of window checking
comment:
  The evaluation "{!$we || (!$wm && !$wc)}" if the window exists is to late:

  -----------
  set we [winfo exists $w]
  set wc [string match $w* [eval [list winfo containing] \
                                    [winfo pointerxy $w]]]
  set wm [string equal [winfo class $w] "Menu"]
  if {!$we || (!$wm && !$wc)} {
     return
  }
  ------------

  It's after "[winfo pointerxy $w]" where it already crashes.

  Should be:
  -------------
  set we [winfo exists $w]
  if {!$we} {return}
  set wc [string match $w* [eval [list winfo containing] \
                                    [winfo pointerxy $w]]]
  set wm [string equal [winfo class $w] "Menu"]
  if {!$wm && !$wc} {
      return
  }
  -------------


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: 1273537fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: base64
priority: 3 Low
foundin: None
resolution: None
title: uuencode pad character confusion/mess
comment:
  A number of testsuites for packages which have
  accelerators are written to load and test all available
  accelerators.

  The uuencode testsuite is not written to that form yet,
  but should, as we have pure Tcl, critcl, and Trf
  accelerators.

  It is written to select one of the available
  accelerators and test that. It however gets confused if
  there are both critcl and Trf present. It loads and
  uses critcl, but some test uuencode-1.4 reacts to the
  presence of Trf and changes to expect different
  results. This mismatch causes it to fail.

  The results are in disagreement about the padding
  character. Trf uses tilde (~), and pure Tcl/critcl use
  the backtick (`). Why the difference ? Do we have a
  document providing an authoritative answer to this ?


tkt_uuid: 1007934fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: None
title: Typo in man page for struct::pool
comment:
  Example 2 for the struct::pool extension mentions:

      set fd {open "|backendApplication" w+}

  Of course, this should be:

      set fd [open "|backendApplication" w+]


  I probably had the "Caps Lock" on when typing this,

  Greetings,

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


tkt_uuid: 1928856fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: None
title: fsCmd list - no socket as parameter?
comment:
  When the fsCmd-proc is called with "list" or "nlist" as command, the third parameter should be the socket for the answer. But when i print the args-var the values are only:

  / {list {}}

  there's no socket for the Answer!


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

  * uri 1.1.5
  WARNING: removeFile removing
  "/local/src/tcllib/__testdata":
    not created by makeFile
  WARNING: removeFile removing
  "/local/src/tcllib/__testdata":
    not a file
  test name 'uri-5.14-0' re-used; prior use in
  /local/src/tcllib/modules/uri/uri.test
  WARNING: cleanupTests deleting
  /local/src/tcllib/__testdata...


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: 727678ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: stats - deprecated
priority: 5 Medium
foundin: None
resolution: Invalid
title: latest tcllib from CVS test suite has two stats module failu
comment:
  Source is 20030424 cvs snapshot from activestate ftp site.

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



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

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

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

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

  Pausing during timehist tests
  timehist 224 microseconds per iteration

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

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

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


  followed later by

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


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


tkt_uuid: 2695827fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: math :: fourier
priority: 5 Medium
foundin: None
title: Emphasise DFT vs. FFT choice up front.
comment:
  The first line says this: "The math::fourier package implements two versions of discrete Fourier transforms, the ordinary transform and the fast Fourier transform.".  That implies that both versions are available for use.  

  Reading top to bottom it sounds like there are only commands for dft (and none for fft), which is not true.

  "The math::fourier package uses the fast Fourier transform, if applicable, or the ordinary transform to implement the
  discrete fourier transform." might be more appropriate.    


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


tkt_uuid: 1482266fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Rejected
title: rejection of unknown "/..." commands
comment:
  If you mistype a command in TkChat starting with a 
  slash, you data will be sent straight to the server and 
  are visible to all. This is not good if the message was 
  intended to be a whisper of a private message. It is 
  easy to prevent these messages to come through.

  In the proc ::tkchat::checkCommand are two switch 
  statements that check for the different commands. If we 
  insert a new case in the second switch just before the 
  'default' arm (line 3234 in version 1.334 of tkchat.
  tcl), we can reject unknown commands. Here would be the 
  context with the new arm '^/.?':

        {^/back} {
      set status [string range $msg 5 end]
      tkjabber::back $status
  }
  {^/.?} {
      addSystem .txt "Unknown command: $msg"
  }
  default {
      if {![checkAlias $msg]} then {
  # might be server command - pass it on
  switch $Options(ServerLogging) {
      none {
  tkjabber::msgSend "/nolog $msg" -
                     attrs [list nolog 1]
      }
      default {
  tkjabber::msgSend $msg
      }
  }
      }
  }


tkt_uuid: 2381524fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
title: RFE: [logger] print all arguments passed to logger API
comment:
  The logger package currently prints only the last argument passed to the logger API call. See below:

  rtp-lds-016:437> tclsh
  % package require logger
  0.8
  % namespace eval foo {}
  % logger::initNamespace ::foo
  % foo::log::warn none
  [Wed Dec 03 01:49:23 AM EST 2008] [foo] [warn] 'none'
  % foo::log::warn two errors
  [Wed Dec 03 01:49:37 AM EST 2008] [two] [warn] 'errors'
  %                  

  It would be nice if the last line above had printed 'two errors' instead of just 'errors'. I suspect there could be some backwards compatibility issues, so it would be fine with me to introduce an API to enable this behavior.


tkt_uuid: 1627888fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: Networking: X/Y/Z modem transfert protocols
comment:
  Hi,

  This is used for transfering data via serial line interface.

  see:
  http://www.atariarchives.org/cfn/12/02/0033.php

  http://synchro.net/docs/sexyz.txt


tkt_uuid: 3252952fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: coroutine
priority: 5 Medium
foundin: None
resolution: Fixed
title: Coroutine package overwrites core ::coroutine command
comment:
  The coroutine package creates a new command (via [namespace ensemble create]) which clashes with the core ::coroutine command.
  Possible solutions:
  * Move the original ::coroutine command to the ::coroutine namespace first.
  * Use the -command option of [namespace ensemble create] to change the name of the created ensemble.
  * Rename the ::coroutine namespace altoghether.


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

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

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

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

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


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

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

  Then if I add the following to the text widget:

  This is a test
  # This is a test
  foo


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

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


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


tkt_uuid: 2376321fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: bug in fileutil::TempDir
comment:
  I believe I spotted a bug in fileutil::TempDir for $tcl_platform(platform) eq macintosh. Here is the excerpt:

  macintosh {
      set tmpdir $env(TRASH_FOLDER)  ;# a better place?
  }

  But the variable tmpdir is nowhere used. Probably it should be:

  macintosh {
      lappend attempdirs $env(TRASH_FOLDER)
  }


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

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


tkt_uuid: 2123233fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: yaml
priority: 5 Medium
foundin: None
resolution: Fixed
title: bad [string first|last] syntax?
comment:
  This code in [::yaml::_getFoldedString]
  looks suspcious:

   if {[string first $token "\n"] >= 0} { ; # multi-line
       set data(current) [expr {$len - [string last $token "\n"]}]


  I suspect the arguments have their
  order incorrect.  They should follow
  the pattern:

   string first $needle $haystack

  Searching for $token in the string "\n"
  doesn't look right.  If it is right, a
  comment of explanation would help.


tkt_uuid: 3608952fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tepam
priority: 3 Low
foundin: None
resolution: Fixed
title: TEPAM: Help text incorrect for procedures in namespaces
comment:
  The help text for a procedure that is part of a namespace is incorrectly generated. Example:

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

  ns::MyProc -help

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

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

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

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


tkt_uuid: 737162ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Accepted
title: prevent infinite loop on unterminated multipart
comment:
  in mime.tcl, change
  set line "--$boundary--"
  to
  set x [string length [set line "--$boundary--"]]
  (apparently works, and not setting x is obviously faulty)

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


tkt_uuid: 1274322fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: Support for pastebin and similar sites
comment:
  Consider the possibility of adding support for sites
  like pastebin, etc. into tkchat. Not sure about the
  interface. Maybe a Post button which puts the sata into
  pastebin, etc. and then posts only the link to the
  chat. That way a user can paste something large to post
  into the chat UI and then through pastebin instead of
  doing the indirection manually.


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

  * struct::queue 1.4
  test name 'queue-8.3' re-used; prior use in
  /local/src/tcllib/modules/struct/queue.test


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: 3027371fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Build System & Testing
priority: 5 Medium
foundin: None
resolution: Fixed
title: incorrect module name added to modules.tcl
comment:
  When I attempted to install the cvs head of tcllib today, obtained from the cvs ftp site at activestate, the attempt failed. The problem was that the support/installation/modules.tcl file had the following line added to it:
  Module  imap        _tcl  _man  _null

  The correct line should have been

  Module  imap4        _tcl  _man  _null


tkt_uuid: 1695129fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: doctools
priority: 5 Medium
foundin: None
title: doctools - Add backend 'Tk'
comment:
  Create a backend similar to plain text which also adds tags to character ranges and returns the combination in a format which makes inserting into a Tk Text widget easy.


tkt_uuid: 1985214fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: Typos in Quick Help and command parser
comment:
  Hi Pat

  I found two typos in revision 1.432: 1. the explanation of /whisper is wrong and 2. /back does currently not accept a status, due to a wrong regexp.

  Patch attached.

  kind regards
  -- Matthias Kraft


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

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


tkt_uuid: 1448424fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: Balloon help not removed when window closes.
comment:
  I think DynamicHelp::_unset_help is missing a call to
  "destroy $_top" (and "variable _top".
  As the following code can show, the balloon with the
  help message is not removed if Alt-d is used to destroy
  the widget to which the help is bound. Just hover the
  mouse over the Entry so that the balloon appears and
  then hit Alt-d.

  m.d.nauta@hetnet.nl

  package require BWidget
  Entry .e -helptext "This is helptext"
  button .b -text "Destroy Entry" -underline 0 -command
  {destroy .e}
  pack .e .b
  bind . <Alt-d> {destroy .e}


tkt_uuid: 932437ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: dns
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: dns::error not compatible with prodebug
comment:
  eventhough [error] is in the dns namespace, prodebug 
  doesn't like it.  Please rename it to something other than 
  a reserved name.


tkt_uuid: 1376637fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: textutil :: expander
priority: 7 High
foundin: None
resolution: Fixed
title: cpush/cpop failure
comment:
  While doing some HTML automatic generation, a problem
  appeared with the Context Stack:
   textutil::expander pc
   ::pc expand {[::pc cpush texte][::pc cpop texte]}

  creates an error:

   ::pc cget: char doesn't exist at that context (2)

  I fixed it by patching the Op_cpush proc like this :

  proc ::textutil::expander::Op_cpush {name cname} {
      # FRINK: nocheck
      incr [Var level]
      # FRINK: nocheck
      set [Var output-[Get level]] {}
      # FRINK: nocheck
      set [Var name-[Get level]] $cname
      # the first level is init'd elsewhere
      if {[set [Var level]]<2} {
          return
      }
      # important stuff here
      LocInit $cname
      catch {LocSet $cname [LocGet $name]}
      
  }

  and it did work then!


tkt_uuid: 685270ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: README documentations requirement?
comment:
  the README, v 1.3 says:

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


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


tkt_uuid: 455732ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mclistbox
priority: 5 Medium
foundin: None
resolution: Fixed
title: selection breaks if 1st column invisible
comment:
  Version info:
  wish: 8.3.3
  mclistbox: 1.02 (and the cvs version)

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

  The following snippet produces the error:

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

  set lb [mclistbox .lb]

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

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

  pack $lb
  ---snip---

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

  Moving the invisible column to the end fixes it.

  Happy bughunting,

  Ric


tkt_uuid: 476729ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: documentation bug regarding DisplayMsg
comment:
  andreas kupries requested that i log this doc bug
  against ftp.  Additional information about the
  DisplayMsg aspects of the ftp module are available at
  http://mini.net/cgi-bin/wikit/2444.html .  These are
  needed in the man page.


tkt_uuid: 532677ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: new tkchat smiley proposed
comment:
  I would like to submit this diff for adding the blush
  smiley.  The image is from the tik tcl/tk aol IM
  browser, but is similar to the h2h one, etc.

  The code is a bit messy because of the } that I used in
  the ascii smiley.  There are inconsistent variations
  for expressing a blush - I chose a set from I think a
  java class I found while googling.


tkt_uuid: 2015992fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: tooltip
priority: 5 Medium
foundin: None
resolution: Fixed
title: Too many events in canvas
comment:
  Function tooltip::enableCanvas is called for every tooltip assigned to every item.

  It does:

  $w bind all <Enter> +[namespace code [list itemTip $w]]
  .....

  So it adds a command to the binding for every item. It is not correct. The solution is to check if the canvas has already been enabled:

  proc ::tooltip::enableCanvas {w args} {
      
      if { [string first itemTip [$w bind all <Enter>]] != -1 } { return }
      $w bind all <Enter> +[namespace code [list itemTip $w]]
      $w bind all <Leave>        +[namespace code [list hide 1]] ; # fade ok
      $w bind all <Any-KeyPress> +[namespace code hide]
      $w bind all <Any-Button> +[namespace code hide]
  }


tkt_uuid: 2444762fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: None
title: Mozilla 3.x breaks ncgi::nvlist
comment:
  Somewhere in the 3.x release Mozilla appends a character set on GET requests, which in turn breaks the parsing of env(CONTENT_TYPE), which in turns makes tclhttpd return "dont know how to handle "application/x-www-form-urlencoded; charset=XXX""

  This hack bypasses it, but maybe there's a better way to do it...

  proc ::ncgi::nvlist {} {
      set query [query]
      set type  [type]
      #Quick hack by nikos to overcome Mozilla 3.x which appends charset=xxx to env(CONTENT_TYPE)
      # returning a list, e.g. application/x-www-form-urlencoded; charset=UTF-8
       if {[string match "*;"  [lindex $query 0]]} {
  # set type "application/x-www-form-urlencoded"
  set type "[lindex $query 0]"
  set type "[lindex [split $type ";"] 0]"
  } else {
  }
      #end nikos
      switch -glob -- $type {
  "" -
  text/xml* -
  application/x-www-form-urlencoded* -
  application/x-www-urlencoded* {
      set result {}
          ...........
          ..........  


tkt_uuid: 704219ffffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: doctools
priority: 5 Medium
foundin: None
title: doctools - HTML customization features
comment:
  (Hope I'm not just missing something)

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

  Is there a plan for customizability of HTML?

  Cheers,
  Roy Terry


tkt_uuid: 1891251fffffffffffffffffffffffffffffffff
type: Patch
status: Open
subsystem: tklib: plotchart
priority: 5 Medium
foundin: None
resolution: None
title: Support of long ylabels in horizontal bar charts
comment:
  Hi,
  The goal of this patch is to take into account for long y labels in an horizontal plotchart.
  I have allread discussed that problem on comp.lang.tcl where the solution has been suggested by other Tclers :
  http://groups.google.com/group/comp.lang.tcl/browse_thread/thread/ab5ee289991f81f/6821b6d40899d276?lnk=gst&q=plotchart#6821b6d40899d276
  The problem is that, when long labels are to be displayed, some are hidden because there is no space left on the canvas.
  The patch is fixing the problem by computing the longest y label to display : this allows to set the view accordingly.
  The problem is located in the file plotchart.tcl, in the proc "::Plotchart::createHorizontalBarchart".
  The following code takes into account for the size of the current default font used in the barchart and is not perfect because Plotchart does not take into account the fonts yet.

     label .invisibleLabel
     set fontname [.invisibleLabel cget -font]
     destroy .invisibleLabel
     
     set xspacemax 0
     foreach ylab $ylabels {
         set xspace [font measure $fontname $ylab]
         if {$xspace> $xspacemax} then {
             set xspacemax $xspace
         }
     }
     set text_width [expr {int ( $xspacemax / 10.) + 1}]

     foreach {pxmin pymin pxmax pymax} [MarginsRectangle $w $notext $text_width] {break}

  Best regards,

  Michaël


tkt_uuid: 868315ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: Dialog widget hangs in BWidget 1.7
comment:
  When I issue the "draw" command to a Dialog widget in
  BWidget 1.7, the entire application hangs.  

  I am using ActiveTcl 8.4.5 on WinXP Pro.

  The code below illustrates the error.  Switching to
  BWidget 1.6 makes it work.
   

   # DialogTest.tcl
   #
   # A test of the BWidget Dialog widget.

   package require -exact BWidget 1.7

   button .b -text "Dialog" -command {ShowDialog}
   pack .b

   proc ShowDialog {args} {
  Dialog .prompt \
  -title {???} \
  -parent .b \
  -place above

  label .prompt.label -text "This is a dialog!\nDid it
  work?"

  pack .prompt.label

  .prompt add -text Okay -command {.prompt enddialog Okay}
  .prompt add -text Cancel -command {.prompt enddialog
  Cancel}

  set Prompt [.prompt draw]

  destroy .prompt
   }
   


tkt_uuid: 1213123fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: DropSite::register fails with multiple droptypes
comment:
  If you specify multiple droptypes to DropSite::register
  and one of the later droptypes does not contain all of
  the operations that an earlier type supported, the
  command will cause an error:

  toplevel .f
  frame .f.fr
  DropSite::register .f.fr -dropcmd foo -dropovercmd bar
  -droptypes {ABC {copy {} move {}} DEF {copy {}}}

  can't read "drop(DEF,mod,4)": no such variable

  I'm not sure about the BWidget drag'n'drop internals,
  but I believe the problem is caused by the failure to
  clear the "masklist" variable in dropsite.tcl:

  --- ..\lib\BWidget-1.7.0\dropsite.tcl   2004-01-23
  10:31:48.000000000 -0800
  +++ C:\Program
  Files\Fs2\Mips\Lib\BWidget-1.7.0\dropsite.tcl   
  2005-06-01 15:53:24.708250000 -0700
  @@ -150,6 +150,7 @@
           set drop(overcmd) $overcmd
           foreach {type ops} $types {
               set drop($type,ops) {}
  +            set masklist {}
               foreach {descop lmod} $ops {
                   if { ![llength $descop] || [llength
  $descop] > 3 } {
                       return -code error "invalid
  operation description \"$descop\""


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: 1335320fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: uri
priority: 5 Medium
foundin: None
resolution: Fixed
title: Missing documentation of constituents
comment:
  The uri::split command is documented as splitting an URI into its 
  constituents but does not specify what these are. It would be 
  useful to have them documented in the same place so one would 
  not need to guess or look up from the RFC and base on that.


tkt_uuid: 514475ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 8
foundin: None
title: request to add listx to tcllib
comment:
  listx is a project by one or more of the Tcl community
  to create an integrated list handling command for tcl.
  It would consist of a superset of (all?) commonly
  existing extension Tcl list handling functions.  See
  http://www.purl.org/net/akupries/tcltk.html for details
  .


tkt_uuid: 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: 737770ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: csv
priority: 8
foundin: None
title: add example of alternate parsing to csv docs
comment:
  with the latest version of csv, there is now two
  behaviors with regards to the string "" .

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


tkt_uuid: 2002489fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: treeql
priority: 1 Zero
foundin: None
resolution: None
title: tree-tcl test 4.4.17 in test suite - error msg difference
comment:
  I'm using the latest activestate cvs head snapshots of tcl 8.6 and tcllib on Solaris 2.8 SPARC. The test suite message is:
  ---- tree-tcl-4.4.17 start

  ==== tree-tcl-4.4.17 error in walk FAILED
  ==== Contents of test case:

      set t [list ]
      proc foo {} {
          global t
          tree mytree
          mytree insert root end 0 1 2 3
          mytree insert 0 end a b c
          lappend t ==
          mytree walk root {a n} {
              if {[string equal $n "b"]} {
                  lappend t .
                  error fubar
              }
              lappend t $a $n
          }
          lappend t ==
          return bad-return
      }
      catch {lappend t [foo]} result
      mytree destroy
      list $t $result $::errorInfo

  ---- Result was:
  {== enter root enter 0 enter a .} fubar {fubar
      while executing
  "error fubar"
      ("WalkCall" body line 4)
      invoked from within
  "WalkCall $avar $nvar $name $node "enter" $script"
      (procedure "::struct::tree::_walk" line 88)
      invoked from within
  "::struct::tree::_walk ::mytree root {a n} {
              if {[string equal $n "b"]} {
                  lappend t .
                  error fubar
              }
              lappend t $a $n
          }"
      ("_walk" body line 1)
      invoked from within
  "mytree walk root {a n} {
              if {[string equal $n "b"]} {
                  lappend t .
                  error fubar
              }
              lappend t $a $n
          }"
      (procedure "foo" line 7)
      invoked from within
  "foo"}
  ---- Result should have been (exact matching):
  {== enter root enter 0 enter a .} fubar {fubar
      while executing
  "error fubar"
      invoked from within
  "if {[string equal $n "b"]} {
                  lappend t .
                  error fubar
              }"
      ("WalkCall" body line 2)
      invoked from within
  "WalkCall $avar $nvar $name $node "enter" $script"
      (procedure "::struct::tree::_walk" line 88)
      invoked from within
  "::struct::tree::_walk ::mytree root {a n} {
              if {[string equal $n "b"]} {
                  lappend t .
                  error fubar
              }
              lappend t $a $n
          }"
      ("_walk" body line 1)
      invoked from within
  "mytree walk root {a n} {
              if {[string equal $n "b"]} {
                  lappend t .
                  error fubar
              }
              lappend t $a $n
          }"
      (procedure "foo" line 7)
      invoked from within
  "foo"}
  ==== tree-tcl-4.4.17 FAILED


tkt_uuid: 2028993fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Accepted
title: ::htmlparse::mapEscapes doesn't handle the &apos; entity
comment:
  &apos; is not a valid HTML entity [1] but it is valid in XML [2].

  XHTML is supposed to be valid XML, W3C says [3]:
  > The named character reference &apos; (the apostrophe,
  > U+0027) was introduced in XML 1.0 but does not appear
  > in HTML. Authors should therefore use &#39; instead of
  > &apos; to work as expected in HTML 4 user agents.

  The point here is &apos; might be used in XHTML pages (not everybody follows W3C advices, this is real world), and anyway ::htmlparse::mapEscapes might be used on XML trees, so I think it should handle &apos; as well.

  How to reproduce:
  Use ::htmlparse::mapEscapes on a string containing '&apos;'.

  Actual result:
    % package require htmlparse
    1.1.2
    %  ::htmlparse::mapEscapes { J.D.&nbsp;&apos;Boss&apos;&nbsp;Hogg }
     J.D. &apos;Boss&apos; Hogg

  Expected result:
  Map the &apos; entity to an apostrophe:
    %  ::htmlparse::mapEscapes { J.D.&nbsp;&apos;Boss&apos;&nbsp;Hogg }
     J.D. 'Boss' Hogg

  [1] http://www.w3.org/TR/html4/sgml/entities.html
  [2] http://www.w3.org/TR/REC-xml/
  [3] http://www.w3.org/TR/xhtml1/#C_16


tkt_uuid: 513320ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget PanedWindow problem
comment:
  When using the PanedWindow with the '-weights
  available' argument, and panes get added after the
  PanedWindow is realised (got Configure event),  the
  weights are no longer honoured.


tkt_uuid: 2848168fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: crc
priority: 9 Immediate
foundin: None
resolution: None
title: signmask incorrect in ::crc::Crc and ::crc::Crc32_tcl
comment:
  Both crc16.tcl and crc32.tcl use a variable named "signmask", that is constructed from another variable named "signbit".

  For 32-bit data, signbit is 0x8000000.

  For 32-bit CRCs, the signmask appears to be designed to mask off the high-byte, i.e. it should end up 0x00ffffff.  Signmask is computed as follows:

  set signmask [expr {~$signbit>>7}]

  Unfortunately when you paste this code into Tcl, (V8.4.14, V8.5.*, V8.6.*) you don't get 0x00FFFFFF, you get 0xFEFFFFFF.

  Now, this is *probably* a bug in EXPR or in the >> operator, but the code does not work the way it is currently written....


tkt_uuid: 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: 1173444fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: dns
priority: 5 Medium
foundin: None
resolution: Fixed
title: dns::resolve says - can't read "tok": no such variable
comment:
  From: bbame@umm.edu

  I've been exec-ing nslookup (and digging through the 
  result) to do dns lookups in one of my tcl apps for quite 
  a while.  Obviously that's not ideal, so I wanted to 
  replace that code with calls to the dns package.

  Below is tclsh output that shows the problem I've been 
  having...

  [note: the nameserver address and the name of the host 
  I tried to resolve have been replaced by bogus info.  Rest 
  assured that when I tried it both were valid and correct.]

  % package require dns
  1.2.1
  % dns::configure -nameserver 1.2.3.4
  % set xyz [dns::resolve some.host]
  can't read "tok": no such variable
      while executing
  "Finish $tok "Event error: $err""
      (procedure "::dns::TcpEvent" line 35)
      invoked from within
  "::dns::TcpEvent ::dns::1"

  Thinking this might be a behavior specific to 1.2.1 I tried 
  the version in the "stock" tcllib 1.7 package (1.2.0) and 
  got the same error.  Finally I attempted to use 1.1 but 
  still got the same error.

  My second theory was that this might be a Solaris-
  specific bug, so I loaded tcllib 1.7 on my Mandrake 
  Linux box (version 10.0).  Got the same error there too.

  Finally I took a look at dns.tcl and noticed that the 
  variable name should probably be $token not $tok, so I 
  modified the code accordingly (by changing all 
  occurances of "Finish $tok" to "Finish $token".  After 
  the changes this is what happened...

  % package require dns
  1.2.1
  % dns::configure -nameserver 1.2.3.4
  % set xyz [dns::resolve some.host]
  ::dns::1
  % dns::address $xyz
  can't read "hdr": no such variable

  I could probably debug and fix this error, too.  Perhaps 
  another variable was renamed without touching all 
  occurances, but instead I thought it might be a better 
  idea to simply report this as a bug and see what 
  happens.

  In the mean time I guess I'm stuck with "exec nslookup".

  Thanks!

  bbame@umm.edu


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: 1844111fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
title: snitfaq: $self destroy restrictions?
comment:
  I've encountered a situation where it seems reasonable that 
  a snit object initiates its own destruction: The object manages 
  a channel and has an internal queue of messages to transmit. 
  A soft shutdown of the communication would then means that 
  the object owner stops calling it, but the object itself should 
  hang around for as long as it takes to work through the queue, 
  and only then destroy itself.

  The catch is, I find nothing in the documentation about 
  whether an object method is allowed to call $self destroy, 
  although my gut feeling is that this might be asking for trouble. 

  For now, I'll probably do is as
    after 0 [mymethod destroy]
  instead, as I'm anyway running an event loop for the I/O, but 
  if there is some more elementary solution, then it would be 
  nice to learn about it.


tkt_uuid: 1668587fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget MessageDlg, -type user overrides default buttonwidth
comment:
  The MessageDlg overrides user defined defaults when used with the option: -type user. For example:

  % option add *Button.width 10 100
  % MessageDlg .msgdlg -type user -buttons {ok cancel} \
        -message "whatever"

  then these defaults are picked up, but overridden by the message box to become -width 0, as testifies:

  % .msgdlg.bbox.bo configure -width
  -width width Width 10 0


tkt_uuid: 1886577fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: swaplist
priority: 5 Medium
foundin: None
resolution: None
title: swaplist fails if reorder == 0
comment:
  If option -reorder is set to 0, an error is thrown when the last item is moved to the right listbox.
  Example code:
  ============================
  package require swaplist

  if {[swaplist::swaplist .slist opts "1 2 3 4 5 6 7 8 9" "1 3 5" -reorder 0]} {
      puts "user chose numbers: $ops"
  }
  ============================
  Error message:
  can't read "new": no such variable
      while executing
  "foreach x $new {$to selection set $x}"
      (procedure "::swaplist::ShiftRNoReorder" line 12)
      invoked from within
  "::swaplist::ShiftRNoReorder .slist {1 2 3 4 5 6 7 8 9}"
      invoked from within
  ".slist.lr.right invoke"
      ("uplevel" body line 1)
      invoked from within
  "uplevel #0 [list $w invoke]"
      (procedure "tk::ButtonUp" line 22)
      invoked from within
  "tk::ButtonUp .slist.lr.right"
      (command bound to event)

  Patch attached.


tkt_uuid: 747674ffffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: ftp
priority: 5 Medium
foundin: None
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: 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: 1171533fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Rejected
title: ScrolledWindow/Notebook widgets result in hang
comment:
  Hi,

  The following code results in a "hang" state with
  BWidget1.7 on solaris2.8/tcl8.4 when "update idletasks"
  is called. 

      package require BWidget
      set swg [ScrolledWindow .swg]
      set wg [NoteBook $swg.nb]
      pack $wg -fill both -expand 1 ;# use of grid
  instead of pack resolves this issue
      update idletasks ;# it hangs here

  The same code works fine with BWidget1.4.1. After some
  debugging, I found out that the problem sees to occur
  due to changes commited to 1.5 version of scrollw.tcl file:

  ----------------------------
  revision 1.5
  date: 2003/02/25 09:51:03;  author: hobbs;  state: Exp;
   lines: +108 -180
          * scrollw.tcl: complete rewrite of
  ScrolledWindow widget to
          address infinite loop scrollbar problems.  This
  one is much
          simpler and does not suffer the infinite loop.
   There still seems
          to be an issue with shrinking smaller than one
  scrollbar width /
          height in size, but that's not common (nor
  fatal).  Addresses
          [Patch #671821, #520903] [Bug #472718, #564691]
  ----------------------------

  Am I facing the shrinking issue mentioned in this log
  message?


  Hemang.


tkt_uuid: 781246ffffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: ftp
priority: 4
foundin: None
title: Support SSL connections in FTP package
comment:
  would be nice to include an option in ftp::open to use 
  tls or not. i am sure u guys can tell me how to make it 
  work without having to wait for next version :)


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

  Thanks


tkt_uuid: 1660234fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: ico
priority: 5 Medium
foundin: None
resolution: Fixed
title: Bugs in ico::getFileIcon
comment:
  There are a few errors in ico.tcl which stop ico::getFileIcon from working correctly for me. I've put a revised copy of it below, with the changes commented, and the problems I was getting without those changes...

  proc ::ico::getFileIcon {file args} {
      set ext [file extension $file]
      if {[catch {registry get HKEY_CLASSES_ROOT\\$ext ""} doctype] || \
          [catch {registry get HKEY_CLASSES_ROOT\\$doctype\\DefaultIcon ""} icon]} {
          set icon "%SystemRoot%\\System32\\shell32.dll,0"
      } ;# (1)
      set index [lindex [split $icon ,] 1]
      set icon [lindex [split $icon ,] 0]
      if {$index == ""} { set index 0 }
      set icon [string trim $icon "@'\" "]
      while {[regexp -nocase {%([a-z]+)%} $icon -> var]} {
          set icon [string map [list %$var% $::env($var)] $icon] ;# (2)
      }
      set icon [string map [list %1 $file] $icon]
      if {$index < 0} {
          if {![catch {eval [list getIconByName $file [string trimleft $index -]] $args} output]} {
              return $output
          }
          set index 0
      }
      return [eval [list getIcon $icon [lindex [icons $icon] $index]] $args] ;# (3) and (4)
  }


  (1) There was an extra period before the $ext in the if which caused it to fail to find all file extensions
  (2) The patterns to map were quoted, instead of using [list], which caused backslashes in the paths to be removed, breaking them and preventing the files from being found correctly later on
  (3) The [list] was closed after the $args, instead of before, so the $args didn't expand properly, and getIcon was throwing errors like 'unknown option "res 32"'
  (4) Changed both uses of $file to $icon, otherwise you get "unsupported file type <type>" errors for everything but .exe, .ico and .dll (ie, files which actually contain icons themselves, rather than having an icon registered for them in the registry)

  With those changes, it works without any problems (tested with a half-dozen different file types, including files containing icons (.exe and .ico), and ones which don't (.tcl, .txt, .pub, .hlp, .fakeFileType), all of which showed the right icon, with no options and with -res 32). All of this is on Windows XP Home SP2, incidently:

  % parray tcl_platform
  tcl_platform(byteOrder) = littleEndian
  tcl_platform(machine)   = intel
  tcl_platform(os)        = Windows NT
  tcl_platform(osVersion) = 5.1
  tcl_platform(platform)  = windows
  tcl_platform(user)      = User
  tcl_platform(wordSize)  = 4

  Hope that's some help,
  Mike Griffiths (talvo@talvo.com)


tkt_uuid: 2192812fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: inifile
priority: 5 Medium
foundin: None
resolution: Out of Date
title: commentchar function not defined in ini namespace
comment:
  man page for inifile has the commentchar function as 

  ini::commentchar ?char? 

  but code has 

  proc commentchar { {new {} } } { ..

  need to change the above line to : 


  proc ::ini::commentchar { {new {}} } {

  in inifile.tcl


tkt_uuid: 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: 1104059fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: pop3
priority: 3 Low
foundin: None
title: Allow easy use of TLS with pop3
comment:
  As more and more services allow to use POP3 with
  SSL/TLS it would be a nice move to support SSL within
  the POP3 package.

  For SSL enabled servers listening only on an SSL port
  this is trivial, just use the tls::socket instead of
  the normal one for the connect.

  Using the POP3 STLS Command (StartTLS), is a bit more
  complex, but not that hard to do, its just an extra
  step in authentification and some logic to do a
  tls::import on the open channel.

  Michael


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

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

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


  The _path_command should be updated to

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

  Best regards,

  Michaël


tkt_uuid: 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: 3035014fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: uuid
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: "uuid::generate" returns binary data
comment:
  UUID 1.0.1 returns binary data and not a string representation of the UUID:
          % package require uuid
          1.0.1
          % uuid::generate
          ß4:GjK@QÐ2E`Á

  http://tcllib.sourceforge.net/doc/uuid.html


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

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

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

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

  Regards


tkt_uuid: 1584235fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: None
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: 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: 873666ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: scrollw.tcl does not support -relief
comment:
  BWidget's ScrolledWindow does not support options
  -relief and -bd at creation time

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


tkt_uuid: 1475567fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: tklib: plotchart
priority: 5 Medium
foundin: None
title: interaction with elements of the plots
comment:
  it would be nice if one could interact with the 
  plotted data
  - click on a rectangle and get the data associated 
  with it
  - change the look of a rectangle (i.e. for let them 
  blink)


tkt_uuid: 1007762fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: ctext
priority: 5 Medium
foundin: None
resolution: Fixed
title: Several options not working as expected in ctext widget
comment:
  I ran into a few oddities while using ctext to create a
  syntax-sensitive editor:

  After creation:

  .c configure -linemap 0 ==> unknown option 

  While creating the widget:
  -font has no effect (it is suppressed) but afterwards
  it does have. It seems to me unnecessary to suppress
  this option.


tkt_uuid: 1000259fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: win98 demo->DIalog Tab->Abort,Retry,Ignore->Show -- Fails
comment:
  win98 demo->DIalog Tab->Abort,Retry,Ignore->Show -- 
  Fails

  Windows98
  BWidget 1.7 (ActiveTcl 8.5.0.0 beta-2)

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


tkt_uuid: 843932ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Line continuation missing in entry.tcl
comment:
  In the cvs from 2003-11-10, the is a line continuation 
  missing in file entry.tcl in function Entry::create.

  The diff is:

  112c112
  <             -foreground [Widget::getMegawidgetOption 
  $path -disabledforeground]
  ---
  >             -foreground [Widget::getMegawidgetOption 
  $path -disabledforeground]\


tkt_uuid: 940375ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Duplicate
title: tcllib 1.6 install error due to doc. generation bug
comment:
  There is a problem generating the nroff documentation,
  which causes the installation of tcllib 1.6 to fail.

  In detail: When selecting the "Doc. Nroff" checkbox in
  the installer GUI, keeping "Simulate installation" off,
  and clicking on "Install", I get this output and error
  message:

  <47 triton->tcllib-1.6> wish installer.tcl 
  Installing Tcllib 1.6
  You have chosen the following configuration ...

  Packages:      install/lib/tcllib1.6
  Examples:      install/bin/tcllib_examples1.6
  Documentation:

          NROFF:  install/man/mann
          HTML:   install/lib/tcllib1.6/tcllib_doc

  Error in startup script: @--> invalid command name "option"
      while executing
  "::doctools::_format dt {[comment {-*- tcl -*- doctools
  manpage}]
  [comment { $Id: s.multiplexer.man 1.4 04/02/10
  23:36:58-08:00 tcl@bluepeak.home $ }]
  ..."
      ("eval" body line 1)
      invoked from within
  "eval [list ::doctools::_$cmd $name] $args"
      (procedure "::doctools::DoctoolsProc" line 15)
      invoked from within
  "dt format [get_input $f]"
      (procedure "_man" line 17)
      invoked from within
  "_man multiplexer nroff n install/man/mann"
      ("eval" body line 1)
      invoked from within
  "eval $guide($m,$type) $m $args"
      (procedure "xinstall" line 4)
      invoked from within
  "xinstall doc nroff n    $config(doc,nroff,path)"
      (procedure "doinstall" line 18)
      invoked from within
  "doinstall"
      (procedure "main" line 11)
      invoked from within
  "main"
      (file "installer.tcl" line 484)


  My wish shell is v8.4.5. This error happens whether I'm
  on Solaris or on Linux. The error seems to be caused by
  a problem encountered when processing the
  multiplexer.man documentation file. The same error also
  occurs for graph.man and struct_tree.man (both in
  module struct).

  These errors did not occur in tcllib 1.4.

  It would be good to fix this since it is somewhat
  frustrating for users to have the installation fail
  halfway through.

  I am not familiar with doctools or the doctools
  documentation format, but hopefully someone who is can
  identify the source of the problem from these symptoms.


tkt_uuid: 3490008fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: grammar_peg
priority: 5 Medium
foundin: None
resolution: Fixed
title: nonterminal delete does not work
comment:
  When I try to do a [$grammar nonterminal delete SymbolName] I get the following error:

  can't read "nt": variable is array

  Looking at the code in CVS, this looks like the culprit.  I have not had time to test this theory:

  ...
  322method NtDelete {nts} {
  323 set references $re($nt)
  ...


tkt_uuid: 1879627fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 5 Medium
foundin: None
resolution: Duplicate
title: struct::list test suite case failure
comment:
  tcl 8.5.1 cvs head
  tcllib cvs head
  sparc solaris 9


  ---- assign-4.4 start

  ==== 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

  ---- repeat-4.1 start

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

      catch {repeat} msg
      set msg

  ---- Result was:
  wrong # args: should be "::struct::list::Lrepeat positiveCount value ?value ...?
  "
  ---- Result should have been (exact matching):
  wrong # args: should be "lrepeat positiveCount value ?value ...?"
  ==== repeat-4.1 FAILED

  ---- repeat-4.2 start

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

      catch {repeat a} msg
      set msg

  ---- Result was:
  wrong # args: should be "::struct::list::Lrepeat positiveCount value ?value ...?
  "
  ---- Result should have been (exact matching):
  wrong # args: should be "lrepeat positiveCount value ?value ...?"
  ==== repeat-4.2 FAILED


tkt_uuid: 3147481fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: find error on hidden, unreadable directory in Windows
comment:
  I am using ActiveTcl 8.5.9.1 on Windows XP SP3.

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

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

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


tkt_uuid: 1510449fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: None
priority: 5 Medium
foundin: None
title: Feature request: Robots exclusion rules parser/checker
comment:
  It would be nice to see an extension that allows
  parsing of a webserver's robots.txt file to see if our
  client is allowed to access a specific resource. Such
  an extension should return a boolean value.

  This feature would prove very useful when making web
  spiders (in general, web clients requiring no user
  interaction).


tkt_uuid: 1438365fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: comm
priority: 5 Medium
foundin: None
resolution: None
title: possible error condition when port in use
comment:
  In line 632, there is a possible error condition with
  the command "rename $chan {}". 

  I've run into a case (with a user-defined port and
  channel) in which the user-defined port is in use (by
  an outside application), but the channel doesn't exist.
  In this case, the "rename $chan {}" errors out:
  can't delete "::test": command doesn't exist.

  But the real error should be that the port is already
  in use (line 634).

  This can be fixed by verifying that the channel exists
  before trying to do a rename (in line 631 for example).


tkt_uuid: 603924ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
title: add getall / keys / keyexists to graph
comment:
  As the graph object stores data exactly like nodes and
  arcs do, it would be more symetric to have the extra
  subcommands, that were added to nodes and arcs.

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


tkt_uuid: 1651842fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: bwidget
priority: 5 Medium
foundin: None
title: notebook: -raisecmd should be able to forbid raising
comment:
  if the command associated with -leavecmd returns 0, the page is not left. (BTW, there's a spelling mistake in the docs :)) Thus I can make some checks whether I want to allow the user to move on..


  The same should be true for the -raisecmd.. if it returns 0, don't raise the page, but stay where you are instead..


  I had a brief look at noteboo.tcl (bwidget 1.8) and simply copied the code used at -leavecmd

  % diff notebook.tcl.ori notebook.tcl
  697c697,700
  <           uplevel \#0 $cmd
  ---
  >             set code [catch {uplevel \#0 $cmd} res]
  >             if { $code == 1 || $res == 0 } {
  >                 return -code $code $res
  >             }


  this kinda works.. if the command returns 0 the tab is not raised, however, the tab I was at before now does not appear selected anymore..



  Just an idea :)


tkt_uuid: 3039090fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: asn
priority: 5 Medium
foundin: None
resolution: Accepted
title: asn::asnGetBigInteger returns incorrect value
comment:
  % package require asn
  0.8.3
  % set data "\x02\x03\x01\x00\x01"; asn::asnGetBigInteger data val; puts [::math::bignum::tostr $val]
  -65535
  % set data "\x02\x03\x81\x00\x01"; asn::asnGetBigInteger data val; puts [::math::bignum::tostr $val]
  -8323071


  Correct values of those ASN.1 sequences are 65537 and -8323071.  I suspect this is an issue with misinterpreting X.690:
          8.3.3      The contents octets shall be a two's complement binary number equal to the integer value, and consisting of
          bits 8 to 1 of the first octet, followed by bits 8 to 1 of the second octet, followed by bits 8 to 1 of each octet in turn up to
          and including the last octet of the contents octets.
              NOTE ­ The value of a two's complement binary number is derived by numbering the bits in the contents octets, starting with bit
              1 of the last octet as bit zero and ending the numbering with bit 8 of the first octet. Each bit is assigned a numerical value of 2N,
              where N is its position in the above numbering sequence. The value of the two's complement binary number is obtained by
              summing the numerical values assigned to each bit for those bits which are set to one, excluding bit 8 of the first octet, and then
              reducing this value by the numerical value assigned to bit 8 of the first octet if that bit is set to one.


  A working implementation:

  proc ::asn::asnGetBigInteger {data_var bignum_var} {
      # require math::bignum only if it is used
      package require math::bignum

      # Tag is 0x02. We expect that the length of the integer is coded with
      # maximal efficiency, i.e. without a prefix 0x81 prefix. If a prefix
      # is used this decoder will fail.

      upvar $data_var data $bignum_var bignum

      asnGetByte   data tag

      if {$tag != 0x02} {
          return -code error \
              [format "Expected Integer (0x02), but got %02x" $tag]
      }

      asnGetLength data len
      asnGetBytes  data $len integerBytes

      binary scan [string index $integerBytes 0] H* hex_head
      set head [expr 0x$hex_head]
      set replacement_head [expr $head & 0x7f]
      set integerBytes [string replace $integerBytes 0 0 [format %c $replacement_head]]

      binary scan $integerBytes H* hex

      set bignum [math::bignum::fromstr $hex 16]

      if {($head >> 7) && 1} {
          set bigsub [math::bignum::pow [::math::bignum::fromstr 2] [::math::bignum::fromstr [expr ($len * 8) - 1]]]
          set bignum [math::bignum::sub $bignum $bigsub]
      }

      return $bignum
  }


  Tests of new implementation:
  % package require asn
  % set data "\x02\x03\x01\x00\x01"; asn::asnGetBigInteger data val; puts [::math::bignum::tostr $val]
  65537
  % set data "\x02\x03\x81\x00\x01"; asn::asnGetBigInteger data val; puts [::math::bignum::tostr $val]
  -8323071
  % 


  Comparison with another ASN.1 Parser:

  $ echo -ne '\x02\x03\x01\x00\x01' > a
  $ echo -ne '\x02\x03\x81\x00\x01' > b
  $ openssl asn1parse -in a -inform der
      0:d=0  hl=2 l=   3 prim: INTEGER           :010001
  $ openssl asn1parse -in b -inform der
      0:d=0  hl=2 l=   3 prim: INTEGER           :-7EFFFF
  $ tclsh
  % expr 0x010001
  65537
  % expr -0x7EFFFF
  -8323071


tkt_uuid: 2794454fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: cmdline
priority: 5 Medium
foundin: None
resolution: None
title: error in info command
comment:
  line 196 of the source code reads: "if {[info exist result(?)] || [info exists result(help)]} {"

  I believe that first "exist" should read "exists"


tkt_uuid: 1488712fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: toggle scrollbars on/off in ScrolledWindow
comment:
  The following code is a correction to toggle scrollbars 
  on/off:

  # -----------------------------------------------------
  ------------------------
  #  Command ScrolledWindow::configure
  # -----------------------------------------------------
  ------------------------
  proc ScrolledWindow::configure { path args } {
      Widget::getVariable $path data

      set res [Widget::configure $path $args]
      if { [Widget::hasChanged $path -background bg] } {
  $path configure -background $bg
  catch {$path.hscroll configure -background $bg}
  catch {$path.vscroll configure -background $bg}
      }

      if {[Widget::hasChanged $path -scrollbar scrollbar] 
  | \
      [Widget::hasChanged $path -auto auto]| \
      [Widget::hasChanged $path -sides sides]} {
  _setData $path $scrollbar $auto $sides
  foreach {vmin vmax} [$path.hscroll get] { break }
  set data(hsb,packed) [expr {$data(hsb,present) && 
  \
  (!$data(hsb,auto) || ($vmin != 0 || $vmax !
  = 1))}]
  foreach {vmin vmax} [$path.vscroll get] { break }
  set data(vsb,packed) [expr {$data(vsb,present) && 
  \
  (!$data(vsb,auto) || ($vmin != 0 || $vmax !
  = 1))}]

  set data(ipad) [Widget::cget $path -ipad]

  if {$data(hsb,packed)} {
      grid $path.hscroll -column 1 -row $data(hsb,
  row) \
      -sticky ew -ipady $data(ipad)
  } else {
              if {![info exists data(hlock)]} {
                  set data(hsb,packed) 0
                  grid remove $path.hscroll
           }
  }
  if {$data(vsb,packed)} {
      grid $path.vscroll -column $data(vsb,column) -
  row 1 \
      -sticky ns -ipadx $data(ipad)
  } else {
              if {![info exists data(hlock)]} {
                  set data(vsb,packed) 0
                  grid remove $path.vscroll
           }
  }
      }
      return $res
  }


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

  * pop3 1.6.3
  - comm 4.3
  WARNING: removeFile removing
  "/local/src/tcllib/__pop3d.log":
    not created by makeFile
  WARNING: removeFile removing
  "/local/src/tcllib/__pop3d.log":
    not a file
  WARNING: cleanupTests deleting
  /local/src/tcllib/coserv.sub...


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: 2010798fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: md5
priority: 5 Medium
foundin: None
resolution: Fixed
title: variable pollution on package require md5
comment:
  The final 'namespace eval' in md5x.tcl seems to have a 'creative writing' problem regarding the variable e.

  e.g

  % set e myvalue
  myvalue
  % package require md5
  2.0.5
  %set e
  critcl


  Looking in cvs - it seems an 'unset e' has been added, but this isn't enough, as the original e is still the variable being written to.

  Looks like it just needs an extra line:
  variable e 


tkt_uuid: 1949752fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Fixed
title: Documentation - misprint
comment:
  http://tcllib.sourceforge.net/doc/ncgi.html:
  ...
  ::ncgi::exists name
      Returns 1 if the CGI variable name is not present.
  ...

  In fact, it will return 1 if variable IS present and will return 0 if it's NOT. Obvious misprint in the documentation.


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: 733442ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: md5
priority: 5 Medium
foundin: None
resolution: Fixed
title: procheck reports parse error
comment:
  unix> procheck md5.tcl
  ...
  md5.tcl:349 (parse) parse error: PARSE syntax 13757
  {syntax error in expression " ($x << $i) | (($x >> R$i)
  & S$i)"}
  expr { ($x << $i) | (($x >> R$i) & S$i)}
       ^
  ...

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


tkt_uuid: 899152ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: installer should [package require Tcl 8]
comment:
  By mistake I tried to install using
  Tcl 7.6.  Led to some surprising
  suggestions for install locations.

  Probably a good idea to
  [package require Tcl 8] early
  in installer.tcl.  The installer
  should not have to support Tcl 7,
  because none of the packages
  to be installed supports Tcl 7.


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


tkt_uuid: 1425947fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Duplicate
title: mime::parsedatetime - error on months
comment:
  When using ::mime::parsedatetime on months ( long and
  short ) as well as on "proper", there are errors
  handling months. there are more ways to fix the error,
  but I think the easiest is :

  Change variables to :

    variable MONTHS_SHORT [list None Jan Feb Mar Apr May
  Jun Jul Aug Sep Oct Nov Dec]
    variable MONTHS_LONG  [list None January February
  March April May June July                             
         August Sepember October November December]

  You need the first element to be "None" ( could be
  dummy), because %m (clock format option) returns values
  from 1-12 not from 0-11

  Also you must change clock format option %e to %m on
  all month related functions, because %e returns the day
  of the month not the month.

  Change the line that read :

  return [lindex $MONTHS_LONG [clock format $clock
  -format %e]]

  to :

  return [lindex $MONTHS_LONG [clock format $clock
  -format %m]]

  Change the line that read :

  return [lindex $MONTHS_SHORT [clock format $clock
  -format %e]]

  to :

  return [lindex $MONTHS_SHORT [clock format $clock
  -format %m]]

  Change the line that read :

   set mon [lindex $MONTHS_SHORT [clock format $clock
  -format %e]]

  to :

   set mon [lindex $MONTHS_SHORT [clock format $clock
  -format %m]]


tkt_uuid: 524712ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: md5
priority: 5 Medium
foundin: None
resolution: Invalid
title: md5::md5 fails with Trf2.1p2 (tcllib1.2)
comment:
  In tclsh (8.3):

  % package require tcllib
  1.2
  % md5::md5 507
  ::hex: wrong # args, all options require an argument

  I have Trf 2.1p2 installed, which means the following
  code is executed from md5.tcl:
  -------------------------------------------
  # Trf is available, so implement the functionality
  provided here
      # in terms of calls to Trf for speed.

      proc ::md5::md5 {msg} {
  string tolower [::hex -mode encode [::md5 $msg]]
      }
  -------------------------------------------

  The reason for the failure is that [::md5 $msg] returns
  a binary result starting with '-', which causes the
  ::hex to think there is another option.
   
  The fix is to insert "--" following the "encode":

  -------------------------------------------
      proc ::md5::md5 {msg} {
  string tolower [::hex -mode encode -- [::md5 $msg]]
      }
  -------------------------------------------

  There is at least one other occurrence of the same bug
  in md5.tcl, and I would imagine this could also occur
  where ::hex or other encoding functions are called.

  I'm willing to fix this bug.


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

  ---- repeat-4.1 start

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

      catch {repeat} msg
      set msg

  ---- Result was:
  wrong # args: should be "::struct::list::Lrepeat positiveCount value ?value ...?
  "
  ---- Result should have been (exact matching):
  wrong # args: should be "lrepeat positiveCount value ?value ...?"
  ==== repeat-4.1 FAILED

  ---- repeat-4.2 start

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

      catch {repeat a} msg
      set msg

  ---- Result was:
  wrong # args: should be "::struct::list::Lrepeat positiveCount value ?value ...?
  "
  ---- Result should have been (exact matching):
  wrong # args: should be "lrepeat positiveCount value ?value ...?"
  ==== repeat-4.2 FAILED


tkt_uuid: 3107937fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: http :: autoproxy
priority: 5 Medium
foundin: None
resolution: None
title: Manual/Modification: when is autoproxy hooked to http
comment:
  IMHO, the following fact is:
  - not very handy
  - not clearly expressed in the manual
  The autoproxy module only hooks into the http module by:
  http::config -proxyfilter [namespace origin filter]
  when:
  - autoproxy::init is called
  - and a proxy is found in the system or specified to the command

  A proxy specification by:
  autoproxy::configure -proxy_host ...
  does not hook autoproxy into http and thus just does nothing.
  A:
  autoproxy::configure -proxy_host ""
  does not unhook the autoproxy module (which is propably no issue but might be done too)

  Bug or feature ?

  I propose to:
  - change autoproxy::configure to hook autoproxy, if the option proxy_port is configured with a value
  - perhaps document the parameters of autoproxy::init
    Specially, I find the used format very handy for own configuration options:
      URL and comma-separated proxy exception list
  the attached patch works for me.

  See this clt-thread for the discussion:

  http://groups.google.com/group/comp.lang.tcl/browse_thread/thread/f04ff7683d61cc45/08150dfe8ce5b5d6#08150dfe8ce5b5d6

  Thanks to Alexandre to work this out !!!

  Harald


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

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

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


tkt_uuid: 2907556fffffffffffffffffffffffffffffffff
type: Patch
status: Open
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: None
title: importFile fails, if the client filename contains a ;
comment:
  The problem is in parseMimeValue. It's to simple to split by ;

  I attach parseMimeValue.tcl. It simply contains the modified proc parseMimeValue.


tkt_uuid: 1733442fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: None
title: elements of htmlparse param list cannot be accessed
comment:
  Here's an example of a tag that has an attribute containing line breaks.

  set html {<select onChange="

                                                                  processFieldChanged(this);
                                                          " onFocus="gotFocus(this,'Y');" onBlur="gotFocus(this,'N');"></select>}
  <select onChange="

                                                                  processFieldChanged(this);
                                                          " onFocus="gotFocus(this,'Y');" onBlur="gotFocus(this,'N');"></select>


  Printing the param list causes no issues:

  (bin) 122 % htmlparse::parse $html
  ==> hmstart {} {} {}
  ==> select {} {onChange="

                                                                  processFieldChanged(this);
                                                          " onFocus="gotFocus(this,'Y');" onBlur="gotFocus(this,'N');"} {}
  ==> select / {} {}
  ==> hmstart / {} {}


  But trying to access elements of the param list, which is what the build_data command in the run below does, yields an error:

  (bin) 124 % htmlparse::parse -cmd build_data $html
  list element in quotes followed by "gotFocus(this,'Y');"" instead of space


tkt_uuid: 920974ffffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: nntp
priority: 5 Medium
foundin: None
title: Add support for async requests to nntp
comment:
  The NNTP package doesn't currently support asynchronous 
  requests. As NNTP commands may take a long time to run, it 
  would be useful to be able to do these asynchronously. The ability 
  to get a progress callback would also be useful (similar to the http 
  package).


tkt_uuid: 2023543fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: amazon-s3
priority: 5 Medium
foundin: None
resolution: None
title: S3.test and xsxp.test fail during tcllib make test
comment:
  I'm using Tcl/Tk 8.5.3, and the latest tcllib cvs snapshot from the activestate ftp site.

  When I do the make test, I get this failure:

  @@ Module amazon-s3
  @@ Testsuite modules/amazon-s3/S3.test
  - tcllib::testutils 1.1
      Aborting the tests found in "S3.test"
      Error in xsxp.tcl: can't find package xml
  SETUP Error (Support): 
  SETUP Error (Support):     while executing
  SETUP Error (Support): "useLocal xsxp.tcl xsxp"
  SETUP Error (Support):     ("uplevel" body line 3)
  SETUP Error (Support):     invoked from within
  SETUP Error (Support): "uplevel 1 $script"
  @@ Testsuite modules/amazon-s3/xsxp.test
  - tcllib::testutils 1.1
      Aborting the tests found in "xsxp.test"
      Error in xsxp.tcl: can't find package xml
  SETUP Error (Testing): 
  SETUP Error (Testing):     while executing
  SETUP Error (Testing): "useLocal xsxp.tcl xsxp"
  SETUP Error (Testing):     ("uplevel" body line 2)
  SETUP Error (Testing):     invoked from within
  SETUP Error (Testing): "uplevel 1 $script"

  @@ End 1216643966

  Perhaps there is a dependency not specified?


tkt_uuid: 1747885fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: des
priority: 5 Medium
foundin: None
resolution: Fixed
title: des 1.0.0 loses what 0.8.1 could
comment:
  ActiveTcl 8.4.14:
  % packa re des
  1.0.0
  % set x [DES::des -mode encode -key SeCrEt "hello world"]
  can't use integer value too large to represent as operand of "^"

  while in ActiveTcl 8.4.9 it works well:
  % packa re des
  0.8.1
  % set x [DES::des -mode encode -key SeCrEt "hello world"]
  ?½??I-}????j??'?
  % DES::des -mode decode -key SeCrEt $x
  hello world


tkt_uuid: 466011ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: option rc file saved w/open permissions
comment:
  when tkchat creates its $HOME/.tkchatrc file , tkchat
  should probably do something about setting the files
  permissions to rw------- / 600 on unix.


tkt_uuid: 2113728fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: snit
priority: 5 Medium
foundin: None
resolution: None
title: "$type info instances" corrupted after object-creation error
comment:
  = VERSION and PLATFORM
   snit 2.2.1
   tclkit 8.5.2  - Windows XP


  = HOW TO REPRODUCE ERROR

  Let's take the simplest snit-widget:

    snit::widget myWidget {
    }

  and let's create a myWidget instance named ".x" :

    myWidget .x
    myWidget info instances
      # OK  --> .x

  Now, if I (wrongly) try to create a new myWidget named ".x" ( or named like any existing widget ),
  then I (correctly) get an error message 

    myWidget .x
      # OK -->   window name "x" already exists in parent

  BUT, hereafter, I am no more able to query for "myWidget info instances"

    myWidget info instances
      # WRONG! -->   can't read "instance": no such variable

  NOTES:
   * no problem with snit::type
   * no problem with snit::widgetadaptor


tkt_uuid: 3107991fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Invalid
title: ref:1470818-Wrong monthname returned by mime::parsedatetime
comment:
  This is valid for all versions since 1.8.  I found a minor issue with the fix for this issue. "Clock format $clock -format $m " returns a value between 01 - 12 but MONTHS_SHORT expects a value from 0-11 so the date is still off by a month when no date header is provided when this patch is applied.  I've applied the following patch to mime.tcl to fix the issue in procedure mime::parsedatetime in every place that MONTHS_SHORT is accessed.
              set mon [lindex $MONTHS_SHORT [expr [scan [clock format $clock -format %m] %d] - 1]]


tkt_uuid: 1172938fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: profiler
priority: 7 High
foundin: None
resolution: Fixed
title: profiler does not store descendent time
comment:
  I am a little confused about the tcllib profiler
  package.  I am using
  the 8.4.9 distribution on Windows XP, which includes
  profiler 0.2.2.

  Here is my elaborate test program.

     package require profiler
     ::profiler::init
     proc c1 { a } { for {set i 0} {$i<2000} {incr i} {;} }
     proc c2 { a } { for {set i 0} {$i<2000} {incr i} {;} }
     proc parent { } { for {set i 0} {$i<2000} {incr i} {
  c1 $i ; c2 $i }
  }

     parent
     ::profiler::dump ::parent

  The output is:

     ::parent {callCount 1 callerDist {GLOBAL 1}
  compileTime 2816000
     totalRuntime 2816000 averageRuntime 0 stddevRuntime 0
     covpercentRuntime 0 descendantTime 0
  averageDescendantTime 0
     descendants {}}

  The descendants data I would expect is like {c1 2000 c2
  2000}.
  The time reporting also seems wrong; how can all the
  time be
  reported as compile time with zero descendant time? 
  All the
  time is spent in the children.

  Am I missing something, or is this output completely
  wrong? 


tkt_uuid: 2910682fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: yaml
priority: 5 Medium
foundin: None
resolution: Fixed
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: 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: 1868088fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: jpeg
priority: 5 Medium
foundin: None
resolution: None
title: floating point too large in formatExif
comment:
  For tcl version 8.4 running under Windows XP, the ::jpeg::formatExif routine gave the following error message for one of my jpeg files:

  (PersonalProjects) 27 % set errorInfo
  floating-point value too large to represent
      while executing
  "expr {2 * (log($val) / log(2))}"
      ("MaxApertureValue" arm line 2)
      invoked from within
  "switch -exact -- $tag {
                  UserComment {set val [string trim [string range $val 8 end] \x00]}
                  ComponentsConfiguration {bi..."
      (procedure "::jpeg::formatExif" line 10)
      invoked from within
  "::jpeg::formatExif $exif"
      invoked from within
  "if [file isdirectory $fullf] {
      lappend stack $bname
  } else {
      set ext [string toupper [file extension $item]]
      puts "item = $item ex..."
      (procedure "rename_photos" line 30)
      invoked from within
  "rename_photos ../Personal"

  Posted by S. Vavasis, vavasis@math.uwaterloo.ca


tkt_uuid: 1007766fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: tklib: ctext
priority: 5 Medium
severity: Minor
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: 718985ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: irc
priority: 8
foundin: None
resolution: Accepted
title: Potential infinite loop
comment:
  The Tcllib IRC module is capable of going into an
  infinite loop if the IRC server closes the socket
  unexpectedly.

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

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

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


tkt_uuid: 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: 472010ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Invalid
title: "smtp::sendmessage" and "header"
comment:
  he procedure "smtp::sendmessage" does not recognice the
  "header"
      data provided with the "mime::setheader" command.

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

  set TEXT    {Hallo Otto}

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

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

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

  smtp::sendmessage $M1

  # clean everything up

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

  generate

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


tkt_uuid: 1695123fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: doctools
priority: 5 Medium
foundin: None
title: doctools - Rework to use snit
comment:
  doctools currently uses a custom OO-like code base. Rewrite it to use snit instead for future manageability.

  This can be done before or after the internals have been changed to the use of pluginmgr (see RFE 1695122).


tkt_uuid: 3053446fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: multiplexer
priority: 7 High
foundin: None
resolution: Works For Me
title: multiplexer fails self-test, tcllib 1.11 and TCL 8.5.8
comment:
  Hi,

  I'm trying to build tcllib 1.11 with TCL 8.5.8 (not threaded) from FreeBSD ports. When running self-tests, 
  this stands out:

  [    ]  [8.5.8] multiplexer ~~ FAILS T     9 P     8 S     0 F     1

  The other self-tests run just fine. Followed by:
  ----
  ...
  *** Error code 1

  Stop in /usr/ports/devel/tcllib/work/tcllib-1.11.
  *** Error code 1

  Stop in /usr/ports/devel/tcllib/work/tcllib-1.11.
  ==== multiplexer-5.2 add access filter which denies access FAILED
  ==== Contents of test case:

      set ::forever {}
      set mp [multiplexer::create]
      ${mp}::Init 37465
      ${mp}::AddAccessFilter DenyAccessFilter
      set sk1 [socket localhost 37465]
      set sk2 [socket localhost 37465]
      update
      fconfigure $sk1 -buffering none
      if { [catch {
          puts $sk1 "boom"
      } err] } {
          set result "socket blocked"
      } else {
          set result "socket not blocked"
      }
      ${mp}::destroy
      set result

  ---- Result was:
  socket not blocked
  ---- Result should have been (exact matching):
  socket blocked
  ==== multiplexer-5.2 FAILED


  @@ End 1282808621
  all.tcl:        Total   9       Passed  8       Skipped 0       Failed  1
  Sourced 1 Test Files.
  Files with failing tests: multiplexer/multiplexer.test
  ============================================================

  @@ Host monthu.*
  @@ Platform FreeBSD-8.1-RELEASE-i386
  @@ CWD /usr/ports/devel/tcllib/work/tcllib-1.11
  @@ Shell /usr/local/bin/tclsh8.5
  @@ Tcl 8.5.8
  @@ MatchTests *
  @@ SkipFiles l.*.test
  @@ MatchFiles *.test
  @@ Start 1282808621
  @@ Module ncgi
  @@ Testsuite modules/ncgi/ncgi.test
  - tcllib::testutils 1.2
  * ncgi 1.3.2
   [8.5.8] multiplexer ~~ FAILS T     9 P     8 S     0 F     1
  FreeBSD monthu.* 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Mon Aug  2 00:03:54 CEST 2010     root@monthu.*:/usr/obj/usr/src/sys/MONTHU  i386
  Please, analyze and report the test failures
  Be sure to use the latest available microversion
  of TCL-8.5, however.
  ----

  Is there some way to fix this? If so, how?

  Thanks!


tkt_uuid: 2835744fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: widget
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: widget:dialog button handling bug?
comment:
  The comments in the "close" method claim:
      # 'break' return code - don't withdraw
      # Withdraw on anything but 'break' return code
  for the handling of the results from the "-command" callback.

  However, as I found out this is not true if the dialog is configured -synchronous 1 (default).
  In that case the method "display" unconditionally withdraws the dialog.

  This affects -type okcancelapply, as the apply button will not act like it should, i.e. apply changes, keep dialog open.

  My guess is that this is a limitation of the "-synchronous 1" mode, and it simply has to be documented.

  The workaround is to make the dialog "-synchronous 0".
  I guess that is sensible anyway, due to the use of a "-command" callback.


tkt_uuid: 439779ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: eval required in tkcon support code
comment:
  In ftp.tcl (v0.9 from cvs) at line 2776 can I humbly suggest that an eval is added after the "["

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

  When using 
  ftp::List connection dir

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


tkt_uuid: 3304371fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: irc
priority: 5 Medium
foundin: None
resolution: None
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: 1480703fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Accepted
title: console support for platforms without native support
comment:
  TkChat only provides console support if either tkcon is 
  available or the platform is non-unix and has a console 
  built in. This patch (adopted from http://wiki.tcl.tk/
  786) makes the Tk console available also if there is no 
  native ::console command.

  Note that the patch is for the version 1.334 since I 
  can not currently fetch the most current version (due 
  to sourceforge outage ...)


tkt_uuid: 3513149fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Fixed
title: exra bracket in nvlist command causes corrupt return value
comment:
  ncgi version 1.3.2

  There is a typo on line 28 of the proc ncgi::nvlist:

  set val [string range $x 1 end]]

  Note the extra close bracket at the end of the statement.
  Due to the strange coincidence of Tcl bug 3513146, this does not throw an error, but instead leads the proc to return a corrupt value.


tkt_uuid: 3434579fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: yaml
priority: 8
foundin: None
resolution: None
title: Infinite loop
comment:
  When a yaml input file (or string) is not terminated with a \n (EOL) the yaml parser gos into an infinite loop at the end.


tkt_uuid: 720933ffffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: struct :: graph
priority: 2
foundin: None
resolution: None
title: testsuite makes incorrect assumptions about walk order
comment:
  The tests in graph.test assume a particular order while
  walking a graph, even if multiple valid orderings exist.

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

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

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

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

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



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


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


tkt_uuid: 1409177fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: fileutil
priority: 5 Medium
foundin: None
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: 1316061fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: tree
priority: 4
foundin: None
resolution: Fixed
title: struct/tree.test prints extra info
comment:
  tree.test includes gratuitous puts commands, cluttering
  the log.  It prints something about "impl. performance."


tkt_uuid: 2787872fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: comm
priority: 5 Medium
foundin: None
title: default standard channel should not be created implicitely
comment:
   "comm" provides a default "communication channel" named "comm::comm" .

   If your app. doesn't need to "provide services", but just to call services, you should destroy it, and then create a simple outgoing channel.

   I think that when you load comm (package require comm), such standard channel should not be created automatically.
  Users should be explicitely create it 
     comm::comm new comm::comm


tkt_uuid: 3138526fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: None
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: 2359926fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: fileutil
priority: 5 Medium
foundin: None
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: 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: 1113348fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: logger
priority: 5 Medium
foundin: None
resolution: None
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: 913149ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: log
priority: 7 High
foundin: None
resolution: Fixed
title: log package should not start log by default
comment:
  merely requiring the log package and using the
  statements cause logging to occur.  I think there
  should be distinct individual commands between
  declaring the *use* of the log package and actually
  wanting logging to occur.

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


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

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

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


tkt_uuid: 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: 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: 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: 3609843fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: sha1
priority: 7 High
severity: Important
foundin: None
resolution: None
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: 2690366fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: doctools
priority: 5 Medium
foundin: None
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: 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: 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: 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: 1553919fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Duplicate
title: ftp::NList - incorrect result when spaces in filename (win)
comment:
  eg. ftp::NList $i_h_ftp $i_dir
  returns "Copy abc.txt of"

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

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


tkt_uuid: 1572463fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: math :: geometry
priority: 5 Medium
foundin: None
resolution: None
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: 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: 3025582fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: inifile
priority: 5 Medium
foundin: None
resolution: None
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: 3106443fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tklib :: tooltip
priority: 5 Medium
severity: Minor
foundin: None
resolution: None
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: 916668ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: cmdline
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: getoptions: handling of booleans undocumented
comment:
  Hi,

  from comp.lang.tcl:

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

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

  Consider the following example:


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


  Invoked with -?:

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


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

  Regards,
  Andreas


tkt_uuid: 3426178fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: json
priority: 5 Medium
foundin: None
resolution: Fixed
title: extra "$" in json::list2json
comment:
  perhaps I am misunderstanding the code, but it appears there is an extra "$" on line 315 of json.tcl in the function json::list2json. Currently creating a list and sending it to this functions produces what appears to be invalid json.

  Example 1:

  package require json
  set z [list {"first"} {"second"} {"third"}]
  json::list2json $z

  The output of the above code on my debian unstable system with tcl8.5 and tcllib-1.13 is:

  [$"first","second","third"]

  Note the extra $. I would expect the output to looks like this:

  ["first","second","third"]


tkt_uuid: 1948953fffffffffffffffffffffffffffffffff
type: Patch
status: Open
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: None
title: ncgi: incomplete url encoding/decoding
comment:
  Se attachment for a reimplementation of encode/decode that supports non ASCII chars.

  Hope this helps


tkt_uuid: 810298ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Out of Date
title: ::fileutil::tempfile can't find temp dir with env
comment:
  ::fileutil::tempfile has taken its code to set tmpdir 
  for any platform from the wiki page 772.
  But the code on that page was wrong (now modified)
  . The proc tempfile tries to use the env variable 
  without making it global.
  On Mac it will crash.
  On windows and others it will always return current 
  directory.

  The code should look like this:
  switch $tcl_platform(platform) {
      unix {
  set tmpdir /tmp   # or even $::env(TMPDIR), at 
  times.
      } macintosh {
  set tmpdir $::env(TRASH_FOLDER)  ;# a better 
  place?
      } default {
  set tmpdir [pwd]
  catch {set tmpdir $::env(TMP)}
  catch {set tmpdir $::env(TEMP)}
      }
   }


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

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


tkt_uuid: 3599955fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: themed Entry: Error "unknown command" on keyboard focus
comment:
  Error 'invalid command name ".#BWidget.#ttk::entry"' arises in themed mode when an Entry widget should get focus by the tab key.

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

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

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


tkt_uuid: 3578420fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: generator
priority: 5 Medium
foundin: None
resolution: None
title: [exists] and colorful generator names
comment:
  [exists] is currently defined like this:

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

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

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


tkt_uuid: 1007764fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tklib :: ctext
priority: 5 Medium
severity: Minor
foundin: None
resolution: Not Applicable Here
title: ctext - Clarifications needed in the documentation
comment:
  I would like to point out a few missing details in the
  documentation of ctext:

  1. You need to use the command "hightlight" when the
  widget has been filled to get the colouring to show.
  (Presumably also after each new addClass command)

  2. You need to use unique tag names if you want more
  than one regular expression to work for the same
  colouring (e.g. alternative formats for comment)

  3. Line numbering could interfere with the -elide
  option. It appears possible to use the linemap
  facilities to make the two work together, but this has
  not been described in any detail.


tkt_uuid: 2768634fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: json
priority: 5 Medium
foundin: None
resolution: None
title: cannot get last integer correctly
comment:
  the following, it is not correctly.

  % json::json2dict {{"k" : 1.0
    }}
  k {1
    }
  %

  that should be
  % json::json2dict {{"k" : 1.0
    }}
  k 1
  %


tkt_uuid: 1645082fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tklib: plotchart
priority: 5 Medium
foundin: None
title: Add option to draw tick lines
comment:
  Keith Vetter wants to use the grid subcommand to generate  
  lines at the tickmarks. This would be easier if we add an option to draw ticklines instead of tickmarks.


tkt_uuid: 2835712fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: statistics
priority: 5 Medium
foundin: None
resolution: Fixed
title: interval-mean-stdev Seems to have a hard-coded variable n
comment:
  set erf1    0.682689492137
  set scaled1StdDev  [::math::statistics::interval-mean-stdev $data $erf1]
  can't read "student_t_table": no such variable

  The student_t_table variable is hard-coded somewhere in this function.


tkt_uuid: 1608820fffffffffffffffffffffffffffffffff
type: Patch
status: Open
subsystem: ncgi
priority: 4
foundin: None
resolution: None
title: Doc update for ncgi - examples needed
comment:
  A request on comp.lang.tcl revealed a lack of examples for basic usage of ncgi. Here's the basic example I replied with, but we probably need some others:

    #!/usr/bin/env tclsh
    package require ncgi
    ncgi::parse
    set pattern [ncgi::value vars "*"]
    puts "Content-Type: text/plain\n"
    puts "Environment Variables matching: $pattern"
    parray ::env $pattern


tkt_uuid: 674330ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: dns
priority: 5 Medium
foundin: None
resolution: Fixed
title: dns: Tcl requirement not specified
comment:
  package require Tcl $requiredVersion

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


tkt_uuid: 2440373fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: None
title: broken compatibility for cookie with Safari + OS X.5.6
comment:
  If one use Safari 3 under Mac OS X.5.6 and you want to set a cookie with ::ncgi::setCookie, you won't be able to get data back because it will add trailing spaces at the end of each cookie value.

  If you have a look at ~/Library/Cookies/Cookies.plist it looks like this:

  <dict>
  <key>Created</key>
  <real>251193654.78859401</real>
  <key>Domain</key>
  <string>localhost</string>
  <key>Expires</key>
  <date>2009-12-18T08:00:54Z</date>
  <key>Name</key>
  <string>SID </string>
  <key>Path</key>
  <string>/ </string>
  <key>Value</key>
  <string>foo </string>
  </dict>

  The quick way to make it works again is to remove each space between variable and semi-colon in ::ncgi::setCookie :

  proc ::ncgi::setCookie {args} {
      variable cookieOutput
      array set opt $args
      set line "$opt(-name)=$opt(-value);"
      foreach extra {path domain} {
          if {[info exists opt(-$extra)]} {
              append line " $extra=$opt(-$extra);"
          }
      }
      if {[info exists opt(-expires)]} {
          switch -glob -- $opt(-expires) {
              *GMT {
                  set expires $opt(-expires)
              }
              default {
                  set expires [clock format [clock scan $opt(-expires)] \
                      -format "%A, %d-%b-%Y %H:%M:%S GMT" -gmt 1]
              }
          }
          append line " expires=$expires;"
      }
      if {[info exists opt(-secure)]} {
          append line " secure "
      }
      lappend cookieOutput $line
  }

  I'm unable to say if it's a ncgi bug, but as far as I can see, it works again with Safari and OS X.5.6 and it doesn't break anything for others browsers / Oses.


tkt_uuid: 1234478fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: bibtex
priority: 5 Medium
foundin: None
title: Add support for writing Bibtex files
comment:
  It would be nice if support for writing bibtex files
  was added to the module, for example to export bibtex
  from a database or providing cut&copy ready bibtex
  snippets on a web page (like the ones offered by
  citeseer for example)


tkt_uuid: 1011831fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: ncgi
priority: 5 Medium
foundin: None
title: should use the same code as http package
comment:
  ncgi should use the http package's mapReply command to
  do encoding instead of copying the code verbatim. 
  Promote code-reuse!

  Thanks
  Dave


tkt_uuid: 1800608fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: doctools
priority: 5 Medium
foundin: None
title: dtplite html output: title, meta keywords + description
comment:
  The HTML output from dtplite should include meta keywords and description in the head of the document. The title should reflect the contents of the page.

  Here's a current example:

  http://naviserver.sourceforge.net/n/naviserver/files/ns_return.html


  The HTML title is:

    ns_return - NaviServer Built-in Commands

  It should be:

    ns_return - Return a complete HTTP response

  There are many commands in the same section, but they all have different descriptions, and this useful info should be presented first to users/search engines.


  The meta-keywords should be:

  <meta name="keywords" content="ns_return, ns_returnfile, ns_returnfp, ns_respond, charset, encoding, response, return, status">

  i.e. it should include all the commands which are documented on that page, and they should appear before the words in the 'keywords' section of the man page. None of the 'see also' entries should be present.



  The meta-description should be:

  <meta name="description" content="These commands are used to construct a complete HTTP response and return it to the requesting client. The response may be transcoded into a different encoding, compressed and/or sent in chunks as automatically negotiated by the client and server settings.">

  i.e. it should be the first paragraph of the 'description' section of the man page.


tkt_uuid: 2055837fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: jpeg
priority: 5 Medium
foundin: None
resolution: None
title: Bad InteropIFD directory causes crash
comment:
  Some of my images crash the GetExif function with the following error:

  ---------------------------
  Error in startup script
  ---------------------------
  expected integer but got ""
      while executing
  "format %u $value"
      ("4" arm line 3)
      invoked from within
  "switch -exact -- $type {
          1 { _scan $end $value c value }
          2 { set value [string trimright $value \x00] }
          3 {
              _scan ..."
      (procedure "_format" line 11)
      invoked from within
  "_format $end [string range $value [expr {$len * $i}] [expr {($len * $i) + $len - 1}]] $type 1"
      (procedure "_format" line 7)
      invoked from within
  "_format $byteOrder $value $format $components"
      (procedure "_exif" line 35)
      invoked from within
  "_exif $fh $byteOrder $offset"
      (procedure "_exif" line 19)
      invoked from within
  "_exif $fh $byteOrder $offset"
      (procedure "_exif" line 19)
      invoked from within
  "_exif $fh $byteOrder $start"
      (procedure "::jpeg::getExif" line 28)
      invoked from within
  "::jpeg::getExif "CIMG0049.JPG" "
      invoked from within
  "set t [ ::jpeg::getExif "CIMG0049.JPG" ]"
       ...
  ---------------------------
  OK   
  ---------------------------

  The camera is
  Make : CASIO COMPUTER CO.,LTD 
  Model : QV-R41 
  Software : 1.00                 

  exiftool 7.30 reports a warning "Bad InteropIFD directory".

  I added a length check as a hot fix:

               seek $fh $pos start
           }
  +        if { $size > [ string length $value ] } continue
           lappend return $tag [_format $byteOrder $value $format $components]
       }
       return $return

  The actual problem is a bad pointer to the InteropIFD directory. Therefore,
  a more general solution would be something like black list checking.

  Are there any plans in this direction? I am going to implement one as
  a work around for my own but may also post it as a proposal.


tkt_uuid: 940651ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
resolution: Fixed
title: error in ::csv::read2matrix
comment:
  in csv.tcl (line132)
  has to be a '5' instead a '4'.

  case '4' occures twice!


   switch -exact -- [llength $args] {

  .
  .
  .
  5 { 
      foreach {a b c d e} $args break
              if {![string equal $a "-alternate"]} {
                  return -code error "wrong#args: Should
  be ?-alternate? chan m ?separator? ?expand?"
              }
              set alternate 1

              set chan    $b
              set m       $c
              set sepChar $d
              set expand  $e
          }
  .
  .
  .
  }


tkt_uuid: 3612645fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: aes
priority: 5 Medium
severity: Minor
foundin: None
resolution: Fixed
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: 833486ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pop3
priority: 8
foundin: None
resolution: Fixed
title: Can't delete messages one at a time
comment:
  There are three messages in my test mailbox.  For each,
  I try to retrieve it and then delete it.  After each
  deletion, STAT reports one fewer message in the
  mailbox, as specified in RFC I believe. 
  ::pop3::retrieve and ::pop3::delete override the
  (default or user-specified) "end" index with the STAT
  message count if $end > $count.   This causes the
  retrieval/deletion to fail. 

  Here's a trimmed-down sequence showing the problem:
  % set s [::pop3::open localhost user password]
  % ::pop3::delete $s 1
  debug     pop3 sock1872 >>> STAT
  debug     pop3 sock1872 <<< +OK 3 2661
  debug     pop3 sock1872 >>> LAST
  debug     pop3 sock1872 <<< +OK 0
  debug     pop3 sock1872 >>> DELE 1
  debug     pop3 sock1872 <<< +OK Message 1 deleted
  % ::pop3::delete $s 2
  debug     pop3 sock1872 >>> STAT
  debug     pop3 sock1872 <<< +OK 2 1774
  debug     pop3 sock1872 >>> LAST
  debug     pop3 sock1872 <<< +OK 1
  debug     pop3 sock1872 >>> DELE 2
  debug     pop3 sock1872 <<< +OK Message 2 deleted
  % ::pop3::delete $s 3
  debug     pop3 sock1872 >>> STAT
  debug     pop3 sock1872 <<< +OK 1 887
  debug     pop3 sock1872 >>> LAST
  debug     pop3 sock1872 <<< +OK 2
  % ::pop3::close $s
  debug     pop3 sock1872 >>> QUIT
  debug     pop3 sock1872 <<< +OK localhost POP3 server
  closing connection

  Note that all messages would be deleted if the order of
  deletion was instead 3, 2, 1.


tkt_uuid: 1969144fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: doctools
priority: 5 Medium
foundin: None
title: Alternatives, repetition, and list structure
comment:
  Doctools has a command [opt] to mark something (often a command argument) as being optional. Two siblings of that piece of markup which I often find useful, but have been unable to apply consistently in .man pages, is alternatives and repetition.

  Suitable syntax for alternatives would be

    [alt {first alt.} {second alt.} {third alt.} ...]

  e.g.

    [alt [arg boolean] [const auto]]

  to say that something is a boolean value or the constant "auto". A naive implementation of such an alt command could be

    proc alt {args} {return "([join $args { | }])"}

  since I've seen this formatting with parentheses and vertical bars in e.g. the documentation of the ftp package.

  In line with that, repetition could have the syntax

    [rep {word} ...]

  and be naively implemented as

    proc rep {args} {return "([join $args])*"}

  i.e., a regexp-style rendering (as is also that of [alt] above), with * denoting zero or more repetitions of the arguments of [rep]. A more traditional  rendering might however be

    proc rep {args} {return "?[join $args] ...?"}

  I want [rep] (name is not important, though) because I often find myself wanting to write

    [call [cmd myCmd] [arg mandatory] [rep [arg option] [arg value]]]

  for the option-value part of a command that could be

    myCmd $mandatory
  or
    myCmd $mandatory -option $value
  or
    myCmd $mandatory -option $value -otherOption $otherValue
  etc.


  Also, the way I write packages and documentation, I often find I need to document the structure of various lists, just like one conventionally documents command syntaxes, and I don't see any good way to do that in doctools markup. For the special case of a list constructed as a command callback, it just occurred to me that I could write a dummy list with only a [call] heading, like so:

      A command prefix used to format the values while taking the 
      key names into account. It is called as
      [list_begin definitions]
        [call \{*\}[arg choicecmd] [arg key] [arg value]]
      [list_end]
      Specifying a [option -choicecmd] overrides the 
      [option -entrycmd], if any.

  but this is only a partial solution (and in the HTML rendering it seems to leave an awful lot of vertical space between the "It is called as" and "{*}choicecmd key value" lines).

  In LaTeX, I'd write the above as

      A command prefix used to format the values while taking the 
      key names into account. It is called as
      \begin{quote}
        \meta{choicecmd} \word{key} \word{value}
      \end{quote}
      Specifying a |-choicecmd| overrides the |-entrycmd|, 
      if any.

  which to some extent (\meta, \word, and \verb shorthand `|') relies on particular packages, but what I'm after right now is something that can be used like the `quote' environment in this example.

  As a concrete example, here is a passage of documentation in LaTeX, which documents the structures of two lists. The environment is my own `displaysyntax' rather than `quote', but the idea is the same:

  The \word{msg-id} is used to provide a measure of reliability by 
  providing acknowledgements of message delivery. If an |envelope| 
  with nonempty \word{msg-id} arrives at its destination then a reply 
  message with \word{payload}
  \begin{displaysyntax}
    delivery ack \word{msg-id} \word{time}
  \end{displaysyntax}
  is sent to the \word{from} address. If an |envelope| with nonempty 
  \word{msg-id} could not be sent to the next connection in \word{to} 
  then a reply message with \word{payload}
  \begin{displaysyntax}
    delivery nack \word{msg-id} \word{remaining to} \word{reason}
  \end{displaysyntax}
  is sent to the \word{from} address. These |ack| and |nack| messages 
  have empty \word{msg-id}s.


tkt_uuid: 1871959fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: None
title: ::ncgi::query breaks encoding
comment:
  Lines 210-211 of ncgi.tcl say:

  ## added by Steve Cassidy to try to fix binary file upload
  fconfigure stdin -translation binary -encoding binary

  but, by doing this it breaks chararcter encoding


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

  The patch below sets the host header.

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


tkt_uuid: 2970577fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: tklib :: tooltip
priority: 5 Medium
severity: Minor
foundin: None
resolution: Not Applicable Here
title: add tooltip image support
comment:
  Tooltip can only display text. With the following code in tooltip::show we can also display images and bitmaps.
  The user has to provide a valid image/bitmap instead of the message argument.

      # Use late-binding msgcat (lazy translation) to support programs
      # that allow on-the-fly l10n changes
      if {[catch {set type [image type $msg]}]} {
        $b.label configure -text [::msgcat::mc $msg] -justify left
      } elseif {$type eq {bitmap}} {
        $b.label configure -bitmap $msg -justify left
      } else {
        $b.label configure -image $msg -justify left
      }


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

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

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

  Change:

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

  to:

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

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


tkt_uuid: 1014795fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: base64
priority: 5 Medium
foundin: None
resolution: None
title: tcl crashes when I b64 encode files
comment:
  I have a few files I want to encode into base64. Some are small, others are around 4 or 5 Mb. It takes so long to encode the large ones that I just kill the process and give up.

  But my attention caught the fact that one particular file always crasheed wish or tclsh. It is a 4,731,340-byte ZIP file. The file is OK, I can open it like any other. Whenever I try to encode it with ::base64::encode, however, I get this window title...

  Fatal Error in Wish

  ... and this error message:

  unable to realloc 5857536 bytes

  It also occurs with tclsh, except for the "Fatal Error in Wish" title, of course.

  So I went after a few 4 or 5-Mb zip files in my disk, did some more testing and saw that roughly 7 out of every 10 files make wish.exe crash.

  Intrigued by the "5857536" figure, I went after bigger files: 7 Mb, 8 Mb, 15 Mb, 24 Mb and 65 Mb. About 10 of them. Sometimes I get a different figure, "9326961" appeared twice, but "5857536" still is the most frequent one.

  I stil can use Cygwin-based b64.exe. No problems with that one.

  Now I am using ActiveTcl 8.4.7, but I also saw the problem in 8.4.6.

  My OS is Windows 98 SE.


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: 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: 3613162fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: log
priority: 5 Medium
foundin: None
title: Adding support to log save to a file
comment:
  I feel it would be good if logger package support 
  1) saving log messages to logfile. 
  2) log file rotation.

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


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

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

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


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

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

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


tkt_uuid: 1018934fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: dns
priority: 5 Medium
foundin: None
resolution: Accepted
title: dns.tcl incorrectly detecting query as a reverse lookup
comment:
  I was trying to use the dns module to resolve an
  address similar to "127.0.0.1.example.org", but it was
  failing as this query was being incorrectly detected as
  an IP.

  I changed the line (in dns.tcl):
  if {[regexp {(?:\d{0,3}\.){3}\d{0,3}} $state(query)]} {

  to:
  if {[regexp {^(?:\d{0,3}\.){3}\d{0,3}$} $state(query)]} {

  and now everything seems to be working fine.


tkt_uuid: 1653431fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: sasl
priority: 5 Medium
foundin: None
resolution: Accepted
title: Use authentication domain returned by server with NTLM
comment:
  Currently the type 1 message generated by the NTLM code, includes the req_target flag. This will request the correct authentication realm from the server. Currently this information is not used and therefore the correct domain always has to be specified even if the server returns it.
  The following patch on ntlm.tcl will use the domain returned by the server if available. This allows the user of the NTLM to omit the domain in most cases.

  diff ntlm.tcl.orig ntlm.tcl
  63a64,67
  >               # if server returns a domain, use it
  >               if {[info exists params(domain)]} {
  >                       set ctx(realm) $params(domain)
  >               }


tkt_uuid: 2220159fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: snit
priority: 5 Medium
foundin: None
resolution: None
title: Missing in snitfaq: limitiation on names for options
comment:
  The snitfaq documentation is lacking documentation on
  the allowed names of options. I found out that there 
  are such limitations when I tried to use 
  "transformBefore" as the name.


tkt_uuid: 1491894fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: comm
priority: 5 Medium
foundin: None
resolution: None
title: comm "-listen 0" causes race conditions
comment:
  I observed this behavior using comm 4.3 as delivered with ActiveTcl 
  8.4.11.

  Today for the first time I tried creating multiple comm channels in
  one program.  (Hitherto I'd just used comm::comm directly.)  According
  to the man page, if you do this:

      comm::comm new mychan -listen 0

  you get a channel with an ID of "0".  You can send out with it, but
  there's no listening socket, so you can't connect to it; it has to
  connect out.  Well and good; I thought that was what I wanted.

  So suppose I send a command to a comm(n) channel at port 10001:

     mychan send 10001 {some command}

  The receiver sees the command as coming from sender with id 0.  In
  short, the receiver can't distinguish between commands coming from
  multiple senders which specify -listen 0 (assuming they are all on
  the same host).

  This is a problem for me at the application level, because I want to
  distinguish between the different clients who connect to my server.
  But it also appears to be a problem for comm as well: if I
  start up several clients with channels that use -listen 0, my server
  starts outputting ugly messages like "commIncoming race condition: 
  0".

  The work around is simply to use "-listen 1"....but it makes me
  wonder whether "-listen 0" is actually useful for anything.

  William.H.Duquette@jpl.nasa.gov


tkt_uuid: 1473699fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: cmdline
priority: 5 Medium
foundin: None
resolution: None
title: -? and -help broken
comment:
  cmdline lists the Options -? and -help per default but
  they doesn't work with the dash.

  Example Script:
  #!/bin/sh
  #\
  exec tclsh "$0" "$@"
  #
  package require cmdline
  #
  set options {
     {h              "print this message"}
  }
  #
  # set usage string
  set usage ": name \[options\] \[value\]"
  #
  # parse commandline arguments into array
  array set cmdopt [::cmdline::getoptions argv $options
  $usage]
  #
  #EoF

  Gives errors:
  ./example_script.tcl -?
  ./example_script.tcl -help

  Works as expected:
  ./example_script.tcl ?
  ./example_script.tcl help


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


tkt_uuid: 514476ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: textutil
priority: 5 Medium
foundin: None
title: Add Pool_Base string functions
comment:
  Add the string processing facilities of
  Pool_Base, see

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


tkt_uuid: 1153603fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: tkchat errs out on a disconnection
comment:
  (this is msw from tcl'ers chat)
  This happened when my router reconnected itself:

  can't read "x(-body)": no such element in array
  can't read "x(-body)": no such element in array
      while executing
  "tkchat::addSystem "Network error $x(-body)""
      ("networkerror" arm line 3)
      invoked from within
  "switch -- $cmd {
      connect {
          tkchat::addSystem "Connection to Jabber Server
  Established"
      }
      disconnect {
          cleanup
          scheduleReconnect
      }
  ..."
      (procedure "::tkjabber::ClientCB" line 4)
      invoked from within
  "::tkjabber::ClientCB ::jlib::jlib4 networkerror"
      ("uplevel" body line 1)
      invoked from within
  "uplevel #0 $lib(clientcmd) [list $jlibname
  networkerror]     "
      (procedure "::jlib::recvsocket" line 16)
      invoked from within
  "::jlib::recvsocket ::jlib::jlib4"

  this is tkchat 1.263 and tcl 8.4.9 as tclkit.


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: 3309165fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: math
priority: 5 Medium
foundin: None
resolution: None
title: math::bigfloat::isInt returns 1 on non-integers
comment:
  Tcl 8.5
  math::bigfloat version 2.0.1

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

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

  A better implementation might be something like:

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


tkt_uuid: 2812473fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: math :: statistics
priority: 5 Medium
foundin: None
resolution: None
title: test-normal description is confusing or wrong
comment:
  The documentation for math::statistics::test-normal says it returns 1 if the data is distributed normally within the given confidence.
  I am not a statistician, but either I am severely confused or this is completely wrong.  It seems that this procedure returns 1 when the null hypothesis of a normal distribution should be rejected, which is the opposite of what I read.

  Also, the confidence specification seems backwards from the things I read---which admittedly are just Wikipedia and MATLAB help---which use significance (alpha), a small number, rather than confidence.  In fact, I don't even think confidence is the right word here, or at least I don't think you're talking about confidence intervals.

  package require math::statstics
  0.6


tkt_uuid: 1747945fffffffffffffffffffffffffffffffff
type: Patch
status: Open
subsystem: profiler
priority: 5 Medium
foundin: None
resolution: None
title: Patch to avoid inflation of the 'statTime' array
comment:
  This patch relates to the size of the statTime array.
  In the existing package (v0.2.3) the statistics on proc execution times are performed on data collected in array 'statTime'. However, if the profiler is run for a length of time, this array is getting very big, which I believe slows down the profiler. I've seen this degradation of performance in a program that uses a lot of 'after time' calls. It looks like for the type of statistics performed with this package there is no need to collect all time samples in the array. With this patch the basic statistics ('mean' and 'sum of squared times') are performed in the 'leaveHandler' proc and the array space is kept small (two array variables -not lists- per profiled function). The calculation of 'sigma' and 'cov' is done when the user issues a ::profiler::print or ::profiler::dump command. I've measured a 6% increase in the execution time of 'leaveHandler' due to the performing of basic stats calculation in this proc.


tkt_uuid: 618241ffffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: None
title: ftp::Get <source> -variable <var> bombs
comment:
  ftp::Get <source> -variable <var>  is used by ftpvfs
  and fails everytime. 

  Test code:
    package require ftp

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

    puts $X
    exit


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

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


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


tkt_uuid: 1968596fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: aes
priority: 5 Medium
foundin: None
title: add -padding to aes package
comment:
  it will be good if you can change the default padding of the string you encrypt by givving the padding algorithm you want to use like PKCS#7 or other popolur padding techniques. this will make it clear that padding is done and can be changed.
  also adding -hexkey will be nice as hex keys are commonly used. if the -hexkey will not be added then better examplesin the documentation of using hex keys will be good.


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

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

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

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

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


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


tkt_uuid: 1123327fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: counter
priority: 5 Medium
foundin: None
resolution: None
title: histograms do not handle negative reals correctly.
comment:
  When I do this: 
  ::counter::init h -hist 10
  ::counter::count h 9.1
  ::counter::count h -9.2

  I end up with bin 0 incremented twice.  I should have
  incremented bin -1 once and bin 0 once.

  proc ::counter::count is incorrect.  This fixes
  (counter.tcl) that problem. 

  -hist {
          upvar #0 counter::H-$tag histogram
  set bucket [expr int([expr floor([expr {$delta /
  $counter(bucketsize)}])])]
          if {![info exists histogram($bucket)]} {
              set histogram($bucket) 0
          }
          incr histogram($bucket)

  The problem is that int(-0.9) == 0 and int(0.9) == 0


  The html output is also incorrect as the labels are off
  by one.  I simply subtracted one in proc
  histHtmlDisplayBarChart

      #set x [expr {$i * $counter(bucketsize) *
  $counter(mult)}]
      set x [expr {($i-1) * $counter(bucketsize) *
  $counter(mult)}]



  There are still problems with the -skip option


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: 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: 1023867fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Out of Date
title: Tk dependency in version 1.7
comment:
  BWidget 1.4 TitleFrame does not work with Tk 8.2

  $ wish8.2
  %  package require BWidget
  1.7
  % pack [TitleFrame .tf -text Test]
  error while autoloading "TitleFrame": unknown option
  "-state"


  $ wish8.4
  %  package require BWidget
  1.7
  % pack [TitleFrame .tf -text Test]
  %

  In some version the "-state" option has been added to
  the TitleFrame Widget, which is which is handled over
  th the Tk label widget. The "label" in Tk 8.2 does not
  support "-state", but the Tk 8.4 label does have this
  method.
  In the BWidgets 1.2 no "-state" method of the
  TitleFrame was present, so this version works with Tk
  8.2.

  I don't know how the situation is in Tk 8.3, neither do
  I know when the "-state" has been added to the
  TitleFrame.

  By,
  Gerhard


tkt_uuid: 1695111fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: doctools
priority: 5 Medium
foundin: None
title: doctools - Gather markup statistics
comment:
  Extend engine to gather statistics about the use of markup commands in a set of documents, and print them. Both only on demand.

  Note: To get the actual commands used (i.e. deprecated ones) this has to be done in the syntax checking layer. Backend is too late, it sees only the canonical commands, and some are filtered out already (include, comments, ...)


tkt_uuid: 1808431fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: dns
priority: 5 Medium
foundin: None
resolution: Works For Me
title: ::ip::version errors when argument is not of form */*
comment:
  can't read "addr": no such variable while executing
  "string first $addr :"
      (procedure "version" line 4)
      invoked from within
  "version $ip"
      (procedure "::ip::type" line 2)
      invoked from within
  "::ip::type $ip"


tkt_uuid: 957919ffffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: uri
priority: 5 Medium
foundin: None
resolution: None
title: uri::split fails on "http://a.b.c/idx?path=/idx"
comment:
  uri::split "http://a.b.c/idx?path=/idx"
  results in
  path: "idx?path=/idx"
  query: ""

  I think the "/" in the query confuses the regexp 
  in "SplitHttp"

  Fixing:
  variable charN {[a-zA-Z0-9$_.+!*'(,)?:@&=-]}
  to:
  variable charN {[a-zA-Z0-9$_.+!*'(,)?:@/&=-]}
  (Note the "/")
  results in the correct result.

  I'm not quite sure if this does affect other functions?

  I ran the "uri.test" but got 12 failures (before and after 
  my change!).

  I'm using uri 1.1.3 (with tcl 8.4.5 on WindowsXP).


tkt_uuid: 726352ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: bwidget configure/Makefile fails to install
comment:
  The currently distributed configure.in and Makefile.in
  that are in bwidget CVS result in a Makefile that looks
  for config/mkinstalldirs , but that file is no longer a
  part of the TEA 2 sample extension's distribution.

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


tkt_uuid: 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: 1615255fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: Installation
priority: 5 Medium
foundin: None
resolution: None
title: The "notes" in INSTALL.TXT are wrong
comment:
  The tcllib-1.9/INSTALL.TXT file has notes at the bottom saying how it interacts with other versions. They don't appear accurate.

  They refer to previous versions of Tcllib, implying an install will clobber them. If the install actually does for some reason clobber old versions, this should be made more emphatic I believe. But it doesn't appear to.


tkt_uuid: 1911513fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: struct :: tree
priority: 5 Medium
foundin: None
title: deserialise into a branch of a tree
comment:
  The 'serialise' action for a tree allows you to serialise a portion of a tree for... well, for whyever you want. The 'deserialise' action, however, overwrites the entire tree with whatever is being deserialised. This Request is to enable to deserialise into a selected node, to make it fully complementary with serialise.


tkt_uuid: 715193ffffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: None
title: unwanted PCDATA space trim
comment:
  ### test code ###

  package require cmdline 1.1
  package require htmlparse 0.3

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

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

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

  ### expected result ###

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

  ### discussion ###

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


tkt_uuid: 3552226fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: mime
priority: 5 Medium
foundin: None
resolution: None
title: docs specify -part, but the option is -parts
comment:
  in mime.man and mime.tcl, -part is specified as the option to ::mime::initialize, but the option is actually -parts


tkt_uuid: 3506188fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: logger
priority: 5 Medium
foundin: None
resolution: None
title: level none cannot be inherited
comment:
  minimal example (responsens with indentation for readability):

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


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

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

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

  ... and ...

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

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

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

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

  Best regards,

  Martin Lemburg


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

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

  Gaetan

   


tkt_uuid: 1800617fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: doctools
priority: 5 Medium
foundin: None
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: 526094ffffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
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: 3441173fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: pki
priority: 5 Medium
foundin: None
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: 880692ffffffffffffffffffffffffffffffffff
type: Patch
status: Open
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: None
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: 2796712fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tclapps :: tkchat
priority: 5 Medium
severity: Minor
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: 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: 2861189fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: None
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: 2933130fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: fuzzy
priority: 5 Medium
foundin: None
resolution: Fixed
title: math::fuzzy::tlt returns incorrect value
comment:
  [::math::fuzzy::tlt 1.0 1.1] returns 1 which is correct.
  [::math::fuzzy::tlt 1.1 1.0] however, also returns 1 which is not correct.

  (Tcl) 37 % package require math::fuzzy
  0.2
  (Tcl) 38 % ::math::fuzzy::tlt 1.0 1.1
  1
  (Tcl) 39 % ::math::fuzzy::tlt 1.1 1.0
  1


tkt_uuid: 2801587fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: jpeg
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::jpeg::getThumbnail help example code
comment:
  In ::jpeg::getThumbnail  help :
  If you open the file as given in the example : 
       set fh [open thumbnail.jpg w+]
  You get a corrupted thumbnail. In order to get a valid one, open it in binary mode :
       set fh [open thumbnail.jpg wb+]


tkt_uuid: 1931567fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
resolution: None
title: pregistry version problem
comment:
  Recently I encountered a problem with pregistry:

   $ /vol/tclsrcsol/ActiveTcl/bin/tclsh8.5
  % package require pregistry
  conflicting versions provided for package "pregistry": 1.0, then 0.1


  What is the expected output? What do you see instead?
  I expected to see the pregistry version number, but instead see the error.

  It has been removed from activetcl's teapot repository, but AK recommended I report the version problem here so that could be fixed.


tkt_uuid: 2974624fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: amazon-s3
priority: 5 Medium
foundin: None
resolution: None
title: man page for xsxp package incorrect
comment:
  In the manpage for the xsxp package the example is given : 

  xsxp::fetch $pxml {html body p#4 b} %PCDATA

  This should be corrected to: 

  xsxp::fetch $pxml {body p#4 b} %PCDATA

  fetch does not use the root node ( i.e. html ) by name and the fetch function purposely steps over it. In fact the only way to return any information about the root node is to specify {} as your path.  
  Having looked at the code one could also update the manpage to say that xsxp::fetch accepts paths in both list and '/' delimited format  (e.g { body p#4 b }  and /body/p#4/b )


tkt_uuid: 3313947fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: http :: autoproxy
priority: 5 Medium
foundin: None
resolution: Fixed
title: Bug 3094654 fixed, but man page update forgotten
comment:
  Item 3094654 (missing dash sign for option names) has been fixed several months ago, but the man page was not updated and still shows option names without dashes:

  http://tcllib.sourceforge.net/doc/autoproxy.html


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

  * doctools 1.2
  test name 'doctools-6.13' re-used; prior use in
  /local/src/tcllib/modules/doctools/doctools.test


tkt_uuid: 1709334fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: None
title: Missing trailing newline hangs sendmessage
comment:
  I'm not sure if this is a mime problem or an smtp problem, but...

  If you use the MIME package to create a text/plain without a newline on the end, then use smtp::sendmessage to send it, it appears to hang after sending the message in the DATA command. I suspect the "close the data" period is winding up at the end of the final line instead of at the start of a line by itself.

  Sample code:
  # The first message goes
  # The second message hangs.

  package require mime
  package require smtp

  proc sendmail {from to bcc subject body {queue 1}} {
    set mail [mime::initialize -canonical text/plain -string $body]
    smtp::sendmessage $mail \
      -debug 1 \
      -header [list From $from] \
      -header [list To $to] \
      -header [list BCC $bcc] \
      -header [list Subject $subject] 
    mime::finalize $mail
  }

  puts "Testing with newline..."
  sendmail "dnew@example.com" "dnew@example.com"  "" \
    "Subject One" "Test body\nNewline present\n"
  puts "Message one sent...\n"
  after 10000
  puts "Testing without newline..."
  sendmail "dnew@example.com" "dnew@example.com"  "" \
    "Subject two" "Test body\nNewline absent"
  puts "Message two sent..."


tkt_uuid: 2370853fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: None
priority: 5 Medium
foundin: None
resolution: None
title: Wrong path added to auto_path
comment:
  If tcllib.kit (the one from http://www.equi4.com/pub/om/sdarchive/) is sourced after twapi-1.1.5.kit, a wrong path gets added to auto_path and "package require tcllib" fails.  If tcllib.kit is sourced alone, or before twapi-1.1.5.kit, it adds two entries to auto_path:

  (ORmaint) 1 % set auto_path
  <several paths>
  (ORmaint) 2 % source tcllib.kit
  (ORmaint) 3 % set auto_path
  <same paths plus> <path to>/tcllib.kit/lib <path to>/tcllib.kit/tcllib

  This is with an 8.5.2 tclkit for Windows. But if sourced after twapi-1.1.5.kit, the second entry gets twapi's name instead of tcllib's:

  (ORmaint) 1 % set auto_path
  <several paths>
  (ORmaint) 2 % source twapi-1.1.5.kit
  (ORmaint) 3 % set auto_path
  <same paths plus> <path to>/twapi-1.1.5.kit/lib
  (ORmaint) 4 % source tcllib.kit
  (ORmaint) 5 % set auto_path
  <same paths plus> <path to>/twapi-1.1.5.kit/lib <path to>/tcllib.kit/lib <path to>/twapi-1.1.5.kit/tcllib

  When I asked about this on c.l.t, Michael Schlenker suggested that it might be a bug in the tcllib kit packaging and asked me to file this bug report.


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

  ---- tie-file-2.1 start

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

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

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

  ---- tie-file-3.0 start

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

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

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

  ---- tie-file-3.1 start

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

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

  ---- tie-file-3.2 start

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

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

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

  ---- tie-file-4.0 start

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

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

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

  ---- tie-file-4.1 start

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

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

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

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

  ---- tie-file-5.0 start

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

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

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

  ---- tie-file-5.1 start

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

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

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

  ---- tie-file-6.0 start

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

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

      x destroy
      removeFile journal
      set msg

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

  ---- tie-file-6.1 start

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

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

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

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

  ---- tie-file-6.2 start

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

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

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

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

  ---- tie-file-7.0 start

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

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

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


  ...

  and on and on and on...


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

  widget::scrolledwindow .s -class SpecialScroller

  or used as a widgetadaptor like so:

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

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


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


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

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

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


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


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

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

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


tkt_uuid: 1011096fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: counter
priority: 2
foundin: None
resolution: None
title: secret undocumented switches to counter::get
comment:
  counter::get has several switches that are not
  documented, but sound useful -maxPerMinute,
  -maxPerHour, -maxPerDay

  Those throw an error for non time based counter types:
  (bin) 70 % counter::init foo -hist 20
  (bin) 71 % counter::get foo -maxPerMinute
  can't read "counter(maxPerMinute)": no such element in
  array

  if they get exposed, throw a more helpful error message


tkt_uuid: 1011094fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: counter
priority: 2
foundin: None
resolution: None
title: Restrictions for counter names not documented
comment:
  The counter names are not arbitrary strings, strings
  containing namespace qualifiers are simply not working:

  (bin) 69 % counter::init ::foo -hist 20
  can't access "counter::T-::foo": parent namespace
  doesn't exist

  Possible solutions:
  a) document this limitation
  b) rework most of the internals, probably slowing down
  counter 

  Just documenting it might be enough.


tkt_uuid: 2414880fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: Build System & Testing
priority: 5 Medium
foundin: None
resolution: None
title: fix installer.tcl to look for and handle tcllibc
comment:
  If one uses critcl to build the C accelerators for tcllib, make install / installer.tcl doesn't install the tcllibc module.

  aku requested in #tcl that I file a bug on this.


tkt_uuid: 2821416fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: smtp
priority: 5 Medium
foundin: None
title: smtp should not use [vwait]
comment:
  Since the smtp client uses [vwait] to run asynchronously, it cannot be used within an application which also uses [vwait].  Since that includes any networking program of any complexity, the smtp client's utility is substantially reduced.

  I have an event-driven smtp client written using coroutines and tcloo which doesn't suffer from this problem, to which you are welcome.

  The same problem appears (on cursory grepping) to be evident in several other tcllib networking packages including ldap, ftp and comm.


tkt_uuid: 1346299fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: tklib :: ctext
priority: 2
foundin: None
resolution: None
title: ctext module dir contains obsolete files
comment:
  The ctext module dir contains file which are obsolete
  since the inclusion in tklib. This is the case at least
  for ctext/installer.tcl but may be true for other files
  related to installation.


tkt_uuid: 3042811fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: json
priority: 5 Medium
foundin: None
resolution: None
title: huddle bug in dicts with complex keys
comment:
  package require huddle

  set bb [huddle create {a b} b c d]
  puts [huddle jsondump $bb]

  Run it, it produces:

  key "{a b}" not known in dictionary
      while executing
  "dict get $src $key"
      (procedure "::huddle::_dict_setting" line 22)
      invoked from within
  "$types(callback:$tag) get_sub $src $path"
      (procedure "_get2" line 4)

  I presume there's something in huddle which inappropriately deals with complex key cases.


tkt_uuid: 1397543fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: snit
priority: 5 Medium
foundin: None
resolution: None
title: Snit v2 not handling tcl8.5 return -options
comment:
  Since snitv2 runs under tcl8.5, I think CallInstance
  needs to handle the extended error options available
  under 8.5, so suggest the following amendment:


  proc ::snit::RT.CallInstance {selfns args} {
      upvar ${selfns}::Snit_instance self

      set retval [catch {uplevel 1 [linsert $args 0
  $self]} result eo]

      if {$retval} {
              return -code $retval -options $eo $result
      }

      return $result
  }

  Although, now I think about it, it doesn't really make
  sense to trap the errors merely to re-throw them, so it
  might be best to just make it this:


  proc ::snit::RT.CallInstance {selfns args} {
      upvar ${selfns}::Snit_instance self

      return [uplevel 1 [linsert $args 0 $self]]
  }

  Or even this:

  proc ::snit::RT.CallInstance {selfns args} {
      upvar ${selfns}::Snit_instance self

      return [$self {expand}$args]
  }


tkt_uuid: 2459470fffffffffffffffffffffffffffffffff
type: Bug
status: Open
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: None
title: Debug and Verbose do not generate output
comment:
  Because log suppresses warnings and lower the ftp package needs to unsuppress so when Verbose and/or Debug is set to 1, the log package will print out the debug messages. Recommend placing the command:
  ::log::lvSuppressLE emergency 0
  in the namespace eval ::ftp command, being the ftp package actually controls when the log command is executed there should be no repercussions in ensuring everything is unsuppressed.


tkt_uuid: 2787849fffffffffffffffffffffffffffffffff
type: RFE
status: Open
subsystem: comm
priority: 5 Medium
foundin: None
title: Can comm use Iocpsock under Windows
comment:
  I have one report of comm not being able to open a windows socket.
  Ther error message was:
  couldn't open socket: no buffer space available
  while executing
  "::comm::comm_cmd_new ::comm::comm ::comm::comm -port 0 -local 1 -listen 1"

  I have a feeling that if comm were to use the Iocpsock package where available this could be taken care of.
  Thanks


tkt_uuid: 1176d3c2d5481df7cf0cae613d0e5e839f5be90a
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
severity: Critical
foundin: 1.14.5
private_contact: 366cc34e0a9b059be3e29604f7a9931e8dee2633
resolution: Invalid
title: Problem with fileutil-writeFile
comment:
  Hi,

  I've tried using the writeFile and appendToFile methods in order to write a new file.
  However, I've managed to write only the first time and afterwards I get am error that the file can't be accessed to write.
  Code:
  set FileName "Temp.out" ;# New file
  ::fileutil::writeFile $FileName "Line Number 1" ;# This line was indeed written
  ::fileutil:appendToFile $FileName "Line Number 2" ;# This line wasn't written to the file error was encountered - file can't be accessed to write.


tkt_uuid: b3577ed586076c7eb7bfc380477629a3fe603479
type: Bug
status: Open
subsystem: oo::util
priority: 5 Medium
severity: Critical
foundin: 1.2
private_contact: cac53f059e06402625535d363c84a4e2ab543e92
resolution: None
title: Requiring oo::util breaks superclass command
comment:
  Consider the following script.  If I uncomment the "package require oo::util" line, then when I try to create "dog" I get the error that "pet does not refer to an object".  It would appear that oo::util is capturing the definition script, and getting the namespace wrong. 

  I'm using version 1.2 of oo::util with version 1.0 of TclOO under Tcl 8.5.14.

  package require TclOO
  # package require oo::util


  oo::class create animal { }

  namespace eval ::projectlib::test {
      oo::class create pet {
          superclass animal
      }

      oo::class create dog {
          superclass pet
      }
  }


tkt_uuid: 8b317b4a636f909a616255cd50723cfb49cb7369
type: Bug
status: Closed
subsystem: fileutil
priority: 7 High
severity: Important
foundin: 1.14.5
private_contact: 01580e7ce2893e9b60786aec40a1062c1e1443e6
resolution: Fixed
title: ::fileutil::findByPattern duplicates entries for virtual filesystems
comment:
  ::fileutil::findByPattern returns duplicate results for files/directories located on virtual filesystems (only seen this with vfs::zip).
  Quick investigation revealed that files on zip virtual filesystem don't seem to have any attributes, so the GLOBF internal procedure counts every FS entry twice.


tkt_uuid: 05d055c2f5e9cf00ca4288dc0885f1fa833daa54
type: Patch
status: Closed
subsystem: math :: statistics
priority: 5 Medium
severity: Minor
resolution: None
title: Weighted histograms
comment:
  The following patch allows weighted histograms via an optional weights list.

  --- /tmp/statistics.tcl	2013-08-02 19:25:36.364258687 +0200
  +++ statistics.tcl	2013-08-02 19:14:46.861278686 +0200
  @@ -174,13 +174,14 @@
   # Arguments:
   #    limits   Upper limits for the buckets (in increasing order)
   #    values   List of values to be examined
  +#   weights   List of weights, one per value (optional)
   #
   # Results:
   #    List of number of values in each bucket (length is one more than
   #    the number of limits)
   #
   #
  -proc ::math::statistics::histogram { limits values } {
  +proc ::math::statistics::histogram { limits values {weights {}}} {
   
       if { [llength $limits] < 1 } {
   	return -code error -errorcode ARG -errorinfo {No limits given} {No limits given}
  @@ -193,7 +194,12 @@
       }
       set last [llength $limits]
   
  -    foreach value $values {
  +    # Will do integer arithmetic if unset
  +    if {$weights eq ""} {
  +	set weights [lrepeat [llength $values] 1]
  +    }
  +
  +    foreach value $values weight $weights {
   	if { $value == {} } {
   	    continue
   	}
  @@ -203,7 +209,7 @@
   	foreach limit $limits {
   	    if { $value <= $limit } {
   		set found 1
  -		incr buckets($index)
  +		set buckets($index) [expr $buckets($index)+$weight]
   		break
   	    }
   	    incr index


tkt_uuid: 0d9f835d4db8a8302405ceb85e574fd38f1c1b9a
type: Bug
status: Closed
subsystem: pt (parsetools)
priority: 5 Medium
severity: Minor
resolution: Fixed
title: docs errors
comment:
  The pt::ast manpage includes references to "pt::ast terminal" and "pt::ast nonterminal", neither of which appear to exist.

  The pt::interp manpage lists the main command as pt::peg::interpreter rather than pt::peg::interp


tkt_uuid: 30be135c2acf9371c3795a53459ba872cd6e135e
type: Patch
status: Open
subsystem: textutil
priority: 5 Medium
severity: Minor
foundin: string.tcl,v 1.2
private_contact: 2e16cf44a6a74fa6537df233cfdd5b7694defa05
resolution: None
title: Add a "capEachWord" proc to textutil::string
comment:
  textutil::string has a "cap" proc to capitalize the first char of a string, but it does not have a proc to capitalize the first char of each word of a sentence.  I propose:

  <pre><code># @c Capitalizes first character of each word of the given <a sentence>.
  #
  # @a sentence: string to manipulate.
  #
  # @r The <a sentence> with the first character of each word capitalized.
  #
  # @i capitalize

  proc ::textutil::string::capEachWord {sentence} {
      regsub -all {\S+} [string map {\\ \\\\ \$ \\$} $sentence] {[string toupper [string index & 0]][string range & 1 end]} cmd
      return [subst -nobackslashes -novariables $cmd]
  }
  </code></pre>
  Then,
  <pre><code>% set s {a \string with $variables}
  % textutil::string::capEachWord $s
  A \string With $variables

  </code></pre>


tkt_uuid: c3ab006ca243cfb78502d0d6105f6fe0a6ad7ee4
type: Bug
status: Open
subsystem: pt (parsetools)
priority: 5 Medium
severity: Minor
resolution: None
title: pt help misleading
comment:
  "pt help" lists the command line as

      pt generate PFORMAT PFILE ?-option value...? INFORMAT GFILE

  This gives an error if any options are used.  The correct command line is given in the manpage:

      pt generate resultformat ?options...? resultfile inputformat inputfile


tkt_uuid: 1b7fe4fe192b1f11ca6e706735639ba33c572715
type: Bug
status: Open
subsystem: pt (parsetools)
priority: 5 Medium
severity: Minor
resolution: None
title: pt errors generating critcl
comment:
  When running "pt generate critcl ...", the following error occurs:
  INTERNAL ERROR :: can't read "class": no such variable
  INTERNAL ERROR ::     while executing
  INTERNAL ERROR :: "pt::cparam::configuration::critcl def  $class $package  {pt::peg::to::cparam configure}"
  INTERNAL ERROR ::     (procedure "::pt::pgen::Write::critcl" line 8)
  INTERNAL ERROR ::     invoked from within
  INTERNAL ERROR :: "Write {*}$args [pt::peg::from::peg convert $input]"
  INTERNAL ERROR ::     (procedure "::pt::pgen::peg" line 3)
  INTERNAL ERROR ::     invoked from within
  INTERNAL ERROR :: "::pt::pgen $grammarformat  [fileutil::cat $grammarfile]  $parserformat {*}$args"
  INTERNAL ERROR ::     (procedure "::pt::app::generate" line 14)
  INTERNAL ERROR ::     invoked from within

  The problem appears to be a missing "ClassPackageDefaults" in pt::pgen::Write::critcl that should be somewhere around 
  http://core.tcl.tk/tcllib/artifact/8cb118c2a3?ln=114,116

  Once that was fixed, I got further errors about not being able to find the include files in rde_critcl but these may have been an install glitch.


tkt_uuid: eafe454028043ab724b0e3e2bdbdd132b5dd78ba
type: Bug
status: Open
subsystem: textutil :: expander
priority: 5 Medium
severity: Cosmetic
private_contact: c355fe76647598e366b7455160fc6b2fe290cec1
resolution: None
title: expander tutorial mistake
comment:
  In tutorial there is:
  package require expander
  ::expander::expander myexp

  probably should be:
  package require textutil::expander
  textutil::expander myexp


tkt_uuid: b25b826973edcbb5b3a95f6c284214925a1d5e67
type: Bug
status: Open
subsystem: math :: interpolate
priority: 5 Medium
severity: Severe
foundin: math::interpolate 1.0.2
private_contact: f463162b66810fbbda2c193cc3476868adfe003a
resolution: None
title: Inconsistency in ::math::interpolate::interp-1d-table
comment:
  A table must define in "::math::interpolate::defineTable" that way :

  xname y1name  y2name  y3name ...
  dummy   y1      y2      y2 ...
  x1    value11 value12 value13
  x2    value21 value22  ...
  x3   ...
  ...

  where "dummy" is not used. The xvalues are correctly taken in "::math::interpolate::interp-table" through the line :

  set xvalues [lrange [$table get column 0] 2 end]

  This is not the case in "::math::interpolate::interp-1d-table" were we have the line :

  set xvalues [lrange [$table get column 0] 1 end]

  So a patch is to use the same indexation in both command, to have usable table for both commands, that is :

  set xvalues [lrange [$table get column 0] 2 end]


tkt_uuid: e65df22e92a688af3072fd6d169866c70297e48c
type: Bug
status: Open
subsystem: textutil :: expander
priority: 5 Medium
severity: Minor
foundin: 1.16
private_contact: 24c76b4d51afd306f214a0794c097894cdc960df
resolution: None
title: Incorrect documentation in expander man page
comment:
  expander.man revision 1.16 doc need a minor tweak

  line 285 reads "package require expander" should be "package require textutil::expander"

  line 287 reads "::expander::expander myexp" should be "::textutil::expander myexp"


tkt_uuid: 503072180630052b44fcf6bb3fe85d6a5df914f6
type: Bug
status: Open
subsystem: sasl
priority: 5 Medium
severity: Minor
foundin: trunk
private_contact: fd1fe9a60d78aa748a00bf6941d09b094c108ac4
resolution: None
title: SASL::NTLM error
comment:
  This is a duplicate of http://sourceforge.net/p/tcllib/bugs/1362/
  SASL::NTLM::CreateGreeting sets wrong flags and here is a patch: http://sourceforge.net/p/tcllib/bugs/_discuss/thread/9cd4e823/23c9/attachment/ntlm.diff


tkt_uuid: 444358b66ea61dc9c96216c09454bb9ec557824b
type: Bug
status: Open
subsystem: sha1
priority: 5 Medium
severity: Minor
foundin: tcllib 1.15
private_contact: 4fc15a9fd36528d4bf38dcb7fcef28bbd405fde3
resolution: None
title: Argument parsing ambiguity with sha256 family
comment:
  There is an argument parsing ambiguity with the sha256 family procs.  Attempting to obtain the sha256 or sha224 of a string which begins with the five characters "-file" while simultaneously using the -hex or -bin option results in an obtuse parsing error:

  % set string "-filename"
  -filename
  % sha2::sha256 $string
  d59d41ea6c9bec8a6d705fd20ae6026cc6bd95f7db11fdace16d23f9a4a7d407
  % sha2::sha256 -hex $string
  list doesn't contain element 1
  % sha2::sha256 -bin $string
  list doesn't contain element 1
  % sha2::sha256 -hex -- $string
  d59d41ea6c9bec8a6d705fd20ae6026cc6bd95f7db11fdace16d23f9a4a7d407

  Note, the _undocumented_ "end of options" option will correct the ambiguity.


tkt_uuid: dc50cc65ea64fab35ecb769eabe3e98b6e5d53d9
type: Bug
status: Open
subsystem: uri
priority: 5 Medium
severity: Minor
foundin: 1.2.2
private_contact: 0f366eb3e9e2fcab52b8ebacd197db9047186a5f
resolution: None
title: package uri should accept case insensitive scheme names
comment:
  An upper case scheme name in not correctly processed:

  <verbatim>
  % uri::split HTTP://WWW.ELMICRON.DE/
  fragment {} port {} path HTTP://WWW.ELMICRON.DE/ scheme http host {} query {}
  </verbatim>

  But following RFC 3986, URL Scheme names should be case insensitive:
  [http://tools.ietf.org/html/rfc3986]
  Chapter 3.1:
  <verbatim>
     Scheme names consist of a sequence of characters beginning with a
     letter and followed by any combination of letters, digits, plus
     ("+"), period ("."), or hyphen ("-").  Although schemes are case-
     insensitive, the canonical form is lowercase and documents that
     specify schemes must do so with lowercase letters.  An implementation
     should accept uppercase letters as equivalent to lowercase in scheme
     names (e.g., allow "HTTP" as well as "http") for the sake of
     robustness but should only produce lowercase scheme names for
     consistency.
  </verbatim>

  See also the similar bug in the http package:
  [http://core.tcl.tk/tcl/tktview?name=3eb2ec1449]

  The following patch cures this issue:
  <verbatim>
  --- C:/oehhar/elmicron/projekte/el1005/scanlink.vfs/ilib/tcllib/uri/uri_ori.tcl	Wed Dec 14 11:55:00 2011
  +++ C:/oehhar/elmicron/projekte/el1005/scanlink.vfs/ilib/tcllib/uri/uri.tcl	Wed Oct 02 16:23:22 2013
  @@ -166,7 +166,7 @@
       set scheme {}
   
       # RFC 1738:	scheme = 1*[ lowalpha | digit | "+" | "-" | "." ]
  -    regexp -- {^([a-z0-9+.-][a-z0-9+.-]*):} $url dummy scheme
  +    regexp -- {^([A-Za-z0-9+.-][A-Za-z0-9+.-]*):} $url dummy scheme
   
       if {$scheme == {}} {
   	set scheme $defaultscheme
  @@ -181,7 +181,7 @@
   
       regsub -- "^${scheme}:" $url {} url
   
  -    set       parts(scheme) $scheme
  +    set       parts(scheme) [string tolower $scheme]
       array set parts [Split[string totitle $scheme] $url]
   
       # should decode all encoded characters!
  </verbatim>


tkt_uuid: cfb76ff494aef22082420afa82456a6fcb0e0d40
type: Bug
status: Open
subsystem: uri
priority: 5 Medium
severity: Minor
foundin: 1.2.2
private_contact: 0f366eb3e9e2fcab52b8ebacd197db9047186a5f
resolution: None
title: host-only URL is split into path compnent and not host component
comment:
  Users tend to enter URL's without a scheme:
  <verbatim>
  www.test.com
  </verbatim>

  uri::split puts this into the path component:
  <verbatim>
  % uri::split www.test.de
  fragment {} port {} path www.test.de scheme http host {} query {}
  </verbatim>

  IMHO it should be put in the host component, as it is done if there is a scheme present:
  <verbatim>
  % uri::split http://www.test.de
  fragment {} port {} path {} scheme http host www.test.de query {} pwd {} user {}
  </verbatim>

  See also clt post [https://groups.google.com/forum/#!topic/comp.lang.tcl/tqNIVQAyswg]


tkt_uuid: 3d91afbcf2c71fc672c3d5c45a8a6595f3ef2ce2
type: Bug
status: Open
subsystem: json
priority: 5 Medium
severity: Critical
foundin: 1.1.2
private_contact: 1b426e825d7297e7e76b5b6f53373fdadbd70409
resolution: None
title: parser doesn't accept some valid strings in json
comment:
  json2dict fails to parse some valid json. The problem seems to be strings containing certain escaped characters such as regular expressions. It's hard to follow tokenRE, but it seems to make some assumptions about what are valid characters to escape. But given a regular expression is a valid json string, then potentially any character could be escaped. 

  The following json causes the token parsing to misparse the tokens at the last line below:

  {
    "base": {
      "modes": {
        "cmds": 1,
        "priv": 0
      },
      "prompts": {
        "access": "(_unmatchable_)$",
        "discard": "(_unmatchable_)$",
        "incomplete": "\% Incomplete command\.",
  <snip>

  The string in the incomplete object screws up the parser. Removing the backslashes allows it to parse but is not a fix of course. 

  I now seem to have fixed the issue by adding '%' and '.' to the list of escapable characters in json.tcl, i.e.

  variable escapableREs { "%" "\." "[\\\"\\\\/bfnrt]" "u[[:xdigit:]]{4}" }

  But I'm unsure what side effects this might create if any..

  Interestingly the parser has no problem with json strings like this:

  "\[\\r\\n\]+(\\(\[\[:alnum:\]_-\]+\\) >)$"


tkt_uuid: 556e47ff73d55056ff7715c076c4892c5ae1f635
type: RFE
status: Open
subsystem: general request
priority: 5 Medium
severity: Minor
foundin: 2.0
private_contact: 5846a328c39e4967aaeb56d4e03d3e783e2dd1b8
resolution: None
title: Add Tao to Tcllib
comment:
  I would like to add TAO to Tcllib.

  TAO is an object system presented at the 20th annual Tcl conference in New Orleans. It adds properties, option handling, and notifications to TclOO objects. It also provides the core functions needed for the taotk megawidget set.


tkt_uuid: 66d0effebc8d93a0c3d5c259c98a94563c16cf98
type: Bug
status: Closed
subsystem: tepam
priority: 5 Medium
severity: Minor
foundin: 0.1.0
resolution: None
title: tepam::doc_gen: POD format incorrectly formatted
comment:
  The argument list of generated POD files are incorrectly formatted:

  > =item [-mtype E<lt>mtypeE<gt>]
  > Message type

  There should be an empty line between =item and the following line:

  > =item [-mtype E<lt>mtypeE<gt>]
  >
  > Message type


tkt_uuid: 01afa9345d4f1f09330edf57cf53971f3d92acf3
type: Bug
status: Open
subsystem: textutil :: expander
priority: 5 Medium
severity: Minor
foundin: 1.3.1
private_contact: 24c76b4d51afd306f214a0794c097894cdc960df
resolution: None
title: textutil::expander expand - cget within an expand
comment:
  This may be as intended but it appears that running cget inside of an expand call throws an error.

  testcase:

  ::textutil::expander exp
  exp cset BAR FOO
  exp expand {[exp cget BAR]} --> throws error

  but 
  ::textutil::expander exp2
  exp2 cset BAR2 FOO2
  exp expand {[exp2 cget BAR2]} --> yields FOO2

  This seems like a bug but perhaps I'm missing something.  

  Really like the expander package. Thank you.


tkt_uuid: a761133422392c8ad5780299831b22f8bdcc96ab
type: Patch
status: Open
subsystem: imap4
priority: 5 Medium
severity: Minor
private_contact: 5b861da73eb25bd34a919c8675a3381d9132b73b
resolution: None
title: imap4: fix minor bugs in imap4::cleanup, imap4::isableto
comment:
  The attached patch will fix the two bugs:
  - imap4::cleanup was supposed to call ::close, but instead called imap4::close
  - imap4::isableto - when capa optional argument wasn't given,
      will result in error: can't read "result": no such variable


tkt_uuid: 1d2b62d10d250a0fa43e9b56adbdb967e10db057
type: Bug
status: Open
subsystem: jpeg
priority: 5 Medium
severity: Severe
foundin: jpeg 0.4.0
private_contact: af9c70d5700d5af288b87a3a9ed94e1300911d18
resolution: None
title: jpeg::getExif crash
comment:
  jpeg 0.4.0 --  On Win XP,  TclTk 8.5.8

  Trying to get thumbnails from some jpegs, the following command
    jpeg::getExif c:/tmp/1000.jpg thumbnail
  raises the following error:
    jpeg::getExif  c:/tmp/1000.jpg thumbnail
    can not find channel named "fileebf2e0"

  Note that I have no problems when loading/displaying this file.

  Even the "jpeg::debug" command raises an error :
  marker: d8 length: 0
    SOI (Start Of Image)
  marker: e0 length: 14
    JFIF
      Header: 1.1 1 96 96 0 0
  marker: e1 length: 20
    EXIF data
      MAIN EXIF
      ExifOffset 30
      ExifByteOrder little
      THUMBNAIL EXIF
  can not find channel named "fileebcd58"


tkt_uuid: 4f9147ded45d6b5458236a4a7dd76c305e88c9c7
type: Bug
status: Open
subsystem: http :: autoproxy
priority: 5 Medium
severity: Minor
private_contact: 46b36ee666836233bb67043fcfaddd0f6ba390a1
resolution: None
title: autoproxy HTTPS support should handle authentication
comment:
  Although it is possible to use HTTPS with autoproxy:
  http::register https 443 ::autoproxy::tls_socket

  It does not handle any of the basic authentication configurations by ::autoproxy::configure.


