Miscellaneous Tcl packages

Repository Maintainer: julian@webpub.net
Repository License policy: Strongly prefer Public Domain, MIT-style or BSD-style licenses.
These packages are not necessarily the latest available versions.
I try to keep them reasonably up to date, but for non-pure-Tcl packages; if I am unable to build binaries for the Windows and FreeBSD platforms (or find prebuilt binaries for those platforms) then the packages may remain at the highest common binary version I have for those platforms.
Binary submissions for the versions below are welcome for other platforms (email me).

Packages using the Tcl >= 8.5 module system

(See http://wiki.tcl.tk/Tcl Modules)

These modules all use the tarpack package and are also valid tar archives.
Simply place them in one of the folders on your "Module path". No need to unarchive them.

To determine your module path folders; type the command "::tcl::tm::list" in a Tcl interp.
For example, on a windows platform, a folder such as c:\tcl\lib\site-tcl might be a suitable choice.

If you do choose to unarchive a module on your module path - the 'package require' operation will in effect be deflected by the .tm file to the unarchived version.
i.e the unpacked code will take precedence. This is handy for making changes. You can then edit the version number in the folder-name & scripts and simply tar it up ready for distribution.

From the Tcl shell you can very easily turn a plain tcl script into a Tcl 8.5 module:

 %package require tarpack
 %tarpack::wrap somescript.tcl -version 1.1

If you don't supply a version number to the 'wrap' command it will default to 0.1
Alternatively you can supply your version number by including it in the filename of the script e.g:

For a single Tcl script, such a wrapping doesn't immediately add any particular value as simply renaming a tcl script to conform to Tcl 8.5 module convention (<packagename>-<version>.tm) and making sure it contains an appropriate 'package provide' statement will also make it loadable as a module.
However, by making it a tar archive - you can now add other documents to it such as a readme etc. For such tarpacks where you've wrapped a single script and maybe some docs, Tcl doesn't even have to use any tar code to load the file, so it is still very efficient.

When creating a Tcl package - it is generally good practice to place all your commands and variables in a Tcl namespace that matches the package name.

The tarpack package is released under a BSD-style license.

package Description Platform
tarpack-1.1.2.tm tarpack - required package for most other modules below to load. All platforms - pure-tcl
tar-0.2.tm tar - This is taken from tcllib. Most Tcl distributions are likely to already include tcllib. All platforms - pure-tcl
Thread-2.6.3.tm Thread 2.6.3 Windows,FreeBSD
sqlite3-3.3.5.tm sqlite3 3.3.5 - see http://sqlite.org Windows,FreeBSD,Linux,Darwin-ppc
crypt-1.0.tm crypt package from the TclHttpd distribution - provides unix "crypt password salt" functionality Windows,FreeBSD
tclcrypt-1.0.tm tclcrypt package from the TclHttpd distribution - same functionality as crypt but much slower All platforms - pure-tcl
dll-1.0.tm dll caller - see http://wiki.tcl.tk/12264 Applicable to Windows only
tls-1.5.1.tm tls-1.5.1 built against OpenSSL0.9.8a (static) with MinGW Windows build only at this time

enumerated types for Tcl - see http://wiki.tcl.tk/1308 also: DOCS All platforms - pure-tcl
Netstrings for Tcl - Implementation of D.J Bernstein's Netstrings All platforms - pure-tcl
udp-1.0.8.tm TclUDP - see TclUDP sourceforge project Windows,FreeBSD

tdom & associated packages. (high performance XML data processing in TCL. see http://www.tdom.org)
uri & uri::urn are not directly associated with tdom, but are required by it; so place them on your 'module path' to avoid auto_path scans
Note that namespaced packages such as uri::urn need to be placed in subfolders corresponding to the namespaces.
i.e install as <Module Path>/uri/urn-1.0.2.tm

There are more recent versions of tdom available elsewhere. (It's up to at least 0.8.2 by now)

package Description Platform
tdom-0.8.1.tm tdom Windows,FreeBSD
tdom-0.7.8.tm tdom Windows,FreeBSD,Linux,SunOS-sparc,SunOS-x86
tnc-0.3.0.tm tnc - XML validator Windows,FreeBSD,Linux,SunOS-sparc,SunOS-x86
tdomhtml- tdomhtml - HTML layer on DOM All platforms - pure-tcl
xmlstruct-1.0.1.tm xmlstruct (AKA tdomplus) All platforms - pure-tcl
uri-1.1.4.tm uri All platforms - pure-tcl
urn-1.0.2.tm uri::urn All platforms - pure-tcl

Packages using the standard Tcl package system

(ie unpack these somewhere on your $::auto_path)

ezsmtp package (All platforms - pure-tcl)

-- an "easy" method for sending email using Tcl's built-in sockets. Intended to be cross-platform.
Based on original work by Keith Vetter, Maintained by D. J. Hagberg dhagberg@millibits.com .
Above site temporarily down and I don't know if this was the latest version available.

I have a version that is hacked to provide very *basic* support for SMTP-AUTH.. (LOGIN & PLAIN only) i.e base64 encoded transfer of username & password
Email me at julian@precisium.com.au if you'd like me to make it available - but be warned it's only been tested against one mailserver and doesn't fully support 'authorization ident' for 'PLAIN'.
My additions are in the Public Domain and ezsmtp seems to be licensed in a BSD-like manner. (see license.txt)


overtype (All platforms - pure-tcl)

-- simple functions for aligning text left,right or centre in a column.
BSD-style license.

package require overtype

overtype::left ?-overflow [1|0]? ?-elipsis [1|0]? ?-ellipsistext ...? undertext overtext
overtype::centre ?-bias [left|right]? ?-overflow [1|0]? undertext overtext
overtype::right ?-overflow [1|0]? undertext overtext


Valid XHTML 1.0!