# ticket

tkt_uuid: 611477ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: ProgressDlg bug
comment:
  I wrote the following simple test program (test.tcl)

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


tkt_uuid: 1448800fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Rejected
title: PagesManager not themable
comment:
  The PagesManager widget doesn't check 'BWidget::theme'
  and therefore always uses a tk::frame instead of a
  ttk::frame.  This means when a theme (e.g. Aqua on
  MacOSX) needs interesting frames with textured
  backgrounds, the PagesManager looks totally out of place.


tkt_uuid: 1797428fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: asn
priority: 5 Medium
foundin: None
resolution: Fixed
title: padding byte in asnBitString missing
comment:
  The mandatory padding byte in the encoding of the BitString type is missing in the encoder.

  reported by "Fang, Lun Gang \(Ark\)" <lungangfang@alcatel-lucent.com>


tkt_uuid: 2182378fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: nameserv (aka nns)
priority: 5 Medium
foundin: None
resolution: Fixed
title: Running nameserv::search results in no such variable error.
comment:
  Running nameserv::search with no arguments results in no such variable error.  The "0" condition of the switch in ::nameserv::search-parseargs does not set oneshot.

  nameserv::search
  can't read "oneshot": no such variable
      while executing
  "list oneshot $oneshot continuous $continuous pattern $pattern"
      (procedure "search-parseargs" line 46)
      invoked from within
  "search-parseargs $args"
      (procedure "nameserv::search" line 9)
      invoked from within
  "nameserv::search"
      (file "client.tcl" line 9)


tkt_uuid: 1161779fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Fixed
title: destructor can't precede constructor
comment:
  The following code:

  package require snit

  ::snit::type Boom {
      destructor {
      }

      constructor {args} {
  $self configurelist $args
      }
  }

  Causes:

  extra characters after close-brace
      while executing
  "error $result"
      (procedure "Comp.Define" line 12)
      invoked from within
  "Comp.Define [Comp.Compile type $type $body]"
  ...

  Because (I think) snit sees the destructor and decides
  to create a default constructor (without a space, for
  some reason.)


tkt_uuid: 1043107fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: MainFrame: Accelerator Ctrl f does not work
comment:
  A Ctrl f accelerator in a MainFrame menu definition
  does not work.

  Example script:

  package require BWidget

  set menuDef {
      "Datei" {} {} 0 {
          {command "E Entry" {} "" {Ctrl e} \
               -command  {puts "E Entry called"}}
          {command "F Entry" {} "" {Ctrl f} \
               -command  {puts "F Entry called"}}
          {command "G Entry" {} "" {Ctrl g} \
               -command  {puts "G Entry called"}}
      }
  }

  MainFrame .mf -menu $menuDef

  Control-e and Control-g fire, Control-f does not.

  The reason is in MainFrame::_parse_accelerator. The
  regexp {f[1]?[0-9]*} tries to select f1 etc, to
  capitalize the f, but unfortunately the regexp also
  match a single 'f'. This ends in the Binding
   <Control-Key-F> instead of the necessary <Control-Key-f>.


tkt_uuid: 1352763fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
resolution: Duplicate
title: file appender for logger
comment:
  file appender for logger patch includes:

  Patch file includes the following changes:

  * changes to man pages
  * new appender fileAppend
  * fixes to createLogProc to allow channel selection
  * tests 


tkt_uuid: 1950457fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Invalid
title: hierarchical methods are not delegated
comment:
  Hi,

  I was stumbling over an unusual behavior of the hierarchical methods. The attached script will deliver the following output:

  Tcl version: 8.4.18
  snit version 1.3.1
  [::.gf is foo] := This is gFoo 1!
  [::.gf isFoo] := This is gFoo 2!
  [::.gf is bar] := "::.gf is bar" is not defined
  [::.gf isBar] := This is gBar 2!

  Tcl version: 8.5.2
  snit version 2.2.1
  [::.gf is foo] := This is gFoo 1!
  [::.gf isFoo] := This is gFoo 2!
  [::.gf is bar] := unknown subcommand "bar": must be foo
  [::.gf isBar] := This is gBar 2!

  The method "isBar" of type gBar is correctly delegated and available to an object .gf of type gFoo, while the method "is bar" is not.

  Is this a bug, or did I miss the respective chapter in the docs?

  kind regards
  -- Matthias Kraft


tkt_uuid: 1592656fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: let ::ftp::Put uses STOU and STOT
comment:
  The ::ftp::Put command dosen't use the STOU command
  when no name for the remote file has been provided. I think
  it should.

  HylaFax server uses STOT ftp command to create a temporary
  unique file to use in order to send a fax. This patch
  add a -hylafax
  option to the ::ftp::Put command to let you use it. So
  for example,
  you can now connect via ftp to your HylaFax server and
  send it
  the fax this way:

      ::ftp::Put $ftpH -hylafax -data $faxdata


tkt_uuid: 630500ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget panedwindow _realize problem
comment:
  Hi,

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

  Jos.


tkt_uuid: 411422ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Accepted
title: Fix for bug #404917
comment:
  This patch fixes the bug 404917 by explicitly adding
  smtp to the list of packages to list in the main
  package index.


tkt_uuid: 822850ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 8
foundin: None
resolution: Fixed
title: incorrect eval use in various modules
comment:
  As pointed out by Jeff Hobbs on TCLCORE, eval is used
  in incorrect and unsafe ways in various modules. This
  should be fixed.

  Michael


tkt_uuid: 637695ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtpd
priority: 1 Zero
foundin: None
resolution: Invalid
title: Invalid response after receiving DATA
comment:
  After receiving a DATA command, smtpd.tcl first replies
  "250 OK"  then "354 Enter mail ..." . RFC 2821 states
  that "DATA" should be answered by "354 ..." and "250
  ..." AFTER Data submission has finished.


tkt_uuid: 1720144fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 8
foundin: None
resolution: Fixed
title: Unable to ftp files with multiple spaces together
comment:
  In ftp::read there is a line:

  set parts [split $command]

  The problem with splitting on a space is that multiple spaces will turn into empty list elements {}.

  I understand the split is needed to make sure $command is a valid list, but perhaps there could be some sort of statement to remove empty list elements.  Something like:

  set parts [string map {\{\} ""} [split $command]]


tkt_uuid: 776010ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: list
priority: 8
foundin: None
title: Add set operations.
comment:
  Date: 22 Jul 2003 17:46:51 GMT
  From: lvirden@yahoo.com
  Newsgroups: comp.lang.tcl
  Subject: Re: common elements in list of list


  According to Michael A. Cleverly <michael@cleverly.com>:
  :On 22 Jul 2003, Sasi wrote:
  :
  :>        How can get the list of common elements in
  the list of list? eg:
  :> set x {
  :>        {1 2 3 4 5 6}
  :>        {6 7 8 9 5 1}
  :>        {1 2 7 5 8 9}
  :>       }
  :>
  :> the common elements in this list of list are 1 & 5
  :> is there any easy way to extract them?
  :
  :Here's a solution off the top of my head:

  Michael, would you consider possibly adding this
  solution, or a derivation, to the struct::list module
  of tcllib?


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

  Here's a script that shows the bad behavior:

  #!/bin/tclsh

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

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

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

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

  Here's the output:

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

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

  If I use htmlparse to parse this string:

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

  it works fine.

  /s.


tkt_uuid: 956930ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 7 High
foundin: None
resolution: Not Applicable Here
title: Unknown state "pwd_sent"
comment:
  Unknown state "pwd_sent"
      while executing
  "error "Unknown state \"$ftp(State)\"""
      ("default" arm line 2)
      invoked from within
  "switch -regexp -- $ftp(State) {
          list {
              fileevent $sock readable [list [namespace 
  current]::HandleList $s $sock]
              set ft..."
      (procedure "::ftp::InitDataConn" line 27)
      invoked from within
  "::ftp::InitDataConn 0 sock6 <<cut>> 48836"


  uname -a
  Linux purehype.net 2.4.22-1.2115.nptl #1 Wed Oct 29 
  15:42:51 EST 2003 i686 i686 i386 GNU/Linux

  % info patchlevel
  8.4.6

  % package require ftp
  2.4.1


tkt_uuid: 565051ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: csv::split parsing bug
comment:
  csv::split handles a quoted, null field incorrectly if
  the field is neither the first nor the last field in a
  line/record:

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

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

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


tkt_uuid: 723692ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: tree
priority: 8
foundin: None
title: ADD: ::struct::tree -copy -- myTree myTree2
comment:
  Currently there appears to be no way to copy 
  a ::struct::tree without walking the tree and setting 
  contents to a new tree structure.

  CURRENT METHOD:

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

  # New Tree Structure
  ::struct::tree myTree2

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


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


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

  Any Questions?

  David Bigelow
  davidhbigelow@compuserve.com


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

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

  Tested on 1.8 and some older versions.


tkt_uuid: 1597589fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: diagrams
priority: 5 Medium
foundin: None
resolution: Out of Date
title: Various issues with the diagrams package
comment:
  Yeeling reported on the Tclers' chat the following 
  issues:
  - No package provide yet
  - circle string radius - does not work
  - line [getpos ..] [getpos ..] - does not work
  - arrows built from two or more line segments would be 
    nice


tkt_uuid: 2866540fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: widget
priority: 5 Medium
foundin: None
resolution: Fixed
title: calendar widget -textvariable does not work both ways
comment:
  I tried the following example, based on information from the man page:
   tclsh8.6
  % package require widget::calendar
  0.91
  % set t [widget::calendar -textvariable ::a .t]
  unknown subcommand "-textvariable": namespace ::widget::calendar does not export any commands
  % set t [widget::calendar .t -textvariable ::a]
  .t
  % pack .t
  % set ::a 9/25/2009
  9/25/2009
  % puts $::a
  09/21/2009
  % puts $::a
  09/26/2009
  % set ::a 10/10/2010
  10/10/2010
  % 
  When I clicked on different days on the widget, $::a changed value. HOWEVER, when I change the text variable, the widget's display does not change to reflect the difference.


tkt_uuid: 905906ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: des
priority: 5 Medium
foundin: None
resolution: Fixed
title: des: problem wit variable options - variable not set
comment:
  I got an error report while using the DES module in the
  following way:

  DES::des -mode decode -key $passwd $string

  The loop to analyse the arguments ran into the default
  case and produced an error because the options variable
  was not set. 

  The remedy was simple (after inspecting the code):

  DES::des -mode decode -key $passwd -- $string

  The error message should at least:
  - show the list of valid keywords
  - show an indication that perhaps "--" was forgotten


tkt_uuid: 1655119fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tar
priority: 5 Medium
foundin: None
resolution: Fixed
title: Possible permissions problem with tar
comment:
  (Some of this was posted to comp.lang.tcl):

  I have a simple script that uses the tcllib tar command.  It tar creates a tar file containing a directory.  The directory contains subdirectories.  Each of those sub-directories contain the following
  sub-directories:

  exec/
  export/
  server/
  lib/

  The directory tree looks this way:

  devdir_4.1/
          subdir1/
                     exec/
                              bin/
                                  file1
                                  file2
                                  file3

                     export/
                                  file1
                                  file2
                                  file3

                     lib/
                                  file1
                                  file2
                                  file3

                     server/
                              bin/
                                  file1

          subdir2/
                     exec/
                              bin/
                                  file1
                                  file2
                                  file3
                     export/
                                  file1
                                  file2
                                  file3

                     lib/
                                  file1
                                  file2
                                  file3

                     server/
                              bin/
                                  file1

  ...  etc

  The problem I am having is that it is not archiving the exec/ directory.   The export/ directory does contain some of the same executables that are located in the exec/ directory.  But, when you do a tar tvf on the tarfile that is created, there is one instance of the
  exec directory in one of the subdirs, but none of the others.  It's as if the exec/ directory gets passed over.

  Here is my script:

  #!/usr/bin/tclsh

  lappend auto_path /export/kdp/dev/tcl/lib
  package require tar

  ::tar::create tarball.tar devdir_4.1 

  I got an e-mail respnse from an Aaron F. requesting a tarball so he could look at the problem.  Because of company proprietary issues, I could not send the originals.  So, I dummied up a set of files in a tarball.  I created a directory structure that contained files from /bin and /lib (on my linux box) to simulate the kind of files each directory contained.  When I ran the script against the new tarball, it worked just fine.  So, apparently, there is  something else weird going on.    I'm thinking now it may be some sort of permissions problem.  Other notes of interest:

  - I am grabbing files from across a local network via NFS.
  - None of the files are symbolically linked.
  - The directory that I am tarring from was populated by various operating systems (Solaris, HP-UX, Linux, AIX).

  Thanks for your great work.  
  Have a nice day,
  Keith Pickett


tkt_uuid: 527716ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 7 High
foundin: None
title: add [usage] support
comment:
  The library seems to be designed for documenting 
  packages, but is missing something for doing man pages 
  of individual commands. Or maybe I don't quite 
  understand how it works. Specifically, it appears that 
  the only way to get something into the automatically 
  generated SYNOPSIS section is to first put it in a 
  [call] statement inside a definition list. Anyone know 
  if that is a true statement?

  When I tried using the package to write a man page for 
  a single command, I found this undesireable. I want a 
  SYNOPSIS section, but I don't want to have to put the 
  synopsis as an element in a definition list -- that 
  just doesn't fit the way I want to document the 
  command. The document would end up with the synopsis 
  twice -- once wherever I put it and once in the 
  SYNOPSIS section. 

  What I propose is a new command, [usage], which lets 
  one define a usage statement. The difference between 
  this and [call] is that [usage] wouldn't cause 
  anything to be generated as a direct result of the 
  command. Instead, it just stores the string for the 
  SYNOPSIS section. Thus, it could appear anywhere in 
  the source, though typically it would appear at the 
  top.

  I've attached a patch file that adds this new command. 
  Use at your own risk. This adds a "usage" command to 
  each of the formats (fmt.html, fmt.tmml, etc) and 
  updates mpexpand to know about the new command. I 
  haven't verified that the latex and tmml versions 
  generate correct output, but they should. The commands 
  are clones of the call proc, but return an empty 
  string rather than a formatted string.

  FWIW, here's how I'm using it in my man page right now:

  [manpage_begin fontdialog n 1.0]
  [moddesc   {Dialogs}]
  [titledesc {A dialog for defining a font 
  specification}]
  [usage [cmd "package require Tk 8.2"]]
  [usage [cmd "package require ::dialog::fontdialog"]]
  [usage [cmd ::dialog::fontdialog::fontdialog] \
         [opt "-applycommand [arg script]"] \
         [opt "-fixed [arg boolean]"] \
         [opt "-font [arg fontDescription]"] \
         [opt "-sizes [arg list]"] \
         [opt "-title [arg string]"] \
         [opt "-variable [arg boolean]"] \
  ]
  [description]
  ...


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

  A very simple image browser is attached...


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

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


tkt_uuid: 3011581fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Fixed
title: Doc bug w/ -header option
comment:
  The current man page for the smtp command documents the "-header" parameter like so:

  -header
      A list of keywords and their values (may occur zero or more times). 

  From the phrasing of the statement (list of keywords (plural) and their values (plural)) and the position of the parenthetical, the docs appear to state that a single "-header" option can accept a list of plural headers and plural values.  I.e.: "-header [ list To a@example.com From b@example.com Subject Hi ]".

  However, this is not the case, looking at the code in smtp, each individual "-header" parameter takes a list of exactly two elements, nothing more, nothing less.

  While I think that allowing a single "-header" option to accept a list of plural headers and values is a superior fix, for now I simply propose that the documentation be edited to more accurately reflect the current implimentation.  Something like so:

  -header
      A list containing two elements, an smtp header and its associated value (the -header option may occur zero or more times). 


tkt_uuid: 3007956fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 7 High
foundin: None
resolution: Fixed
title: problem loading msgcat
comment:
  platform: sparc solaris 8, sun c compiler
  tcl 8.6 cvs head
  tcllib cvs head

  I decided on a whim to run the tcllib test suite today against tcl 8.6 cvs head. So far, I've encountered about 4 dozen test failures that look something like this:

  ---- doctools-idx-51.27 start

  ==== doctools-idx-51.27 doctools::idx deserialize = docidx, incbadcmd, error mes
  sage FAILED
  ==== Contents of test case:

          I deserialize = $data docidx
      
  ---- Result was:
  Unable to locate or load plugin "docidx" (ERROR for slave interp45 : can't find 
  package msgcat)
  ---- Result should have been (exact matching):
  "/vol/tclsrcsol/tcl86/tcllib/modules/doctools2idx/tests/data/bad_command" error 
  on line 1.4: Wrong#args for "key", need at least 1
  ==== doctools-idx-51.27 FAILED


  If I start up a tclsh8.6 directly, and type in package require msgcat, it is found.


tkt_uuid: 3556779fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: widget
priority: 5 Medium
foundin: None
resolution: Out of Date
title: No calendar in August
comment:
  I use widget_calendar with this command:
  widget::calendar .z5fd.app.frdia.date -dateformat "%Y-%m-%d" -language de -textvariable zAr_uiDia(exposureDate)  -command z5ui_selectedDate

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

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

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

  well, i hope, you can help
  regards Bernd


tkt_uuid: 1205536fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: ComboBox Return binding broken if -bwlistbox set
comment:
  The Return binding on a ComboBox is broken if the -bwlistbox option is 
  set. The problem is that the binding is set on the underlying canvas rather 
  than on the BWidget ListBox widget, and so the "curselection" method 
  isn't supported.

  The attached patch fixes the problem by passing the path to the ListBox 
  widget, rather than %W (which will expand to the name of the underlying 
  canvas widget).


tkt_uuid: 2499641fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: stripPath does not correctly handle mixed case paths
comment:
  stripPath does not correctly handle mixed case paths on Windows. See console session below

  (woof) 65 % ::fileutil::stripPath /temp /temp/foo
  foo
  (woof) 66 % ::fileutil::stripPath /temp /Temp/foo
  /Temp/foo

  On windows, it should recognize that /temp and /Temp are in fact the same.

  Platform: fileutil 1.13.5 under Tcl 8.6b1 on Windows XP SP2

  /Ashok


tkt_uuid: 1349154fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: irc
priority: 5 Medium
foundin: None
resolution: Accepted
title: Patch to return channel from connection
comment:
  Just a small and trivial little patch which will return the channel 
  used for a particular connection. Useful at least for setting stuff 
  like -encoding, although that should probably be handled by a 
  separate command.

  setox:~/Proging/tcllib setok$ diff /Library/Tcl/tcllib1.7/irc/irc.tcl 
  irc.tcl 
  10c10
  < package provide irc 0.5
  ---
  > package provide irc 0.6
  144a145,154
  >       # Return socket for this IRC connection, or "" if one does 
  not yet
  >       # exist.
  > 
  >       proc cmd-socket {} {
  >           variable sock
  > 
  >           return $sock
  >       }
  > 
  > 


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

  [General]    
  key=value
  key2=value2


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

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


tkt_uuid: 2824771fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: doctools test case 50.0.1 fails
comment:
  CVS head of tcllib and tcl 8.6, built on sparc solaris 8 using sun's c compiler.

  The following is one of several similar errors that occurred yesterday when I tried running the tcllib test suite against tcl 8.6 cvs head.

  ---- doctools-idx-50.0.1 start

  ==== doctools-idx-50.0.1 doctools::idx deserialize = docidx, nokeys, ok FAILED
  ==== Contents of test case:

              I deserialize = $data docidx
              doctools::idx::structure print [I serialize]
          
  ---- Test generated error; Return code was: 1
  ---- Return code should have been one of: 0 2
  ---- errorInfo: Unable to locate or load plugin "docidx" (ERROR for slave interp
  1 : can not find channel named "stdout")
      while executing
  "::pluginmgr::Snit_methodload ::pluginmgr ::pluginmgr::Snit_inst1 ::doctools::id
  x::import::Snit_inst1::fmt-docidx ::doctools::idx::import::Snit_inst1::..."
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "$plugin load $format"
      (procedure "::doctools::idx::import::Snit_methodGetPlugin" line 12)
      invoked from within
  "::doctools::idx::import::Snit_methodGetPlugin ::doctools::idx::import ::doctool
  s::idx::import::Snit_inst1 ::IN ::IN docidx"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "$self GetPlugin $format"
      (procedure "::doctools::idx::import::Snit_hmethodimport_text" line 7)
      invoked from within
  "::doctools::idx::import::Snit_hmethodimport_text ::doctools::idx::import ::doct
  ools::idx::import::Snit_inst1 ::IN ::IN {[index_begin KWIC INDEX]
  [inde..."
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "$myimporter import text $data $format"
      (procedure "::doctools::idx::Snit_methodImport" line 17)
      invoked from within
  "::doctools::idx::Snit_methodImport ::doctools::idx ::doctools::idx::Snit_inst90
   ::I ::I docidx {[index_begin KWIC INDEX]
  [index_end]
  }"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "$self Import $format $data"
      (procedure "::doctools::idx::Snit_hmethoddeserialize_=" line 19)
      invoked from within
  "::doctools::idx::Snit_hmethoddeserialize_= ::doctools::idx ::doctools::idx::Sni
  t_inst90 ::I ::I {[index_begin KWIC INDEX]
  [index_end]
  } docidx"
      ("uplevel" body line 1)
      invoked from within
  "uplevel 1 $command $args"
      invoked from within
  "I deserialize = $data docidx"
      ("uplevel" body line 2)
      invoked from within
  "uplevel 1 $script"
  ---- errorCode: NONE
  ==== doctools-idx-50.0.1 FAILED


tkt_uuid: 1428544fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: linearalgebra
priority: 5 Medium
foundin: None
resolution: None
title: Incorrect results from math::linearalgebra::matmul
comment:
  Make this 2 rox 1 column matrix using mkMatrix and setrow:
  {2.333 6.7801}
  Call this A so A is:
  2.333
  6.7801

  Now transpose it and call it At so it is:
  2.333 6.7801

  now do math::linearalgebra::matmul $A $At:

  The result is the error: "can't use empty string as
  operand of "*" "

  when it should be: 51.4126

  Now do math::linearalgebra::matmul $At $A:

  The result is: 51.4126
  when is should be:
      5.4429   15.8180
     15.8180   45.9698

  Other multiplication operations seem to work, it is
  this vector case that look like it fails...


tkt_uuid: 483125ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
resolution: Fixed
title: added features for struct::graph
comment:
  [btw: the Category button at SF does not offer
  a "struct" entry, so this is in the "none"
  category.]

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

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

  Feel free to use or ignore.


tkt_uuid: 1769140fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: findByPattern has problems with NFS-style basedirs
comment:
  Solaris 8
  Tcl 8.4

  If ::fileutil::findByPattern is fed a basedir in the form /net/<machine>/export/disk1/... the resulting file names have the form /export/disk1/... ie the NFS portion of the base directory has been removed.

  mark.thornber@gmail.com


tkt_uuid: 1642050fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: PasswdDlg <Return> traversal wrong when -passwdstate disable
comment:
  Create a PasswdDlg with -passwdstate disabled.  Type in the login name and hit Return.  It should destroy the dialog and perform the login, but instead it sets focus to the disabled password entry field.

  I believe the problem is that the -command option for the login entry is always set to [list PasswdDlg::_verifonpasswd $path $frame.labpass]                                regardless of the value of the -passwdstate option.  If the -passwdstate is disabled, the -command option for the login entry should be [list PasswdDlg::_verifonlogin $path $frame.lablog] instead.


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

  Result of 'cvs diff utils.tcl':

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


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


tkt_uuid: 710139ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Out of Date
title: BWidget 1.4.1 ListBox dropovercmd bugs
comment:
  I encountered 2 bugs in the same proc  ListBox::_over_cmd

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

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

  Below is a small context diff for the the changes:

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

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

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


tkt_uuid: 440049ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 3 Low
foundin: None
resolution: Fixed
title: latest report module test suite fails
comment:
  Note that I didn't see a category for report when
  filing this msg on sf.net

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      catch {report myreport} msg
      set msg

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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


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

  Kind regards,

  Jos.


tkt_uuid: 922877ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: bwidget PasswdDlg - honour labelwidth and fix return binding
comment:
  Fixes the BWidget PasswdDlg widget so that it doesn't ignore the 
  -labelwidth option when calculating the label width.

  Also reinstalled the Return binding so that return now moves through 
  the widgets rather than always selecting OK (i.e. more like the 
  behaviour of various login managers on Windows, Unix)


tkt_uuid: 723318ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: tree
priority: 8
foundin: None
title: struct::tree -- Report maxdepth of struct from node
comment:
  myTree depth $node -- Depth of Current Node
  myTree size $node -- Returns number of Children for 
  that Node


  How about a:

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

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

  For Example:

  myTree maxdepth root
  ---> 3

  myTree maxdepth 6
  ---> 3

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


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

  Any Questions?

  David Bigelow
  davidhbigelow@compuserve.com


tkt_uuid: 867604ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: Problem with focus and spinbox
comment:
  If trying the following code:

  package require BWidget
  pack [spinbox .b1]
  pack [spinbox .b2]
  .b1 insert end hello
  .b2 insert end hello

  and using the <Tab> key, content in the spinbox is not
  selected.

  Solutions seems to add:

  bind Spinbox <<TraverseIn>> [bind Entry 
  <<TraverseIn>>]

  in file init.tcl


tkt_uuid: 1846908fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: special
priority: 5 Medium
foundin: None
resolution: None
title: Ver 1.9: Gamma function implemented incorrectly
comment:
  Hi,

  I am using ver. 1.9 of tcllib. The Gamma function is implemented via factorial:

  proc ::math::special::Gamma {x} {
      ::math::factorial [expr { $x + 1 }]
  }

  However, this should be $x - 1:

  proc ::math::special::Gamma {x} {
      ::math::factorial [expr { $x - 1 }]
  }

  because factorial y invokes ln_Gamma {y + 1}

  Eric


tkt_uuid: 1499135fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Dynamic help balloon position wrong on dual screen WinXP PC
comment:
  In BWidget 1.7, DynamicHelp::_show_help uses [winfo
  vrootwidth .] when setting the position of the balloon.  
  On a dual screen PC vrootwidth only returns the width
  of the "first" screen. 

  As a quick fix I changed :

    if { $x+$width > $scrwidth } {
       set x [expr {$scrwidth - $width}]
    }

  to

    if { $x < $scrwidth & $x+$width > $scrwidth } {
       set x [expr {$scrwidth - $width}]
    }

  in _show_help.

  This dosen't position the balloon correctly at the
  extreem right of the second screen.  However I don't
  know how to get the combined width of the two screens
  to fix it properly.


tkt_uuid: 697022ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: In Button, -repeatdelay command not cancelled on release
comment:
  Say you have a Button that uses the -armcommand -
  repeatdelay -repeatinterval commands:

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

  (Note: VolUp just increses by 1 the volume)

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

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

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

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


tkt_uuid: 3247765fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: smtpd
priority: 5 Medium
foundin: None
title: Add a smtpd::configure -banner callback
comment:
  The first thought using the  smtpd package is that the first response the smtpd does to an accepted client connection is to put up a "banner" reply to the client shouldnt be hardcoded by the smtpd package.

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

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


tkt_uuid: 1224755fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ftp mode active/passive performance
comment:
  When I connect to a server though a firewall using
  the unix ftp command both active an passive mode work
  fine (tested with the dir command).

  When using active mode (the default) via tcllib(v 1.7)
  ftp it takes
  in my case more than 40seconds before I get a response
  with ftp::NList. When setting to passive mode it works fine
  without the delay.

  Why the difference ?


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

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


tkt_uuid: 674331ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: irc
priority: 5 Medium
foundin: None
resolution: Fixed
title: irc: 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: 3593146fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Build System & Testing
priority: 5 Medium
foundin: None
resolution: Accepted
title: Fails to build under windows with cygwin installed
comment:
  Here is an enhanced version of configure.in that makes tcllib build via configure/make under windows with cygwin installed but using native compiler with a non-cygwin tclsh. Please mind th eusage if CYGPATH to pass the arguments to the tclsh properly.
  Do not forget to rerun autoconf when using the new configure.in


tkt_uuid: 492234ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: Documentation toolbox
comment:
  Enclosed a tar archive implementing a 
  module 'doctools', currently providing
  a simple tcl-nased markup for writing
  manpages and a processor for converting
  this format into TMML, HTML, and nroff.
  Other formats can be added at will.


tkt_uuid: 1394840fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: Module assumes wrong global $:: level
comment:
  Under cygwin, I directly sourced:

  source $::Tcllib/md5/md5.tcl
  source $::Tcllib/base64/base64.tcl
  source $::Tcllib/mime/mime.tcl
  source $::Tcllib/mime/smtp.tcl

  It blew up.

  The MIME module gave me this error:

  can't read "::major": no such variable
  while executing
  "if {$::major < 2} {

  I altered the other two references to $major to $::major
  to get around this error.

  I've mentioned this before: bugid 979894.

  You are assuming some namespace wrapping or something.

  Don't do that.


tkt_uuid: 480945ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
title: consolidate tcllib examples
comment:
  Currently tcllib has examples in a higher level example
  directory as well as within several of the module
  directories.

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


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

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

  The attached patch removes the above stuff.


tkt_uuid: 1739359fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ip
priority: 5 Medium
foundin: None
resolution: Fixed
title: "ip::version" is too permissive
comment:
  ip::version 1.2.3.4.example.com  returns "4" when it should return 0.

  tcl>package require ip
  1.1.1
  tcl>ip::version 1.2.3.4.example.com
  4

  Additional arguments to support the theory that this is a bug and not intentional behaviour:

     ip::version only seems to accept dotted-quad notation for IPv4 addresses.  "1.2.3.4.example.com" is not in dotted-quad format.

     If you use the hostname "1.2.3.4.example.com" elsewhere in Tcl where an IP or hostname is accepted, it is treated as hostname (which will be resolved via the system resolver and may not have the IP address "1.2.3.4")


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

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

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


tkt_uuid: 2935339fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::ftpd::config not idempotent
comment:
  Calling ::ftpd::config a subsequent time with a different option resets all previously set options. The problem is is that it uses cmdline::getoptions but supplies the application defaults for unspecified options instead of current values.

  Example:
   ::ftpd::config -authUsrCmd myAuthUsrCmd
   ::ftpd::config -logCmd myLogCmd 
  ==> the authUsrCmd has been reset


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

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

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

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

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


tkt_uuid: 1046955fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget 1.7.0: Tree::insert does not find parent node
comment:
  To the maintainer of BWidget's Tree widget:

  When inserting an element into a parent tree node which
  contained an ampersand (&) in the node name, this
  parent node is not found and an error is issued by
  Tree::insert.

  The following code shows the behaviour:

  package require BWidget 1.7
  frame .ftop
  pack .ftop
  set sampleTree .ftop.tsample
  Tree $sampleTree
  pack $sampleTree
  $sampleTree insert end root "/First&IT" -text "First&IT"
  $sampleTree insert end "/First&IT" "Abc" -text "Abc"

  The error is:

  node "/First&IT" does not exist
      while executing
  "Tree::insert .ftop.tsample end /First&IT Abc -text Abc"
      ("eval" body line 1)
      invoked from within
  "eval [linsert $args 0 Tree::$cmd .ftop.tsample]"
      (procedure ".ftop.tsample" line 1)
      invoked from within
  "$sampleTree insert end "/First&IT" "Abc" -text "Abc""
      (file
  "/home/users/roger/Dev/TclTk/Singles/treetest.tcl" line 17)

  When removing the "&" character from the insert
  commands it works.

  The attached one-line patch solves the problem: The
  parent node name is not converted to canonical form
  with _node_name before checking if the array entry exists.

  The patch does the following:

  set parent [_node_name $path $parent]

  This call overwrites parent with the canonical (mapped
  special characters) node name, add this line just
  before the [info exists data($parent)] line.

  The patch worked fine for me. I did not check the rest
  of the tree.tcl for other missing _node_name calls --
  maybe there are more...

  -- Roger

  PS: Thanks for the cool Tree widget!


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


tkt_uuid: 3012669fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Documentation
priority: 5 Medium
foundin: None
resolution: Fixed
title: msgcat man page conflicts with the Tcl core
comment:
  The msgcat man page of tcllib's doctools module conflicts with the identically named man page from the Tcl core when installing both at the same time.


tkt_uuid: 772442ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: snit
priority: 5 Medium
foundin: None
title: snit: Explore alternative for pkg mgmt setup
comment:
  Snit currently does

      catch {package require snit::__dummy__}

  to setup package management in the internal slave 
  interp it uses to process class definitions.

  This is a bit of a hack. Explore if an alias for 'package' 
  can be used as well.


tkt_uuid: 593254ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Fixed
title: setValue doesn't work right w/ multipart
comment:
  ncgi::setValue doesn't work right with multipart forms,
  if you pass it a string with spaces in it, because of
  the way it gets treated by ncgi::value.  See new test case.


tkt_uuid: 567982ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: dynhelp: balloon + variable
comment:
  Some time ago, someone asked on comp.lang.tcl if it was
  possible with BWidget dynhelp to have both balloon help
  and variable help at the same time. This patch makes
  this possible.

  Jos.


tkt_uuid: 2979481fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: bibtex
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: string macro parsing is buggy
comment:
  the bibtex parser return a -stringcommand if string "string" is found in an entry, not only in case of @string{ key = "str str str"}
  a regexp seems faulty :
  in bibtex.tcl, line 366 : 

   } elseif {[regexp -nocase {\s*string[^\{]*\{(.*)\}[^\}]*} \
                  $block -> rest]} {

  must be replaced to  :

    } elseif {[regexp -nocase {\s*string\{(.*)\}} \
                  $block -> rest]} {


tkt_uuid: 429695ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: base64
priority: 5 Medium
foundin: None
resolution: Fixed
title: Speed increase of base64 & md5
comment:
  The patch contains:

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

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


tkt_uuid: 1530725fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
resolution: Accepted
title: proc trace logging facility for logger pkg
comment:
  This patch adds support for logging of procedure calls
  to the logger package, as discussed briefly on the
  mailing list a while back.  It adds a "trace" command
  to each logger service to register procedures (single,
  by pattern, or entire namespaces) for enter/leave trace
  events to be logged, and to enable and disable the
  logging of traces.  logprocs for traces are given a
  dictionary of fields detailing the trace event, rather
  than a pre-formatted message, but still in a single
  argument for compatibility.

  Patch includes updates to logger.tcl, logger.man and
  logger.test.

  [submitted on behalf of Cisco, not Muonics]


tkt_uuid: 466746ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: socket readable, gets<0 => Error conn.
comment:
  I have a problem with tcllib-1.0 ftp when working
  with a proxy ftp server with the message "ERROR: Error
  connecting!"

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

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

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


tkt_uuid: 1376903fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: tkchat - aqua mods - set app name + unhide on alert
comment:
  A could of mods to tkchat to make it "nicer" for AquaTk users

  The first sets the application name (i.e. the left most menu name in the 
  menu bar) to TkChat.

  The second "unhides" the chat window on alert. Previously only minimised 
  (i.e. iconified) windows were de-iconified.

  Both changes use Ffidl - thanks to Daniel Steffen for the pointers on how 
  to use it.

  A starkit containing the changes + Ffidl for OSX is at http://mini.net/
  sdarchive/tkchat.kit


tkt_uuid: 2853152fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: dns
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: fix async dns behaviour
comment:
  In some cases, dns::resolve may end up closing its socket "twice". Since the socket name might have been re-allocated in the meantime, thi causes someone elese's socket to get closed.
  This patch fixes this by setting the socket name to "nil" just after closing it.


tkt_uuid: 911281ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
title: snit - Optimize for space
comment:
  An empty snit::type comes with 37 K of runtime code.
  Optimize the generator ot include only the parts of the
  runtime support which are necessary (i.e. not widget
  stuff for snit:type's, no delegate handling if there
  are no delegates declared, etc.)


tkt_uuid: 530056ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: textutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: Misleading error message in expander
comment:
  When a user of the expander does not pop all the 
  contexts it pushed during the expansion process the 
  core expander will access the wrong context when 
  trying to restore bracket information of an outer 
  invocation. The generated error message refers to the 
  lb variable, telling us that it is missing. But the 
  root cause is that there are still user contexts open.

  Change the expander to check that before/after levels 
  of contexts are the same and generate a better error 
  message if the levels are not the same. Maybe even 
  name the contexts which were not popped.


tkt_uuid: 932516ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: html
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: html - many procedures not compatible with prodebug
comment:
  prodebug complains about the following:

  html::foreach
  html::for
  html::while
  html::if
  html::set
  html::eval


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

  This behaviour has appeared since BWidget 1.3.1 at 
  least. 


tkt_uuid: 531799ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 6
foundin: None
resolution: Fixed
title: checks for wrong tcl version
comment:
  ftpd did not run on tcl8.2.2 for win32.
  Reason: The use of "lsort -unique" which is new in 
  tcl8.3.

  The problem: pkgIndex.tcl from ftpd does not check the 
  right tcl version:

  if {![package vsatisfies [package provide Tcl] 8.2]} 
  {return}

  Must be: 
  if {![package vsatisfies [package provide Tcl] 8.3]} 
  {return}

  Also i miss any information in the manpage about the 
  smallest tcl-version ftpd needs.


tkt_uuid: 1393564fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
resolution: Fixed
title: erorr in ::math::linearalgebra::angle
comment:
  Hello,

  There is an error in:

  ::math::linearalgebra::angle

  instead of:

  set n1 [norm_2 $vect1]
  set n2 [norm_2 $vect2]

  it should be:

  set n1 [norm $vect1]
  set n2 [norm $vect2]

  or also:

  set n1 [norm_two $vect1]
  set n2 [norm_two $vect2]

  Also, there is no cross product fucnction in the
  package. It is a VERY common need for 3D vectors.

   Regards,


tkt_uuid: 3396661fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: yaml
priority: 9 Immediate
foundin: None
resolution: Fixed
title: Failure to parse valid YAML, the 2nd
comment:
  The inlined YAML

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

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

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

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

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

      set result {}

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


tkt_uuid: 981764ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Out of Date
title: label problem in BWidget-1.2.1
comment:
  Error in startup script: unknown option "-label"
      while executing
  "error "unknown option \"$option\"""
      (procedure "Widget::parseArgs" line 7)
      invoked from within
  "Widget::parseArgs ComboBox $args"
      (procedure "ComboBox::create" line 3)
      invoked from within
  "ComboBox $parent.mscCombo -label "MSC"  -labelwidth 
  5 -labelanchor w  -textvariable save::mscNo  -values { 
  apollo athena mscE mscS }  -width 8  -helpt..."
      (procedure "_MscCell" line 7)
      invoked from within
  "_MscCell  [$mscCellFrame getframe]"
      (procedure "save::create" line 11)
      invoked from within
  "save::create $notebook"
      invoked from within
  "set f0  [save::create $notebook]"


tkt_uuid: 2847341fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: md5
priority: 8
foundin: None
resolution: Not Applicable Here
title: leak in md5 (critcl)
comment:
  I confirmed the leak reported by echm [http://groups.google.com/group/comp.lang.tcl/browse_thread/thread/a873bbc1ee78d776/b5ca31cdab5af4d6?lnk=gst&q=md5#b5ca31cdab5af4d6]

  The following script consumes ever increasing amounts of memory:

  % package require md5
  2.0.7
  % parray md5::accel
  md5::accel(critcl)   = 1
  md5::accel(cryptkit) = 0
  md5::accel(trf)      = 0
  % while 1 {md5::md5 testdata}

  % info patch
  8.5.7
  % parray tcl_platform
  tcl_platform(byteOrder)   = littleEndian
  tcl_platform(machine)     = x86_64
  tcl_platform(os)          = Linux
  tcl_platform(osVersion)   = 2.6.24-24-generic
  tcl_platform(platform)    = unix
  tcl_platform(pointerSize) = 8
  tcl_platform(threaded)    = 1
  tcl_platform(wordSize)    = 8


tkt_uuid: 540313ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: cmdline
priority: 5 Medium
foundin: None
resolution: Accepted
title: Add [getKnownOpt{ions}]
comment:
  >From "Melissa Chawla" <hershey@panasas.com>
  I've added 2 new procedures to the tcllib/cmdline package:

  The getKnownOpt and getKnownOptions procedures offer a
  way for options 
  that
  are not in the optionList to be ignored.  This way, you
  can have two
  independant locations in your application where
  commandline arguments 
  are
  parsed.  I bumped the package version to 1.2.  If I
  pass the args "-foo 
  x -bar
  a b c -debug 1, where -bar is not in the options list,
  then "-bar a b c" 
  will
  remain in argv without causing a problem.

  The reason I need this feature is that when I start
  TclHttpd, it checks 
  the
  commandline options and throws an error if there are
  options that it 
  doesn't
  know about.  But I've deliberately added options that
  my customized web 
  server
  libraries will look at, and until now, I had no "nice"
  way to pass those
  options through the TclHttpd option check to my
  application.

  My patch includes tests as well as improved
  documentation (in the code)
  throughout the package.


tkt_uuid: 967906ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: bwidget - Font Chooser Cursor Usage
comment:
  In the font chooser, the listbox cannot be navigated with the cursor key. Adding the bottom two lines to  SelectFont::create corrects this

  bind $lbf <space>           $script
  bind $lbf <1>               [list focus %W]
  +bind $lbf <Up>    $script
  +bind $lbf <Down>   $script


tkt_uuid: 900165ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: BWidget progressbar problem
comment:
  Hi, 
   
  The BWidget progressbar fails when using large values. This is 
  the code in version 1.7.0: 
   
  $path.bar coords rect -1 0 [expr {$val*$w/$max}] $h 
   
  Large integer values used for val and max will cause wrapping 
  problems for 32 bit integers. Making the new calculation using 
  doubles will fix the problem: 
   
  $path.bar coords rect -1 0 [expr {double($val)*$w/$max}] $h 
   
   
  Kind regards, 
   
  Jos. 


tkt_uuid: 784157ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 8
foundin: None
resolution: Fixed
title: ::fileutil::find is now dependent upon Tcl8.4
comment:
  In fixing fileutil.tcl: Fixed SF tcllib bug [647974], the 
  Tcl8.4 [file system ...] command was used in the ::find 
  proc. 

  The fileutil.tcl has a package require for 8.2 but 
  Tcl8.2 ... Tcl8.3 interpreters will no longer be able to 
  use ::fileutil::find or ::fileutil::findByPattern


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

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

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

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

  returns:

  ERROR:

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

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


tkt_uuid: 1477578fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: None
title: -vcmd option not supported in Tile version of tkchat
comment:
  Line 3729 of tkchat.tcl (Version 1.334) uses the option 
  -vcmd for an entry. While this is ok when tkchat is 
  used without Tile, this shorthand option is not 
  supported in Tile and thus the Tile version of tkchat 
  will throw an error here (Click on Preferences -> 
  Macros to see the error)

  This can be avoided by not using the shorthand here. 
  Using -validatecommand instead makes tk::entry and ttk
  ::entry happy (thanks to Reinhard Max for this 
  proposal!)


tkt_uuid: 744391ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ntp
priority: 7 High
foundin: None
resolution: Fixed
title: empty result with FreeBSD tcp 37 time service
comment:
  The line in ::time::QueryTime of time.tcl:
  puts -nonewline $State(sock) "abcd"
  causes problems with a FreeBSD 4.7 time service. 

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


tkt_uuid: 1105778fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: ProgressDlg -stop button bug
comment:
  In V1.7.0, using ProgressDlg with -stop option, the
  click events for the button are not processed.

  This worked fine in V.1.4.1 and can be solved replacing
  the "update idletasks" into "update" at line 181, file
  progressbar.tcl, like was in V1.4.1.

  Example Tcl code:
  --------------
  package require -exact BWidget 1.7.0


  proc cbLdCancel {} {
    puts "Click"
  }

  set Progress 0
  set Action "Loading files..."

  ProgressDlg .loading -parent . -title "Loading" -type
  normal \
    -textvariable Action -variable Progress -maximum
  20000 -stop "Cancel" \
    -command cbLdCancel

  for {set x 0} {$x<20000} {incr x} {
    incr Progress
  }
  --------------


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

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

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


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

  Here is the correct code:


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

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


  Keith Vetter


tkt_uuid: 459197ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: Fixed
title: More fixes in ftpd for the export of the public API
comment:
  On further examination wrt [456255], I found out that the 
  ftpd.tcl file had few more "namespace export *" stmts in it
  which I had missed earlier. Here's a patch for the same.

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


tkt_uuid: 1641071fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: tklib :: tooltip
priority: 5 Medium
foundin: None
resolution: Fixed
title: Add alpha fading to tooltips
comment:
  This patch adds simple alpha-transparency fading to the tooltip package on platforms that support [wm attributes -alpha]. I find this adds a little bit of extra polish. Possibly might want an option to disable this behaviour.

  PS - the tracker is missing a category for the tooltip package.

  PPS - I find most changing the label to -bd 0 in tooltip::show looks "better" on Mac OS X/Aqua (i.e., looks more like the tooltips in native/Cocoa apps).


tkt_uuid: 827436ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: smtp::sendmail does not send correct ending sequence
comment:
  I've been using the smtp::sendmail and mime types to
  send attachements (base64 encoded). The system I use is
  Windows 2000. 

  I use the SMTP server which comes with Windows 2000
  IIS. When ending a SMTP mail the server expects the
  sequence 

  <CR><LF>.<CR><LF>

  the sent sequence is just "."

  If I change line 1254 in smtp.tcl from:

  set result [talk $token $secs .]

  to 

  set result [talk $token $secs "\r\n.\r\n"]

  the SMTP server correctly registers the end sequence
  and sends the mail. 

  Now I'm not sure that this is a bug with the SMTP
  server deviating from the standards or the tcl module
  not listening to what the end sequence should be. 


tkt_uuid: 784269ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: {Ctrl f} menu item accelerator broken
comment:
  I've been using BWidgets 1.6.0 to create a simple interface 
  for viewing some text.  One of my 'Edit' menu items is 
  'Find...' for which I wanted to use the control-f sequence as 
  an accelerator.  Try as I might, it didn't work so I dug into 
  how the menus are created in mainframe.tcl and discovered 
  a problem with the regular expression used when looking for 
  the F1 -> F19 special keyboard keys.

  As it turns out, the regular expression that's supposed to be 
  looking for "f1", "f2", ... "f19" is matching "f" as well.  Since 
  it matches, the variable gets converted to upper case, which 
  it apparently has to be for the special F keys.  However, this 
  changes what should be <Control-f> to <Control-F> which 
  means you have to hold the shift key in order to activate it.

  The regular expression checks I'm referring to is in 
  _parse_accelerator() routine near the bottom of 
  mainframe.tcl.  The expression is {f[1]?[0-9]*} but should 
  be, I believe, {f1?[0-9]}.  This new expression matches 
  everything its supposed to and doesn't match "f".

  I've attached a simple test case to show what I'm talking 
  about.


tkt_uuid: 1041229fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: A new splash screen widget?
comment:
  I think that a splash screen widget is currently missing 
  from BWidget. Although a splash screen is used only 
  once during the life of an application, it would be good if 
  such a widget was in BWidget, so as to not re-
  implement code for splash screens for  each new 
  application.

  I have also attached a sample implementation of the 
  widget. Its a simple toplevel that stays always on top, 
  without borders and can display an image, a BWidget 
  progressbar and text label.
  However, there is no manual page yet, but I can write 
  one if the widget gets finally approved :-)

  George


tkt_uuid: 225308ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
priority: 5 Medium
resolution: Fixed
title: BWidget: tk8.4 breaks Entry widget state option
comment:
  Tk8.4 introduced the -state normal/disabled options for the entry widget. These conflict with the implementation of -state in the BWidget Entry widget. The workaround is to
  create the BWidget Entry widget and configure the state using a separate command. A better solution would be to modify BWidget to recognise Tk 8.4 or later and use the new entry widget features.


tkt_uuid: 1739372fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Fixed
title: comm_wire unclarity
comment:
  The specification of the Basic Message Layer (BTW, why 
  isn't that just the Message Layer?) says:

    On top of the Basic Layer we have a message oriented 
    exchange of data. Each message is a syntactically valid 
    Tcl list terminated with an additional EOL.

  This suggests that the string representation for a message
  is the string representation for the list, followed by an EOL, 
  as would be written by
      puts $fid [list $cmd $ser $args]
  (no -nonewline). In reality, the command writing the data 
  is
      puts $fid [list [list $cmd $ser $args]]
  which is quite different.

  A better description is probably to say that the totality 
  of everything written to the channel is a syntactically valid 
  Tcl list, where every element is a separate message. The 
  whitespace separating two messages must contain an EOL. 
  Note that EOL characters can occur within the list as well. 
  They can be distinguished from the message-separating 
  EOL by the fact that the data from the beginning up to 
  their location is not a valid Tcl list.


  Minor issues:
  * The SYNOPSIS section is bogus.
  * The paragraph defining EOL shows it as whitespace. 
    It should say both linefeed and \n.
  * comm should be a keyword of this manpage.
    "communication" isn't a keyword of any other manpage, 
    so it can be dropped.


tkt_uuid: 932029ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Cannot have space in pathname of combobox (FIX SUPPLIED)
comment:
  An error occurs if you try to create a combobox with a
  space in its pathname

  Here are the changes I made to get it working, please
  patch the next release, they look fairly harmless...

  $ diff BWidget-1.7.0/entry.tcl entry.tcl
  140c140
  <       "return \[Entry::_path_command $path \$cmd
  \$args\]"
  ---
  >       "return \[Entry::_path_command [list $path]
  \$cmd \$args\]"
  159c159
  <     foreach $vars [eval Widget::hasChangedX $path
  $opts] { break }
  ---
  >     foreach $vars [eval {Widget::hasChangedX $path}
  $opts] { break }
  $ diff BWidget-1.7.0/arrow.tcl arrow.tcl
  90c90
  <     eval canvas $path.c $submaps(.c)
  ---
  >     eval {canvas $path.c} $submaps(.c)

  Cheers


tkt_uuid: 3288977fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Accepted
title: client hangs on bad multi-line server responses
comment:
  If the server doesn't speak strict RFC-959 when it comes to multi-line responses, it can cause the client to hang.

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

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

      ^^^ notice no "221 Goodbye."

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

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


tkt_uuid: 467835ffffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Invalid
title: tkchat retrieve menu item
comment:
  This patch adds a Retrieve menu item to the debug menu
  which delegates to tkchat::Retrieve and obtains the
  current HEAD revision from the SourceForge CVS tree.
  The user may then re-source from the new version.

  Taken from tkcon and modified slightly for tkchat.


tkt_uuid: 528392ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Invalid
title: Missing commands in nroff format
comment:
  The nroff format does not implement the commands [lb]
  and [rb]. These are necessary for entering code
  examples in the man pages.


tkt_uuid: 544453ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: base64
priority: 5 Medium
foundin: None
resolution: Fixed
title: uuencode::uudecode and Trf 2.1p1
comment:
  I have written a script that connects to an nntp 
  server and downloads a
  message body into a string which in turn  gets all 
  uuencoded attachments
  processed and written to a directory as files.

  First method I tried was opening a pipe to a uudecode 
  program that I found.

  This was fast and worked fine until people started 
  posting yenc encoded
  attachments to the newsgroup. The uudecode program 
  would crash when it
  encountered one of these.

  Second method I tried was the uuencode package that is 
  part of tcllib that
  comes with Active Tcl 8.3.4.2.

  This was a little slower and stack dumps on messages 
  that the former method
  was able to process correctly. I really liked that it 
  returned a list of
  lists that contained the filename mode and data.

  Third method I tried was to get the Trf package which 
  is used if available
  by the uuencode package.

  I can't get this method to work please help.

  My platform is Windows 2000.

  Below are two stack dumps
  The first one is with the Trf directory removed from 
  the lib directory.
  Notice that the first message body is correctly 
  processed.

  The second dump is with Trf installed
  notice that the first message body is not processed 
  and that the errors are
  different

  Note I am only doing "package require uudecode" I let 
  the uudecode package
  find the Trf package

  My function is included at the bottom it takes a 
  string (message body) as an
  argument
  -------------------------------------------------------
  -------
  downloaded message 30543
  decoded !krisp2_002.jpg

  downloaded message 30544
  invalid uuencoded string: length must be a multiple of 
  4
      while executing
  "decode [string range $line 1 end"
      ("true" arm line 7)
      invoked from within
  "switch -exact -- $state {
              false {
                  if {[regexp {^begin ([0-7]+) ([^\s]*)} 
  $line  -> opts(mode)
  opts
  (name)]} {
               ..."
      (procedure "uuencode::uudecode" line 36)
      invoked from within
  "uuencode::uudecode $message"
      (procedure "decode" line 3)
      invoked from within
  "decode [ join $Vmessage  \n ]"
      (procedure "getmessages" line 24)
      invoked from within
  "getmessages"
      (file "picker.tcl" line 59)
  -------------------------------------------------------
  -------
  downloaded message 30543
  ::uuencode: wrong # args, all options require an 
  argument
      while executing
  "::uuencode -mode decode $s"
      (procedure "decode" line 2)
      invoked from within
  "decode [string range $line 1 end"
      ("true" arm line 7)
      invoked from within
  "switch -exact -- $state {
              false {
                  if {[regexp {^begin ([0-7]+) ([^\s]*)} 
  $line  -> opts(mode)
  opts
  (name)]} {
               ..."
      (procedure "uuencode::uudecode" line 36)
      invoked from within
  "uuencode::uudecode $message"
      (procedure "decode" line 3)
      invoked from within
  "decode [ join $Vmessage  \n ]"
      (procedure "getmessages" line 24)
      invoked from within
  "getmessages"
      (file "picker.tcl" line 59)
  -------------------------------------------------------
  -

  proc decode { message } {

      set name_mode_data [uuencode::uudecode $message]

      foreach { element } $name_mode_data {

          set name [ lindex $element 0 ]

          set Vfile [ open $name w ]

          fconfigure $Vfile -translation binary

          puts -nonewline $Vfile [ lindex $element 2 ]

          close $Vfile

          puts "decoded $name\n"

          flush stdout

          }

  }


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


tkt_uuid: 1492630fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: Installer
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Installer not creating tcllibc + related uuid issue
comment:
  installer.tcl (on windows at least) doesn't create the 
  tcllibc module - nor does INSTALL.txt mention how to 
  build it.

  I found out about 'sak.tcl critcl' through a c.l.t 
  article where the original poster was complaining 
  about slow pure tcl implementations.

  A missing tcllibc module means that the uuid package 
  at least, will fallback to Tcl only mode even though 
  critcl is installed.

  for uuid without tcllibc - the faster version can be 
  accessed by first package requiring critcl..
  then directly calling the c proc.

  e.g on a machine without tcllibc installed.

  %package require critcl
  0.35
  %package require uuid
  1.0.1
  %uuid::tostring [uuid::generate_c]
  <some guid>
  %time {uuid::tostring [uuid::generate_c]} 100
  150.0 microseconds per iteration
  %time {uuid::uuid generate}
  51560 microseconds per iteration

  As you can see there's a huge performance difference 
  (due to exec call to ipconfig I guess) so it seems 
  that the fast critcl version is usable without 
  tcllibc - yet the default in this case is to still use 
  the pure Tcl version.

  Note that if critcl is 'package required' after uuid 
  then you just get:
  invalid command name "uuid::generate_c"

  I guess I'm suggesting that either uuid shouldn't 
  depend on tcllibc being present - just critcl... 
  and/or that tcllibc should be built by the tcllib 
  installer and documented, or at least just explained 
  in INSTALL.txt.


tkt_uuid: 2845453fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: MessageReceiver fails to read sequence byte on empty socket
comment:
  A simple LDAP/SSL search query (objectclass filter, returning around 20 results) failed with the following message:
    Protocol error: Error reading SEQUENCE response for handle

  Debugging showed, that this occured when ldap::MessageReceiver tried to read the sequence byte. The reason was, that line 728
    728         foreach {code type} [ReceiveBytes $conn(sock) 1] {break}
  in combination with the following "default" branch of the switch statement expects the connection to return the byte immediately.

  This expectation was not met. I surrounded the above line with a loop which continues on "partial" results for some tries and limited time. The error disappeared this way. The byte could be read from the socket almost at the same millisecond, after 20-30 loops.

  More general, it is not wise to expect a non-blocking read to always return at least one byte.

  As a solution, either partial "No byte available" responses are dealt with in place, or a more sophisticated "Collect the given number of bytes (for some time)" method is called.

  The same query returned without an error when the non-secured ldap port (389) of the server was asked.


tkt_uuid: 688070ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Out of Date
title: LabelFrame/LabelEntry -label/-text/-textvariable broken
comment:
  BWidget 1.5:


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


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




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


  v1.4.1:


      Widget::bwinclude LabelFrame BWLabel .l \


          remove     {


              -highlightthickness -highlightcolor 
  -highlightbackground


              -takefocus -relief -borderwidth


              -bitmap -image -cursor -textvariable




  v1.5:


      Widget::bwinclude LabelFrame BWLabel .l \


          remove     {


              -highlightthickness -highlightcolor 
  -highlightbackground


              -takefocus -relief -borderwidth


              -cursor




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


  namespace eval LabelFrame {


      BWLabel::use




      Widget::bwinclude LabelFrame BWLabel .l \


          remove     {


              -highlightthickness -highlightcolor 
  -highlightbackground


              -takefocus -relief -borderwidth


              -cursor -textvariable


              -dragenabled -draginitcmd -dragendcmd 
  -dragevent -dragtype


              -dropenabled -droptypes -dropovercmd  
  -dropcmd} \


          initialize {-anchor w}


      proc use {} {}


  }




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


tkt_uuid: 1774990fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: comm
priority: 9 Immediate
foundin: None
resolution: Fixed
title: vwait dies when given varname with spaces
comment:
  When comm is loaded it overrides vwait, but has a bug in the implementation that manifests itself when the vwait variable has spaces in it. I get the error:

  wrong # args: should be "::comm::VwaitOrig name"
      while executing
  "vwait [::itcl::scope flag]"
  ...
      

  This is due to the following line of code in vwait.tcl:

  set code [catch {uplevel 1 ::comm::VwaitOrig $varname} res]

  I think that should be (note the use of list):

  set code [catch {uplevel 1 [list ::comm::VwaitOrig $varname]} res]

  As an aside, you may be saying "why would anyone use a variable name with spaces?". As you can see in the above error message, I'm vwait'ing on an itcl public variable, which resolves to something like "@itcl ::foo ::Foo::flag". When it gets eval'd by the upvar those spaces naturally cause havoc.


tkt_uuid: 526499ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Accepted
title: Async errors silently discarded
comment:
  In the current implementation of "comm" errors 
  happening in the receiver of a command are silently 
  discarded if the caller performed an -async invocation.

  While that means that the caller itself is not 
  interested in a possible error I believe that it 
  should not be completely discarded. It makes 
  interactions based on async calls hard to debug as 
  problems simply show as the processes not doing what 
  they are supposed to do without any indication why 
  they are doing so.

  The patch to be associated with this report will 
  extend the execution of received commands with a call 
  to [bgerror] (if available or loadable) so that such 
  errors do not get lost.


tkt_uuid: 443645ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pop3
priority: 5 Medium
foundin: None
resolution: Fixed
title: pop3::retrieve fails...
comment:
  I've been trying out the new tcllib pop3 module 
  included in the latest ActiveTcl distribution 
  (8.3.3.2) some more, and found that pop3::retrieve 
  fails on some POP3 servers with an unknown "size" 
  variable message...

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

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

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

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

  -- AH.


tkt_uuid: 523036ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: 'make install' errors
comment:
  $ make install
  ...
  Installing doctools in
  /usr/local/lib/tcllib1.2/doctools
  /usr/bin/install: ./modules/doctools/*.tcl: No such
  file or directory
  ...
  Installing documentation for calendar
  sed: can't read ./modules/calendar/*.n: No such file or
  directory
  /usr/bin/install: installing multiple files, but last
  argument (/usr/local/man/mann/wm.n) is not a directory
  Try `/usr/bin/install --help' for more information.
  ...
  Installing documentation for doctools
  sed: can't read ./modules/doctools/*.n: No such file or
  directory
  /usr/bin/install: installing multiple files, but last
  argument (/usr/local/man/mann/wm.n) is not a directory
  Try `/usr/bin/install --help' for more information.
  ...


tkt_uuid: 1119279fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
resolution: Fixed
title: error in loading math::rationalfunctions pkg
comment:
  Please see the following error:

  hlavana-u5:53> tclsh
  % package require math::rationalfunctions
  couldn't read file "polynomials.tcl": no such file or
  directory
  % exit
  hlavana-u5:54> less
  /auto/ttsw/ActiveTcl/8.4.9/lib/tcllib1.7/math/rational_funcs.tcl

  # rational_funcs.tcl --
  #    Implement procedures to deal with rational functions
  #
  source polynomials.tcl
  package require math::polynomials
  ..

  The "source polynomials.tcl" cmd  is causing this
  problem. This line should be deleted because the
  following line "package require math::polynomials"
  loads the polynomials.tcl file correctly.

  Hemang.


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: 900178ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: Fixed
title: Incorrect or unclear Response to PASS
comment:
  In proc ::ftpd::command::PASS, the positive response is
  generated as puts $sock "200 OK" (line# 1050). The RFC
  (imo) states, that it should be "230 ...." instead.

  The ftpd-Version is:
  ftpd.tcl,v 1.17 2003/07/05 04:59:35 andreas_kupries

  This behaviour leads to the message
  Unexpected response: OK
  with the widely-used NCFTP-Clients.

  M.Hoffmann@hmk.info 


tkt_uuid: 1948953fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 606640ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Duplicate
title: Quoted-printable should encode also '='
comment:
  mime.tcl procedure qp_encode should change '=' 
  characters to '03D'. (Same than trf-package does). At 
  least Outlook Express/Exchange server can't decode 
  html-data if this isn't done. 

  New code-x3D inserted:

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

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


tkt_uuid: 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: 1800305fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib
priority: 5 Medium
foundin: None
resolution: Fixed
title: tooltip manual unclear on clear option
comment:
  The doc at http://tcllib.sourceforge.net/doc/tooltip.html doesn't indicate for the clear option: what 'pattern' is or how it's matched.

  Looking through the source, the answer is it's the widget collection and the pattern is tested using string match (not regular expressions).

  Suggest replacing the text with:

  # clear ?pattern?
  #       Stops the specified widgets (defaults to all) from showing tooltips. Pattern matches are made using string match (not regular expressions).


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: 1280862fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: profiler
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 3427030fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: md5crypt
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Memory leak in md5crypt::aprcrypt in tcllib 1.13
comment:
  There is a memory leak somewhere in the md5crypt::aprcrypt implementation in tcllib
  1.13.

  Steps to repeat:

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

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


tkt_uuid: 970878ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: html
priority: 5 Medium
foundin: None
title: Ability to add stylesheet
comment:
  Something like the following would enable people to add
  stylesheets, which would be a good thing.

  proc ::html::stylesheet {href} {
      variable page
      lappend page(meta) "<link rel='stylesheet'
  type='text/css' href='$href'>"
      return ""
  }


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

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

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

  This a non-blocking message ...

  Regards,

  Christophe De Clercq


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


tkt_uuid: 1017743fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pop3d
priority: 5 Medium
foundin: None
resolution: Fixed
title: pop3d test suite failure
comment:
  platform: sparc blade 100 solaris 8 sun c compiler tcl
  8.4.7 latest tcllib cvs snapshot (from aug 26, 2004).

  I am seeing the following error messages

  Module: pop3d
  modules/pop3d/pop3d.test
  - pop3d 1.0.2
  - udb   1.1
  - dbox  1.0.1
  - mime  1.4
  - md5   2.0.1
  NONE
  can't read "conn()": no such element in array
      while executing
  "upvar $conn($sock) cstate"
      ("state" arm line 6)
      invoked from within
  "switch -exact -- $cmd {
          list {
              if {[llength $args] > 0} {
                  return -code error "wrong # args:
  should be \"$name conn list\""
              }
              return ..."
      (procedure "::pop3d::_conn" line 3)
      invoked from within
  "::pop3d::_conn pop3d40 state {}"
      ("eval" body line 1)
      invoked from within
  "eval [list ::pop3d::_$cmd $name] $args"
      (procedure "::pop3d::Pop3dProc" line 14)
      invoked from within
  "$srv conn state [$srv conn list]"
      invoked from within
  "set res [$srv conn state [$srv conn list]]"
      ("after" script)

  ==== pop3-srv-7.2 auth, APOP/USER FAILED
  ==== Contents of test case:

      newfsrv
      set res ""
      set trace [subshellpar {
          package require md5 2
          set c [socket localhost $port]
          regexp {(<.*>)} [gets $c] -> id
          set hash [string tolower [md5::md5 -hex
  ${id}smash]]
          puts $c "APOP ak $hash" ; flush $c
          set line [gets $c]
          puts $c "USER foo" ; flush $c
          puts "$line [gets $c]"
          after 5000
          close $c
      } {
          after 3000 {
              set res [$srv conn state [$srv conn list]]
          }
      } port [$srv cget -port]] ; # {}
      
      # Postprocess state to remove variable data from
  comparison
      set res [ppcstate $res]
      delfsrv
      list $trace $res

  ---- Result was:
  {+OK congratulations -ERR client already authenticated} {}
  ---- Result should have been (exact matching):
  {+OK congratulations -ERR client already authenticated}
  {deleted {} id <==@%%> l
  ogon {} msg 3 name ak remotehost 127.0.0.1 remoteport
  {} server 1 size 3 state t
  rans storage usr0}
  ==== pop3-srv-7.2 FAILED
  NONE
  can't read "conn()": no such element in array
      while executing
  "upvar $conn($sock) cstate"
      ("state" arm line 6)
      invoked from within
  "switch -exact -- $cmd {
          list {
              if {[llength $args] > 0} {
                  return -code error "wrong # args:
  should be \"$name conn list\""
              }
              return ..."
      (procedure "::pop3d::_conn" line 3)
      invoked from within
  "::pop3d::_conn pop3d42 state {}"
      ("eval" body line 1)
      invoked from within
  "eval [list ::pop3d::_$cmd $name] $args"
      (procedure "::pop3d::Pop3dProc" line 14)
      invoked from within
  "$srv conn state [$srv conn list]"
      invoked from within
  "set res [$srv conn state [$srv conn list]]"
      ("after" script)

  ==== pop3-srv-7.4.0 APOP FAILED
  ==== Contents of test case:

          newfsrv
          set res ""
          set trace [subshellpar {
              package require md5 2
              set c [socket localhost $port]
              gets $c line ; regexp {(<.*>)} $line -> id
              set hash [string tolower [md5::md5 -hex
  ${id}$pass]]
              puts $c "APOP $user $hash" ; flush $c ;
  gets $c line
              after 3000
              close $c
              puts $line
          } {
              after 2000 {
                  set res [$srv conn state [$srv conn list]]
              }
          } port [$srv cget -port] user $user pass $pass]
  ; # {}

          # Postprocess state to remove variable data
  from comparison
          set res [ppcstate $res]
          delfsrv
          list $trace $res
      
  ---- Result was:
  {-ERR authentication failed, sorry} {}
  ---- Result should have been (exact matching):
  {-ERR authentication failed, sorry} {deleted {} id
  <==@%%> logon {} msg 0 name f
  oo remotehost 127.0.0.1 remoteport {} server 1 size 0
  state auth storage {}}
  ==== pop3-srv-7.4.0 FAILED

  NONE
  can't read "conn()": no such element in array
      while executing
  "upvar $conn($sock) cstate"
      ("state" arm line 6)
      invoked from within
  "switch -exact -- $cmd {
          list {
              if {[llength $args] > 0} {
                  return -code error "wrong # args:
  should be \"$name conn list\""
              }
              return ..."
      (procedure "::pop3d::_conn" line 3)
      invoked from within
  "::pop3d::_conn pop3d44 state {}"
      ("eval" body line 1)
      invoked from within
  "eval [list ::pop3d::_$cmd $name] $args"
      (procedure "::pop3d::Pop3dProc" line 14)
      invoked from within
  "$srv conn state [$srv conn list]"
      invoked from within
  "set res [$srv conn state [$srv conn list]]"
      ("after" script)

  ==== pop3-srv-7.4.1 APOP FAILED
  ==== Contents of test case:

          newfsrv
          set res ""
          set trace [subshellpar {
              package require md5 2
              set c [socket localhost $port]
              gets $c line ; regexp {(<.*>)} $line -> id
              set hash [string tolower [md5::md5 -hex
  ${id}$pass]]
              puts $c "APOP $user $hash" ; flush $c ;
  gets $c line
              after 3000
              close $c
              puts $line
          } {
              after 2000 {
                  set res [$srv conn state [$srv conn list]]
              }
          } port [$srv cget -port] user $user pass $pass]
  ; # {}

          # Postprocess state to remove variable data
  from comparison
          set res [ppcstate $res]
          delfsrv
          list $trace $res
      
  ---- Result was:
  {-ERR authentication failed, sorry} {}
  ---- Result should have been (exact matching):
  {-ERR authentication failed, sorry} {deleted {} id
  <==@%%> logon {} msg 0 name a
  k remotehost 127.0.0.1 remoteport {} server 1 size 0
  state auth storage {}}
  ==== pop3-srv-7.4.1 FAILED

  NONE
  can't read "conn()": no such element in array
      while executing
  "upvar $conn($sock) cstate"
      ("state" arm line 6)
      invoked from within
  "switch -exact -- $cmd {
          list {
              if {[llength $args] > 0} {
                  return -code error "wrong # args:
  should be \"$name conn list\""
              }
              return ..."
      (procedure "::pop3d::_conn" line 3)
      invoked from within
  "::pop3d::_conn pop3d46 state {}"
      ("eval" body line 1)
      invoked from within
  "eval [list ::pop3d::_$cmd $name] $args"
      (procedure "::pop3d::Pop3dProc" line 14)
      invoked from within
  "$srv conn state [$srv conn list]"
      invoked from within
  "set res [$srv conn state [$srv conn list]]"
      ("after" script)

  ==== pop3-srv-7.4.2 APOP FAILED
  ==== Contents of test case:

          newfsrv
          set res ""
          set trace [subshellpar {
              package require md5 2
              set c [socket localhost $port]
              gets $c line ; regexp {(<.*>)} $line -> id
              set hash [string tolower [md5::md5 -hex
  ${id}$pass]]
              puts $c "APOP $user $hash" ; flush $c ;
  gets $c line
              after 3000
              close $c
              puts $line
          } {
              after 2000 {
                  set res [$srv conn state [$srv conn list]]
              }
          } port [$srv cget -port] user $user pass $pass]
  ; # {}

          # Postprocess state to remove variable data
  from comparison
          set res [ppcstate $res]
          delfsrv
          list $trace $res
      
  ---- Result was:
  {+OK congratulations} {}
  ---- Result should have been (exact matching):
  {+OK congratulations} {deleted {} id <==@%%> logon {}
  msg 3 name ak remotehost 1
  27.0.0.1 remoteport {} server 1 size 3 state trans
  storage usr0}
  ==== pop3-srv-7.4.2 FAILED

  modules/pop3d/pop3d_dbox.test
  - pop3d::dbox 1.0.1
  - mime        1.4
  - md5         2.0.1
  modules/pop3d/pop3d_udb.test
  - pop3d::udb 1.1

  Module: profiler
  modules/profiler/profiler.test
  - profiler 0.2.2


tkt_uuid: 458306ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Out of Date
title: BWidget ComboBox (1.3.1)
comment:
  BWidget 1.3.1 has changed the way ComboBox handles
  focus and selection, compared to the latest Unifix release, 1.2.1.

  First of all, option -entryfg removed,breaking older code.
  Why not -entryfg to be re-inserted as a synonym of -foreground,
  so as to maintain backward compatibility?

  Also, when the user selects a value from the drop-down list (or
  simply closes it without selecting anything), then the focus
  is set to the entry widget. This is perhaps ok if the ComboBox
  is editable, but when the ComboBox is not editable, there is no point
  in it: the user cannot type anything in there and an insertion cursor appears.
  This visually unpleasant, having an insertion cursor in an entry you cannot
  type.
  Also, it cannot be turned off with the various -insert* options, that seem to
  not work in order to make the insertion cursor invisible...

  Also regarding the selection, ComboBox obviously tries to mimic the combo box
  behaviour under windows, so along with the focus, the selection is also set.
  Again, under windows when you click outside the combo box, the selection is
  removed. This is not happening to the BWidget combo box. In my opinion,
  there should be an option to avoid also seting the selection in the changed
  value, as there are situations where this behaviour is not wanted.
  (but perhaps setting the selection bg/fg to the default entry fg/bg can solve
  this problem, although I have not tested it...)


tkt_uuid: 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: 1018625fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Duplicate
title: htmlparse: hex entities not mapped
comment:
  % ::htmlparse::mapEscapes "do you see a question mark 
  &#x[format %x [scan ? %c]];"
  do you see a question mark &#x3f;
  %

  hex form {&#x[0-9a-fA-F]{1,4};} not respected


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: Deleted
subsystem: generator
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 1998628fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
resolution: Fixed
title: Tcl lib and safe interpreter
comment:
  I am working on Linux, with active tcl 852, and tcllib installed through teacup. 
   
  ************ 
   First question 
   ************ 
   I tried executing the following: 
           > /opt/ActiveTcl-8.5/bin/tclsh8.5 
           % ::safe::interpCreate 
           interp0 
           % interp eval interp0 "package require math" 
           script error 
   
  Indeed, as discussed on this comp.lang.tcl thread :
  http://groups.google.com/group/comp.lang.tcl/browse_thread/thread/3e15e20b001e6ecf#

  If you set a log command for the safe package then you can see the problem: 
   
    % proc debug args { puts "LOG: $args" } 
     % safe::setLogCmd debug 
     debug 
     % $i eval { package require math } 
     LOG: {ERROR for slave interp0 : invalid command name "pwd"} 
   
  It seems the math package tries to use [pwd] for some reason, which is not available in a safe slave.

  I don't see any true reason that would forbid requiring the math package in a safe interp ?
  If 
   you set a log command for the safe package then you can see the problem: 
   
    % proc debug args { puts "LOG: $args" } 
     % safe::setLogCmd debug 
     debug 
     % $i eval { package require math } 
     LOG: {ERROR for slave interp0 : invalid command name "pwd"} 
   It seems the math package tries to use [pwd] for some reason, which is not available in a safe slave.

  Perhaps there are, but I don't see any true reason that would forbid requiring the math package in a safe interp.

  More generally, I guess most tcllib packages, which are a-priori "safe" should load into a safe slave.


tkt_uuid: 1811890fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: inifile
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: inifile : allow keys with no assignment
comment:
  First off, the "Category" list is missing "inifile".

  I'm attaching a patch to allow section keys that have no assigned value, not even an empty value which is done by doing "key=". This will allow a call to the ::get function to successfully return key "C" in the following example section:

  [dummy]
  A=first
  B=
  C

  A simple example of where this enhancement comes into play is if you wanted to use a section to hold a simple list of names, for example a list of valid file suffixes:

  [suffix_list]
  .txt
  .tcl
  .cxx

  The ::value function was modified to return the default value for keys that exist but have no assignment. This allows distinguishing the case where a key exists and is assigned an empty value versus a key that has no assignment.

  I've updated the test to cover this new capability.

  The patch was made against version 1.13 of ini.tcl and includes the following file updates:

  ini.tcl
  inifile.test
  pkgIndex.tcl
  test.ini


tkt_uuid: 1007764fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tklib :: ctext
priority: 5 Medium
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: 1599978fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
title: RFE: add emergency and alert levels to logger
comment:
  Hi,

  The syslog protocol supports the following levels of severity (copied from http://tools.ietf.org/html/rfc3164#section-4.1.1):

  ---------------------
          Numerical         Severity
            Code

             0       Emergency: system is unusable
             1       Alert: action must be taken immediately
             2       Critical: critical conditions
             3       Error: error conditions
             4       Warning: warning conditions
             5       Notice: normal but significant condition
             6       Informational: informational messages
             7       Debug: debug-level messages

             Table 2. syslog Message Severities
  ---------------------

  The "emergency" and "alert" levels are currently missing from tcllib's logger package. These should be added to make it consistent with syslog protocol.


tkt_uuid: 1416819fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tie
priority: 5 Medium
foundin: None
resolution: Fixed
title: tie: test suite bug
comment:
  with -debug 1:
  modules/tie/tie_file.test
  - tcllib::testutils 1.0
  - snit 1.1
  - tie 1.0.1
  * tie::std::file 1.0.1
  WARNING: removeFile removing
  "/local/src/tcllib/jtest/journal":
    not created by makeFile
  WARNING: removeFile removing
  "/local/src/tcllib/jtest/journal":
    not a file


tkt_uuid: 1150714fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: uuid
priority: 5 Medium
foundin: None
resolution: Fixed
title: uuid should not make socket calls
comment:
  ::uuid::generate_tcl contains the following code:

  set s [socket -server void -myaddr [info hostname] 0]

  Creating a server socket may be a privileged operation. 
  With certain firewalls, it may produce a warning 
  message, which is inappropriate for many applications 
  that might want to create UUIDs.


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: 3007168fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: tklib: ico
priority: 5 Medium
foundin: None
resolution: Fixed
title: correct alignment for 24x24 icons
comment:
  When tklib::ico reads and writes *.ico, *.dll, *.exe files, it uses the code like ($w*$h+$h*($w%32)) in a number of places, to calculate extra padding required for AND mask. It turned out that the result for 24x24 icons is incorrent; when used with this size, tklib::ico may corrupt executable files and generate incorrect *.ico files (still accepted by some software, but e.g. icotool warns about the incorrect size and about garbage skipped).

  If we regard $w==24 as a special case, ($w==24? 8 : $w % 32) is a correct replacement for the expression above. I'm attaching the patch fixing all places where the incorrect method was used.

  Wish.ico has 24x24 members, and patched ico.tcl works fine with wish-based executables.


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: 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: 823346ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Accepted
title: Minor updates to htmlparse
comment:
  The attached patch contains some minor updates to
  htmlparse, so that it uses string functions in some
  places where regexp/regsub isn't needed and simplifies
  some code.

  Changes:
  MapEscapes now uses string map where possible.
  DoMap eliminated
  parse now uses string last for detection of incomplete
  html, instead of the 10x slower regexp...
  CClass eliminated, and re rewritten with \s shorthands
  in parse
   
  Overall performance improvement is minor (1% vor 150k
  using debugCallback), but MapEscapes should be faster
  than before.


tkt_uuid: 1558352fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: asn
priority: 5 Medium
foundin: None
title: ASN Package
comment:
  Dear TCL Experts and Developer,

  Recently , I used TCL Asn linrary package which made 
  lots of thing easier. However, I found that bugs or 
  possibilites of improvement.

  Please check the following and see if it will be a 
  good idea to make following changes:

  1. TAG Verification
  In all of the asn Package, after reading TAG value it 
  is verified with Universal TAG , e.g.

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

  This , however , is true only when universal TAGs are 
  in use. In many cases private TAG are also use for 
  the data encoding.

  I think , such checks should be removed as it should 
  be consider programmer responsibility to verify if 
  the TAG is expected , universal or private. Library 
  should not provide any restriction.


  2. TAG Length
  The library package consider TAG length as one byte 
  only. This , however , might not be true in some case 
  where the TAG can be of 2 bytes.

  This should be corrected with the possibility of TAG 
  with variable length.

  3. PeekBytes Procedure?
  There is no procedure for PeekBytes. Sometimes it is 
  necessary to read the byte/bytes without affecting 
  the original Data. ::asn::asnPeekByte though exist 
  but there is nothing like PeekBytes

  4. Output of getByte
  The output byte of asnGetByte gives the result in 
  decimal format. Since it is binary data I will 
  suggest the result should be hex coded format to keep 
  all things in same format.


  5. Introduction of Choce Structure ( and others )
  The ASN library package should be able to handle 
  other kinds of ASN structure e.g. Choice structure

  The Choice structure allows to match one of the 
  various possibilites:

  Choice :: {

            1. Money
            2. Car
            3. Nothing
            
            }

  With this type of encoding any one of the above 
  choice may happen. Therefore , there should be a 
  possibility of passing TAG values as an argument and 
  the procedure should try which to match the TAG and 
  then pass the value back of the choice which actually 
  appeared .

  Similarly , we have SEQOF , SETOF types of data 
  structure which should also be consider.

  Many thanks!

  Wajih


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

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


tkt_uuid: 1082061fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: ldap
priority: 5 Medium
foundin: None
resolution: Accepted
title: ldap::search has no way to specify scope
comment:
  ldap 1.2 (Tcllib 1.7)

  ldap::search has no way of specifying scope.  The
  "default" scope is subtree.  This makes searching from
  the base DN not possible, see:

  % package require ldap
  1.2
  % set l [ldap::connect localhost]
  ::ldap::ldapsock5
  % ldap::search $l {} (objectClass=*) namingContexts
  LDAP error noSuchObject:

  I propose adding an optional "args" option arg to the
  end of the call signature for [ldap::search], like so:

  % package require ldap
  1.3
  % set l [ldap::connect localhost]
  ::ldap::ldapsock5
  % ldap::search $l {} (objectClass=*) namingContexts
  -scope base
  {{} {namingContexts dc=panoptic,dc=com}}

  Attached is a patch to provide the functionality in the
  above example.  The currently only valid switch is
  "-scope" and valid  values are: base, one{level},
  sub{tree}, or any integer (0-2).


tkt_uuid: 556077ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 3 Low
foundin: None
resolution: Fixed
title: Tree::see should only scroll vertically
comment:
  The Tree::see $n command scrolls both horizontally and
  vertically to bring the label for node $n in view. 
  However, if the label is too large to fit within the
  window, the horizontal scrolling obscures the tree
  controls (icons and checkboxes).

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


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

  447038
  447035
  447033
  447013
  447012
  447011
  447010
  232017


tkt_uuid: 846422ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: struct :: matrix
priority: 5 Medium
foundin: None
resolution: Accepted
title: New sort method for matrix object
comment:
  I needed to sort a matrix, and wound up spending an
  evening 
  implementing sort methods for the struct::matrix extension.

  The methods use the heapsort algorithm, which is
  explained in "Introduction to Algorithms" by Thomas H.
  Cormen et al. (Copyright 2001 by MIT). The book's
  preface says "If you wish to implement any of the
  algorithms, you will find the translation of our pseudo
  code into your favorite programming language a fairly
  straightforward task." That was my experience -- it was
  actually pretty fun.


tkt_uuid: 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: Deleted
subsystem: ncgi
priority: 4
foundin: None
resolution: Not Applicable Here
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: Deleted
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 1156718fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: comm
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: comm - Make each connection's serial into a lamport clock
comment:
  See this paper:
  http://research.microsoft.com/users/lamport/pubs/time-clocks.pdf
  pdf for a description of Lamport clocks.

  The method: each time a process sends a message to
  another it sends a serial number (which comm already
  does.)  Upon receipt the receiver of a message sets its
  serial number to the larger of its serial number, and
  the serial number sent by the sender.

  In a two-endpoint comm connection this makes no
  difference, but in an n-endpoint comm connection, the
  serial number of each endpoint's serial will always be
  one greater than the last serial number it received.

  This enables a server to establish a partial ordering
  between requests when different systems' real-time
  clocks run at different rates - a sender whose clock is
  greater wins, as it has evolved through communication
  events, and is in some sense 'later' than the other.

  The only current constraint on serial is that it be
  locally unique, there is no requirement that it
  monotonically increase, or that it only increase by
  one.  The proposed change would specify that serial
  increases monotonically, and change the protocol to
  include an extra timestamp on reply/callback protocol
  messages: the serial value of the replying endpoint.

  Comm provides for protocol extension, and the
  implementation would degrade to the previous protocol
  version's behavior.

  A patch will follow.


tkt_uuid: 1272730fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: asn
priority: 5 Medium
foundin: None
resolution: Invalid
title: asn - failed tests with Tcl 8.5
comment:
  With HEAD (Tcl 8.5a4):

    tclsh8.5 sak.tcl test asn

  shows failures on Solaris:

  ==== asn-2.19 integer FAILED
  ==== Contents of test case:

      binary scan [asn::asnInteger $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  8388608 02050000800000
  ---- Result should have been (exact matching):
  8388608 020400800000
  ==== asn-2.19 FAILED


  ==== asn-4.19 enum FAILED
  ==== Contents of test case:

      binary scan [asn::asnEnumeration $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  8388608 0A050000800000
  ---- Result should have been (exact matching):
  8388608 0A0400800000
  ==== asn-4.19 FAILED


  ==== asn-2.20 integer FAILED
  ==== Contents of test case:

      binary scan [asn::asnInteger $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  8388609 02050000800001
  ---- Result should have been (exact matching):
  8388609 020400800001
  ==== asn-2.20 FAILED


  ==== asn-4.20 enum FAILED
  ==== Contents of test case:

      binary scan [asn::asnEnumeration $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  8388609 0A050000800001
  ---- Result should have been (exact matching):
  8388609 0A0400800001
  ==== asn-4.20 FAILED


  ==== asn-2.21 integer FAILED
  ==== Contents of test case:

      binary scan [asn::asnInteger $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  16777216 02050001000000
  ---- Result should have been (exact matching):
  16777216 020401000000
  ==== asn-2.21 FAILED


  ==== asn-4.21 enum FAILED
  ==== Contents of test case:

      binary scan [asn::asnEnumeration $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  16777216 0A050001000000
  ---- Result should have been (exact matching):
  16777216 0A0401000000
  ==== asn-4.21 FAILED


  ==== asn-2.24 integer FAILED
  ==== Contents of test case:

      binary scan [asn::asnInteger $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  -8388609 0205FFFF7FFFFF
  ---- Result should have been (exact matching):
  -8388609 0204FF7FFFFF
  ==== asn-2.24 FAILED


  ==== asn-4.24 enum FAILED
  ==== Contents of test case:

      binary scan [asn::asnEnumeration $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  -8388609 0A05FFFF7FFFFF
  ---- Result should have been (exact matching):
  -8388609 0A04FF7FFFFF
  ==== asn-4.24 FAILED


  ==== asn-2.26 integer FAILED
  ==== Contents of test case:

      binary scan [asn::asnInteger $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  -2147483648 0205FF80000000
  ---- Result should have been (exact matching):
  -2147483648 020480000000
  ==== asn-2.26 FAILED


  ==== asn-4.26 enum FAILED
  ==== Contents of test case:

      binary scan [asn::asnEnumeration $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  -2147483648 0A05FF80000000
  ---- Result should have been (exact matching):
  -2147483648 0A0480000000
  ==== asn-4.26 FAILED


  ==== asn-2.27 integer FAILED
  ==== Contents of test case:

      binary scan [asn::asnInteger $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  2147483647 0205007FFFFFFF
  ---- Result should have been (exact matching):
  2147483647 02047FFFFFFF
  ==== asn-2.27 FAILED


  ==== asn-4.27 enum FAILED
  ==== Contents of test case:

      binary scan [asn::asnEnumeration $i] H* result
      list $i [string toupper $result]
      
  ---- Result was:
  2147483647 0A05007FFFFFFF
  ---- Result should have been (exact matching):
  2147483647 0A047FFFFFFF
  ==== asn-4.27 FAILED


tkt_uuid: 772461ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
title: snit: Allow masking of options (undefine)
comment:
  I wrote a 'mklabel' (adaptor) which gets
  its information from a metakit view/cursor. It 
  has a new
  option, handled in the megawidget, and uses 
  the label's
  -text and -textvariable to set the data.

  I don't want the megawidget to expose -text, 
  nor
  -textvariable. I currently have to alternatives 
  for doing so:

  1)List all options of the label we expose 
  and
  delegate them individually.

  - Long list, error prone, break when 
  label gets more
    options (= maintenance problem).

  2)Delegate option * and define -text -
  textvariable
  on the megawidget level, with 
  onconfigure/oncget
  as no-ops.

  - Still exposes the variables, although 
  as nulls.
    Setting them has no effect, reading 
  returns empty
    string

  I would like to be able to 'undefine' an option. 
  Causing the
  megawidget to know: This option is illegal, not 
  defined for
  the megawidget, nor must it be delegated.

  Then I would be able to

  undefine -text
  undefine -textvariable
  delegate option * to hull

  for my label, making it safe against unwanted 
  manipulation of
  the contents.


tkt_uuid: 1154863fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: SendAuthOld uses wrong variable
comment:
  tkjabber::SendAuthOld uses $username, but only sets $user.

  Fix: s/username/user/ @ line 6181 of tkchat.tcl 1.263


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: 1784637fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: linearalgebra
priority: 5 Medium
foundin: None
resolution: Fixed
title: Changes in matmul between vers. 1.0 and 1.0.1
comment:
  I found a different (wrong) behaviuor between version 1.0 and 1.0.1 in matrix multiplikation. See the attached file.
  The result for variable pvv should be: 1.6848 (vers. 1.0)
  but I got: 0.5220 0.1606 0.2770 0.3830 0.4059 ...


tkt_uuid: 535216ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 8
foundin: None
resolution: Fixed
title: Update for ::math::fuzzy package
comment:
  I have updated the files for the fuzzy package:
  - Manual pages now available in proper nroff and html
  format
  - Test-set extended
  - Full set of procs as envisioned for the package


tkt_uuid: 438748ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: Misc typo fixes in man pages
comment:
  Here are some fixes for the tcllib man pages.
  The typos fixed are pretty consistent.  The
  comment lines added allow Sun man command to format
  the pages.


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


tkt_uuid: 849106ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: Leaking smileys from the bridge
comment:
  When an action message containing a smiley comes over 
  tclbridge from someone using IRC, tkchat replicates that 
  smiley at the start of the following line.

  This does not happen for any actions initiated by 
  someone on the Ralf's Chat side of the bridge.

  The smiley may be located either at the end or in the 
  middle of the message (we've not tested at the start of 
  the message.)

  (Thanks to davidw for helping to test this!)


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

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

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

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

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

  And then to use it in a document:

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

  ... and so on.

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

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

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

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


tkt_uuid: 1825092fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: lost char when extracting (some) parts
comment:
  The problem is that some extracted files are shorter than the original.

  I extracted the attachement with mime::copymessage, and there was one
  byte missing at the end of the extracted base64 encoded file.

  So the error seems to occur where the mime package builds up its state array where the offset and length of parts are stored.

  Same problem in Win ActiveStateTCL 8.5.0.0 beta-6, the last base64 encoded line has 63 chars, the original 64 chars.

  ####test code:
  set token [mime::initialize -file mail20071020-175849-0]

  set allparts [mime::getproperty $token parts]
  # I know this mail has two parts: one plain text, one attachement
  set attachtok [lindex $allparts 1]
  # test file name out:
  set ts [clock format [clock seconds] -format {%Y%m%d-%H%M%S}]
  set ofn a0036-test-${ts}.part

  set ofh [open $ofn w]
  fconfigure $ofh -translation binary
  mime::copymessage $attachtok $ofh
  close $ofh


tkt_uuid: 1234478fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: bibtex
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 1528614fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: tree
priority: 9 Immediate
foundin: None
resolution: Fixed
title: Using the C version of struct::tree crashes Tcl 8.4.13
comment:
  Hello out there,
  all of a sudden I got the error message 'malformed
  bucket chain in Tcl_DeleteHashEntry'.
  The only significant change I could think of was the
  introduction of tcllib's tree module, so I started
  investigating a bit.
  The attached file demonstrates the bug.

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

  Best regards and keep up the good work
  Helmut Giese


tkt_uuid: 2822970fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: ScrollableFrame background
comment:
  Here's another small patch for ScrollableFrame.
  When the frame does not take up the whole canvas space, the canvas background shows through. This is more apparent when using ttk, because the canvas is not themed. However, here's an example without ttk:

  option add *Canvas.background yellow
  grid\
      [ScrollableFrame .sf -yscrollcommand [list .yscroll set]]\
      [scrollbar .yscroll -orient vertical -command [list .sf yview]]\
      -sticky news
  grid rowconfigure . 0 -weight 1
  grid columnconfigure . 0 -weight 1
  set g [.sf getframe]
  grid [label $g.a -text AAAAAA] [label $g.b -text BBBBBBB]
  grid [label $g.c -text CCCCCC]


tkt_uuid: 1403452fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Out of Date
title: parsedatetime routine using clock format incorrectly
comment:
  G'day,
  I have found a bug in the mime package (version 1.4.1)
  for the parsedatetime routine.

  The "%e" format option is being used in stead of "%m"
  for months.  This affects the selection of a short or
  long month from the MONTHS_SHORT and MONTHS_LONG arrays.

  I suggest the following changes:
  return [lindex $MONTHS_LONG [expr [clock format $clock
  -format %m] - 1]]

  in place of 
  return [lindex $MONTHS_LONG [clock format $clock
  -format %e]]

  and similar for the MONTHS_SHORT array.

  Christopher


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

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


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

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

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

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

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

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


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

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


tkt_uuid: 442474ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: BWidget: minor changes to PanedWindow
comment:
  I've attached a small patch (diff -c format) for the
  BWidget paned.tcl file.

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

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

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

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


tkt_uuid: 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: 1532791fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: snit
priority: 5 Medium
foundin: None
resolution: Fixed
title: snit2, snit::widget problem
comment:
  When using 'variable' to define components snit 2.0 has
  a problem if the component has delegates set on it, and
  the delegates are defined before the component.

  When trying to create an instance snit crashes with the
  attached stacktrace.

  The reason is that the 'variable' statement coming
  after the delegation cause snit to insert assignments
  to the relevant instance variables, after the delegates
  have set up traces. The trace is triggered, and comes
  ultimatively to RT.ClearInstanceCaches, which accesses
  the internal Snit_instance variable. At a time when
  this variable is not defined yet. This happens a few
  lines later, via installhull.

  The relevant lines in snit2.tcl are 1906, which runs
  the assignments triggering the trace accessing the
  variable, and 1922, where the variable is defined.

  Workarounds for this problem are to either move the
  'variable' declarations before the delegation setup, or
  to use the 'component' command. The latter apparently
  has additional intelligence about delegation which
  prevents it from inserting the additional assignments
  into the generated Snit_instanceVars hook procedure.


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: 1011831fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 621331ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Allow delete of selected Tree nodes
comment:
  Hi,

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

  Jos.


tkt_uuid: 3606564fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Build System & Testing
priority: 8
foundin: None
resolution: Fixed
title: test fail - can't delete "namespace": command doesn't exist
comment:
  when running the testsuite with

  tclsh8.6 ./sak.tcl validate

  I get following error

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


tkt_uuid: 1954771fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: nameserv (aka nns)
priority: 5 Medium
foundin: None
resolution: Fixed
title: Missing "variable comm" in nns.tcl
comment:
  In ::nameserv::configure there is a missing "variable comm".  This results in undefined variable from line 253 ( if { $comm ne ""} { ).


tkt_uuid: 748344ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Invalid
title: Bug: packing a Tk listbox into a BWidget ScrolledWindow
comment:
  The minimal
  script to reproduce this problem appears to be:

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


tkt_uuid: 1793855fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::ftp::geturl
comment:
  Problem: failure on certain addresses

  package require ftp 2.4.4
  package require ftp::geturl 0.2

  set url "ftp://cdaweb.gsfc.nasa.gov/pub/istp/"
  puts "BEGIN test 1"
  set current_html [::ftp::geturl $url]]
  puts $current_html
  puts " ************ END test Pass ****************"

  set url "ftp://nssdcftp.gsfc.nasa.gov/"
  puts "BEGIN test 2"
  set current_html [::ftp::geturl $url]]
  puts $current_html
  puts " ************ END test Fail ****************"

  Suggested solution (comp.tcl, Lester): 

  The fix is to replace the switch arm that starts at line 83 of
  ftp_geturl.tcl with:

          - {
              if {[string equal $ftp_file {}]} {
                  set contents [ftp::NList $fdc $ftp_file]
              } else {
                  ftp::Get $fdc $ftp_file -variable contents
              }
          } 


tkt_uuid: 538922ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Enhance parseaddress to cope with spaces
comment:
  Bug 519594 noted that parseaddress can't cope with spaces.  The bug was closed with a note 
  that parseaddress does what it was designed to do: parse address lists in well-formed SMTP 
  headers.  It would be very helpful if parseaddress was enhanced (or supplimented by another 
  function) so user-ended addresses in e-mail clients could be parsed effectively.  The original bug 
  has some examples.


tkt_uuid: 1002936fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftpd
priority: 5 Medium
foundin: None
resolution: Duplicate
title: ftpd can't handle pathnames with spaces
comment:
  ftpd 1.2+ tcl 8.4.6 and .7

  I start up ftpd on my win machine and use Windows
  Explorer to create a network shortcut.  The contents of
  my C:/ directory appear in Window Explorer as expected.
   I then double-click on "/Program Files" and get empty
  directory listing.  Log output from ftpd shows that
  ftpd tried to get list from "/Program" which is
  non-existent.

  Debugging shows that ::ftpd::command::CWD gets passed
  /Program Files/ as the value of list, then 

  set relativepath [lindex $list 0]

  results in relative path getting the value /Program. 
  The line should be 

  set relativepath [lindex [list $list] 0]

  All the other file access sub-commands seem to handle
  $list the same way.  Perhaps a switch statement in
  ::ftpd::read which properly quotes the value of $list
  in the call to the file access sub-commands would be
  better than fixing each individual command.


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

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

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



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

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


tkt_uuid: 720348ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: struct :: graph
priority: 5 Medium
foundin: None
resolution: Accepted
title: patch to support drop in cgraph library
comment:
  Hi,

  adding this at the top of graph.tcl

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

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

  I pushed cgraph to version 0.6.

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

  Michael


tkt_uuid: 1961881fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 6
foundin: None
resolution: Fixed
title: mime - termination string missing error
comment:
  See bug 631314 for some past history of this.

  The error termination is annoying me, and the pre-631314 code would avoid it, except that in some cases it causes an infinite loop.

  This seems to be because the older code changes the value of line, without changing the value stored for its length (in the meaningfully-named variable x). the following patch seems to deal with this, avoiding both the error and the infinite loop:

  *** 832,839 ****
        while {$moreP} {
            if {$fileP} {
                if {$pos > $last} {
  !                  error "termination string missing in $state(content)"
                     set line "--$boundary--"
                } else {
                  if {[set x [gets $state(fd) line]] < 0} {
                      error "end-of-file encountered while parsing $state(content)"
  --- 832,840 ----
        while {$moreP} {
            if {$fileP} {
                if {$pos > $last} {
  !                  # error "termination string missing in $state(content)"
                     set line "--$boundary--"
  +                set x [string length line]
                } else {
                  if {[set x [gets $state(fd) line]] < 0} {
                      error "end-of-file encountered while parsing $state(content)"


tkt_uuid: 1416746fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: A Category Is Missing
priority: 5 Medium
foundin: None
resolution: Fixed
title: grammar_me: test suite bugs
comment:
  with -debug 1:

  Module: grammar_me
  modules/grammar_me/me_tcl.test
  - tcllib::testutils 1.0
  * grammar::me::tcl 0.1
  test name 'mevmtcl-icl_get-2.0' re-used; prior use in
  /local/src/tcllib/modules/grammar_me/me_tcl.test
  test name 'mevmtcl-icl_get-2.1' re-used; prior use in
  /local/src/tcllib/modules/grammar_me/me_tcl.test
  test name 'mevmtcl-icl_get-2.0' re-used; prior use in
  /local/src/tcllib/modules/grammar_me/me_tcl.test


tkt_uuid: 1113033fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tklib: plotchart
priority: 5 Medium
foundin: None
title: Add support for shade and isoline drawing
comment:
  Mark Stucky has provided a library to create isoline
  and shade drawings in a style that can be incorporated
  into Plotchart. I have attached the script for later
  reference.


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

  follwing code demonstrates the issue:

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

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

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

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

  Best regards,

  Martin Lemburg


tkt_uuid: 416799ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Accepted
title: A new datastructure, matrix
comment:
  The attached archive provides documentation, testsuite
  and code for an addition to the "struct" module, a
  matrix object.


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: 503471ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: ftp GET to non-existent directory
comment:
  Hello,

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

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

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

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


tkt_uuid: 2825354fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Accepted
title: Tree node -helpcmd option
comment:
  This patch ensures that the DynamicHelp -helpcmd option can be used in a Tree. Example:

  pack [Tree .t -padx 2]
  proc helpfor {n} {return "Help for $n"}
  .t insert end root node1 -text "Node 1" -helpcmd {helpfor node1}
  .t insert end root node2 -text "Node 2" -helpcmd {helpfor node2}
  .t insert end root node3 -text "Node 3" -helpcmd {helpfor node3}

  The patch also contains a slight visual adjustment of initial node of the tree. This is in fact a reversal of a patch which was introduced in version 1.49. I did not understand why this was changed back then. It made the tree appear more like a "fork" than a tree, which is also apparent in the example above.


tkt_uuid: 1800608fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 519214ffffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: bwidget - TitleFrame: patch for rounded corners
comment:
  I have added the possibility to make the corners of a
  TitleFrame look round, using photo images and computed
  color shades (see enclosed files old.jpg for the old
  look and newrc.jpg for the new look).

  Given the actual trend to have more 'round' GUIs, this
  can help people to make TitleFrames look more
  conforming to the rest.

  I also enclosed an updated helpfile should the patch be
  accepted.

  Sideeffects to existing code:
  --------------------
  None that I know.

  Bugs:
  -----
  -extrapadtop and -extrapadbottom cannot be configured
  from 0 to >0 and from >0 to 0 after the widget
  creation. The reason is that frames cannot have a size
  of 0, so they are not packed at creation time if the
  size is 0.

  I think that one can live with that.


tkt_uuid: 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: 914279ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: crc
priority: 5 Medium
foundin: None
resolution: Fixed
title: crc::crc32 and Trf
comment:
  When Trf is installed the data starting with the dash ('-') 
  lead to an error and end of otions option (--) doesn't work 
  either Examples: 
   
  set value "-hello world" 
   
  set x [ ::crc::crc32 $value ]  
   
  produces: 
   
  Error in startup script: bad option -hello world: must be 
  -filename, -format, -implementation or -seed 
      while executing 
  "::crc::crc32 $value " 
   
  set x [ ::crc::crc32 -- $value ]  
   
  produces: 
   
  Error in startup script: crc-zlib: wrong # args, all options 
  require an argument 
      while executing 
  "crc-zlib $s" 
      (procedure "crc::Crc32_trf" line 11) 
      invoked from within 
  "$impl [lindex $args 0] $seed" 
      (procedure "::crc::crc32" line 53) 
      invoked from within 
  "::crc::crc32 -- $value " 
   
  Changing line 167 in crc32.tcl (tcllib-1.6) from 
  binary scan [crc-zlib $s] i r 
  to 
  binary scan [crc-zlib -- $s] i r 
   
  solves the problem 
   
   


tkt_uuid: 2013082fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: general request
priority: 5 Medium
foundin: None
title: Submission: Amazon S3 access in pure Tcl
comment:
  Attached is a zip file containing code that talks to Amazon's Simple Storage Service (S3) in pure Tcl. Included is documentation (in dtp man form) and tests (in tcltest form). The license is (or at least should be) the same as the rest of TclLib. 

  I'm not sure if something needs to be done to make it TEA-compatible, but I offer it as the 1.0 version for general use.

  In any case, I would be pleased to have this in TclLib.


tkt_uuid: 2055837fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: jpeg
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 681734ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: tkchat - logging data change
comment:
  It would be useful if /msg and /memo messages were
  logged uniquely in tkchat, so that someone could look
  through the log output if they needed to locate the
  whispers sent during an extended period of time of
  distraction from the chat.


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


tkt_uuid: 1204345fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: report
priority: 5 Medium
foundin: None
resolution: Rejected
title: variable size cell
comment:
  Here is a patch that allows a reports to formatted in
  such a manner that the cell widths are variable in
  size, just big enough to fit the value. If one were to
  define a style that converts a matrix to csv format,
  the current implementation would produce something like
  the following

  foo, bar , ack ick
  I   , love , tcl      

  This patch provides the a new key word "var" for column
  size and allows the integer value "0" to indicate that
  cells in that column should be just big enough to hold
  the data. For example, the following code fragment
  would alter the results in the example below.

  $report size 0 var
  $report size 1 var
  $report size 2 0 ; # integer value 0 to indicate
  variable size

  The new output would be

  foo, bar, ack ick
  I, love, tcl      


tkt_uuid: 2926387fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
resolution: Fixed
title: csv::read2queue mishandles embedded newlines
comment:
  Just a typo.  read2queue correctly buffers incomplete lines, but then calls split on the last line read rather than on the buffered multiline data.  


tkt_uuid: 1267636fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: log
priority: 7 High
foundin: None
resolution: Accepted
title: logger: appender and formatter support
comment:
  The attached tar.gz file is for inclusion into the
  logger package. It introduces the concepts of appenders
  (console and colorConsole are included) and formatters
  to logger. 

  There is no existing code in logger changed, and all
  additions use  existing external apis. Additionally,
  the log procs generated try to resolve (hardcode) any
  pre-resolvable items to optimize log runtime.

  example of usage:

  % set log [logger::init testLog]
  ::logger::tree::testLog
  % logger::applyAppender -appender console -serviceCmd
  $log -conversionPattern {\[%d\] \[%c\] \[%M\] \[%p\] %m}

  % ${log}::error "this is error"
  [2005/08/22 10:14:13] [testLog] [global] [error] this
  is error



  I would welcome any review comments.

  doc attached in man and html format


tkt_uuid: 1144466fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: log
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: RFE: logger: customizable output format
comment:
  The current log output format of the logger pkg is:

  "[time] [service] [level]: 'msg'"

  I would like to see an easier method to change the
  output format instead of having to write a custom
  logproc to change it. For example, I would like to see
  the caller proc name also printed in the output message:

  "[time] [service] [proc] [level]: 'msg'"

  To support such a feature, the logger package should be
  enhanced with a new API say logger::format which would
  allow us to configure the logger output. Here's a
  suggested syntax for logger::format API:

  logger::format log ?<format>?
     where <format> allows you to specify percent
  substitutions; valid percent keys are %time,  service,
  %proc, %level, %callerstack and %message. The default
  <format> could be {[%time] [%service] [%level]:
  '%message'. If <format> is not specified, this command
  would return the format value set previously. Setting
  <format> to null {} will restore the default value.

  logger::format time ?-format <dateformat>? ?-gmt boolean?
    This cmd will allow the user to change the format of
  %time substitution. The <dateformat> would allow
  percent substitutions accepted by the [clock format
  -format ..] command. For example, if the user just
  wants to print 23:42:12 under %time, use the cmd
  [logger::format time -format %H:%M:%S]. Again the
  default value for the <dateformat> is same as for clock
  format command. If -format option is specified without
  any value, it will return the current value.

  logger::format service ?<format>?  where <format>
  supports substitutions (%parent %tail) for namespace
  qualifiers
  logger::format proc ?<format>? where <format> supports
  substitutions (%parent %tail) for namespace qualifiers 

  -----------------------Micahel's comments below--------

  I like this proposal, and it isn't really that hard to
  implement. Basically it calls for dynamic rewriting of
  the custom logging command which is called by the
  logger system with some more logic bits.
  I thought of something similar, a bit more flexible
  (but it got too complex then).

  The interesting part is, if the logger::format command
  should be a global option or a per service option. I
  can imagine good reasons for a per service option (for
  example think about tclhttpd, use one service for
  logging access to the server, then another for server
  errors and one for application code, each needs a
  different format basicallly.).

  Format inheritance would work as before. 


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: 1749395fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: pop3d
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Patch to ignore directories in Mail Boxes
comment:
  The simple mailbox database provided with tcllib pop3d fails if a subdirectory is in a mailbox directory.  This is the case when a mailbox database for application tests is placed under version control like CVS.

  A simple change allows pop3d::dbox to ignore directories in the mailbox path.

  For file pop3d_dbox.tcl with id:

  RCS: @(#) $Id: pop3d_dbox.tcl,v 1.12 2005/09/28 04:51:23 andreas_kupries Exp $

  modify line #299 from:

      set  state($dir)  [lsort [glob -nocomplain [file join $dir *]]]

  to:

      set  state($dir)  [lsort [glob -nocomplain -type { f r w } [file join $dir *]]]


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

  What does everyone think?


tkt_uuid: 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: 701288ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Accepted
title: Version 1.26 mods cause NList to fail
comment:
  Following simple example works in version 1.25, but
  fails in 1.26 & 1.27:

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

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

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


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

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

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

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

  contact me with any questions.

  Dave Bigelow
  davidhbigelow@compuserve.com


tkt_uuid: 614591ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::namespace::cmd vs namespace::cmd
comment:
  In some modules - control and mime, for instance,
  commands don't start with a leading '::'.  In most of
  the rest of them, :: is used.  This should be
  consistent throughout.


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

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

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

  The patch also includes requisite updates to the manual page.


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


tkt_uuid: 970199ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: MessageDlg::create Bug and Fix
comment:
  BUG:

  The dialog type abortretryignore has no default button.

  In the demo this results in a tcl-error:

  bad -default value "": must be abort, retry, ignore, ok, 
  cancel, no, or yes
      while executing
  "tk_messageBox -icon info -default {} -message 
  {Message for MessageBox} -type abortretryignore -title 
  Information -parent ."
      ("eval" body line 1)
      invoked from within
  "eval [list tk_messageBox] [array get tkMBoxArgs]"
      (procedure "MessageDlg::create" line 81)
      invoked from within

  ... (further is uninteresting)


  FIX:

  add a default button even for type abortretryignore:
  (line 56 and 57 in messagedlg.tcl):

      switch -- $type {
          abortretryignore {set lbut {abort retry ignore}; 
  set defb 0 }

  regards
  Vera


tkt_uuid: 671821ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Duplicate
title: ScrolledWindow flashing scrollbars
comment:
  ScrolledWindow has a bug that the scrollbars will be
  gridded, then imediately ungridded indefinately under
  special circumstances. For instance, if a text widget
  is placed in the ScrolledWindow and the very  last
  viewable line causes the horizontal scrollbar to be
  gridded, the scrollbar will cause the last line to go
  out of view, thus causing itself to be ungridded,
  causing the last line to be viewable again, causing the
  scrollbar to be gridded .........

  This patch will fix the scrollbar flash.

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


tkt_uuid: 839181ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: inifile
priority: 5 Medium
foundin: None
resolution: None
title: Not Found
comment:
  Are you  sure inifile is in the distribution of tcllib1.4 ? 
  Please verify, becouse all package work, bug inifile isn't 
  found.


tkt_uuid: 851090ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Duplicate
title: bug in tempfile
comment:
  The env array should be declared global (or qualified 
  with ::) in fileutil::tempfile. Otherwis it doesn't 
  work as intended. (see the code)


tkt_uuid: 1429405fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 6
foundin: None
resolution: None
title: bwidget - Incorrect pkgIndex.tcl
comment:
  The package index of bwidget refers to a non-existent
  file "ctrlframe.tcl".

  {ctrlframe.tcl source {ControlFrame
  ControlFrame::create ControlFrame::use}}


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


tkt_uuid: 622927ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: ProgressBar update problem
comment:
  Hi,

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

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

  Jos. 


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


tkt_uuid: 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: 561403ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: fix for vertical progressbar (1.3.1)
comment:
  Displaying a vertical progressbar does not work properly. 
  The following patch fixes this: (progressbar.tcl, 1.3.1)

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


tkt_uuid: 494388ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
title: Section references & Example sections
comment:
  Extend the format of doctools manpages to allow for 
  markup of section references and example 
  sections/paragraphs.


tkt_uuid: 2123513fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
resolution: Fixed
title: missing protections from empty $sepChar
comment:
  % package require csv
  0.7
  % package require struct
  2.1
  % csv::split2matrix [struct::matrix] fubar {}
  couldn't compile regular expression pattern: invalid escape \ sequence
  % csv::split2queue [struct::queue] fubar {}
  couldn't compile regular expression pattern: invalid escape \ sequence

  Likewise for the read2* variants.

  Deep inner parts cannot tolerate an
  empty string value for $sepChar, but not
  all wrappers protect against it.


tkt_uuid: 528433ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
resolution: Duplicate
title: Update for "calculus" module
comment:
  Sorry, I am not quite sure how to upload new versions
  of the source code, so I use the bug tracking system
  for this.

  The attached file is an update for the calculus module:
  improved sources, improved documentation.


tkt_uuid: 1566434fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: stooop
priority: 5 Medium
foundin: None
resolution: Fixed
title: stooop-87 fails with Tcl 8.5
comment:
  In stooop-4.4.1 (tcllib-1.9-rc1):

  ==== stooop-87 verify member writing and unsetting
  within class namespaces in member data checking mode
  (it seems that unset tracing prevents error reporting
  at this time (bug?)) FAILED
  ==== Contents of test case:

      set interpreter [interp create]
      $interpreter eval {
          # reset any existing environment variables:
          foreach name [array names env STOOOP*] {unset
  env($name)}
          set env(STOOOPCHECKDATA) 1
      }
      $interpreter eval "source $source; namespace import
  stooop::*"
      set result [$interpreter eval {
          class a {
              set (m) 0
          }
          proc a::a {this} {
              set ($this,n) 0
          }
          proc a::~a {this} {}
          set o [new a]
          catch {class b {incr a::(m)}} message; lappend
  ::result $message
          catch {class b {incr a::($o,n)}} message;
  lappend ::result $message
          catch {class b {unset a::(m)}} message; lappend
  ::result bug
          catch {class b {unset a::($o,n)}} message;
  lappend ::result bug
          delete $o

          class A {
              set (m) 0
              proc A {this} {
                  set ($this,n) 0
              }
              proc ~A {this} {}
          }
          set o [new A]
          class B {
              catch {incr A::(m)} message; lappend
  ::result $message
              catch {incr A::($o,n)} message; lappend
  ::result $message
              catch {unset A::(m)} message; lappend
  ::result bug
              catch {unset A::($o,n)} message; lappend
  ::result bug
          }
          delete $o

          class c {}
          class c::d {
              set (m) 0
          }
          proc c::d::d {this} {
              set ($this,n) 0
          }
          proc c::d::~d {this} {}
          set o [new c::d]
          catch {class c::e {incr c::d::(m)}} message;
  lappend ::result $message
          catch {class c::e {incr c::d::($o,n)}} message;
  lappend ::result $message
          catch {class c::e {unset c::d::(m)}} message;
  lappend ::result bug
          catch {class c::e {unset c::d::($o,n)}}
  message; lappend ::result bug
          delete $o

          class C {
              class D {
                  set (m) 0
                  proc D {this} {
                      set ($this,n) 0
                  }
                  proc ~D {this} {}
              }
              set ::o [new D]
              class B {
                  catch {incr C::D::(m)} message; lappend
  ::result $message
                  catch {incr C::D::($o,n)} message;
  lappend ::result $message
                  catch {unset C::D::(m)} message;
  lappend ::result bug
                  catch {unset C::D::($o,n)} message;
  lappend ::result bug
              }
          }
          catch {incr C::D::(m)} message; lappend
  ::result $message
          catch {incr C::D::($o,n)} message; lappend
  ::result $message
          catch {unset C::D::(m)} message; lappend
  ::result bug
          catch {unset C::D::($o,n)} message; lappend
  ::result bug
          delete $o

          set ::result
      }]
      interp delete $interpreter
      set result

  ---- Result was:
  {can't set "a::(m)": class access violation in class b
  namespace} {can't set "a::(1,n)": class access
  violation in class b namespace} bug bug {can't set
  "A::(m)": class access violation in class B namespace}
  {can't set "A::(2,n)": class access violation in class
  B namespace} bug bug {can't set "c::d::(m)": class
  access violation in class c::e namespace} {can't set
  "c::d::(3,n)": class access violation in class c::e
  namespace} bug bug {can't set "C::D::(m)": class access
  violation in class C::B namespace} {can't set
  "C::D::(4,n)": class access violation in class C::B
  namespace} bug bug 1 1 bug bug
  ---- Result should have been (exact matching):
  {can't set "a::(m)": class access violation in class b
  namespace} {can't set "a::(1,n)": class access
  violation in class b namespace} bug bug {can't set
  "A::(m)": class access violation in class B namespace}
  {can't set "A::(2,n)": class access violation in class
  B namespace} bug bug {can't set "c::d::(m)": class
  access violation in class c::e namespace} {can't set
  "c::d::(3,n)": class access violation in class c::e
  namespace} bug bug {can't set "C::D::(m)": class access
  violation in class C::B namespace} {can't set
  "C::D::(4,n)": class access violation in class C::B
  namespace} bug bug {can't read "C::D::(m)": no such
  element in array} {can't read "C::D::(4,n)": no such
  element in array} bug bug
  ==== stooop-87 FAILED


tkt_uuid: 772300ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
title: Tiny doc patch for TkTable
comment:
  Looks like this is not the right place to talk about
  TkTable. Whoever gets this request: please assign it to
  Jeff Hobbs.

  In the documentation for TkTable please add in the section
      Embedded Windows
          ...
      -window pathName

  a line like: "When a pathName of "" is specified,
  TkTable ceases to display any widget which might have
  been associated with the cell in question."
  Best regards
  Helmut Giese


tkt_uuid: 909104ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: tkchat - interface: can't send errors to /dev/null
comment:
  Debug->Error Logging->To File... has trouble setting
  destination to /dev/null

  complains about overwriting an existing file.


tkt_uuid: 1474629fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Duplicate
title: BWidget::place wrong placement when above or left
comment:
  BWidget::place (used, for example, by ComboBox) does
  the wrong thing when something has to be placed above
  or to the left. Instead of placing as expected, the
  placement is made somewhere off the top or left-hand
  side of the screen.

  This seems to be because the calculation for left or
  above placement is wrong. Instead of $x0-$sw and
  $y0-$sh, respectively, the calculations should be
  $x0-$w and $y0-$h. The former takes the position of the
  reference widget and subtracts from it the dimension of
  the screen. This is incorrect. The latter takes the
  position of the reference widget and subtracts from it
  the dimension of the widget being placed, resulting in
  correct placement.

  This mistake appears several times throughout the
  BWidget::place procedure.

  Bug submitted by Mario Becroft <mb@gem.win.co.nz>


tkt_uuid: 1753433fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: math
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 1034580fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Fixed
title: Failure in parsing <??? /> tags
comment:
  It seems that htmlparse module failes to handle tags of 
  the form <tag_name attr_1=val ... />. A quick fix is the 
  following:

  Add to line 329 of htmlparse.tcl:

  # Convert the HTML string into a script.
  set sub "\}\n$cmd {\\1} {/} {\\2} \{"
  regsub -all -- {<([^\s>]+)\s*([^>]*)/>} $html $sub 
  html
  set sub "\}\n$cmd {\\2} {\\1} {\\3} \{"
  regsub -all -- {<(/?)([^\s>]+)\s*([^>]*)>} $html $sub 
  html

  I simply add a new regular expression, that handles only 
  this special case.

  George


tkt_uuid: 3381002fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: Tkchat announces wrong hash in XEP-0115 Entity Capabilities
comment:
  Patch that fixes missing "<" :

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


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

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

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


tkt_uuid: 1145523fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: bwidget - progressbar divide by zero
comment:
  BWidget version 1.7
  progressbar.tcl line ~152 in proc ProgressBar::_modify

  Where the "max" is determined from the widget's option
  "-maximum". It is possible if the user configured the
  -maximum to be 0, that you will get a divide by zero error.

  While this shouldn't happen often, it is reasonable to
  assume that the user might try to set this value to 0.
  The progress bar should either throw an error
  immediately when the user configures the widget to have
  -maximum that is unacceptable or the progress bar
  should handle the value.

  adding

    if {$max == 0} { set max 1}

  just after [Widget::getoption $path -maximum] call
  fixes this the divide by 0 error.


tkt_uuid: 1897839fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: stringprep
priority: 5 Medium
foundin: None
resolution: Fixed
title: stringprep test 2.3 fails
comment:
  sparc solaris 9, Sun C compiler, latest cvs head for tcl and tcllib.

  ---- stringprep-2.3 start

  ==== stringprep-2.3 stringprep: prohibited bidi FAILED
  ==== Contents of test case:

      catch {::stringprep::stringprep nameprep "\u0627\u0031"} result
      set result

  ---- Result was:
  can't read "first_ral": no such variable
  ---- Result should have been (exact matching):
  invalid_bidi
  ==== stringprep-2.3 FAILED


tkt_uuid: 410054ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 1 Zero
foundin: None
resolution: Invalid
title: bwidget combobox.tcl bug
comment:
  line 273 of the March 10, 2001 version of bwidget's
  combobox.tcl says:

                  -listvariable [Widget::varForOption
  $path -values]]

  as an argument to listbox .  But as far as I can tell,
  the listbox.n man page documents -listvar as the name
  of the option, not -listvariable.

  Is this a documentation bug, or is it a coding bug,
  or is it something else?  

  Also, there does not seem to be a category for
  reporting bwidget bugs on this form.


tkt_uuid: 457498ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: log
priority: 5 Medium
foundin: None
title: Extended log module
comment:
  The current 'log' module only consider the criticality
  of a message when deciding wether to log the message
  and where.

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

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


tkt_uuid: 1969144fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 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: 3168761fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Themed widgets cause Tcl errors
comment:
  Multiple widgets - including Entry, LabelFrame and LabelEntry cause errors when used after [Widget::theme 1] was called.

  Included are fixes I made against 1.9.4 release.


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

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

  # diff smtpd.tcl patched_smtpd.tcl

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


tkt_uuid: 1272899fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
resolution: Fixed
title: math::combinatorics - failed tests with Tcl 8.5
comment:
  ==== combinatorics-2.7 math::factorial, exponent
  overflow FAILED
  ==== Contents of test case:

      catch { math::factorial 171 } msg
      list $msg $::errorCode

  ---- Result was:
  Infinity {ARITH DOMAIN {argument to math::factorial
  must be greater than -1.0}}
  ---- Result should have been (exact matching):
  {floating-point value too large to represent} {ARITH
  OVERFLOW {floating-point value too large to represent}}
  ==== combinatorics-2.7 FAILED


  ==== combinatorics-3.10 math::choose big args FAILED
  ==== Contents of test case:

      catch { math::choose 1500 750 } msg
      list $msg $::errorCode

  ---- Result was:
  Infinity {ARITH DOMAIN {second argument to math::choose
  must be non-negative, or both must be integers}}
  ---- Result should have been (exact matching):
  {floating-point value too large to represent} {ARITH
  OVERFLOW {floating-point value too large to represent}}
  ==== combinatorics-3.10 FAILED


  ==== math-7.4 math::cov FAILED
  ==== Contents of test case:

      catch { math::cov 0 2 1 0 } msg
      set msg

  ---- Result was:
  Infinity
  ---- Result should have been (exact matching):
  divide by zero
  ==== math-7.4 FAILED


tkt_uuid: 3107937fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: http :: autoproxy
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 990937ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: uri
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: why is [eval] required for identity split->join?
comment:
  % package require uri
  1.1.1
  % set url http://some.site.invalid/some/path
  % set theUrl [uri::join [uri::split $url]]
  list must have an even number of elements
  % set theUrl [eval uri::join [uri::split $url]]
  http://some.site.invalid/some/path


  Surely uri::join should be written so that the eval is
  not required.  Merely stop using the "args" argument in
  the proc definition so that uri::join must be passed a
  list and not several parameters.

  proc uri::join parts {
      array set components $parts
      return [eval [list Join[string totitle
  $components(scheme)]] $parts]
  }


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


tkt_uuid: 1393804fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: asn
priority: 5 Medium
foundin: None
resolution: Fixed
title: asnPeekByte contains a typo which prevents it from working
comment:
  procedure asn::asnPeekByte contains a typo:

  It starts with lines

   proc ::asn::asnPeekByte {data_var byte_var} {
      upvar $data_var data $byte_var $byte

  which obvoisly cause error "Cannot read byte - no such
  variable" 

  Should be 

   proc ::asn::asnPeekByte {data_var byte_var} {
      upvar $data_var data $byte_var byte


tkt_uuid: 917798ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Invalid
title: No redraw during scrolling
comment:
  I'm on Mac OS 10.3.3 , TCL-TK 8.4.6 with BWdiget 1.70 and TKAqua

  package require BWidget
  proc test_scroll {} {
  toplevel .test
  ScrolledWindow .test.sc
  ScrollableFrame .test.sc.f
  .test.sc setwidget .test.sc.f
  set path [.test.sc.f getframe]

  for {set i 0} {$i < 20 } {incr i} {
  checkbutton $path.b$i -text "Probando probando" -variable 
  prueba
  checkbutton $path.c$i -text "HOLY HOLY" -variable prueba
  pack $path.b$i -side top
  pack $path.c$i -side top

  }
  pack .test.sc
  }

  With this script, when I scroll, the content into the frame is not 
  redraw. The content of the frame is not updated until I stop 
  scrolling.
  Do you know how can I fix that? 


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


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

  * spf 1.1.0
  test name 'spf-1.3' re-used; prior use in
  /local/src/tcllib/modules/dns/spf.test
  test name 'spf-2.4' re-used; prior use in
  /local/src/tcllib/modules/dns/spf.test


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


tkt_uuid: 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: 3183064fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pt (parsetools)
priority: 5 Medium
foundin: None
resolution: Fixed
title: package provide statement not correct.
comment:
  When generating a parser for snit or TclOO the final substitution of the parser package name is not correctly substituted into the package provide statement on the second to last line of the output.


tkt_uuid: 928995ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: inifile
priority: 5 Medium
foundin: None
resolution: Duplicate
title: modules/inifile/test.ini ships read-only
comment:
  The file is extracted read-only, but the test script tries to open it 
  read-write (default). 
   
  I think, the default should change to read-only. chmod-ing the 
  file after extraction provides a workaround for the FreeBSD port. 
   


tkt_uuid: 482570ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
resolution: Fixed
title: nit for csv.n man page
comment:
  The attached patch (assuming that netscape and sf.net
  cooperate) fixes a typo in the csv.n man page, as well
  as filling in the SEE ALSO and KEYWORD sections.


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

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


tkt_uuid: 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: 3496110fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: amazon-s3
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 1164663fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ldap
priority: 7 High
foundin: None
resolution: Fixed
title: package require ldap fails
comment:
  "package require ldap" fails with 'can't create
  procedure "::asn::getInteger": unknown namespace"

  I suspect someone copy/pasted this function from the
  ASN.1 module and forgot to change the namespace in the
  proc declaration.


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: 1537469fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: Installation
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 1272754fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: counter
priority: 5 Medium
foundin: None
resolution: Fixed
title: counter - failed tests with Tcl 8.5
comment:
  ==== counter-avg counter::count FAILED
  ==== Contents of test case:

      counter::init avg
      counter::count avg 2.2
      counter::count avg 3.3
      counter::count avg 9.8
      counter::get avg -avg

  ---- Result was:
  5.1000000000000005
  ---- Result should have been (exact matching):
  5.1
  ==== counter-avg FAILED

  ==== counter-hist histogram average FAILED
  ==== Contents of test case:

      counter::init hist -hist 10
      counter::count hist 2.2
      counter::count hist 18.6
      counter::count hist 14.1
      counter::count hist 26.9
      counter::count hist 20.4
      counter::count hist 23.3
      counter::count hist 53.3
      counter::get hist -avg

  ---- Result was:
  22.685714285714283
  ---- Result should have been (exact matching):
  22.6857142857
  ==== counter-hist FAILED


tkt_uuid: 983197ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: comm
priority: 5 Medium
foundin: None
resolution: None
title: bgerror not getting a chance
comment:
  I am sending a command form a tcl application (client)
  to another tcl application (server). If an error is
  caught on the server side, this is not getting handeled
  by the ::bgerror procedure on the server side. This
  used to be the behaviour in the tcllib1.4. Now the
  error is being thrown back to the client side.


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

  However, on line 145 one finds the command

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

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

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

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

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


tkt_uuid: 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: 501210ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Patch for: [ #500890 ] Mainframe ...
comment:
  I suppose I'm the culprit for this bug (forgot to
  protect variables when adding the eval). I've attached
  the patch to resolve this below as I couldn't attach it
  directly to the bug report.

  Regards,
     Bastien


tkt_uuid: 619548ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: mime::field_decode is case sensitive
comment:
  Hi there,

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

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

  Here is some example code:

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

  package require mime

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


tkt_uuid: 2840180fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tar
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Incorrect prefix/name split?
comment:
  While digging around, I encountered a discrepancy between what the tar package does and how the tar file format is documented here:
  http://www.freebsd.org/cgi/man.cgi?query=tar&sektion=5&manpath=FreeBSD+8-current

  The problem is with how a filename is split between the name and prefix fields of the header, when the filename is longer than 100 characters. The tar package simply puts the last 100 characters in "name" and what comes before it in "prefix". That tar manpage rather says that the split _must happen at a slash_, and that a slash will be inserted between the prefix and name when joining the two up again.[Section "POSIX ustar Archives", description of "prefix"]

  I haven't been able to actually test what actual tar utilities do with name and prefix, however; some basic attempts (at tclsh prompt) of mine of making a tarfile with one item that has name "name" and prefix "prefix" just results in tar saying "This does not look like a tar archive" :-(


tkt_uuid: 781246ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: ftp
priority: 4
foundin: None
resolution: Not Applicable Here
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: 637770ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: sha1
priority: 5 Medium
foundin: None
resolution: Accepted
title: Fix for sha1 on Tcl 8.4/MacOSX
comment:
  I'm not sure whether this code is actually necessary,
  but it seems to fix problems with the sha1 code as used
  by some people on MacOSX with Tcl 8.4 (I'm not sure if
  the code is actually needed with the HEAD of tcllib
  though, or whether that does the right thing anyway.
  This patch should be relatively harmless though, and
  won't hit performance all that badly either.)


tkt_uuid: 1472763fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: BWidget ComboBox bug: Parent namespace does not exist
comment:
  I am using Tcl 8.4.12.0 in a quite large application. 
  In the application, BWidgets, among other packages is 
  used. I use the BWidgets ComboBox in several places of 
  the GUI, but encounters problems with one of them. The 
  ActiveState Support crew recommended me to sent the 
  report here after unsuccesfully trying to solve the 
  problem.

  A script combofail.tcl is attached to this failure 
  report.

  Best regards,
  Anders Nyman


tkt_uuid: 1784843fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Documentation
priority: 5 Medium
foundin: None
resolution: Accepted
title: minor spelling corrections to devdocs files
comment:
  There may be content-oriented updates needed to these files ... this patch is not that.

  All I am doing here is correcting several typos I encountered while running ispell over the files.


tkt_uuid: 2970577fffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: tklib :: tooltip
priority: 5 Medium
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: 1328920fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: math
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Symbolic differentiation
comment:
  The attached is a symbolic differentiation package for
  Tcl.  It depends on the 'tclparser' module from TclPro.


tkt_uuid: 466091ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : tkchat
priority: 5 Medium
foundin: None
title: tkchat memory
comment:
  I would like for tkchat to remember things like resized
  window size.

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


tkt_uuid: 3471474fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: pop3
priority: 5 Medium
foundin: None
resolution: Fixed
title: pop3::open doesn't handle -socketcmd properly
comment:
  Documentation says -socketcmd option is a command prefix. However it doesn't handle it that way, but as a simple command.


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

  Application nnsd 

  fixes this bug. Corrected file attached.


tkt_uuid: 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: 748758ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Duplicate
title: ::ftp::NList + WS in FileNames
comment:
  Hi,

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


  mfg

    aotto


tkt_uuid: 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: 849829ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: AutoScroll not set in TK 8.5a0
comment:
  When Tk 8.5a0 is used to run tkChat 1.128,
  the chat area does not scroll to make
  new messages visible.

  Further examination shows that
  $Options(AutoScroll) is false, so
  apparently [tkchat::scroll_set] is
  failing to enable it.

  This probably traces back to a flaw
  in Tk 8.5a0, but the tkchat maintainer
  is probably best to continue the analysis.


tkt_uuid: 548832ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Fixed
title: Tcl version of mime::qp_encode broken
comment:
  The mime package has a preference for Trf's
  quoted-printable command, but falls back to a pure Tcl
  implementation when Trf is not present.

  In tcllib 0.8 (mime package version 1.2 iirc),
  mime::qp_encode correctly encoded the equal sign as
  =3D.  Currently in tcllib 1.2 (mime package version
  1.3.1) mime::qp_encode does NOT encode the equal sign. 
  This causes the quoted-printable output of the mime
  package to not be decodable by many other programs
  (such as pine).

  A (rather simple) patch is attached.


tkt_uuid: 1014795fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: base64
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 522529ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: possible log file parsing bug
comment:
  I have been seeing, during the past week or two, the
  following phenom:

  dkfI don't run the Tk test suite very often as it is
  much touchier than the Tcl test suite. In particular,
  some features (like focus handling and restacking
  timings) seem to be highly dependent on your window
  manager, and I also have problems because my Sun
  workstation has a lot more fonts than normal (I suspect
  that it is configured with extra font servers, but
  can't be bothered to check.)Sat Feb 23 14:33:54 2002
  217.118.43.2 [NEW USER] Bman  
  dan_kuchler.Sat Feb 23 19:46:49 2002 12.234.155.3 [NEW
  USER] ericm  
  dan_kuchlerhi there dude 


tkt_uuid: 861277ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: htmlparse
priority: 5 Medium
foundin: None
resolution: Fixed
title: htmlparse.tcl: backslashes in content
comment:
  htmlparse::parse fails if backslashes appear in content:

  htmlparse::parse "<p>\\</p>"
    ==> error "Missing close-brace"


tkt_uuid: 2683544fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tklib :: plotchart
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: clipped x-labels due to font size
comment:
  I use in my application a bigger font with "font configure TkDefaultFont -size 11 -weight bold" and PlotChart 1.6.1. 
  In xy-plots the x-label is clipped, since there is a fixed size for the labels and tics (pymax), not a font-dependent size.


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: 3601370fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 9 Immediate
foundin: None
resolution: Fixed
title: Doctools nroff/groff output not supported by tcltk-man2html
comment:
  This is related to Tcl bug 3600058 "Doctools nroff/groff output not supported by tcltk-man2html" (https://sourceforge.net/tracker/index.php?func=detail&aid=3600058&group_id=10894&atid=110894).  Most of the cases listed here are invalid input or invalid nroff.  Valid nroff not supported by the Tcl tool is being addressed in the Tcl bug.

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

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

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

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

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

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

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

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

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

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

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

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

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

  Issue #7: Spaces in man page names

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

  Issue #8: Inappropriate copyright statements

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

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

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

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

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

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

  Issue #10: Unvestigated

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

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

  The causes have not yet been investigated.


tkt_uuid: 3106208fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: tree itemconfigure mishandling of node names
comment:
  The original description, as submitted to ActiveState:
  ========================================
  I am currently using version 1.8 of the BWidget library. I have found an  error (or lack of documentation) in the Tree library. I am using the tree structure in my software to display connections between devices. Each node in  my tree is named using the unique ID of the device which the tree node represents (these are integer values). When doing an "itemconfigure" in my code I run into an error. The error is caused by using integer values for node names. The error is described below.

  In the code section (below) taken from Tree::itemconfigure there exists a case when a node name is the same value as a flag value (in my system I had a node named 16 and a flag value that turned out to be 16). When doing the lsearch to find the idx of the node, the search finds the index of the flag value 16 (and assumes this is the node). When it does the incr to get the corresponding flag value it is really picking up a node name. In my system I also have node names that are strings. In my case the code was picking up a node name that was a string and when trying to set the flag it was doing an "|" with a flag value and a string (which causes Tcl to crash).

   if { $data(upd,level) < 3 && $flag } {
        if { [set idx [lsearch -exact $data(upd,nodes) $node]] == -1 } {
           lappend data(upd,nodes) $node $flag
        } else {
           incr idx
           set flag [expr {[lindex $data(upd,nodes) $idx] | $flag}]
           set data(upd,nodes) [lreplace $data(upd,nodes) $idx $idx $flag]
        }

  I do not see any documentation stating that node names cannot be integer values. As a result, I deem this to be a bug that should be addressed.
  If you are not the people who deal with Tcl bug, please pass this on to the people who fix bugs. Thanks.
  ========================================

  My fix for the problem is attached.


tkt_uuid: 862491ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 7 High
foundin: None
resolution: Fixed
title: fileutil::find ... no catch around 'cd'
comment:
  Cd sequences are not checked to see if the succeed. 
  I.e. failed due to permissions. 
  If failure occurs the code terminates. I would rather 
  it skip the problem children in a find. This problem has 
  been reproduced in both WIN32 & HP-UX


tkt_uuid: 3122382fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: tablelist
priority: 5 Medium
foundin: None
resolution: None
title: findTabs returns 0 and callers fail
comment:
  The first loop from tablelist::findTabs is able to return 0 without providing data to idx1Name and idx2Name ... thus commands like tablelist::addActiveTag will crash with error "can't read tabIdx1: no such variable"

  seen in version tklib0.5

  thx


tkt_uuid: 1254937fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Duplicate
title: Binary files get an extra line feed at the end
comment:
  Binary mime parts get an extra line feed at the end,
  before the border.

  I have submitted patch 1254934 as a proposal to fix
  this problem.


tkt_uuid: 1951544fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: tcllib: request for new module
priority: 6
foundin: None
title: YAML module add
comment:
  I impremented a load/dump library for YAML.

  Now, the library name is YAPT.(YAml Parser for Tcl)
  But according to the naming convention of tcllib, this library name might be 'yaml'?

  Although whichever of two names is satisfactory for me, I want to continue development by the determined name.

  Comments?


tkt_uuid: 477130ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: Big combobox api changes not documented
comment:
  In revision 1.14 of the combobox the LabelFrame was
  removed from the ComboBox (looking at the changelog for
  some speedimprovement).

  All the docs especially Changes.txt do not mention
  this. Also the html doc was not updated.

  It's nice that it's faster but why just ditch a lot of 
  functionality (ok I'm not 100% objective since I was
  using that functionality :) )?

  I'll personally settle for a mention of it in the docs
  =) I'll make a slow combobox myself I guess...

  Thanks,

  Ric


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


tkt_uuid: 567428ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: problem with tmml documentation
comment:
  The following modules have a problem with the way their
  tmml documentation generates nroff:

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

  The nroff that gets generated starts out with:

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

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

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


tkt_uuid: 458023ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Fixed
title: urlStub always returns ""
comment:
  cgi::urlStub is intended to return either 
  env(SCRIPT_NAME) or a value set by a previous call to 
  the proc.  It's missing a global env declaration and 
  so always fails to find a value for SCRIPT_NAME and 
  returns "" instead.

  The patch is simple, in ncgi.tcl:

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


tkt_uuid: 3288793fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Accepted
title: ftp::List does not work inside tkcon
comment:
  the proposed fix is to replace:
  proc ::ftp::__ftp_ls {args} {
          foreach i [eval ::ftp::List_org $args] {
              puts $i
          }
      }
  with:
      proc ::ftp::__ftp_ls {args} {
          set rc [eval ::ftp::List_org $args]
          foreach i $rc {
              puts $i
          }
          return $rc
      }

  in ftp.tcl file.


tkt_uuid: 864530ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: md5
priority: 8
foundin: None
resolution: Wont Fix
title: md5::md5 -- incompatible API change in 2.0
comment:
  Previously, [md5::md5 $data] returned a result as a hex
  string; as of version 2.0, it returns it as binary.
  Although this is noted in the ChangeLog, it is easy to
  miss, and is sure to cause many hard-to-track-down
  errors when users upgrade to the next release of tcllib.

  This seems like a gratuitous incompatibility.  Please
  make '-hex' the default, for compatibility with tclllib
  1.4, and add a '-bin' or '-binary' option for those
  that want the new behaviour.


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: 1646625fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: doctools
priority: 9 Immediate
foundin: None
resolution: Not Applicable Here
title: doctools - html backend - backslashes wrong in doc example
comment:
  Looking at http://tcllib.sourceforge.net/doc/des.html I see that the backslashes in the example are doubled. This has proved very confusing to at least one user, and caused him to have needless problems.


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: 3076576fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math
priority: 5 Medium
foundin: None
resolution: Fixed
title: Wrong number of arguments in test isprime-2.0 of numtheory
comment:
  Test isprime-2.0 uses a mock-up Miller-Rabin test procedure, but the number of arguments is 3, instead of 4.

  Here is the report:

  ==== modules/math/numtheory.test isprime-2.0 FAILED =========
  ==== Contents of test case:

     ::math::numtheory::Miller--Rabin 127 -randommr 500

  ---- Result was:
  ---- Return code should have been one of: 0 2
  ---- errorInfo: wrong # args: should be "::math::numtheory::Miller--Rabin n s d a"
      while executing
  "::math::numtheory::Miller--Rabin 127 -randommr 500"
      ("uplevel" body line 2)
      invoked from within
  "uplevel 1 $script"
  ---- Result should have been:

  ==== modules/math/numtheory.test isprime-2.0 ====


tkt_uuid: 1451784fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Out of Date
title: Bwidget notebook highlight looks bad on OS X
comment:
  The Bwidget notebook on OS X has a glitch in which the notebook tab, 
  when it has focus, turns black and obscures the label. I went into 
  notebook.tcl and added a switch statement with a specific color 
  (LightSkyBlue) for OS X. Diff and before/after screenshots attached.


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: 1813193fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ftp - FXP - cross server transfer not going through client
comment:
  Is it possible to add FXP support? RFC959 describes the implementation of FXP as follows:

        When data is to be transferred between two servers, A and B (refer
        to Figure 2), the user-PI, C, sets up control connections with
        both server-PI's.  One of the servers, say A, is then sent a PASV
        command telling him to "listen" on his data port rather than
        initiate a connection when he receives a transfer service command.
        When the user-PI receives an acknowledgment to the PASV command,
        which includes the identity of the host and port being listened
        on, the user-PI then sends A's port, a, to B in a PORT command; a
        reply is returned.  The user-PI may then send the corresponding
        service commands to A and B.  Server B initiates the connection
        and the transfer proceeds.  The command-reply sequence is listed
        below where the messages are vertically synchronous but
        horizontally asynchronous:

           User-PI - Server A                User-PI - Server B
           ------------------                ------------------

           C->A : Connect                    C->B : Connect
           C->A : PASV
           A->C : 227 Entering Passive Mode. A1,A2,A3,A4,a1,a2
                                             C->B : PORT A1,A2,A3,A4,a1,a2
                                             B->C : 200 Okay
           C->A : STOR                       C->B : RETR
                      B->A : Connect to HOST-A, PORT-a


  If you would like to discuss this with me any further, please contact me at: pill_uk@hotmail.com


tkt_uuid: 435471ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Fixed
title: paned window problem
comment:
  When adding a large widget to a pane of a paned window,
  the panes already present do no keep their relative
  sizes. Try the following example:

    package require BWidget

    wm geometry . 500x500
    update idletasks

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

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

    update idletasks
    after 1000

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

    update idletasks
    after 1000

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

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

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

  Kind regards, 

  Jos.


tkt_uuid: 2947213fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tclapps :: tkchat
priority: 7 High
foundin: None
resolution: Not Applicable Here
title: Repeated short history
comment:
  When history loading is the default "ask', if I answer a non-zero number of days to the dialog that pops up on startup, the requested amount of history is properly loaded, but the last pageful of history is repeated after the line "++++ End Of History ++++", with their timestamps.

  When reloading history afterwards through the Debug menu, the effect disappears.
  I suspect the startup-time loading of recent history is not disabled by the dialog, and fires after the loading itself.

  This is 1.477 on both Windows and Linux, and has been present for several Tkchat versions.


tkt_uuid: 686065ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: popups!
comment:
  When the multi-line entry is used
  to enter an action message
  (one that begins /me) and that
  message spans multiple lines,
  tkchat pops up a window for 
  each line.


tkt_uuid: 517599ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
title: Let mpexpand warn against visual tags
comment:
  Change the "mpexpand" application to optionally warn 
  the user when processing strong/emph tags => Reminder 
  to .man writer to use semantic tags, not visual ones.


tkt_uuid: 638236ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: BWidget: Entry "-state disabled" doesn't gray
comment:
  There is a difference between TK's entry and BWidget's
  Entry
  concerning the -state disabled option.

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

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

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

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

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


tkt_uuid: 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: 1494997fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: statistics
priority: 5 Medium
foundin: None
resolution: None
title: Can't load in slave interpreter
comment:
  This bug affects the math::statistics package, but I 
  assume it might affect many other packages in tcllib.

  Consider the following:

  % package require math::statistics
  0.1.3
  (bin) 2 % interp create kk
  kk
  (bin) 3 % interp eval kk {package require 
  math::statistics}
  can't read "::argv0": no such variable

  math::statistics can be loaded successfully in the 
  top interpreter, but fails when trying to load it 
  into a slave interpreter. The issue is that the 
  package internally tries to get the value of ::argv0
  to assess whether this is an interactive session so 
  as to perform a regression testing, but ::argv0 does 
  not exists in interpreters different from {}.

  Juan Carlos---


tkt_uuid: 1731101fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Works For Me
title: ScrollableFrame invalid scrollbar
comment:
  Hi,
  I've had quite an annoying bug with Bwidget's ScrollableFrame. Whenever we have data in the frame that doesn't need a scrollbar, at first, there is no scrollbar, but if we resize the window to give it a smaller size, then a scrollbar appears even though it is still not needed. Clicking on the scrollbar will make it disappear instantly. 
  In other words, you create a toplevel of size 500x500, you put a ScrollableFrame in a ScrolledWindow in it, you put widgets in the ScrollableFrame where the internal frame takes 100x100, no scrollbar needed, if we resize the toplevel to 400x400 for example, then a scrollbar appear even though it shouldn't until the size gets under 100x100. Clicking on the scrollbar makes it disappear, if we resize again to 300x300, it appears again. If we resize to 500x500, no scrollbar, if we resize again to 400x400, still no scrollbar.

  I found out the reason behind this. It's pretty simple. The ScrollableFrame is in fact a canvas which contains a frame. This allows the scrollbar to work with the canvas. ScrollableFrame creates the frame and adds a binding on its <Configure> which calls ::ScrollableFrame::_frameConfigure 
  That proc checks the [winfo width] and [winfo height] of the frame and takes the maximum width/height between the width/height of the frame and the width/height of the canvas and sets that as the -scrollregion of the canvas.

  In other words, in the above example, the width/height of the frame is 100x100 and the one of the canvas is 500x500, so the -scrollregion of the canvas becomes [list 0 0 500 500].

  Once we resize the window to 400x400 the scrollregion being [list 0 0 500 500] the scrollbar appears. And the reason why the -scrollregion doesn't get modified is that the frame doesn't get <Configured> since we resize to 400x400 and the frame is in 100x100 so its boundaries aren't touched, so the frame is not <Configured> so the ::ScrollableFrame::_frameConfigure doesn't get called, which is why the scrollregion isn't changed and the scrollbar appears.

  I hope this isn't too confusing.. Anyways, my solution was to simply replace the _frameConfigure proc by a one lines : 
  $canvas:cmd configure -scrollregion [$canvas:cmd bbox all]
  This makes the scrollregion of the canvas be set to the frame's width/height so when we resize, the scrollbar doesn't appear, and if we resize to let's say 99x99, then the scrollbar appears because of the [$canvas:cmd bbox all]. If the frame's size is modified, then you get the <Configure> and the bbox will report the new size of the scrollregion.

  Can you please make sure this patch gets into the next version of bwidget. 

  p.s.: sorry if it's too long and difficult to understand, I'm not very good at explaining things...


  Thank you,
  KaKaRoTo


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

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


tkt_uuid: 1187273fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Accepted
title: Restore window to same state after minimising to icon
comment:
  Currently, if is chat window is zoomed and is 
  minimised to the system tray, when it is deiconified 
  it reappears in normal state instead of zoomed.
  This patch allows it to be restored to zoomed state.


tkt_uuid: 602279ffffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: app: tkchat
priority: 5 Medium
foundin: None
resolution: Rejected
title: tkchat - Shared whiteboard
comment:
  This patch implements a shared whiteboard that hitches
  a ride on tkchat for its communication protocol. 
  Naturally, it needs more polishing before it is perfect
  for use...


tkt_uuid: 533025ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 7 High
foundin: None
resolution: Accepted
title: sendmessage: response too short
comment:
  smtp::sendmessage can return the error "response too 
  short" when sending through a mail server that 
  responds very quickly.
  This is due to smtp::readable not handling the "no 
  full-line available" condition.
  I have attached a fix that works for me, in the form 
  of a diff against smtp.tcl from tcllib0.6.1.

  Regards
  Simon Scott


tkt_uuid: 1699575fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: graph
priority: 3 Low
foundin: None
resolution: Fixed
title: criticl accelerators have wrong error msgs with Tcl 8.5
comment:
  The struct::graph testsuite throws a lot of errors due to wrong style error messages when using Tcl 8.5 and the critcl wrappers.


tkt_uuid: 433147ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: None
title: csv man page term needs clarified
comment:
  The csv man page mentions the word "values" as an
  argument to, for instance, ::csv::join .  What should
  be mentioned there though is that it is a single
  argument.  I don't know if this argument must be in a
  list format, but I suspect so.  If so, that too should
  be mentioned.

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

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


tkt_uuid: 1889835fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: fix for extra CR/LF's inserted into binary file data
comment:
  The mime::buildmessageaux procedure has logic to insert carriage return line feeds in the middle of file data even when the encoding is binary.  The problem occurs when the number of bytes is greater than 32766 so the file is read in more than one read call.   Here are my changed lines in the version of mime.tcl that was released with tcllib 1.8.  I believe that the head version is the same, at least in this procedure.  I am no expert on mime and encodings, but I suspect the "\r\n" can be removed when $converter is not {} too.   This excerpt starts around line 2030 of the file mime.tcl:


      while {($size != 0) && (![eof $fd])} {
  if {$size < 0 || $size > 32766} {
      set X [read $fd 32766]
  } else {
      set X [read $fd $size]
  }
  if {$size > 0} {
      set size [expr {$size - [string length $X]}]
  }
  if {[string compare $converter ""]} {
      append result "[$converter -mode encode -- $X]\r\n"
  } else {
      # append result "$X\r\n" 
              # ECH fix - if binary do not mess up chunk boundaries
      append result $X
  }
      }
          # ECH fix - now add the \r\n after the data
  if {![string compare $converter ""]} { append result "\r\n" } ;# ECH fix

              if {$closeP} {
                  catch { close $state(fd) }
                  unset state(fd)
              }


tkt_uuid: 883573ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ftp change directory problems
comment:
  There is a problem changing to directories with some
  special
  characters.

  I checked the ftp with gftp client and the directories
  are accessible.

  Roi


tkt_uuid: 886385ffffffffffffffffffffffffffffffffff
type: Patch
status: Deleted
subsystem: control
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Enhanced do...while|until [prefix] [suffix] Control Structur
comment:
  This one came out of my customer demand! Pat Thoyts 
  and Donal K. Fellows suggested me to submit it here.

  The submission is in form of a TIP. Please search 
  for "sample implementation" to get to the code.

  Please also see at the end of it, untried version of tests. 
  Please search for "tests for do" to get to the code

  TIP 
  Title 
  Enhanced do...while|until [prefix] [suffix] Control 
  Structure 
  Version 
  $Revision: 1.4 
  Author 
  Bhushit Joshipura 
  State 
  Draft 
  Type 
  Project 
  Vote 
  Pending 
  Created 
  20-Jan-2004 
  Keywords 
  control structure, do, while, until, prefix, suffix 
  ~ Abstract 
  This TIP proposes the introduction of an enhancement 
  on do...while|until control structure already present in 
  TCLLib. It proposes to add prefix statement list and 
  suffix statement list to prepend and append to 
  statement body of do...while|until for the "while" part 
  (second loop onwards) of the loop. 
  ~ Rationale 
  Theoretically only two controls - if and goto - are 
  sufficient to implement all algorithms. However, 
  languages provide more control structures for better 
  representation of algorithms. 
  do...while|until is a useful structure in itself for parsing, 
  file reading etc. With little pain, a while loop does the 
  job too. However, when it comes to nesting, 
  do...while|until into another, equivalent while loop starts 
  becoming clumsier. 
  In situations where do...while|until is used in testing, if 
  the statement body of do...while|until changes state of 
  entity being tested, next iteration is bound to have side 
  effects. At that time, proposed prefix and suffix 
  statements come handy. 
  While it is still possible to handle all of these in a while 
  loop, nesting becomes a nightmare. 
  Proposed solution is more elegant, in spirit of 
  do...while|until's spirit of treating first pass specially. 
  ~ Implementation in Other Languages 
  C, C++, Java, Pascal have do...while. Perl has 
  do...while|until. Python does not have any equivalent. 
  ~ Grammar and Behavior 
  |do { 
  | 
  |} while|until { } [ prefix { }] [suffix { statements2>}] 
  1. are executed 
  2. while|until is evaluated 
  3. while associated are true ( or until are false ) 
  3.1 are executed 
  It is necessary to specify one and only one of "while" 
  or "until" with proper condition block following it. 
  ~Sample Invocations 
  set x 1 
  |do { 
  |    puts "Hello world!" 
  |    incr x 
  |} until { $x > 3 } prefix { 
  |    puts "prefix begin" 
  |    puts $x 
  |    puts "prefix end" 
  |} suffix { 
  |    puts "suffix begin" 
  |    puts $x 
  |    puts "suffix end" 
  |} 
  ~Contrast 
  Contrast above code with its while loop equivalent 
  |set x 1 
  |set firsttime "yes" 
  |while { $x <= 3 } { 
  |    if { $firsttime == "no" } { 
  | puts "prefix begin" 
  | puts $x 
  | puts "prefix end" 
  |    } 
  |    puts "Hello world!" 
  |    incr x 
  |   if { $firsttime == "no" } { 
  | puts "suffix begin" 
  | puts $x 
  | puts "suffix end" 
  |    } 
  |    set firsttime "no" 
  |} 
  ~Sample Implementation 
  |# do.tcl -- 
  |# 
  |#        Tcl implementation of a "do ... while|until" loop. 
  |#        Once first iteration gets over, body can be 
  augmented using prefix or suffix 
  |# 
  |# Originally written for the "Texas Tcl Shootout" 
  programming contest 
  |# at the 2000 Tcl Conference in Austin/Texas. 
  |# 
  |# Copyright for TCLLib implementation was 
  |# Copyright (c) 2001 by Reinhard Max 
  |# 
  |# Added prefix and suffix by Bhushit Joshipura, 
  December 15, 2003 
  |# Bhushit does not know what happens to copyrights 
  |# 
  |# See the file "license.terms" for information on usage 
  and redistribution 
  |# of this file, and for a DISCLAIMER OF ALL 
  WARRANTIES. 
  |# 
  |# 
  |namespace eval ::control { 
  | 
  |    proc do {body args} { 
  | 
  | # 
  | # Implements a "do body while|until test [ [prefix | 
  suffix] bodyparts ]" loop 
  | # 
  | # It is almost as fast as builtin "while" command for 
  loops with 
  | # more than just a few iterations. 
  | # 
  | 
  | set len [llength $args] 
  | if {$len != 6 && $len != 4 && $len !=2 && $len != 0} { 
  |     set proc [namespace current]::[lindex [info level 0] 
  0] 
  |     return -code error "wrong # args: should be \"$proc 
  body\" or \"$proc body \[until|while\] test\" or \"$proc 
  body \[until|while\] test \[ \[ prefix | suffix \] bodyparts 
  \]" 
  | } 
  | set test 0 
  | set bodyprefix "" 
  | set bodysuffix "" 
  | set whileOrUntil "" 
  | 
  | foreach { argument value } $args { 
  |     switch -exact -- $argument { 
  | "while" { 
  |     if { $whileOrUntil == "" } { 
  | set whileOrUntil $argument 
  | set test $value 
  |     } else { 
  | return -code error \ 
  |     "\"$argument\" found after \"$whileOrUntil\"" 
  |     } 
  | } 
  | "until" { 
  |     if { $whileOrUntil == "" } { 
  | set whileOrUntil $argument 
  | set test !($value) 
  |     } else { 
  | return -code error \ 
  |     "\"$argument\" found after \"$whileOrUntil\"" 
  |     } 
  | } 
  | "prefix" { 
  |     # last of prefix will be considered 
  |     set bodyprefix $value 
  | } 
  | "suffix" { 
  |     # last of suffix will be considered 
  |     set bodysuffix $value 
  | } 
  | default { 
  |     return -code error \ 
  | "bad option \"$whileOrUntil\": must be until, while, 
  prefix or suffix" 
  | } 
  |     } 
  | } 
  | 
  | # the first invocation of the body 
  | set code [catch { uplevel 1 $body } result] 
  | 
  | # decide what to do upon the return code: 
  | # 
  | #               0 - the body executed successfully 
  | #               1 - the body raised an error 
  | #               2 - the body invoked [return] 
  | #               3 - the body invoked [break] 
  | #               4 - the body invoked [continue] 
  | # everything else - return and pass on the results 
  | # 
  | switch -exact -- $code { 
  |     0 {} 
  |     1 { 
  | return -errorinfo [ErrorInfoAsCaller uplevel do]  \ 
  |     -errorcode $::errorCode -code error $result 
  |     } 
  |     3 { 
  | # FRINK: nocheck 
  | return 
  |     } 
  |     4 {} 
  |     default { 
  | return -code $code $result 
  |     } 
  | } 
  | 
  | set body [ format "%s\n%s\n%s" $bodyprefix $body 
  $bodysuffix ] 
  | 
  | # the rest of the loop 
  | set code [catch {uplevel 1 [list while $test $body]} 
  result] 
  | if {$code == 1} { 
  |     return -errorinfo [ErrorInfoAsCaller while do] \ 
  | -errorcode $::errorCode -code error $result 
  | } 
  | return -code $code $result 
  | 
  |    } 
  |} 
  ~Copyright 
  This document is placed in public domain. 


  Tests for do

  # do.test --
  #
  #         Tests for [control::do]
  # 
  # RCS: @(#) $Id: do.test,v 1.6 2003/05/01 22:40:13 
  patthoyts Exp $
  #

  package forget control
  catch {namespace delete control}

  # Direct loading of provide script -- support testing even
  # when not installed.  And be sure we test the local copy
  # and not some later version that may be installed.
  source [file join [file dirname [info script]] control.tcl]
  namespace import ::control::do

  package require tcltest
  namespace import -force 
  tcltest::test ::tcltest::cleanupTests

  # This constraint restricts certain tests to run on tcl 
  8.3+
  if {[package vsatisfies [package provide tcltest] 2.0]} {
      # tcltest2.0+ has an API to specify a test constraint
      ::tcltest::testConstraint tcl8.3plus \
          [expr {[package vsatisfies [package provide Tcl] 
  8.3]}]
  } else {
      # In tcltest1.0, a global variable needs to be set 
  directly.
      set ::tcltest::testConstraints(tcl8.3plus) \
          [expr {[package vsatisfies [package provide Tcl] 
  8.3]}]
  }

  # ----------------------------------------
  test {do-1.0} {do ... while} {
      set x 0
      do {incr x} while {$x < 10}
      set x
  } 10

  # ----------------------------------------
  test {do-1.1} {do ... until} {
      set x 0
      do {incr x} until {$x > 10}
      set x
  } 11

  # ----------------------------------------
  test {do-1.2} {break} {
      set x 0
      do {
  incr x
  if {$x == 5} {break}
      } until {$x == 10}
      set x
  } 5

  # ----------------------------------------
  test {do-1.3} {continue} {

      set x 0
      set xx [list]
      do {
  incr x
  if {$x == 5} {continue}
  lappend xx $x
      } until {$x == 10}
      set xx
  } {1 2 3 4 6 7 8 9 10}

  # ----------------------------------------
  test {do-1.4} {error} {
      catch {
  set x 0
  do {
      incr x
      if {$x == 5} {foo}
  } while {$x < 10}
      } result
      list $x $result
  } {5 {invalid command name "foo"}}

  # ----------------------------------------
  test {do-1.5} {return} {
      proc foo {} {
  set x 0
  do {
      incr x
      if {$x == 5} { return $x }
  } while {$x < 10}
      }
      set result [foo]
      rename foo ""
      set result
  } 5

  # ----------------------------------------
  test {do-1.6} {break in the first loop} {
      set x 0
      do {
  break
  incr x
      } while {$x < 10}
      set x
  } 0

  # ----------------------------------------
  test {do-1.7} {continue in the first loop} {
      set x 0
      set xx [list]
      do {
  incr x
  if {$x == 1} {continue}
  lappend xx $x
      } until {$x == 10}
      set xx
  } {2 3 4 5 6 7 8 9 10}

  # ----------------------------------------
  test {do-1.8} {error in the first loop} {
      set x 0
      catch {
  do {
      foo
      incr x
  } until {$x == 10}
      } result
      list $x $result
  } {0 {invalid command name "foo"}}

  # ----------------------------------------
  test {do-1.9} {[do ... while] with false condition} {
      set x 0
      do {
  incr x
      } while 0
      set x
  } 1

  # ----------------------------------------
  test do-1.10 {[do ... until] with true condition} {
      set x 0
      do {
  incr x
      } until 1
      set x
  } 1

  # ----------------------------------------
  test do-1.11 {third arg is neither while nor until} {
      set x 0
      catch {
  do {
      incr x
  } foo 1
  set x
      } result
      list $x $result
  } {0 {bad option "foo": must be until, or while}}

  # ----------------------------------------
  test do-1.12 {stack traces for errors in the first 
  iteration} {
      proc a {} b
      proc b {} {do c while 1}
      proc c {} d
      catch a
      set ::errorInfo
  } {invalid command name "d"
      while executing
  "d"
      (procedure "c" line 1)
      invoked from within
  "c"
      ("do" body line 1)
      invoked from within
  "do c while 1"
      (procedure "b" line 1)
      invoked from within
  "b"
      (procedure "a" line 1)
      invoked from within
  "a"}

  # ----------------------------------------
  test do-1.14 {stack traces for errors in subsequent 
  iterations} tcl8.3plus {
      proc a {} b
      proc b {} {
  set i 10
  do {
      incr i -1
      c $i
  } while {$i}
      }
      proc c {i} {if {$i==5} e}
      catch a
      set ::errorInfo
  } {invalid command name "e"
      while executing
  "e"
      (procedure "c" line 1)
      invoked from within
  "c $i"
      ("do" body line 3)
      invoked from within
  "do {
      incr i -1
      c $i
  } while {$i}"
      (procedure "b" line 3)
      invoked from within
  "b"
      (procedure "a" line 1)
      invoked from within
  "a"}

  # ----------------------------------------
  test do-2.0 {one-shot do} {
      set x 0
      do {incr x}
      set x
  } 1

  # ----------------------------------------
  test do-2.1 {one-shot do with break} {
      set x 0
      do {incr x; break; incr x}
      set x
  } 1

  # ----------------------------------------
  test do-2.2 {wrong no of arguments} {
      set x 0
      set res [catch {do {incr x} foo} ret]
      list $x $res $errorInfo
  } {0 1 {wrong # args: should be "::control::do body" 
  or "::control::do body [until|while] test"
      while executing
  "do {incr x} foo"}}

  # ----------------------------------------
  test do-2.3 {wrong no of arguments} {} {
      set res [catch do]
      if {[string match \
       {no value given for parameter "body" 
  to "do"*} \
       $::errorInfo]
      } then {
  set ::errorInfo {wrong # args: should be "do 
  body args"
      while executing
  "do"}
      }
      list $res $::errorInfo
  } {1 {wrong # args: should be "do body args"
      while executing
  "do"}}

  # ----------------------------------------
  test do-2.4 {one-shot do with error} {
      set x 0
      set res [catch {do {
  incr x
  foo
  incr x
      }}]
      list $x $res $::errorInfo
  } {1 1 {invalid command name "foo"
      while executing
  "foo"
      ("do" body line 3)
      invoked from within
  "do {
  incr x
  foo
  incr x
      }"}}

  cleanupTests

  if {[info exists ::argv0] && $::argv0 == [info script]} {
      # a proc that wastes some time
      proc something {n} {
  for {set i 0} {$i < $n} {incr i} {}
      }
      
      proc main {} {
  # run it for the first time to get it byte compiled
  something 1

  set payload {
      something 10
      incr x
  }
  puts "\nComparing performance of do-while, do-
  until and builtin while..."
  set format "%-8s : %20s for %4d iteration(s)."
  foreach c {1 10 5000} {
      puts ""
      foreach {descr script} {
  {do while} {do $payload while {$x < 
  $c}}
  {do until} {do $payload until {$x == 
  $c}}
  {while} {while {$x < $c} $payload}
      } {
  set x 0
  puts [format $format $descr [lrange 
  [time $script 1] 0 1] $x]
      }
  }
      }
      main
  }

  # Local variables:
  # mode: tcl
  # End:


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

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


tkt_uuid: 1392879fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: inifile
priority: 5 Medium
foundin: None
resolution: None
title: inifile: docs and code at odds
comment:
  The inifile docs for the open command say "Opens an INI
  file and returns a handle that is used by other
  commands. Mode has the same types as the open command.
  The default mode is r+."  But the code only allows
  r/w[+], not append mode.  


tkt_uuid: 3423097fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: smtp lacks -timeout option
comment:
  There's a need for such option, to assure reliability for scipts using smtp client package. I made a simple "experiment": while sending a few mails simply pulled ethernet plug out of the socket - the script went "frozen" for several minutes (didn't measure...), until I plugged it in again. IMHO there should be possibility to give up ("-timeout x", where "-timeout 0" could mean "keep trying unlimited time"), And perhaps it could be improved a bit: to keep the entire script responsible, even in the case of network problems, like loss of connectivity?


tkt_uuid: 1536890fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: ncgi
priority: 5 Medium
foundin: None
resolution: Duplicate
title: regexp usage is inefficient and can hang
comment:
  using regexp in ::ncgi::nvlist is slower that the 
  usage of string methods (although it looks better).
  regexp also causes problems with bigger data which can 
  cause ncgi to get stuck (try running it on big post 
  data).
  replace:

  if {![regexp -- (.*)=(.*) $x dummy varname val]} {
            set varname anonymous
            set val $x
        }


  with: 
  set idx [string last "=" $x]
  if {$idx==-1} {
     set varname anonymous
    set val $x
  } else {
      set varname [string range $x 0 [expr {$idx-1}]]
      set val [string range $x [expr {$idx+1}] end]
  }


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

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

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

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


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

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

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

  There may be more problems lurking in the irc package.


tkt_uuid: 3105412fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
resolution: Duplicate
title: ::csv incorrect format implementation on LINE BREAK records
comment:
  Hi,

  Hope this post will allow you to fixe this annoying problem...

  Many thanks
  Cyril ROUX

  ===========
  According to "Network Working Group" (rfc4180 - October 2005) about CSV format :
  2.  Definition of the CSV Format
     6.  Fields containing line breaks (CRLF), double quotes, and commas
         should be enclosed in double-quotes.  For example:

         "aaa","b CRLF
         bb","ccc" CRLF
         zzz,yyy,xxx

  That is to say tcllib ::csv package have to take into account LINE BREAK the
  same way it manages separatorChar (,) and delimiterChar (")...

  ==========
  Especialy, bug can be fixed in "join" procedure by adding line break (\n) to
  match list of special characters (, and ") that generate quoting records :
  proc ::csv::join {values {sepChar ,} {delChar \"}} {
      set out ""
      set sep {}
      foreach val $values {
          if {[string match "*\[${delChar}$sepChar\n\]*" $val]} {
              append out $sep${delChar}[string map [list $delChar ${delChar}${delChar}] $val]${delChar}
          } else {
              append out $sep${val}
          }
          set sep $sepChar
      }
      return $out
  }

  ==========
  To reproduce this problem jus t create a matrix with records containing line break
  then dump it in a CSV file, then read CSV file back in TCL and consistency will be lost !

  lappend ::auto_path [file join  /sw/freetools/tcl/8.5.6/Linux/rh4/x86_64  lib]

  package require csv
  package require struct::matrix

  struct::matrix M
  M add columns 3
  M insert row 0 { "name" "code" "description" }
  M add row { "me" {if ( test == null ){
    var = false;
  } else {
    var = true;
  }
  } {code by:
  me in JAVA} }

  #display matrix
  M format 2string

  #then we can see consistency is preserved
  #-----+----------------------+------------
  #name | code                 | description
  #-----+----------------------+------------
  #me   | if ( test == null ){ | code by:   
  #     |   var = false;       | me in JAVA 
  #     | } else {             |           
  #     |   var = true;        |          
  #     | }                    |           
  #-----+----------------------+------------

  # dump matrix in CSV file
  set CSV [open /tmp/test.csv w]
  ::csv::writematrix ::M $CSV
  close $CSV

  #CSV file is without delimiters around
  #any values with LINE BREAK :
  #
  #name,code,description
  #me,if ( test == null ){
  #  var = false;
  #} else {
  #  var = true;
  #}
  #,code by:
  #me in JAVA

  # Recover CSV
  set CSV [open /tmp/test.csv r]
  ::csv::read2matrix $CSV Mread , auto
  close $CSV

  #display matrix
  Mread format 2string

  #then now we can see consistency is lost due to NO delimiters used when line breaks!!!
  #+--------------+--------------------+-----------+
  #|name          |code                |description|
  #|--------------+--------------------+------------
  #|me            |if ( test == null ){|           |
  #|--------------+--------------------+------------
  #|  var = false;|                    |           |
  #|--------------+--------------------+------------
  #|} else {      |                    |           |
  #|--------------+--------------------+------------
  #|  var = true; |                    |           |
  #|--------------+--------------------+------------
  #|}             |                    |           |
  #|--------------+--------------------+------------
  #|              |code by:            |           |
  #|--------------+--------------------+------------
  #|me in JAVA    |                    |           |
  #| -------------+--------------------+------------


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

  * treeql 1.3
  > tree : pure Tcl

  test name 'treeql-tcl-0.3' re-used; prior use in
  /local/src/tcllib/modules/treeql/treeql.testsuite
  test name 'treeql-tcl-0.3' re-used; prior use in
  /local/src/tcllib/modules/treeql/treeql.testsuite


tkt_uuid: 481292ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
title: new package proposal: stooop
comment:
  This is not really a patch, but I am offering to add
  the Tcl only OO extension stooop (at
  http://jfontain.free.fr/).

  I think it is ready to go (has own namespace,
  documentation, test suite and examples).

  Please let me know if you need anything else.

  URL: http://jfontain.free.fr/stooop-4.1.1.tar.gz
  Best regards,

  Jean-Luc


tkt_uuid: 712951ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: Potential infinite loop in doctools::cvs::scanLog
comment:
  In doctools/cvs.tcl, ~line 63:

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

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


tkt_uuid: 934702ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: tcllib: request for new module
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Add a XML parsing module to tcllib
comment:
  As there is no XML parsing module in either the tcl
  core distro nor the Tcllib yet, there is a large class
  of modules not really nicely includeable into tcllib
  (nearly everything xml related). 

  A Tcllib XML parsing module would be really nice,
  especially if linked to a DOM module using the
  ::struct::tree (not super efficient but standard). 

  Candidates would be the TclXML package from the tclxml
  project or a new development. 

  A new development could unify the two most used C
  extensions in the area (TclXML and tDOM).


tkt_uuid: 1725717fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: plotchart
priority: 5 Medium
foundin: None
resolution: None
title: package load writes to stdout
comment:
  When loading the plotchart package two lines are written to stdout. It is assumed that these are debug statements which were left active during checkin.

  The offending lines are in scaling.tcl, lines 140-141.
  To fix change line 139.


tkt_uuid: 1589111fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: Wrong keysym in combobox code
comment:
  This part of the BWidget Combobox code does work as
  intended (if it does) only by bug:

  proc ComboBox::_auto_post { path key } {
      ...
      if {([string length $key] > 1 && [string tolower
  $key] != $key) && \
  [string equal $key "Backspace"] != 0 && \
  [string equal $key "Up"] != 0 && \
  [string equal $key "Down"] != 0} {
   return
      }
      ...
  }

  There isn't a keysym "Backspace", that is "BackSpace".


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


tkt_uuid: 1484791fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: list
priority: 5 Medium
foundin: None
title: lmap and lfilter procs (like 'lmap' on the wiki)
comment:
  I am used to these two little procs, and I would like
  to see them in tcllib, as I do not want have always to
  'reinvent the wheel'.

  I know that [struct::list map] and [struct::list
  filter] already are in tcllib, but I feel more
  comfortable with the ability, not to define trivial
  procs like :

  proc first {list} {lindex $list 0}
  struct::list map $mylist first

  Here are the ones I like:

  proc lmap {var list cmd} {
      upvar $var elt
      set out ""
      foreach elt $list {
          lappend out [uplevel $cmd]
      }
      return $out
  }
  proc lfilter {var list condition} {
      upvar $var x
      set out ""
      foreach x $list {if {[uplevel expr $condition]}
  {lappend out $x}}
      return $out
  }

  Of course, if we adopt these two, we should
  differentiate  the existing from the new with a prefix.
  'l' seems nice to me, you might prefer something else.

  Hope this will be useful.

  Stéphane Arnold


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


tkt_uuid: 1061759fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: pop3
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Make pop3 non-blocking
comment:
  Hi,

  I was using tcllib code for a plugin in amsn* to check
  pop3 email. The problem was that every time the email
  was checked it blocked amsn while it was checking.
  Therefore I suggest changing the code such that it is
  non-blocking. I have made a start (and possibly all the
  changes necessary). I made the ::pop3::open, and
  ::pop3::send both non-blocking which I think should
  then include all other functions (haven't looked)?

  Just note that Im not sure which version of pop3 I
  started with (someone else copied the code originally).
  Also in trying to make it non-blocking I went around in
  a couple of circles before getting it correct, so may
  have removed some code that could be reinserted.

  Now that it is complete it is not so hard to
  understand, and I recommend having a look at what I
  have done and possibly implementing it into pop3 in tcllib.

  Also to note, the way I have done it (to make it
  simpler) was that it is blocking to the calling process
  but not the program in entirety. This was ok for what I
  was doing as the calls to it were done by the after
  command which creates a new process and doesn't block
  the whole program.

  If you have any comments or questions don't hesistate
  to contact me at my sf email. Or by posting here.

  Lio.

  *PS The code was copied and a reference that the code
  was from tcllib was made, hope this is ok? if not tell
  me and I will remove.


tkt_uuid: 1108569fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: latest tkchat.kit at least fails
comment:
  Since the tkchat code, by itself, no longer runs
  without bits and pieces of things installed that are
  undocumented, I've been running tkchat from the
  tkchat.kit mentioned at http://wiki.tcl.tk/tkchat . 
  Today, when I downloaded the version there, and
  attempted to run it on my sparc solaris 8 machine, I
  got an error about being unable to find tls.  So I
  downloaded from the sdarchive the latest tls.kit ,
  which sdarchive says works on solaris 8.  Here is the
  error that appears if the tls.kit starkit is in the
  same directory as tkchat.kit:

  couldn't load library
  "/volws/lwv28/ldatae/bin/tls.kit/lib/tls/SunOS-sparc/tls.so":
  no such file or directory
      while executing
  "load
  /volws/lwv28/ldatae/bin/tls.kit/lib/tls/SunOS-sparc/tls.so
  "
      ("package ifneeded" script)
      invoked from within
  "package require tls"
      ("foreach" body line 4)
      invoked from within
  "foreach tlsname {tls.kit tls-win.kit tls-lin.kit} {    
      if { [file exists [file join $kitdir $tlsname]] } {
          source [file join $kitdir $tls..."
      (file "/volws/lwv28/ldatae/bin/tkchat.kit/main.tcl"
  line 5)
      invoked from within
  "source /volws/lwv28/ldatae/bin/tkchat.kit/main.tcl"
      ("uplevel" body line 1)
      invoked from within
  "uplevel [list source [file join $self main.tcl]]"

  sdx.kit says:

   $ sdx lsk /ldatae/bin/tls.kit           

  /ldatae/bin/tls.kit:
                              dir  lib/
          92  2004/03/22 02:23:41  main.tcl

  /ldatae/bin/tls.kit/lib:
                              dir  tls/

  /ldatae/bin/tls.kit/lib/tls:
                              dir  Darwin-ppc/
                              dir  Linux-x86/
                              dir  OpenBSD-x86/
                              dir  Solaris-sparc/
                              dir  Windows-x86/
         552  2004/03/22 02:51:38  pkgIndex.tcl
        5289  2004/03/22 02:52:13  tls.tcl

  /ldatae/bin/tls.kit/lib/tls/Darwin-ppc:
       41564  2004/03/22 02:32:12  tls.dylib

  /ldatae/bin/tls.kit/lib/tls/Linux-x86:
     1119770  2004/03/22 02:26:32  tls.so

  /ldatae/bin/tls.kit/lib/tls/OpenBSD-x86:
       38807  2004/09/07 08:37:21  tls.so

  /ldatae/bin/tls.kit/lib/tls/Solaris-sparc:
       46000  2004/02/13 19:38:53  tls.so

  /ldatae/bin/tls.kit/lib/tls/Windows-x86:
      536576  2004/03/21 21:24:22  tls.dll

  It appears that tkchat is generating the directory
  names differently than tls.kit has them named...


tkt_uuid: 1253947fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Invalid
title: installer script fails with non-existing directories
comment:
  I updated the complete directory tree for Tcllib, using
  cvs update (without any options) and then ran the
  installer script like this:

  > tclsh installer.tcl

  The only option I set in the GUI that came up was to
  use a "dry run." 

  The script initially failed with error messages from
  [glob] complaining about asn/*.tcl and so on. When I
  removed this and other directories that were not
  present in my directory tree but were listed in
  "installed_modules.tcl", it all worked, that is the
  "dry" installation produced a long list of files that
  were detected and actions that were supposedly taken.

  Presumably I should have used the ./configure script
  and the resulting make file, but "installer.tcl" is
  such an inviting name ;)


tkt_uuid: 1897841fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: stringprep
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: nameprep test 5 fails
comment:
  sparc solaris 9 , sun c compiler, cvs head for tcl 8.5 and tcllib:

  ---- nameprep-5 start

  ==== nameprep-5 Case folding U+2121 U+33C6 U+1D7BB FAILED
  ==== Contents of test case:

          list [catch {::stringprep::stringprep nameprep  [encoding convertfrom ut
  f-8 $input]} res] $res
      
  ---- Result was:
  1 prohibited_character
  ---- Result should have been (exact matching):
  0 telc?kg?
  ==== nameprep-5 FAILED


tkt_uuid: 1043581fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: SelectFont: add a -relief option?
comment:
  Hi all,

  I am facing a problem with the SelectFont command 
  from the BWidget toolkit. SelectFont is a dual "nature" 
  command, as it can present itself as a dialogo or a 
  toolbar.
  I am trying to use it as a toolbar. However, in toolbars 
  usually all widgets have a flat relief, whcih changes to 
  raised when the mouse gets over a widget. This, cannot 
  be done with the current implementation of SelectFont, 
  which does not even have a -relief option. It would be a 
  good idea to at least add a "-relief" option to the 
  widget, even if it applies to all the internal sub-widgets 
  simultaneously...

  George


tkt_uuid: 2054498fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Race condition in ftp::Get -variable
comment:
  While using the METAR package by Jos Decoster (http://wiki.tcl.tk/19635) I frequently get an error from the ftp package:

  can't read "ftp(GetData)": no such element in array
      while executing
  "set returnData $ftp(GetData)"
      (procedure "::ftp::StateHandler" line 778)
      invoked from within
  "::ftp::StateHandler 0 sock19"
  Error in plug-in weather:
  can't read "ftp(GetData)": no such element in array
      while executing
  "set returnData $ftp(GetData)"
      (procedure "::ftp::StateHandler" line 778)
      invoked from within
  "::ftp::StateHandler 0 sock19"

  Investigation shows that this appears to be caused by a race condition between the data and control socket. The error shows up when the control event handler sees the "226 File send OK" report before the event handler on the data socket fires and processes the incoming file contents.

  Here's the log with VERBOSE and DEBUG on:

  debug      | Starting new connection with: 
  debug      |   no option
  debug     control | C: Connection from 140.90.128.71:21
  debug      | -> rc="220"
  -> msgtext="220 Authorized users only. All activity may be monitored and reported."
  -> state="user"
  debug      | ---> USER anonymous
  debug     control | C: 220 Authorized users only. All activity may be monitored and reported.
  debug      | -> rc="331"
  -> msgtext="331 Please specify the password."
  -> state="passwd"
  debug      | ---> PASS anonymous
  debug     control | C: 331 Please specify the password.
  debug      | -> rc="230"
  -> msgtext="230 Login successful."
  -> state="connect"
  debug     control | C: 230 Login successful.
  debug      | -> rc="   "
  -> msgtext=""
  -> state="type"
  debug      | ---> TYPE I
  debug      | -> rc="200"
  -> msgtext="200 Switching to Binary mode."
  -> state="type_sent"
  debug     control | C: 200 Switching to Binary mode.
  debug      | -> rc="   "
  -> msgtext=""
  -> state="cd"
  debug      | ---> CWD data/observations/metar/stations
  debug      | -> rc="250"
  -> msgtext="250 Directory successfully changed."
  -> state="cd_sent"
  debug     control | C: 250 Directory successfully changed.
  debug      | -> rc="   "
  -> msgtext=""
  -> state="get_active"
  debug     data | D: Port is 33870
  debug      | ---> PORT 192,168,1,2,132,78
  debug      | -> rc="200"
  -> msgtext="200 PORT command successful. Consider using PASV."
  -> state="get_open"
  debug      | ---> RETR EHAM.TXT
  debug     control | C: 200 PORT command successful. Consider using PASV.
  debug      | -> rc="150"
  -> msgtext="150 Opening BINARY mode data connection for EHAM.TXT (62 bytes)."
  -> state="get_sent"
  debug     control | C: 150 Opening BINARY mode data connection for EHAM.TXT (62 bytes).
  debug      | -> rc="226"
  -> msgtext="226 File send OK."
  -> state="get_close"
  debug     data | D: Connection from 140.90.128.71:20
  debug     data | D: Port closed

  I guess the error will only show up for small files. On larger files I can imagine that the last part of the file may be missing, but I haven't actually seen that happen.

  I haven't yet come up with a solution for this problem. I fear it's not going to be straight forward. Temporarily removing the fileevent from the control socket may be a possibility.


tkt_uuid: 1242740fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: Error in tkcat::addAction
comment:
  In the wild, with tkchat v1.301 I got abrupt the error:


  can't read "tags": no such variable
  can't read "tags": no such variable
      while executing
  "$w insert $mark "\n" $tags"
      (procedure "::tkchat::addAction" line 38)
      invoked from within
  "::tkchat::addAction .txt $color $nick $msg $mark
  $timestamp $opts"
      (procedure "::tkjabber::parseMsg" line 47)
      invoked from within
  "::tkjabber::parseMsg $from $m(-body) $color end
  $timestamp"
      ("groupchat" arm line 23)
      invoked from within
  "switch -- $type {
          chat {
              set from $m(-from)
              set w .txt
              set name $from
              if { [regexp {([^/]+)/(.+)} $m(-from) ->
  conf name] } {
                  i..."
      (procedure "::tkjabber::MsgCB" line 42)
      invoked from within
  etc.


  Can't say, what triggered this, but it seems, that
  tkchat::addAction is too credulous. In the line 

    $w insert $mark "\n" $tags

  it depends on the variable tags to exist. But this
  variable is only set within this foreach loop in the proc:

      foreach { str url } [parseStr $str] {
         ....
      }

  which will run 0 times, if [parseStr] returns the empty
  list (which is possible, as a look at that proc shows
  and the error msg demonstrates), let tags unset.

   


tkt_uuid: 595240ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
title: patch for mime & mbot example files
comment:
  andreas - attached are two files

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

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

  thanks!

  /mtr


tkt_uuid: 1763707fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: ::ftp::Get returns "" in mode inline + error
comment:
  contrary to the man-page ::ftp::Get returns the empty string when in mode $ftp(inline) and an error occurs.

  -------------------------------------
  % packa requi ftp
  2.4.8
  % set conn [ftp::Open localhost  user pass]
  0
  % set erg [ftp::Get $conn not_existing_file -variable var]
  error     error | E: Error retrieving file "not_existing_file"!:
  error     invalid command name "ftp::Open"
  error         while executing
  error     "ftp::Open localhost  user pass"
  % puts $erg

  %
  ------------------------------------
  This is 7 line before the end of ftp::Get 

  2 lines after that:
  CloseDataConn $s is only called if $ftp(inline) is false.
  Is this correct?

  In the normal configuration I am unable to retrieve the info about the error. Am I suppost to redefine the DisplayMsg for this?

  thanks for your efforts
  Albrecht Mucha MediTec GmbH
  a.mucha at mdtec . de


tkt_uuid: 1898189fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: math :: special
priority: 5 Medium
foundin: None
resolution: None
title: Unbalanced parenthesis in elliptic.tcl
comment:
  Hi,
  The line #209 of the file elliptic.tcl
  contains the evaluation of an expression containing an unbalanced parenthesis :

  return [expr {sqrt(...)}]

  where the closing parenthesis does not exist in the source.
  This prevents the math package from being included as-is in a compiled starkit or starpack.

  Best regards,

  Michaël


tkt_uuid: 1060245fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 9 Immediate
foundin: None
resolution: Fixed
title: bee: Corrupt file in CVS
comment:
  File
    modules/bee/examples.torrent
  is corrupt on Windows (missing -kb flag; use 'cvs
  admin' to fix.)


tkt_uuid: 1377937fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: missing tcl.m4
comment:
  The bwidget 1.7.0 source tarball is missing tcl.m4,
  which is needed by autoconf in order to build the
  configure script.

  Please either include tcl.m4 or generate the configure
  script before making a source tarball.


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

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

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


tkt_uuid: 2340355fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Combobox path to entry
comment:
  Hi,

  There is no current method to test the bindings 
  of the entry based on the Combobox widget because 
  the API does not provide the path to the 
  entry.
  Suppose the method "getentry" exists.
  One can generate an event so that the command 
  bound to the entry is fired.

  () 49 % package require BWidget
  1.8
  () 50 % ComboBox .mycbb
  .mycbb
  () 52 % set ntr [.mycbb getentry]
  .mycbb.e
  () 54 % configure .mycbb -command {puts "COUCOU !"}
  () 57 % pack .mycbb
  () 63 % focus -force .mycbb.e;event generate .mycbb.e <Return>
  COUCOU !

  To be able to do this script, I added the following 
  method which returns the path to the entry.

  proc ComboBox::getentry { path } {
      return $path.e
  }

  I would be very pleased if that method was added 
  to BWidget's Entry, or if someone show me another 
  way to do this.

  By the way, thank you for the great work on Tcllib.

  Best regards,

  Michaël


tkt_uuid: 961452ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib :: plotchart
priority: 5 Medium
foundin: None
resolution: None
title: Plotchart does not handle "missing values"
comment:
  (Reminder)
  Plotchart currently does not handle missing values
  (empty strings). Adding such a feature is not too
  difficult though


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: 547336ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Fixed
title: [package require Trf] twice
comment:
  There are two instances of
  [catch {package require Trf}]
  in smtp.tcl.  When there is no Trf package
  installed, the invokes a costly [tclPkgUnknown]
  in a default Tcl installation.  There's no
  need to pay this price twice.  After the
  first [package require] you have it if it's
  available.  Use [package present] in the second
  instance.


tkt_uuid: 1613224fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: too much braced message header values (::mime::getheader)
comment:
  Hello,

  currently experienced, that an eMail had for one message part a Content-ID like "abc$def$ghi@jklmnop".

  Using ::mime::getheader on that message part returned:

      % set header [::mime::getheader ::mime::3-2]
      Content-ID {{<002401c71848_6fba22d0$a500a8c0@dittc48ca0f6af>}}
      % dict get $header Content-ID
      {<002401c71848_6fba22d0$a500a8c0@dittc48ca0f6af>}
      % ::mime::getheader ::mime::3-2 Content-ID
      {<002401c71848_6fba22d0$a500a8c0@dittc48ca0f6af>}

  I expected to get a once-braced value, but not a twice-braced value.

  I used the mime package v1.5 from the tcllib 1.9 in tcl/tk 8.4.13 and 8.5a4.

  IMHO this is a misbehaviour, a bug.

  Thanks,

  Martin Lemburg


tkt_uuid: 1800420fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
resolution: Fixed
title: doctools nroff output for type/arg reversed
comment:
  This markup:


    [section Arguments]
    [list_begin arguments]

    [arg_def [type Ns_Sls] *sls in/out]

    An opaque SLS slot handle.


  Produces this HTML output:


    ARGUMENTS

    Ns_Sls *sls (in/out)
      An opaque SLS slot handle.



  Which is correct. The nroff output looks like this:


    ARGUMENTS
      *sls Ns_Sls (in/out)
        An opaque SLS slot handle.


  The type and argument names have switched position, which looks weird.


tkt_uuid: 709123ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: csv
priority: 5 Medium
foundin: None
resolution: Fixed
title: ::csv::split with | as separator
comment:
  I am trying to use ::csv::split2matrix with | as the
  separator char.

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

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

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

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


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


tkt_uuid: 763669ffffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Problems with qp_encode and encoded_word, no_softbreak
comment:
  There are a number of bugs in qp_encode:

  When in no_softbreak mode it eats the last character.

  When in encoded_word mode it:

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

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

  Matthew


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


tkt_uuid: 704171ffffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: doctools
priority: 7 High
foundin: None
resolution: Not Applicable Here
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: 1232385fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 5 Medium
foundin: None
resolution: Wont Fix
title: struct::list filter -not switch
comment:
  Feature Request:

  Add -not switch to ::struct::list filter command so that 
  you can both filter and filter out.  This behavior mirrors 
  the tcl core lsearch -not switch.


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: 949049ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Invalid
title: Combobox error : unknown option "-label"
comment:
  Error in startup script: unknown option "-label"
      while executing
  "error "unknown option \"$option\"""
      (procedure "Widget::parseArgs" line 7)
      invoked from within
  "Widget::parseArgs ComboBox $args"
      (procedure "ComboBox::create" line 3)
      invoked from within
  "ComboBox $parent.mscCombo -label "MSC"  -labelwidth 
  5 -labelanchor w  -textvariable save::mscNo  -values { 
  apollo athena mscE mscS }  -width 8  -helpt..."
      (procedure "_MscCell" line 7)
      invoked from within
  "_MscCell  [$mscCellFrame getframe]"
      (procedure "save::create" line 11)
      invoked from within
  "save::create $notebook"
      invoked from within
  "set f0  [save::create $notebook]"


tkt_uuid: 481022ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: struct :: matrix
priority: 5 Medium
foundin: None
title: new matrix related methods requested
comment:
  1. Ability to tell matrix to print itself out (ala
  parray)

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


tkt_uuid: 1053086fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: A new widget for scrolling many widgets with a ScrolledWidge
comment:
  Hi all,

  I recently needed the functionality of scrolling two 
  canvas widgets simultaneously, both of them embedded 
  in a ScrolledWindow widget. Of course there are 
  hundrends of references for doinh it in c.l.t., but not 
  easy to use code. So I decided it to write a BWidget 
  widget for doing exactly this.

  The attched code is a first implementation of such a 
  widget. Of course name/options are open to 
  discussion :-)

  The idea behind the new widget is simple: when a 
  new "MultipleScrollableWidgets" widget is created, only a 
  frame widget (without a border) is created. Then the 
  user is expected to create all the widgets that will be 
  scrolled as children of this frame. Also the user *must* 
  pack/place/grid the children onto the frame, in any way 
  he wants (i.e. like notebook pages).

  Then, each child widget must be declared to the 
  MultipleScrollableWidgets widget with 
  method "addwidget". Only declared widgets will be 
  scrolled. Finally a ScrolledWindow can be created, 
  having the MultipleScrollableWidgets widget as 
  its "scrollable" widget.

  The current implementation has also an option (-scroll) 
  to addwidget, for specifying whether each added widget 
  will scroll in the x & y direction. I.e,  you can add two 
  canvases both of which will be scrolled in the x 
  direction, but only the second will be scrollable in the y 
  direction (i.e. because the first holds some header items 
  we want always visible...)

  Any ideas are welcomed. Of course, the final target 
  should be to add such a widget in BWidgets :-)


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

  doc/runbench.1 has

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

  The runbench.tcl script itself exects:

          -throwerrors            # propagate errors in
  benchmarks files 

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


tkt_uuid: 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: 3308051fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 5 Medium
foundin: None
resolution: Accepted
title: struct::list equal is not commutative in special case
comment:
  tclsh Session:
  % struct::list equal [list [list a]] {{a}}
  0
  % struct::list equal {{a}} [list [list a]]
  1

  Looks like a bug to me;)

  Proposed patch attachted.


tkt_uuid: 467876ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Out of Date
title: tkchat pops up User Info boxes
comment:
  After clicking on a user's name the site responds 
  with USERINFO lines. These get interpreted by 
  showInfo to display pop up boxes. When the display is 
  refreshed the same info is displayed repeatedly 
  filling the screen with User Info windows. 

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

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

  Steve


tkt_uuid: 1094294fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: doctools
priority: 7 High
foundin: None
resolution: Fixed
title: Some format cmds mangle text w/ nroff formatter
comment:
  See this sample doctools markup (please note, that the
  first sentence used in the example is in fact out of
  the wild - the snitfaq.man of snit 0.97):

  [manpage_begin foo n 0.97]
  [description]

  In this example, [cmd text] is the [term type] command and
  [cmd .mytext] is the [term instance] command.
  Some other explanations.

  [manpage_end]

  Processed with mpexpand, this nroff is generated:

  '\"
  '\" Generated from file foo.man' by tcllib/doctools
  with format 'nroff'
  '\"
  .so man.macros
  .TH "foo" n 0.97  ""
  .BS
  .SH "NAME"
  foo \-
  .SH "DESCRIPTION"
  In this example, \fBtext\fR is the \fItype\fR command and
  \fB.mytext\fR is the \fIinstance\fR command.
  Some other explanations.

  Viewed with man (at least under linux, man 2.3.19) the
  text out of the source line starting with [cmd .mytext]
  is not shown.

  It is important, that the line in the document source
  starts with [cmd] and that the argument given to [cmd]
  starts with a dot (as widget names do, which makes it
  not so unlikely, that that happes, as the real life
  example shows); if [cmd] is used somewhere in the line,
  the displayed man page looks OK, even if the argument
  given to [cmd] starts with a dot.

  It's apparently the line starting \fB. which confuses
  groff. (This is just a guess, my nroff is so rusty, I
  hardly remember nasty little details.) 

  The [emph], [strong], [arg], [var] (and eventually
  other formatting commands) have the same problem, if
  used at the start of a line in the document source -
  probably every markup, which is possible in continuous
  text, which ends up using nr_bld, nr_ul and nr_bolds
  (at least) out of _nroff.tcl.


tkt_uuid: 765321ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: struct :: list
priority: 5 Medium
foundin: None
resolution: Fixed
title: lcsInvertMerge dies with: can't read "type": no such variabl
comment:
  Create following proc

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

  call with:

     diff2 ab "a b"

  and it dies with

  can't read "type": no such variable
      while executing
  "string equal $type unchanged"
      (procedure "LcsInvertMerge2" line 24)
      invoked from within
  "LcsInvertMerge2 [::lindex $lcsData 0] [::lindex
  $lcsData 1] $len1 $len2"
      (procedure "::struct::list::LcsInvertMerge" line 2)
      invoked from within
  "::struct::list::LcsInvertMerge {{0 1} {0 2}} 2 3"
      ("eval" body line 1)
      invoked from within
  "eval [linsert $args 0 ::struct::list::$sub"
      (procedure "::struct::list" line 16)
      invoked from within
  "::struct::list lcsInvertMerge $x [llength $l1]
  [llength $l2]"
      (procedure "diff2" line 5)
      invoked from within
  "diff2 ab "a b""

  Hope this is enough info.

  Regards,

  Ashley Sanders a.sanders@mcc.ac.uk


tkt_uuid: 561416ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 5 Medium
foundin: None
resolution: Fixed
title: can't handle list of mail servers
comment:
  problem
  -------
  the procedure smtp::sendmessage has the option
  '-servers' for a list of available mail servers.
  Unfortunately the variable state(readable) is not reset
  after a failed connection the other servers in the list
  will also fail.

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

     set state(readable) 0

  at the beginning of the loop

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

  best regards
  -- Beat Jucker


tkt_uuid: 1571751fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: Installer
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
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: 955473ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tclapps :: tkchat
priority: 5 Medium
foundin: None
resolution: Fixed
title: Fatal error: tkchat requires winico
comment:
  Tkchat 1.160 requires the Winico extension, which is
  considerably less common than other extensions. This
  stops tkchat from loading (on Windows at least) if that
  extension isn't actually present.

  Please wrap the require of winico in a catch and only
  do the rest of the winico-related initialisation if the
  extension is loaded correctly.


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: 1371186fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: tklib
priority: 5 Medium
foundin: None
resolution: Fixed
title: "make check" fails for tklib
comment:
  A bug in sak.tcl is causing "make check" to fail with
  an error:

  3: Consistency of package versions ...
  ------------------------------------------------------
    Indexed, no provider:           widget::all
  can't read "::pf(ctext_tcl)": no such element in array
      while executing
  "format "%-*s | %s" $maxl $p $::pf($p)"
      (procedure "validate_versions_cmp" line 14)
      invoked from within
  "validate_versions_cmp ip pp"
  ...

  Looks like a typo where '::pf' should be 'pp'

  Attached is a patch to fix this problem.


tkt_uuid: 1582535fffffffffffffffffffffffffffffffff
type: Patch
status: Closed
subsystem: ftp
priority: 5 Medium
foundin: None
resolution: Fixed
title: Infinite loop in StateHandler
comment:
  Hello,

  I have discovered a series of events which cause the 
  StateHandler proc to be called in an infinite loop. A 
  possible scenario to trigger this is the following:
   - open a ftp connection and start a get
   - make sure the control connection times out because 
  of network errors
   - try the ftp::Close proc and notice the "infinite 
  number of loops" exception of tcl.

  The reason for this to happen is that the 
  StateHandler passes through the [eof $ftp(CtrlSock)] 
  branch, where it goes back to vwait in 'WaitComplete 
  $s 0', without taking away the cause of the event. 
  Meaning the ftp(CtrlSock) is still readable, and so 
  the StateHandler is called again, and again, ...

  I have added a patchfile for this against revision 
  1.43 of ftp.tcl.

  Greetings,
  Guy


tkt_uuid: 1727793fffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : request for new app
priority: 5 Medium
foundin: None
title: ijbridge: Add nick address to jabber WHOIS return
comment:
  Currently it is not possible from jabber to determine the host from which an IRC user is logged in (the host field is usually empty) This makes it impossible to check if an IRC user might be a well known troll.

  However the response 311 on the WHOIS request does contain the required info. Therefore I request an additional line Address: is added to the return.

  The following changes should be enough to add this:

  In proc client::registerhandlers

  # change the 311 registerevent to (I was unable to test if [additional] is what's needed:
  $cn registerevent 311 {
  set ::client::whois(realname) [msg]
  set ::client::whois(address) [additional]
  }

  # and in the 318 registerevent add:
  append info "Address: $whois(address)"


tkt_uuid: 1408807fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: asn
priority: 5 Medium
foundin: None
resolution: Fixed
title: Unversioned dependency on package log
comment:
  asn package depends on package log from tcllib.
  Current version of package doesn't work with log 1.0.2
  (as distributed with tcllib 1.4). 

  This can cause problem when I use last version of asn
  package from CVS, and rely on log package from system
  provided tcllib.

  I think that usage of log package can be removed from
  asn altogether, since it is not essential for operation
  of th e package, and needed only for debugging purpose
  (which is now covered by test suite), but at least
  particular working version should be required. 

  1.2 (from tcllib 1.7) would definitely do, and may be
  even 1.1, but I don't have machine with 1.1 handy


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

  - Matthias

  mlange_lists(at)yahoo.de

  --> This is a repost because I missed the checkbox for
  the file upload ...


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: 476733ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
title: add new example - validating ftp url
comment:
  andreas kupries asked me to log this feature request -
  at http://mini.net/cgi-bin/wikit/2444.html is code
  making use of the ftp and url modules to validate ftp
  urls.  With a couple of changes to ftp module so that
  it actually works with uri (read the uri doc for geturl
  for details) this code could be trivially changed to
  validate any url that uri supports.


tkt_uuid: 553835ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: stooop
priority: 5 Medium
foundin: None
resolution: Fixed
title: Use [uplevel 1].
comment:
  The [uplevel] command is used a great deal throughout
  stooop, but in all examples I saw, the optional "level"
  argument is omitted.

  It will improve performance if an explicit [uplevel 1]
  is used, rather than depending on the default.

  When the level argument is omitted, [uplevel] spends
  time trying to convert its first argument to an
  integer -- wasted time.


tkt_uuid: 530059ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: doctools
priority: 5 Medium
foundin: None
title: Stricter check of incoming manpages
comment:
  The application of a format to a manpage should 
  perform stricter checks to ensure that the manpage
  is correct, i.e. conforming to the specification 
  in "format.man".

  This is a followup to the bug report

  "[528392] Missing commands in nroff format"

  which is invalid per se, but exposes that error
  messages generated during generation of the output
  may indicate errors in the manpage itself, and not
  in the doctools.


tkt_uuid: 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: 731759ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: mime
priority: 5 Medium
foundin: None
resolution: Accepted
title: line endings wrong for buildmessage
comment:
  Using buildmessage and therefore buildmessageaux to generate a 
  mime message results in the headers and boundaries having LF as 
  their line ending. According to RFC2045 these should be CRLF. 

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

  I have attached a suggested patch for mime.tcl

  Thanks

  Matthew


tkt_uuid: 1688650fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: grammar_peg
priority: 5 Medium
foundin: None
resolution: Fixed
title: latest docs not installing
comment:
  when I attempt to install the latest tcllib docs, I get:
  Generating /projects/sprs_lwv/tcl85/man/mann/peg.n
  Doctools Error in macro at line 728, column 0:
  [section {BUGS, IDEAS, FEEDBACK...]
  --> (FmtError) Manpage error (nolistcmd), "section BUGS, IDEAS, FEEDBACK" : Comm
  and not allowed inside of a list.
      while executing
  "::doctools::_format dt \[comment\ \{-*-\ tcl\ -*-\ doctools\ manpage\}\]\n\[man
  page_begin\ grammar::peg\ n\ 0.1\]\n\[copyright\ \{2005\ Andreas\ Kupri..."
      ("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 grammar_peg nroff n /projects/sprs_lwv/tcl85/man/mann"
      ("eval" body line 1)
      invoked from within
  "eval $guide($m,$type) $m $args"
      (procedure "xinstall" line 4)
      invoked from within
  "xinstall doc nroff n    $config(doc,nroff,path)"
      (procedure "doinstall" line 19)
      invoked from within
  "doinstall"
      (procedure "main" line 11)
      invoked from within
  "main"
      (file "../installer.tcl" line 594)
  gmake: *** [install] Error 1


tkt_uuid: 3141568fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: find errors out on broken directory soft links
comment:
  fileutil::find errors out on broken directory soft links.  I am running ActiveTcl 8.5.9.1 on
  Windows XP and fileutil 1.14.4 from the Activestate Teapot.

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

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

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

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


tkt_uuid: 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: 1443461fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: bwidget
priority: 5 Medium
foundin: None
resolution: None
title: ListBox delete doesn't cleanup in help.
comment:
  ListBox items can have a helptext argument. In
  _set_help namespace variable "help" gets filled. In
  delete the content of array help is however not updated.
  If you add "Widget::getVariable $path help" after
  "upvar 0 $path data" and
  "array unset help $item" after " data(items) [lreplace
  $data(items) $idx $idx]" then this bug is fixed.

  m.d.nauta@hetnet.nl


tkt_uuid: 520940ffffffffffffffffffffffffffffffffff
type: RFE
status: Closed
subsystem: apps : request for new app
priority: 5 Medium
foundin: None
title: New application bundle - tcldevapps
comment:
  I'd like to suggest a new bundle created in tcllib -
  this might be called tcldevapps.  The idea would be
  development tools for the Tcl programmer.

  The first application I would like to see in that suite
  would be tkinspect.  Another might be one of the
  debugging tools.  There are likely other applications
  that are of use to the developer that would fall into
  this category.


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

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

  /Ashok


tkt_uuid: 740478ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: None
priority: 5 Medium
foundin: None
resolution: Fixed
title: make install fails due to a documentation bug
comment:
  while attempting to install the latest CVS snapshot for
  tcllib, I get this error, causing installation to cease:

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

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


tkt_uuid: 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: 531231ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: smtp
priority: 2
foundin: None
resolution: Invalid
title: Error not caught: sendmessage, bad args
comment:
  George@Orwellian.Org writes:

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

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

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

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

  Here is where the error occurred in proc sendmessage:

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

  Here is my runtime diagnostic: 

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

  ----

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

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

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

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

  Same error.

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

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

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

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


tkt_uuid: 784515ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: Documentation
priority: 7 High
foundin: None
resolution: Fixed
title: Obsolete module instructions in README
comment:
  The overall tcllib README file describes how to add new 
  modules to Makefile.in.  A casual inspection of Makefile.in 
  reveals that it's not done this way anymore.  README should 
  be updated to reflect the new method.


tkt_uuid: 707009ffffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: fileutil
priority: 5 Medium
foundin: None
resolution: Fixed
title: fileutil::stripPwd [pwd] produces error
comment:
  Hello,
  fileutil::stripPwd produces an error when called like
      fileutil::stripPwd [pwd]
  While I would suggest to return '.' in this case, it
  might make  sense to return $path unchanged, but in any
  case it should not produce an error.

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


tkt_uuid: 1909681fffffffffffffffffffffffffffffffff
type: Bug
status: Closed
subsystem: md5crypt
priority: 5 Medium
foundin: None
resolution: Works For Me
title: Tcl version of md5crypt::aprcrypt error for some values
comment:
  Tested with 
    tcl8.5a4 & tcllib 1.8.01 
    &
    tcl8.5.2b1 & tcllib 1.10

  If tcllib is installed without the tcllibc module,
  certain values cause md5crypt::aprcrypt to fail with an error as shown below.

  % package require md5crypt
  1.1.0
  % md5crypt::aprcrypt a c
  can't use empty string as operand of "|"

  % set ::errorInfo
  can't use empty string as operand of "|"
      while executing
  "expr {([lindex $V 3] << 16) | ([lindex $V  9] << 8) | [lindex $V 15]}"
      (procedure "::md5crypt::md5crypt_tcl" line 71)
      invoked from within
  "md5crypt::aprcrypt a c"


  When tcllibc is present the error doesn't occur.


tkt_uuid: 1779624fffffffffffffffffffffffffffffffff
type: RFE
status: Deleted
subsystem: log
priority: 5 Medium
foundin: None
resolution: Not Applicable Here
title: Execute a command only when debug is active.
comment:
  e.g display the results of info script when debug is active. 

  something like:
   
  ::log::lvSuppressLE emergency 0

  ::log::log debug [ info script ]


tkt_uuid: 3470437fffffffffffffffffffffffffffffffff
type: Bug
status: Deleted
subsystem: tklib :: ico
priority: 5 Medium
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}]]


