Tcl Library Source Code

Changes On Branch tcllib-1-15-rc
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Changes In Branch tcllib-1-15-rc Excluding Merge-Ins

This is equivalent to a diff from 728f8dc82c to 472c75a7bc

2013-02-06
19:32
Start on getting embedded doc into the repository, and nice commands for maintaining it. check-in: 7eba32ada7 user: andreask tags: embedded-doc-work
05:46
Tcllib 1.15 Release check-in: 411c419016 user: aku tags: trunk, tcllib-1-15, release
05:16
Merged the clock fixes into the release. Closed-Leaf check-in: 472c75a7bc user: aku tags: tcllib-1-15-rc
05:16
Implemented the YYYY-Www and YYYYWww formats, with test cases. Closed-Leaf check-in: 730be11a05 user: aku tags: new-module-clock
2013-02-02
01:54
Helper stuff for rel.mgr, interactive m/p review. check-in: c6bf264826 user: andreask tags: sak-work-review
2013-02-01
19:14
Tcllib 1.15 Release Candidate 1 check-in: 3f8bd0ca3d user: andreask tags: tcllib-1-15-rc-1, tcllib-1-15-rc
08:14
Merged json::write changes to release. Updated README. check-in: a9514707b9 user: aku tags: tcllib-1-15-rc
08:10
json, writing: Dropping the quoting of / as \/. check-in: 728f8dc82c user: aku tags: trunk
2013-01-30
23:28
Added more utilities to support class variables, class methods, and singleton classes. Packed version bumped to 1.1 for all these new features. check-in: 4eec538864 user: andreask tags: trunk

Changes to ChangeLog.







1
2
3
4
5





6
7
8
9
10
11
12






2013-01-28  Andreas Kupries  <[email protected]>

	* modules/fileutil: New package 'fileutil::decode'.
	* modules/zip: New module 'zip', with packages 'zipfile::encode'
	  and 'zipfile::decode'






2013-01-08  Andreas Kupries  <[email protected]>

	* configure.in: [Bug 3593146]: Extended with CYGPATH usage to
	  allow building under cygwin.
	* configure: Regenerated (autoconf 2.67).

>
>
>
>
>
>





>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2013-01-28  Andreas Kupries  <[email protected]>

	* modules/fileutil: New package 'fileutil::decode'.
	* modules/zip: New module 'zip', with packages 'zipfile::encode'
	  and 'zipfile::decode'

2013-01-24  Andreas Kupries  <[email protected]>

	* New module and packages: clock (rfc2822, iso8601).
	  Tcl 8.5 only.

2013-01-08  Andreas Kupries  <[email protected]>

	* configure.in: [Bug 3593146]: Extended with CYGPATH usage to
	  allow building under cygwin.
	* configure: Regenerated (autoconf 2.67).

Changes to modules/aes/ChangeLog.







1
2
3
4
5
6
7






2013-01-08  Andreas Kupries  <[email protected]>

	* aes.man: [Bug 3574004]: Documented the -- option stopping
	* aes.tcl: option processing to protect data starting with
	* aes.test: a dash. Additionally auto-stop if only one argument
	* pkgIndex.tcl: is left, treating it as data. Bumped to
	  version 1.1.
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2013-01-08  Andreas Kupries  <[email protected]>

	* aes.man: [Bug 3574004]: Documented the -- option stopping
	* aes.tcl: option processing to protect data starting with
	* aes.test: a dash. Additionally auto-stop if only one argument
	* pkgIndex.tcl: is left, treating it as data. Bumped to
	  version 1.1.

Changes to modules/amazon-s3/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/asn/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/base32/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/base64/ChangeLog.







1
2
3
4
5
6
7






2013-01-08  Andreas Kupries  <[email protected]>

	* base64.man: [Bug 3581373]: Document behaviour for -maxlen 0.

2011-12-13  Andreas Kupries  <[email protected]>

	*
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2013-01-08  Andreas Kupries  <[email protected]>

	* base64.man: [Bug 3581373]: Document behaviour for -maxlen 0.

2011-12-13  Andreas Kupries  <[email protected]>

	*

Changes to modules/bee/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/bench/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/bibtex/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/blowfish/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/cache/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/calendar/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Added modules/clock/ChangeLog.

























>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2013-01-24  Andreas Kupries  <[email protected]>

	* New module, 2 packages.
	* rfc2822.tcl: Parsing rfc2822 dates (mail, news)
	* iso8601.tcl: Parsing iso8601 dates and times.
	* pkgIndex.tcl:

Added modules/clock/iso8601.man.



















































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin clock_iso8601 n 0.1]
[moddesc   {Date/Time Utilities}]
[titledesc {Parsing ISO 8601 dates/times}]
[category  {Text processing}]
[require Tcl 8.5]
[require clock::iso8601 [opt 0.1]]
[description]

This package provides functionality to parse dates and times in
ISO 8601 format.

[para]

[list_begin definitions]

[call [cmd {::clock::iso8601 parse_date}] \
     [arg date] [arg options...]]

This command parses an ISO8601 date string in an unknown variant and
returns the given date/time in seconds since epoch.

[para] The acceptable options are
[option -base],
[option -gmt],
[option -locale], and
[option -timezone]
of the builtin command [cmd {clock scan}].

[call [cmd {::clock::iso8601 parse_time}] \
     [arg time] [arg options...]]

This command parses a full ISO8601 timestamp string (date and time) in
an unknown variant and returns the given time in seconds since epoch.

[para] The acceptable options are
[option -base],
[option -gmt],
[option -locale], and
[option -timezone]
of the builtin command [cmd {clock scan}].

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph clock::iso8601] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.


[manpage_end]

Added modules/clock/iso8601.pcx.























































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# -*- tcl -*- iso8601.pcx
# Syntax of the commands provided by package iso8601.

# For use by TclDevKit's static syntax checker.
# See http://www.activestate.com/solutions/tcl/
# See http://aspn.activestate.com/ASPN/docs/Tcl_Dev_Kit/4.0/Checker.html#pcx_api
# for the documentation describing the format of the code contained in this file
#

package require pcx
pcx::register clock::iso8601
pcx::tcldep   0.1 needs tcl 8.5

namespace eval ::clock::iso8601 {}

#pcx::message FOO {... text ...} type
#pcx::scan <VERSION> <NAME> <RULE>

# Switches are per clock scan (Tcl 8.5), restricted subset.
pcx::check 0.1 std ::clock::iso8601::parse_date \
    {checkSimpleArgs 1 -1 {
	checkWord
	{checkSwitches 0 {
	    {-locale   checkWord}
	    {-timezone checkWord}
	    {-base     checkInt}
	    {-gmt      checkBoolean}
	} {}}
    }}
pcx::check 0.1 std ::clock::iso8601::parse_time \
    {checkSimpleArgs 1 -1 {
	checkWord
	{checkSwitches 0 {
	    {-locale   checkWord}
	    {-timezone checkWord}
	    {-base     checkInt}
	    {-gmt      checkBoolean}
	} {}}
    }}

# Initialization via pcx::init.
# Use a ::iso8601::init procedure for non-standard initialization.
pcx::complete

Added modules/clock/iso8601.tcl.

















































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
## -*- tcl -*-
# # ## ### ##### ######## ############# #####################
## Copyright (c) 2004 Kevin Kenny
## Origin http://wiki.tcl.tk/13094
## Modified for Tcl 8.5 only (eval -> {*}).

# # ## ### ##### ######## ############# #####################
## Requisites

package require Tcl 8.5
package provide clock::iso8601 0.1
namespace eval ::clock::iso8601 {}

# # ## ### ##### ######## ############# #####################
## API

# iso8601::parse_date --
#
#       Parse an ISO8601 date/time string in an unknown variant.
#
# Parameters:
#       string -- String to parse
#       args -- Arguments as for [clock scan]; may include any of
#               the '-base', '-gmt', '-locale' or '-timezone options.
#
# Results:
#       Returns the given date in seconds from the Posix epoch.

proc ::clock::iso8601::parse_date { string args } {
    variable DatePatterns
    variable Repattern
    foreach { regex interpretation } $DatePatterns {
	if { [regexp "^$regex\$" $string] } {
	    #puts A|$string|\t|$regex|\t|$interpretation|

	    # For incomplete dates (month and/or day missing), we have
	    # to set our own default values to overcome clock scan's
	    # settings. We do this by switching to a different pattern
	    # and extending the input properly for that pattern.

	    if {[dict exists $Repattern $interpretation]} {
		lassign [dict get $Repattern $interpretation] interpretation adjust modifier
		{*}$modifier
		# adjust irrelevant here, see parse_time for use.
	    }

	    #puts B|$string|\t|$regex|\t|$interpretation|
	    return [clock scan $string -format $interpretation {*}$args]
	}
    }
    return -code error "not an iso8601 date string"
}

# iso8601::parse_time --
#
#       Parse a point-in-time in ISO8601 format
#
# Parameters:
#       string -- String to parse
#       args -- Arguments as for [clock scan]; may include any of
#               the '-base', '-gmt', '-locale' or '-timezone options.
#
# Results:
#       Returns the given time in seconds from the Posix epoch.

proc ::clock::iso8601::parse_time { string args } {
    variable DatePatterns
    variable Repattern
    if {![MatchTime $string field]} {
	return -code error "not an iso8601 time string"
    }

    #parray field
    #puts A|$string|

    set pattern {}
    foreach {regex interpretation} $DatePatterns {
	if {[Has $interpretation tstart]} {
	    append pattern $interpretation
	}
    }

    if {[dict exists $Repattern $pattern]} {
	lassign [dict get $Repattern $pattern] interpretation adjust modifier
	{*}$modifier
	incr tstart $adjust
    }

    append pattern [Get T len]
    incr tstart $len

    if {[Has %H tstart]} {
	append pattern %H [Get Hcolon len]
	incr tstart $len

	if {[Has %M tstart]} {
	    append pattern %M [Get Mcolon len]
	    incr tstart $len

	    if {[Has %S tstart]} {
		append pattern %S
	    } else {
		# No seconds, default to start of minute.
		append pattern %S
		Insert string $tstart 00
	    }
	} else {
	    # No minutes, nor seconds, default to start of hour.
	    append pattern %M%S
	    Insert string $tstart 0000
	}
    } else {
	# No time information, default to midnight.
	append pattern %H%M%S
	Insert string $tstart 000000
    }
    if {[Has %Z _]} {
	append pattern %Z
    }

    #puts B|$string|\t|$pattern|
    return [clock scan $string -format $pattern {*}$args]
}

# # ## ### ##### ######## ############# #####################

proc ::clock::iso8601::Get {x lv} {
    upvar 1 field field string string $lv len
    lassign $field($x) s e
    if {($s >= 0) && ($e >= 0)} {
	set len [expr {$e - $s + 1}]
	return [string range $string $s $e]
    }
    set len 0
    return ""

}

proc ::clock::iso8601::Has {x nv} {
    upvar 1 field field string string $nv next
    lassign $field($x) s e
    if {($s >= 0) && ($e >= 0)} {
	set  next $e
	incr next
	return 1
    }
    return 0
}

proc ::clock::iso8601::Insert {sv index str} {
    upvar 1 $sv string
    append r [string range $string 0 ${index}-1]
    append r $str
    append r [string range $string $index end]
    set string $r
    return
}

# # ## ### ##### ######## ############# #####################
## State

namespace eval ::clock::iso8601 {

    namespace export parse_date parse_time
    namespace ensemble create

    # Enumerate the patterns that we recognize for an ISO8601 date as both
    # the regexp patterns that match them and the [clock] patterns that scan
    # them.

    variable DatePatterns {
	{\d\d\d\d-\d\d-\d\d}            {%Y-%m-%d}
	{\d\d\d\d\d\d\d\d}              {%Y%m%d}
	{\d\d\d\d-\d\d\d}               {%Y-%j}
	{\d\d\d\d\d\d\d}                {%Y%j}
	{\d\d-\d\d-\d\d}                {%y-%m-%d}
	{\d\d\d\d-\d\d}                 {%Y-%m}
	{\d\d\d\d\d\d}                  {%y%m%d}
	{\d\d-\d\d\d}                   {%y-%j}
	{\d\d\d\d\d}                    {%y%j}
	{--\d\d-\d\d}                   {--%m-%d}
	{--\d\d\d\d}                    {--%m%d}
	{--\d\d\d}                      {--%j}
	{---\d\d}                       {---%d}
	{\d\d\d\d-W\d\d-\d}             {%G-W%V-%u}
	{\d\d\d\dW\d\d\d}               {%GW%V%u}
	{\d\d-W\d\d-\d}                 {%g-W%V-%u}
	{\d\dW\d\d\d}                   {%gW%V%u}
	{\d\d\d\d-W\d\d}                {%G-W%V}
	{\d\d\d\dW\d\d}                 {%GW%V}
	{-W\d\d-\d}                     {-W%V-%u}
	{-W\d\d\d}                      {-W%V%u}
	{-W-\d}                         {%u}
	{\d\d\d\d}                      {%Y}
    }

    # Dictionary of the patterns requiring modifications to the input
    # for proper month and/or day defaults.
    variable Repattern {
	%Y-%m  {%Y-%m-%d  3 {Insert string 7 -01}}
	%Y     {%Y-%m-%d  5 {Insert string 4 -01-01}}
	%G-W%V {%G-W%V-%u 1 {Insert string 8 -1}}
	%GW%V  {%GW%V%u   1 {Insert string 6 1}}
    }
}

# # ## ### ##### ######## ############# #####################
## Initialization

apply {{} {
    # MatchTime -- (constructed procedure)
    #
    #   Match an ISO8601 date/time string and indicate how it matched.
    #
    # Parameters:
    #   string -- String to match.
    #   fieldArray -- Name of an array in caller's scope that will receive
    #                 parsed fields of the time.
    #
    # Results:
    #   Returns 1 if the time was scanned successfully, 0 otherwise.
    #
    # Side effects:
    #   Initializes the field array.  The keys that are significant:
    #           - Any date pattern in 'DatePatterns' indicates that the
    #             corresponding value, if non-empty, contains a date string
    #             in the given format.
    #           - The patterns T, Hcolon, and Mcolon indicate a literal
    #             T preceding the time, a colon following the hour, or
    #             a colon following the minute.
    #           - %H, %M, %S, and %Z indicate the presence of the
    #             corresponding parts of the time.

    variable DatePatterns

    set cmd {regexp -indices -expanded -nocase -- {PATTERN} $timeString ->}
    set re \(?:\(?:
    set sep {}
    foreach {regex interpretation} $DatePatterns {
	append re $sep \( $regex \)
	append cmd " " [list field($interpretation)]
	set sep |
    }
    append re \) {(T|[[:space:]]+)} \)?
    append cmd { field(T)}
    append re {(\d\d)(?:(:?)(\d\d)(?:(:?)(\d\d)?))?}
    append cmd { field(%H) field(Hcolon) } {field(%M) field(Mcolon) field(%S)}
    append re {[[:space:]]*(Z|[-+]\d\d:?\d\d)?}
    append cmd { field(%Z)}
    set cmd [string map [list {{PATTERN}} [list $re]] \
		 $cmd]

    proc MatchTime { timeString fieldArray } "
             upvar 1 \$fieldArray field
             $cmd
         "

    #puts [info body MatchTime]

} ::clock::iso8601}

# # ## ### ##### ######## ############# #####################

return
# Usage examples, disabled.

if { [info exists ::argv0] && ( $::argv0 eq [info script] ) } {
    puts "::clock::iso8601::parse_date"
    puts [::clock::iso8601::parse_date 1970-01-02 -timezone :UTC]
    puts [::clock::iso8601::parse_date 1970-W01-5 -timezone :UTC]
    puts [time {::clock::iso8601::parse_date 1970-01-02 -timezone :UTC} 1000]
    puts [time {::clock::iso8601::parse_date 1970-W01-5 -timezone :UTC} 1000]
    puts "::clock::iso8601::parse_time"
    puts [clock format [::clock::iso8601::parse_time 2004-W33-2T18:52:24Z] \
	      -format {%X %x %z} -locale system]
    puts [clock format [::clock::iso8601::parse_time 18:52:24Z] \
	      -format {%X %x %z} -locale system]
    puts [time {::clock::iso8601::parse_time 2004-W33-2T18:52:24Z} 1000]
    puts [time {::clock::iso8601::parse_time 18:52:24Z} 1000]
}

Added modules/clock/iso8601.test.



















































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
# -------------------------------------------------------------------------
# iso8601.test -*- tcl -*-
# (C) 2013 Andreas Kupries. BSD licensed.
# -------------------------------------------------------------------------

source [file join \
            [file dirname [file dirname [file join [pwd] [info script]]]] \
            devtools testutilities.tcl]

testsNeedTcl     8.5
testsNeedTcltest 2.0

testing {
    useLocal iso8601.tcl clock::iso8601
}

# -------------------------------------------------------------------------

test clock-iso8601-1.0.0 {parse_date wrong\#args} -constraints {tcl8.5plus tcl8.5minus} -body {
    clock::iso8601 parse_date
} -returnCodes error -result {wrong # args: should be "clock::iso8601 parse_date string ..."}

test clock-iso8601-1.0.1 {parse_date wrong\#args} -constraints {tcl8.6plus} -body {
    clock::iso8601 parse_date
} -returnCodes error -result {wrong # args: should be "clock::iso8601 parse_date string ?arg ...?"}

test clock-iso8601-1.1 {parse_date, bad option} -body {
    clock::iso8601 parse_date 1994-11-05 -foo x
} -returnCodes error -result {bad switch "-foo", must be -base, -format, -gmt, -locale or -timezone}

# NOTE: While listed as legal, -format is NOT. This is because the
# command simply hands off to clock scan, and we are seeing its error
# message.  Either we do our own argument check first, or we capture
# and rewrite the error.

# -------------------------------------------------------------------------

test clock-iso8601-2.0 {parse_date, bad input} -body {
    clock::iso8601 parse_date A
} -returnCodes error -result {not an iso8601 date string}

test clock-iso8601-2.1 {parse_date} -body {
    clock::iso8601 parse_date 1994-11-05
    # It is unclear if this is influenced by TZ.
} -result 784022400

# -------------------------------------------------------------------------

test clock-iso8601-2.0.0 {parse_date, format: 19700102, reformatted with clock format -format {%D}} -body {
    clock format [clock::iso8601 parse_date {19700102}] -format {%D}
} -result {01/02/1970}

test clock-iso8601-2.0.1 {parse_date, format: 1970-W01-5, reformatted with clock format -format {%D}} -body {
    clock format [clock::iso8601 parse_date {1970-W01-5}] -format {%D}
} -result {01/02/1970}

test clock-iso8601-2.1.0 {parse_date, format: 19700102, using -timezone :UTC} -body {
    clock::iso8601 parse_date {19700102} -timezone :UTC
} -result {86400}

test clock-iso8601-2.1.1 {parse_date, format: 1970-W01-5, using -timezone :UTC} -body {
    clock::iso8601 parse_date {1970-W01-5} -timezone :UTC
} -result {86400}

test clock-iso8601-2.2.0 {parse_date, format: 970701 (yymmdd), reformatted with clock format -format {%D}} -body {
    clock format [clock::iso8601 parse_date {970701}] -format {%D}
} -result {07/01/1997}

test clock-iso8601-2.2.1 {parse_date, format: 1997-07, reformatted with clock format -format {%D}} -body {
    clock format [clock::iso8601 parse_date {1997-07}] -format {%D}
} -result {07/01/1997}

test clock-iso8601-2.3.0 {parse_date, format: 970701 (yymmdd), using -timezone :UTC} -body {
    clock::iso8601 parse_date {970701} -timezone :UTC
} -result {867715200}

test clock-iso8601-2.3.1 {parse_date, format: 1997-07, using -timezone :UTC} -body {
    clock::iso8601 parse_date {1997-07} -timezone :UTC
} -result {867715200}

test clock-iso8601-2.4.0 {parse_date, format: 1997, reformatted with clock format -format {%D}} -body {
    clock format [clock::iso8601 parse_date {1997}] -format {%D}
} -result {01/01/1997}

test clock-iso8601-2.4.1 {parse_date, format: 1997, reformatted with clock format -format {%D}} -body {
    clock format [clock::iso8601 parse_date {1997}] -format {%D}
} -result {01/01/1997}

test clock-iso8601-2.5.0 {parse_date, format: 1997, using -timezone :UTC} -body {
    clock::iso8601 parse_date {1997} -timezone :UTC
} -result {852076800}

test clock-iso8601-2.5.1 {parse_date, format: 1997-, using -timezone :UTC} -body {
    clock::iso8601 parse_date {1997} -timezone :UTC
} -result {852076800}

# -------------------------------------------------------------------------

foreach {n iso week} {
    00 01/01/2005 2004-W53-6 	
    01 01/02/2005 2004-W53-7
    02 12/31/2005 2005-W52-6
    03 01/01/2007 2007-W01-1
    04 12/30/2007 2007-W52-7 	
    05 12/31/2007 2008-W01-1
    06 01/01/2008 2008-W01-2
    07 12/28/2008 2008-W52-7
    08 12/29/2008 2009-W01-1
    09 12/30/2008 2009-W01-2
    10 12/31/2008 2009-W01-3
    11 01/01/2009 2009-W01-4
    12 12/31/2009 2009-W53-4
    13 01/01/2010 2009-W53-5
    14 01/02/2010 2009-W53-6
    15 01/03/2010 2009-W53-7
} {
    test clock-iso8601-2.6.$n {parse_date, format: YYYY-Www-D into %D} -body {
        clock format [clock::iso8601 parse_date $week] -format {%D}
    } -result $iso

    test clock-iso8601-2.7.$n {parse_date, format: YYYYWwwD into %D} -body {
        clock format [clock::iso8601 parse_date [string map {- {}} $week]] -format {%D}
    } -result $iso
}

foreach {n iso week} {
    00 01/01/2007 2007-W01
    01 12/31/2007 2008-W01
    02 12/29/2008 2009-W01
} {
    test clock-iso8601-2.8.$n {parse_date, format: YYYY-Www into %D} -body {
        clock format [clock::iso8601 parse_date $week] -format {%D}
    } -result $iso

    test clock-iso8601-2.9.$n {parse_date, format: YYYYWww into %D} -body {
        clock format [clock::iso8601 parse_date [string map {- {}} $week]] -format {%D}
    } -result $iso
}

# -------------------------------------------------------------------------

test clock-iso8601-5.0.0 {parse_time wrong\#args} -constraints {tcl8.5plus tcl8.5minus} -body {
    clock::iso8601 parse_time
} -returnCodes error -result {wrong # args: should be "clock::iso8601 parse_time string ..."}

test clock-iso8601-5.0.1 {parse_time wrong\#args} -constraints {tcl8.6plus} -body {
    clock::iso8601 parse_time
} -returnCodes error -result {wrong # args: should be "clock::iso8601 parse_time string ?arg ...?"}

test clock-iso8601-5.1 {parse_time, bad option} -body {
    clock::iso8601 parse_time A -foo x
} -returnCodes error -result {not an iso8601 time string}

# -------------------------------------------------------------------------

test clock-iso8601-6.0.0 {parse_time, full date time} -body {
    clock::iso8601 parse_time 2004-W33-2T18:52:24Z
} -result {1092163944}

test clock-iso8601-6.0.1 {parse_time, full time} -body {
    clock format [clock::iso8601 parse_time 18:52:24Z] -format {%X %z} -timezone :UTC
} -result {18:52:24 +0000}

test clock-iso8601-6.1.0 {parse_time, full date time to minute and offset as +/-hh:mm} -body {
    clock::iso8601 parse_time 1997-07-16T19:20+01:00
} -result {869077200}

test clock-iso8601-6.1.1 {parse_time, full date time to minute and offset as +/-hhmm} -body {
    clock::iso8601 parse_time 1997-07-16T19:20+0100
} -result {869077200}

test clock-iso8601-6.2.0 {parse_time, full date time to hour and offset as +/-hh:mm} -body {
    clock::iso8601 parse_time 1997-07-16T19+01:00
} -result {869076000}

test clock-iso8601-6.2.1 {parse_time, full date time to hour and offset as +/-hhmm} -body {
    clock::iso8601 parse_time 1997-07-16T19+0100
} -result {869076000}

test clock-iso8601-6.3.0 {parse_time, full date time to second and offset as +/-hh:mm} -body {
    clock::iso8601 parse_time 1997-07-16T19:20:30+01:00
} -result {869077230}

test clock-iso8601-6.3.1 {parse_time, full date time to second and offset as +/-hhmm} -body {
    clock::iso8601 parse_time 1997-07-16T19:20:30+0100
} -result {869077230}

test clock-iso8601-6.4.0 {parse_time, full date time to minute and offset as +/-hh:mm} -body {
    clock::iso8601 parse_time 1997-07-16T19:20:30.45+01:00
} -returnCodes error -result {input string does not match supplied format}

test clock-iso8601-6.4.1 {parse_time, full date time to minute and offset as +/-hhmm} -body {
    clock::iso8601 parse_time 1997-07-16T19:20:30.45+0100
} -returnCodes error -result {input string does not match supplied format}

# -------------------------------------------------------------------------

test clock-iso8601-7.0 {parse_time, bad input} -body {
    clock::iso8601 parse_time A
} -returnCodes error -result {not an iso8601 time string}

test clock-iso8601-7.1 {parse_time} -body {
    # The difference to midnight is constant.
    # The day part is not, and there is TZ.
    expr {[clock::iso8601 parse_time 08:15:30] -
          [clock::iso8601 parse_time 00:00:00]}
} -result 29730

# -------------------------------------------------------------------------

testsuiteCleanup
return

# Local Variables:
#  mode: tcl
#  indent-tabs-mode: nil
# End:

Added modules/clock/pkgIndex.tcl.







>
>
>
1
2
3
if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded clock::rfc2822 0.1 [list source [file join $dir rfc2822.tcl]]
package ifneeded clock::iso8601 0.1 [list source [file join $dir iso8601.tcl]]

Added modules/clock/rfc2822.man.









































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin clock_rfc2822 n 0.1]
[moddesc   {Date/Time Utilities}]
[titledesc {Parsing ISO 8601 dates/times}]
[category  {Text processing}]
[require Tcl 8.5]
[require clock::rfc2822 [opt 0.1]]
[description]

This package provides functionality to parse dates in
RFC 2822 format.

[para]

[list_begin definitions]

[call [cmd {::clock::rfc2822 parse_date}] [arg date]]

This command parses an RFC2822 date string and returns
the given date in seconds since epoch. An error is thrown
if the command is unable to parse the date.

[list_end]

[section {BUGS, IDEAS, FEEDBACK}]

This document, and the package it describes, will undoubtedly contain
bugs and other problems.

Please report such in the category [emph clock::rfc2822] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].

Please also report any ideas for enhancements you may have for either
package and/or documentation.

[manpage_end]

Added modules/clock/rfc2822.pcx.























































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# -*- tcl -*- rfc2822.pcx
# Syntax of the commands provided by package rfc2822.

# For use by TclDevKit's static syntax checker.
# See http://www.activestate.com/solutions/tcl/
# See http://aspn.activestate.com/ASPN/docs/Tcl_Dev_Kit/4.0/Checker.html#pcx_api
# for the documentation describing the format of the code contained in this file
#

package require pcx
pcx::register clock::rfc2822
pcx::tcldep   0.1 needs tcl 8.5

namespace eval ::clock::rfc2822 {}

#pcx::message FOO {... text ...} type
#pcx::scan <VERSION> <NAME> <RULE>

# Switches are per clock scan (Tcl 8.5), restricted subset.
pcx::check 0.1 std ::clock::rfc2822::parse_date \
    {checkSimpleArgs 1 1 {
	checkWord
    }}

# Initialization via pcx::init.
# Use a ::rfc2822::init procedure for non-standard initialization.
pcx::complete

Added modules/clock/rfc2822.tcl.













































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
## -*- tcl -*-
# # ## ### ##### ######## ############# #####################
## Copyright (c) 2004 Kevin Kenny
## Origin http://wiki.tcl.tk/24074

# # ## ### ##### ######## ############# #####################
## Requisites

package require Tcl 8.5
package provide clock::rfc2822 0.1
namespace eval ::clock::rfc2822 {}

# # ## ### ##### ######## ############# #####################
## API

# ::clock::rfc2822::parse_date --
#
#       Parses a date expressed in RFC2822 format
#
# Parameters:
#       date - The date to parse
#
# Results:
#       Returns the date expressed in seconds from the Epoch, or throws
#       an error if the date could not be parsed.

proc ::clock::rfc2822::parse_date { date } {
    variable datepats

    # Strip comments and excess whitespace from the date field

    regsub -all -expanded {
        \(              # open parenthesis
        (:?
	 [^()[.\.]]     # character other than ()\
	     |\\.       # or backslash escape
	 )*             # any number of times
        \)              # close paren
    } $date {} date
    set date [string trim $date]

    # Match the patterns in order of preference, returning the first success

    foreach {regexp pat} $datepats {
        if { [regexp -nocase $regexp $date] } {
            return [clock scan $date -format $pat]
        }
    }

    return -code error -errorcode {CLOCK RFC2822 BADDATE} \
        "expected an RFC2822 date, got \"$date\""
}


# # ## ### ##### ######## ############# #####################
## Internals, transient, removed after initialization.

# AddDatePat --
#
#       Internal procedure that adds a date pattern to the pattern list
#
# Parameters:
#       wpat - Regexp pattern that matches the weekday
#       wgrp - Format group that matches the weekday
#       ypat - Regexp pattern that matches the year
#       ygrp - Format group that matches the year
#       mdpat - Regexp pattern that matches month and day
#       mdgrp - Format group that matches month and day
#       spat - Regexp pattern that matches the seconds of the minute
#       sgrp - Format group that matches the seconds of the minute
#       zpat - Regexp pattern that matches the time zone
#       zgrp - Format group that matches the time zone
#
# Results:
#       None
#
# Side effects:
#       Adds a complete regexp and a complete [clock scan] pattern to
#       'datepats'

proc ::clock::rfc2822::AddDatePat { wpat wgrp ypat ygrp mdpat mdgrp
				    spat sgrp zpat zgrp } {
    variable datepats

    set regexp {^[[:space:]]*}
    set pat {}
    append regexp $wpat $mdpat {[[:space:]]+} $ypat
    append pat $wgrp $mdgrp $ygrp
    append regexp {[[:space:]]+\d\d?:\d\d} $spat
    append pat { %H:%M} $sgrp
    append regexp $zpat
    append pat $zgrp
    append regexp {[[:space:]]*$}
    lappend datepats $regexp $pat
    return
}

# InitDatePats --
#
#       Internal procedure that initializes the set of date patterns
# 	allowed in an RFC2822 date
#
# Parameters:
#       permissible - 1 if erroneous (but common) time zones are to be
#                     allowed, 0 if they are to be rejected
#
# Results:
#       None.
#
# Side effects:

proc ::clock::rfc2822::InitDatePats { permissible } {
    # Produce formats for the observed variants of ISO2822 dates.
    # Permissible variants come first in the list; impermissible ones
    # come later.

    # The month and day may be "%b %d" or "%d %b"

    foreach mdpat {{[[:alpha:]]+[[:space:]]+\d\d?}
        {\d\d?[[:space:]]+[[:alpha:]]+}} \
        mdgrp {{%b %d} {%d %b}} \
        mdperm {0 1} {
            # The year may be two digits, or four. Four digit year is
            # done first.

            foreach ypat {{\d\d\d\d} {\d\d}} ygrp {%Y %y} {
                # The seconds of the minute may be provided, or
                # omitted.

                foreach spat {{:\d\d} {}} sgrp {:%S {}} {
                    # The weekday may be provided or omitted. It is
                    # common but impermissible to omit the comma after
                    # the weekday name.

                    foreach wpat {
                        {(?:Mon|T(?:ue|hu)|Wed|Fri|S(?:at|un)),[[:space:]]+}
                        {(?:Mon|T(?:ue|hu)|Wed|Fri|S(?:at|un))[[:space:]]+}
                        {}
                    } wgrp {
                        {%a, }
                        {%a }
                        {}
                    } wperm {
                        1
                        0
                        1
                    } {
                        # Time zone is defined as +/- hhmm, or as a
                        # named time zone.  Other common but buggy
                        # formats are GMT+-hh:mm, a time zone name in
                        # quotation marks, and complete omission of
                        # the time zone.

                        foreach zpat {
                            {[[:space:]]+(?:[-+]\d\d\d\d|[[:alpha:]]+)}
                            {[[:space:]]+GMT[-+]\d\d:?\d\d}
                            {[[:space:]]+"[[:alpha:]]+"}
                            {}
                        } zgrp {
                            { %Z}
                            { GMT%Z}
                            { "%Z"}
                            {}
                        } zperm {
                            1
                            0
                            0
                            0
                        } {
                            if { ($zperm && $wperm && $mdperm)
                                 == $permissible } {
                                AddDatePat $wpat $wgrp $ypat $ygrp \
                                    $mdpat $mdgrp \
                                    $spat $sgrp $zpat $zgrp
                            }
                        }
                    }
                }
            }
        }
    return
}

# # ## ### ##### ######## ############# #####################
## State

namespace eval ::clock::rfc2822 {
    namespace export parse_date
    namespace ensemble create

    variable datepats {}
}

# # ## ### ##### ######## ############# #####################
# Initialize the date patterns

namespace eval ::clock::rfc2822 {
    InitDatePats 1
    InitDatePats 0
    rename AddDatePat {}
    rename InitDatePats {}
    #puts [join $datepats \n]
}

# # ## ### ##### ######## ############# #####################

return
# Usage example, disabled

if {![info exists ::argv0] || [info script] ne $::argv0} return
puts [clock format \
          [::clock::rfc2822::parse_date {Mon(day), 23 Aug(ust) 2004 01:23:45 UT}]]
puts [clock format \
          [::clock::rfc2822::parse_date "Tue, Jul 21 2009 19:37:47 GMT-0400"]]

Added modules/clock/rfc2822.test.

























































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# -------------------------------------------------------------------------
# rfc2822.test -*- tcl -*-
# (C) 2013 Andreas Kupries. BSD licensed.
# -------------------------------------------------------------------------

source [file join \
	[file dirname [file dirname [file join [pwd] [info script]]]] \
	devtools testutilities.tcl]

testsNeedTcl     8.5
testsNeedTcltest 2.0

testing {
    useLocal rfc2822.tcl clock::rfc2822
}

# -------------------------------------------------------------------------

test clock-rfc2822-1.0 {parse_date wrong\#args} -body {
    clock::rfc2822 parse_date
} -returnCodes error -result {wrong # args: should be "clock::rfc2822 parse_date date"}

test clock-rfc2822-1.1 {parse_date wrong\#args} -body {
    clock::rfc2822 parse_date D X
} -returnCodes error -result {wrong # args: should be "clock::rfc2822 parse_date date"}

# -------------------------------------------------------------------------

test clock-rfc2822-2.0 {parse_date, bad input} -body {
    clock::rfc2822 parse_date D
} -returnCodes error -result {expected an RFC2822 date, got "D"}

test clock-rfc2822-2.1 {parse_date} -body {
    clock::rfc2822 parse_date {Fri, 09 Sep 2005 13:51:39 -0700}
} -result 1126299099

# -------------------------------------------------------------------------
testsuiteCleanup
return

# Local Variables:
#  mode: tcl
#  indent-tabs-mode: nil
# End:

Changes to modules/cmdline/ChangeLog.







1
2
3
4
5
6
7






2013-01-08  Andreas Kupries  <[email protected]>

	* typedCmdline.test: Fixed test results of typed-cmdline-6.14 for
	  Tcl 8.6 and higher. Rewritten to use constraints properly
	  instead of via conditional execution.

2011-12-13  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2013-01-08  Andreas Kupries  <[email protected]>

	* typedCmdline.test: Fixed test results of typed-cmdline-6.14 for
	  Tcl 8.6 and higher. Rewritten to use constraints properly
	  instead of via conditional execution.

2011-12-13  Andreas Kupries  <[email protected]>

Changes to modules/comm/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/control/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/coroutine/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-04-18  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-04-18  Andreas Kupries  <[email protected]>

Changes to modules/counter/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/crc/ChangeLog.







1
2
3
4
5
6
7






2012-01-23  Pat Thoyts  <[email protected]>

	* crc16: bug #3477684: handle data with leading hyphen.

2011-12-13  Andreas Kupries  <[email protected]>

	*
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2012-01-23  Pat Thoyts  <[email protected]>

	* crc16: bug #3477684: handle data with leading hyphen.

2011-12-13  Andreas Kupries  <[email protected]>

	*

Changes to modules/csv/ChangeLog.







1
2
3
4
5
6
7






2013-01-08  Andreas Kupries  <[email protected]>

	* csv.tcl: [Bug 3575707]: Actually a feature change, the commands
	* csv.test: join, joinlist, and joinmatrix are extended with a flag
	* csv.pcx: argument to force use of the delimiter/quoting character,
	* csv.man: regardless of need. Original patch by Pietro Cerutti
	* pkgIndex.tcl: <[email protected]>. Version bumped to 0.8
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2013-01-08  Andreas Kupries  <[email protected]>

	* csv.tcl: [Bug 3575707]: Actually a feature change, the commands
	* csv.test: join, joinlist, and joinmatrix are extended with a flag
	* csv.pcx: argument to force use of the delimiter/quoting character,
	* csv.man: regardless of need. Original patch by Pietro Cerutti
	* pkgIndex.tcl: <[email protected]>. Version bumped to 0.8

Changes to modules/des/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/dns/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/docstrip/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/doctools/ChangeLog.





















1
2
3
4
5
6
7




















2012-02-27  Andreas Kupries  <aku@hephaistos>

	* tests/text/04: Update the expected the result to match the new
	  actual result. See the 2011-12-13 last-second bugfix in
	  textutil::adjust::undent for the cause.

2011-12-13  Andreas Kupries  <[email protected]>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2013-01-29  Andreas Kupries  <[email protected]>

	* doctools.man: Bumped version to 1.4.14 for the
	* doctools.tcl: last change, see below.
	* pkgIndex.tcl:

2013-01-21  Andreas Kupries  <[email protected]>

	* checker.tcl: Added check to manpage_begin, reject spaces in title.
	* mpformats/c.msg: Message catalogs extended with new warning
	* mpformats/de.msg: 'mptitle' for spaces in the manpage title.
	* mpformats/en.msg: The french catalog contains the english
	* mpformats/fr.msg: text, and needs a translation.

2012-02-27  Andreas Kupries  <aku@hephaistos>

	* tests/text/04: Update the expected the result to match the new
	  actual result. See the 2011-12-13 last-second bugfix in
	  textutil::adjust::undent for the cause.

2011-12-13  Andreas Kupries  <[email protected]>

Changes to modules/doctools/checker.tcl.

267
268
269
270
271
272
273

274
275
276
277
278
279
280
}

# -------------------------------------------------------------
# Formatting commands
proc manpage_begin {title section version} {
    Enter manpage_begin
    if {[IsNot manpage_begin]} {Error mpbegin}

    Go header
    fmt_manpage_begin $title $section $version
}
proc moddesc {desc} {
    Enter moddesc
    if {[IsNot header]} {Error hdrcmd}
    fmt_moddesc $desc







>







267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
}

# -------------------------------------------------------------
# Formatting commands
proc manpage_begin {title section version} {
    Enter manpage_begin
    if {[IsNot manpage_begin]} {Error mpbegin}
    if {[string match {* *} $title]} {Error mptitle}
    Go header
    fmt_manpage_begin $title $section $version
}
proc moddesc {desc} {
    Enter moddesc
    if {[IsNot header]} {Error hdrcmd}
    fmt_moddesc $desc

Changes to modules/doctools/doctools.man.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools n 1.4.13]
[copyright {2003-2011 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctools - Processing documents}]
[category  {Documentation tools}]
[require Tcl 8.2]
[require doctools [opt 1.4.13]]
[description]

This package provides a class for the creation of objects able to
process and convert text written in the [term doctools] markup
language into any output format X for which a
[term {formatting engine}] is available.


|
|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[comment {-*- tcl -*- doctools manpage}]
[manpage_begin doctools n 1.4.14]
[copyright {2003-2013 Andreas Kupries <[email protected]>}]
[moddesc   {Documentation tools}]
[titledesc {doctools - Processing documents}]
[category  {Documentation tools}]
[require Tcl 8.2]
[require doctools [opt 1.4.14]]
[description]

This package provides a class for the creation of objects able to
process and convert text written in the [term doctools] markup
language into any output format X for which a
[term {formatting engine}] is available.

Changes to modules/doctools/doctools.tcl.

1
2
3
4
5
6
7
8
9
10
11
12
# doctools.tcl --
#
#	Implementation of doctools objects for Tcl.
#
# Copyright (c) 2003-2011 Andreas Kupries <[email protected]>
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# 
# RCS: @(#) $Id: doctools.tcl,v 1.45 2011/02/23 22:11:59 andreas_kupries Exp $

package require Tcl 8.2




|







1
2
3
4
5
6
7
8
9
10
11
12
# doctools.tcl --
#
#	Implementation of doctools objects for Tcl.
#
# Copyright (c) 2003-2013 Andreas Kupries <[email protected]>
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# 
# RCS: @(#) $Id: doctools.tcl,v 1.45 2011/02/23 22:11:59 andreas_kupries Exp $

package require Tcl 8.2
1333
1334
1335
1336
1337
1338
1339
1340
    # => FOO/mpformats

    #catch {search [file join $here                lib doctools mpformats]}
    #catch {search [file join [file dirname $here] lib doctools mpformats]}
    catch {search [file join $here                             mpformats]}
}

package provide doctools 1.4.13







|
1333
1334
1335
1336
1337
1338
1339
1340
    # => FOO/mpformats

    #catch {search [file join $here                lib doctools mpformats]}
    #catch {search [file join [file dirname $here] lib doctools mpformats]}
    catch {search [file join $here                             mpformats]}
}

package provide doctools 1.4.14

Changes to modules/doctools/mpformats/_common.tcl.

71
72
73
74
75
76
77








78




79
80
81
82
83
84
85
proc c_get_copyright {}     {
    global state

    set cc $state(copyright)
    if {$cc == {}} {set cc [dt_copyright]}
    if {$cc == {}} {return {}}









    return "Copyright [c_copyrightsymbol] [join $cc "\nCopyright [c_copyrightsymbol] "]"




}

proc c_provenance {} {
    return "Generated from file '[dt_file]' by tcllib/doctools with format '[dt_format]'"
}

################################################################







>
>
>
>
>
>
>
>
|
>
>
>
>







71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
proc c_get_copyright {}     {
    global state

    set cc $state(copyright)
    if {$cc == {}} {set cc [dt_copyright]}
    if {$cc == {}} {return {}}

    set stmts {}
    set re {^Copyright +(?:\(c\)|\\\(co|&copy;)? *(.+)$}
    foreach stmt $cc {
	if { [string equal -nocase "public domain" [string trim $stmt]] } {
            lappend stmts "Public domain"
	} elseif { [regexp -nocase -- $re $stmt -> stmt] } {
            lappend stmts $stmt
	} else {
            lappend stmts "Copyright [c_copyrightsymbol] $stmt"
	}
    }

    return [join $stmts \n]
}

proc c_provenance {} {
    return "Generated from file '[dt_file]' by tcllib/doctools with format '[dt_format]'"
}

################################################################

Changes to modules/doctools/mpformats/_nroff.tcl.

1
2
3
4
5
6
7
8
9
10
11
12
13

14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

70
71
72
73
74

75
76
77
78
79
80
81
# -*- tcl -*-
#
# -- nroff commands
#
# Copyright (c) 2003-2005 Andreas Kupries <[email protected]>


################################################################
# nroff specific commands
#
# All dot-commands (f.e. .PP) are returned with a leading \n,
# enforcing that they are on a new line. Any empty line created
# because of this is filtered out in the post-processing step.



proc nr_lp      {}          {return \n.LP}
proc nr_ta      {{text {}}} {return ".ta$text"}
proc nr_bld     {}          {return \1\\fB}
proc nr_bldt    {t}         {return "\n.B $t\n"}
proc nr_ul      {}          {return \1\\fI}
proc nr_rst     {}          {return \1\\fR}
proc nr_p       {}          {return \n.PP\n}
proc nr_comment {text}      {return "\1'\1\\\" [join [split $text \n] "\n\1'\1\\\" "]"} ; # "
proc nr_enum    {num}       {nr_item " \[$num\]"}
proc nr_item    {{text {}}} {return "\n.IP$text"}
proc nr_vspace  {}          {return \n.sp\n}
proc nr_blt     {text}      {return "\n.TP\n$text"}
proc nr_bltn    {n text}    {return "\n.TP $n\n$text"}
proc nr_in      {}          {return \n.RS}
proc nr_out     {}          {return \n.RE}
proc nr_nofill  {}          {return \n.nf}
proc nr_fill    {}          {return \n.fi}
proc nr_title   {text}      {return "\n.TH $text"}
proc nr_include {file}      {return "\n.so $file"}
proc nr_bolds   {}          {return \n.BS}
proc nr_bolde   {}          {return \n.BE}
proc nr_read    {fn}        {return [nroffMarkup [dt_read $fn]]}
proc nr_cs      {}          {return \n.CS\n}
proc nr_ce      {}          {return \n.CE\n}

proc nr_section {name} {
    if {![regexp {[ 	]} $name]} {
	return "\n.SH [string toupper $name]"
    }
    return "\n.SH \"[string toupper $name]\""
}
proc nr_subsection {name}   {
    if {![regexp {[ 	]} $name]} {
	return "\n.SS [string toupper $name]"
    }
    return "\n.SS \"[string toupper $name]\""
}


################################################################

# Handling of nroff special characters in content:
#
# Plain text is initially passed through unescaped;
# internally-generated markup is protected by preceding it with \1.
# The final PostProcess step strips the escape character from
# real markup and replaces unadorned special characters in content
# with proper escapes.
#

global   markupMap
set      markupMap [list \
	"\\"   "\1\\" \
	"'"    "\1'" \

	"\\\\" "\\"]
global   finalMap
set      finalMap [list \
	"\1\\" "\\" \
	"\1'"  "'" \

	"\\"   "\\\\"]
global   textMap
set      textMap [list "\\" "\\\\"]


proc nroffEscape {text} {
    global textMap










|
|
|
>


|


|


|


|
|
|
|
|
|
|
|
|
|
|
|

|
|



|

|



|

|


















>





>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# -*- tcl -*-
#
# -- nroff commands
#
# Copyright (c) 2003-2005 Andreas Kupries <[email protected]>


################################################################
# nroff specific commands
#
# All dot-commands (f.e. .PP) are returned with a leading \n\1,
# enforcing that they are on a new line and will be protected as markup.
# Any empty line created because of this is filtered out in the 
# post-processing step.


proc nr_lp      {}          {return \n\1.LP}
proc nr_ta      {{text {}}} {return ".ta$text"}
proc nr_bld     {}          {return \1\\fB}
proc nr_bldt    {t}         {return "\n\1.B $t\n"}
proc nr_ul      {}          {return \1\\fI}
proc nr_rst     {}          {return \1\\fR}
proc nr_p       {}          {return \n\1.PP\n}
proc nr_comment {text}      {return "\1'\1\\\" [join [split $text \n] "\n\1'\1\\\" "]"} ; # "
proc nr_enum    {num}       {nr_item " \[$num\]"}
proc nr_item    {{text {}}} {return "\n\1.IP$text"}
proc nr_vspace  {}          {return \n\1.sp\n}
proc nr_blt     {text}      {return "\n\1.TP\n$text"}
proc nr_bltn    {n text}    {return "\n\1.TP $n\n$text"}
proc nr_in      {}          {return \n\1.RS}
proc nr_out     {}          {return \n\1.RE}
proc nr_nofill  {}          {return \n\1.nf}
proc nr_fill    {}          {return \n\1.fi}
proc nr_title   {text}      {return "\n\1.TH $text"}
proc nr_include {file}      {return "\n\1.so $file"}
proc nr_bolds   {}          {return \n\1.BS}
proc nr_bolde   {}          {return \n\1.BE}
proc nr_read    {fn}        {return [nroffMarkup [dt_read $fn]]}
proc nr_cs      {}          {return \n\1.CS\n}
proc nr_ce      {}          {return \n\1.CE\n}

proc nr_section {name} {
    if {![regexp {[ 	]} $name]} {
	return "\n\1.SH [string toupper $name]"
    }
    return "\n\1.SH \"[string toupper $name]\""
}
proc nr_subsection {name}   {
    if {![regexp {[ 	]} $name]} {
	return "\n\1.SS [string toupper $name]"
    }
    return "\n\1.SS \"[string toupper $name]\""
}


################################################################

# Handling of nroff special characters in content:
#
# Plain text is initially passed through unescaped;
# internally-generated markup is protected by preceding it with \1.
# The final PostProcess step strips the escape character from
# real markup and replaces unadorned special characters in content
# with proper escapes.
#

global   markupMap
set      markupMap [list \
	"\\"   "\1\\" \
	"'"    "\1'" \
	"."    "\1." \
	"\\\\" "\\"]
global   finalMap
set      finalMap [list \
	"\1\\" "\\" \
	"\1'"  "'" \
	"\1."  "." \
	"\\"   "\\\\"]
global   textMap
set      textMap [list "\\" "\\\\"]


proc nroffEscape {text} {
    global textMap
124
125
126
127
128
129
130


131
132

133
134

135
136
137
138
139
140
141
142
143
144
145
	    if {[regexp {^\x1\\f[BI]\.} $line]} {
		# We found confusing formatting at the beginning of
		# the current line. We lift this line up and attach it
		# at the end of the last line to remove this
		# irregularity. Note that the regexp has to look for
		# the special 0x01 character as well to be sure that
		# the sequence in question truly is formatting.



		set last  [lindex   $lines end]

		set lines [lreplace $lines end end]
		set line "$last $line"

	    } elseif {[string match '* $line]} {
		# Apostrophes at the beginning of a line have to
		# quoted to prevent misinterpretation as comments.
		# The apostrophes for true comments are quoted with \1
		# already and will therefore not detected by the code
		# here.

		set line \1\\$line
	    }
	} else {
	    # No-fill mode. We remove trailing whitespace, but keep







>
>


>
|
|
>
|
|
|
|







127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
	    if {[regexp {^\x1\\f[BI]\.} $line]} {
		# We found confusing formatting at the beginning of
		# the current line. We lift this line up and attach it
		# at the end of the last line to remove this
		# irregularity. Note that the regexp has to look for
		# the special 0x01 character as well to be sure that
		# the sequence in question truly is formatting.
		# [bug-3601370] Only lift & attach if last line is not
		# a directive

		set last  [lindex   $lines end]
		if { ! [string match "\1.*" $last] } {
		    set lines [lreplace $lines end end]
		    set line "$last $line"
		}
	    } elseif {[string match {['.]*} $line]} {
		# Apostrophes or periods at the beginning of a line have to
		# quoted to prevent misinterpretation as comments or directives.
		# The true comments and directive are quoted with \1
		# already and will therefore not detected by the code
		# here.

		set line \1\\$line
	    }
	} else {
	    # No-fill mode. We remove trailing whitespace, but keep
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170

    set lines [join $lines "\n"]

    # Remove superfluous .IP commands (empty paragraph). The first
    # identity mapping is there to avoid smashing a man macro
    # definition.
    set lines [string map [list \
	       \n.IP\n..\n  \n.IP\n..\n \
	       \n.IP\n.     \n.] \
	   $lines]

    # Return the modified result buffer
    return [string map $finalMap $lines]
}








|
|






163
164
165
166
167
168
169
170
171
172
173
174
175
176
177

    set lines [join $lines "\n"]

    # Remove superfluous .IP commands (empty paragraph). The first
    # identity mapping is there to avoid smashing a man macro
    # definition.
    set lines [string map [list \
	       \n\1.IP\n\1..\n  \n\1.IP\n\1..\n \
	       \n\1.IP\n\1.     \n\1.] \
	   $lines]

    # Return the modified result buffer
    return [string map $finalMap $lines]
}

Changes to modules/doctools/mpformats/c.msg.

1
2
3
4
5
6
7
8

9
10
11
12
13
14
15
# -*- tcl -*-
package require    msgcat
namespace import ::msgcat::*

mcset c end/open/list    "End of manpage reached, \[list_end\] missing"
mcset c end/open/example "End of manpage reached, \[example_end\] missing"
mcset c end/open/mp	  "End of manpage reached, \[manpage_end\] missing"
mcset c mpbegin          "Command must be first of manpage"

mcset c hdrcmd           "Command not allowed outside of the header section"
mcset c bodycmd          "Command not allowed outside of the body of the manpage"
mcset c body             "Plain text not allowed outside of the body of the manpage"
mcset c reqcmd           "Command not allowed outside of header or requirement section"
mcset c invalidlist      "Invalid list type \"@\""
mcset c nolistcmd        "Command not allowed inside of a list"
mcset c nolisthdr        "Command not allowed between beginning of a list and its first item"








>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# -*- tcl -*-
package require    msgcat
namespace import ::msgcat::*

mcset c end/open/list    "End of manpage reached, \[list_end\] missing"
mcset c end/open/example "End of manpage reached, \[example_end\] missing"
mcset c end/open/mp	  "End of manpage reached, \[manpage_end\] missing"
mcset c mpbegin          "Command must be first of manpage"
mcset c mptitle          "Spaces not allowed in manpage title"
mcset c hdrcmd           "Command not allowed outside of the header section"
mcset c bodycmd          "Command not allowed outside of the body of the manpage"
mcset c body             "Plain text not allowed outside of the body of the manpage"
mcset c reqcmd           "Command not allowed outside of header or requirement section"
mcset c invalidlist      "Invalid list type \"@\""
mcset c nolistcmd        "Command not allowed inside of a list"
mcset c nolisthdr        "Command not allowed between beginning of a list and its first item"

Changes to modules/doctools/mpformats/de.msg.

1
2
3
4
5
6
7
8

9
10
11
12
13
14
15
# -*- tcl -*-
package require    msgcat
namespace import ::msgcat::*

mcset de end/open/list    "Dokument zu Ende, nicht alle Listen wurden geschlossen"
mcset de end/open/example "Dokument zu Ende, das letzte Beispiel wurde nicht abgeschlossen"
mcset de end/open/mp	  "Dokument zu Ende, es fehlt der Abschlussbefehl \[manpage_end\]"
mcset de mpbegin          "Erwartete diesen Befehl als ersten in der Manpage"

mcset de hdrcmd           "Dieser Befehl ist ausserhalb des Headers nicht erlaubt"
mcset de bodycmd          "Dieser Befehl darf nicht ausserhalb des Hauptteils der Manpage auftreten"
mcset de body             "Text darf nicht ausserhalb des Hauptteils der Manpage auftreten"
mcset de reqcmd           "Dieser Befehl ist ausserhalb von Header/Requirements nicht erlaubt"
mcset de invalidlist      "Die Listenart \"@\" ist dem System nicht bekannt"
mcset de nolistcmd        "Dieser Befehl ist innerhalb einer Liste nicht erlaubt"
mcset de nolisthdr        "Dieser Befehl darf nicht zwischen dem Beginn einer Liste und ihrem ersten Unterpunkt benutzt werden"








>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# -*- tcl -*-
package require    msgcat
namespace import ::msgcat::*

mcset de end/open/list    "Dokument zu Ende, nicht alle Listen wurden geschlossen"
mcset de end/open/example "Dokument zu Ende, das letzte Beispiel wurde nicht abgeschlossen"
mcset de end/open/mp	  "Dokument zu Ende, es fehlt der Abschlussbefehl \[manpage_end\]"
mcset de mpbegin          "Erwartete diesen Befehl als ersten in der Manpage"
mcset de mptitle          "Der Manpage Titel darf keine Leerzeichen enthalten"
mcset de hdrcmd           "Dieser Befehl ist ausserhalb des Headers nicht erlaubt"
mcset de bodycmd          "Dieser Befehl darf nicht ausserhalb des Hauptteils der Manpage auftreten"
mcset de body             "Text darf nicht ausserhalb des Hauptteils der Manpage auftreten"
mcset de reqcmd           "Dieser Befehl ist ausserhalb von Header/Requirements nicht erlaubt"
mcset de invalidlist      "Die Listenart \"@\" ist dem System nicht bekannt"
mcset de nolistcmd        "Dieser Befehl ist innerhalb einer Liste nicht erlaubt"
mcset de nolisthdr        "Dieser Befehl darf nicht zwischen dem Beginn einer Liste und ihrem ersten Unterpunkt benutzt werden"

Changes to modules/doctools/mpformats/en.msg.

1
2
3
4
5
6
7
8

9
10
11
12
13
14
15
# -*- tcl -*-
package require    msgcat
namespace import ::msgcat::*

mcset en end/open/list    "End of manpage reached, \[list_end\] missing"
mcset en end/open/example "End of manpage reached, \[example_end\] missing"
mcset en end/open/mp	  "End of manpage reached, \[manpage_end\] missing"
mcset en mpbegin          "Command must be first of manpage"

mcset en hdrcmd           "Command not allowed outside of the header section"
mcset en bodycmd          "Command not allowed outside of the body of the manpage"
mcset en body             "Plain text not allowed outside of the body of the manpage"
mcset en reqcmd           "Command not allowed outside of header or requirement section"
mcset en invalidlist      "Invalid list type \"@\""
mcset en nolistcmd        "Command not allowed inside of a list"
mcset en nolisthdr        "Command not allowed between beginning of a list and its first item"








>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# -*- tcl -*-
package require    msgcat
namespace import ::msgcat::*

mcset en end/open/list    "End of manpage reached, \[list_end\] missing"
mcset en end/open/example "End of manpage reached, \[example_end\] missing"
mcset en end/open/mp	  "End of manpage reached, \[manpage_end\] missing"
mcset en mpbegin          "Command must be first of manpage"
mcset en mptitle          "Spaces not allowed in manpage title"
mcset en hdrcmd           "Command not allowed outside of the header section"
mcset en bodycmd          "Command not allowed outside of the body of the manpage"
mcset en body             "Plain text not allowed outside of the body of the manpage"
mcset en reqcmd           "Command not allowed outside of header or requirement section"
mcset en invalidlist      "Invalid list type \"@\""
mcset en nolistcmd        "Command not allowed inside of a list"
mcset en nolisthdr        "Command not allowed between beginning of a list and its first item"

Changes to modules/doctools/mpformats/fmt.nroff.

80
81
82
83
84
85
86
87




88
89
90
91
92
93
94

    if {[llength $sa] > 0} {
	append nroff [fmt_section {SEE ALSO}] \n
	append nroff [join [lsort $sa] ", "] \n
    }
    if {[llength $kw] > 0} {
	append nroff [fmt_section KEYWORDS] \n
	append nroff [join [lsort $kw] ", "] \n




    }
    if {$ca ne ""} {
	append nroff [fmt_section CATEGORY] \n
	append nroff $ca \n
    }
    if {$ct != {}} {
	append nroff [fmt_section COPYRIGHT] \n







|
>
>
>
>







80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98

    if {[llength $sa] > 0} {
	append nroff [fmt_section {SEE ALSO}] \n
	append nroff [join [lsort $sa] ", "] \n
    }
    if {[llength $kw] > 0} {
	append nroff [fmt_section KEYWORDS] \n
	set kwline [join [lsort $kw] ", "]
	if { [string match ".*" $kwline] } {
	    set kwline "\\$kwline" 
	}
	append nroff $kwline \n
    }
    if {$ca ne ""} {
	append nroff [fmt_section CATEGORY] \n
	append nroff $ca \n
    }
    if {$ct != {}} {
	append nroff [fmt_section COPYRIGHT] \n

Changes to modules/doctools/mpformats/fr.msg.

1
2
3
4
5
6
7
8

9
10
11
12
13
14
15
# -*- tcl -*-
package require    msgcat
namespace import ::msgcat::*

mcset fr end/open/list    "Fin de la page de manuel atteinte, \[list_end\] manquant"
mcset fr end/open/example "Fin de la page de manuel atteinte, \[example_end\] manquant"
mcset fr end/open/mp	  "Fin de la page de manuel atteinte, \[manpage_end\] manquant"
mcset fr mpbegin          "Cette commande doit \xEAtre la premi\xE8re de la page de manuel"

mcset fr hdrcmd           "Commande interdite \xE0 l'ext\xE9rieur de l'en-t\xEAte"
mcset fr bodycmd          "Commande interdite \xE0 l'ext\xE9rieur du corps de la page de manuel"
mcset fr body             "Le texte est interdit \xE0 l'ext\xE9rieur du corps de la page de manuel"
mcset fr reqcmd           "Commande interdite \xE0 l'ext\xE9rieur de l'en-t\xEAte ou de la section de condition"
mcset fr invalidlist      "Type de liste non valide \"@\""
mcset fr nolistcmd        "Commande interdite \xE0 l'int\xE9rieur d'une liste"
mcset fr nolisthdr        "Commande interdite entre le d\xE9but d'une liste et son premier \xE9l\xE9ment"








>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# -*- tcl -*-
package require    msgcat
namespace import ::msgcat::*

mcset fr end/open/list    "Fin de la page de manuel atteinte, \[list_end\] manquant"
mcset fr end/open/example "Fin de la page de manuel atteinte, \[example_end\] manquant"
mcset fr end/open/mp	  "Fin de la page de manuel atteinte, \[manpage_end\] manquant"
mcset fr mpbegin          "Cette commande doit \xEAtre la premi\xE8re de la page de manuel"
mcset fr mptitle          "TODO: TRANSLATE: Spaces not allowed in manpage title"
mcset fr hdrcmd           "Commande interdite \xE0 l'ext\xE9rieur de l'en-t\xEAte"
mcset fr bodycmd          "Commande interdite \xE0 l'ext\xE9rieur du corps de la page de manuel"
mcset fr body             "Le texte est interdit \xE0 l'ext\xE9rieur du corps de la page de manuel"
mcset fr reqcmd           "Commande interdite \xE0 l'ext\xE9rieur de l'en-t\xEAte ou de la section de condition"
mcset fr invalidlist      "Type de liste non valide \"@\""
mcset fr nolistcmd        "Commande interdite \xE0 l'int\xE9rieur d'une liste"
mcset fr nolisthdr        "Commande interdite entre le d\xE9but d'une liste et son premier \xE9l\xE9ment"

Changes to modules/doctools/pkgIndex.tcl.

1
2
3
4
5
6
if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded doctools            1.4.13 [list source [file join $dir doctools.tcl]]
package ifneeded doctools::toc       1.1.3  [list source [file join $dir doctoc.tcl]]
package ifneeded doctools::idx       1.0.4  [list source [file join $dir docidx.tcl]]
package ifneeded doctools::cvs       1      [list source [file join $dir cvs.tcl]]
package ifneeded doctools::changelog 1      [list source [file join $dir changelog.tcl]]

|




1
2
3
4
5
6
if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded doctools            1.4.14 [list source [file join $dir doctools.tcl]]
package ifneeded doctools::toc       1.1.3  [list source [file join $dir doctoc.tcl]]
package ifneeded doctools::idx       1.0.4  [list source [file join $dir docidx.tcl]]
package ifneeded doctools::cvs       1      [list source [file join $dir cvs.tcl]]
package ifneeded doctools::changelog 1      [list source [file join $dir changelog.tcl]]

Changes to modules/doctools2base/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/doctools2idx/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/doctools2toc/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/exif/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/fileutil/ChangeLog.







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18






2013-01-28  Andreas Kupries <[email protected]>

	* decode.tcl: New. Simple package to support writing decoders
	* pkgIndex.tcl: for binary files.

2013-01-08  Andreas Kupries  <[email protected]>

	* fileutil.man: [Bug 3147481], [Bug 3141568]. Fixed issues with
	* fileutil.tcl: changes to [glob]'s behaviour in 8.5+, reported
	* find.setup: by [email protected]. Plus [Bug 3599839]
	* find.test: reminding us of these, and Win 7. Bunped version to
	* pkgIndex.tcl: 1.14.5. Extended testsuite, can be repro'd under
	  Unix also.

2012-08-29  Andreas Kupries <[email protected]>

	* traverse.tcl (Init): Fixed a bug where a symlink to the
	* traverse.man: base directory was not handled correctly.
>
>
>
>
>
>










|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2013-01-28  Andreas Kupries <[email protected]>

	* decode.tcl: New. Simple package to support writing decoders
	* pkgIndex.tcl: for binary files.

2013-01-08  Andreas Kupries  <[email protected]>

	* fileutil.man: [Bug 3147481], [Bug 3141568]. Fixed issues with
	* fileutil.tcl: changes to [glob]'s behaviour in 8.5+, reported
	* find.setup: by [email protected]. Plus [Bug 3599839]
	* find.test: reminding us of these, and Win 7. Bumped version to
	* pkgIndex.tcl: 1.14.5. Extended testsuite, can be repro'd under
	  Unix also.

2012-08-29  Andreas Kupries <[email protected]>

	* traverse.tcl (Init): Fixed a bug where a symlink to the
	* traverse.man: base directory was not handled correctly.

Changes to modules/ftp/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-08-09  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-08-09  Andreas Kupries  <[email protected]>

Changes to modules/ftpd/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-08-09  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-08-09  Andreas Kupries  <[email protected]>

Changes to modules/fumagic/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/generator/ChangeLog.







1
2
3
4
5






2012-08-07  Andreas Kupries  <[email protected]>

	* New Module. Provided by Neil Madden.


>
>
>
>
>
>





1
2
3
4
5
6
7
8
9
10
11
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2012-08-07  Andreas Kupries  <[email protected]>

	* New Module. Provided by Neil Madden.


Changes to modules/gpx/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/grammar_aycock/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/grammar_fa/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/grammar_me/ChangeLog.







1
2
3
4
5
6
7






2013-01-08  Andreas Kupries  <[email protected]>

	* me_tcl.test: (mevmtcl-ict_match_tokclass-1.2*): Fixed test
	  results for Tcl 8.6 and higher.

2011-12-13  Andreas Kupries  <[email protected]>

>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2013-01-08  Andreas Kupries  <[email protected]>

	* me_tcl.test: (mevmtcl-ict_match_tokclass-1.2*): Fixed test
	  results for Tcl 8.6 and higher.

2011-12-13  Andreas Kupries  <[email protected]>

Changes to modules/grammar_peg/ChangeLog.







1
2
3
4
5
6
7






2012-02-22  Andreas Kupries  <[email protected]>

	* peg.tcl: [Bug 3490008]: Fixed variable name typo reported by
	* pkgIndex.tcl: glastonbridge2. Bumped version to 0.2.

2011-12-13  Andreas Kupries  <[email protected]>

>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2012-02-22  Andreas Kupries  <[email protected]>

	* peg.tcl: [Bug 3490008]: Fixed variable name typo reported by
	* pkgIndex.tcl: glastonbridge2. Bumped version to 0.2.

2011-12-13  Andreas Kupries  <[email protected]>

Changes to modules/hook/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-02-23  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-02-23  Andreas Kupries  <[email protected]>

Changes to modules/html/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/htmlparse/ChangeLog.







1
2
3
4
5
6
7






2012-08-02  Andreas Kupries  <[email protected]>

	* htmlparse.tcl: [Bug 3553350]: Fixed bad handling of characters
	  special to regsub in the callback. Bumped version to 1.2.1.	
	* htmlparse.test: New test case for the above.
	* htmlparse.man: Bumped version number.
	* pkgIndex.tcl:  Bumped version number.
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2012-08-02  Andreas Kupries  <[email protected]>

	* htmlparse.tcl: [Bug 3553350]: Fixed bad handling of characters
	  special to regsub in the callback. Bumped version to 1.2.1.	
	* htmlparse.test: New test case for the above.
	* htmlparse.man: Bumped version number.
	* pkgIndex.tcl:  Bumped version number.

Changes to modules/http/ChangeLog.







1
2
3
4
5
6
7






2012-05-28  Andreas Kupries  <[email protected]>

	* autoproxy.tcl: Fixed bug where https proxying was attempted
	* autoproxy.man: in the face of a domain exception. The TLS
	* pkgIndex.tcl: setup code has to 'filter' properly. Further
	  check for existence of state(code), it may not exist (Server
	  accepts initial connection, then eof's during the TLS
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2012-05-28  Andreas Kupries  <[email protected]>

	* autoproxy.tcl: Fixed bug where https proxying was attempted
	* autoproxy.man: in the face of a domain exception. The TLS
	* pkgIndex.tcl: setup code has to 'filter' properly. Further
	  check for existence of state(code), it may not exist (Server
	  accepts initial connection, then eof's during the TLS

Changes to modules/ident/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/imap4/ChangeLog.


















1
2
3
4
5
6
7

















2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2013-01-25  Andreas Kupries  <[email protected]>

	* imap4.man: Updated documentation with text contributed by Nicola
	  Hall, explaining the new commands.

2013-01-22  Andreas Kupries  <[email protected]>

	* imap4.tcl: Applied contribution by Nicola Hall.
	* imap4.man: Additional commands. Bumped version
	* pkgIndex.tcl: to 0.4.

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/imap4/imap4.man.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[manpage_begin imap4 n 0.3]
[moddesc   {imap client}]
[titledesc {imap client-side tcl implementation of imap protocol}]

[require Tcl 8.5]
[require imap4 [opt 0.3]]

[description]

The [package imap4] library package provides the client side of the
[strong "Internet Message Access Protocol"] (IMAP) using standard
sockets or secure connection via TLS/SSL.
The package is fully implemented in Tcl.

[para]
This document describes the procedures and explains their usage.

[section "PROCEDURES"]
|




|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[manpage_begin imap4 n 0.4]
[moddesc   {imap client}]
[titledesc {imap client-side tcl implementation of imap protocol}]

[require Tcl 8.5]
[require imap4 [opt 0.4]]

[description]

The [package imap4] library package provides the client side of the
[emph "Internet Message Access Protocol"] (IMAP) using standard
sockets or secure connection via TLS/SSL.
The package is fully implemented in Tcl.

[para]
This document describes the procedures and explains their usage.

[section "PROCEDURES"]
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
returned instead of the result code. All flags are converted to
lowercase and leading special characters are removed.
[example {{{Arc08 noselect} {Arc08/Private {noinferiors unmarked}} {INBOX noinferiors}}}]

[call [cmd ::imap4::select] [arg chan] [opt [arg mailbox]]]
[para]Select a mailbox, 0 is returned on success.
[para][arg chan] - imap channel
[para][arg mailbox] - Path of the mailbox,  defaults to [strong INBOX]
[para]Prior to examine/select an open mailbox must be closed - see: [cmd ::imap4::close].

[call [cmd ::imap4::examine] [arg chan] [opt [arg mailbox]]]
[para]"Examines" a mailbox, read-only equivalent of [cmd ::imap4::select].
[para][arg chan] - imap channel
[para][arg mailbox] - mailbox name or path to mailbox,
defaults to [strong INBOX]
[para]Prior to examine/select an open mailbox must be closed - see: [cmd ::imap4::close].

[call [cmd ::imap4::fetch] [arg chan] [arg range] [opt [arg -inline]] [opt [arg "attr ..."]]]
[para]Fetch attributes from messages.
[para]The attributes are fetched and stored in the internal state
which can be retrieved with command [cmd ::imap4::msginfo], 0 is returned
on success.







|






|







53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
returned instead of the result code. All flags are converted to
lowercase and leading special characters are removed.
[example {{{Arc08 noselect} {Arc08/Private {noinferiors unmarked}} {INBOX noinferiors}}}]

[call [cmd ::imap4::select] [arg chan] [opt [arg mailbox]]]
[para]Select a mailbox, 0 is returned on success.
[para][arg chan] - imap channel
[para][arg mailbox] - Path of the mailbox,  defaults to [emph INBOX]
[para]Prior to examine/select an open mailbox must be closed - see: [cmd ::imap4::close].

[call [cmd ::imap4::examine] [arg chan] [opt [arg mailbox]]]
[para]"Examines" a mailbox, read-only equivalent of [cmd ::imap4::select].
[para][arg chan] - imap channel
[para][arg mailbox] - mailbox name or path to mailbox,
defaults to [emph INBOX]
[para]Prior to examine/select an open mailbox must be closed - see: [cmd ::imap4::close].

[call [cmd ::imap4::fetch] [arg chan] [arg range] [opt [arg -inline]] [opt [arg "attr ..."]]]
[para]Fetch attributes from messages.
[para]The attributes are fetched and stored in the internal state
which can be retrieved with command [cmd ::imap4::msginfo], 0 is returned
on success.
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
[para]If the required information name is suffixed with a ? character,
the command returns true if the information is available, or
false if it is not.
[para][arg chan] - imap channel
[para][arg info] - folderlist options to retrieve
[para]
Currently supported options:
[strong delim] - hierarchy delimiter only,
[strong match] - ref and mbox search patterns (see [cmd ::imap4::folders]),
[strong names] - list of folder names only,
[strong flags] - list of folder names with flags in format
[emph "{ {name {flags}} ... }"] (see also compact format in function
[cmd ::imap4::folders]).
[example {
{{Arc08 {{\NoSelect}}} {Arc08/Private {{\NoInferiors} {\UnMarked}}} {INBOX {\NoInferiors}}}
}]
[call [cmd ::imap4::msginfo] [arg chan] [arg msgid] [opt [arg info]] [opt [arg defval]]]
[para]Get information (from previously collected using fetch) from a given







|
|
|
|







97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
[para]If the required information name is suffixed with a ? character,
the command returns true if the information is available, or
false if it is not.
[para][arg chan] - imap channel
[para][arg info] - folderlist options to retrieve
[para]
Currently supported options:
[emph delim] - hierarchy delimiter only,
[emph match] - ref and mbox search patterns (see [cmd ::imap4::folders]),
[emph names] - list of folder names only,
[emph flags] - list of folder names with flags in format
[emph "{ {name {flags}} ... }"] (see also compact format in function
[cmd ::imap4::folders]).
[example {
{{Arc08 {{\NoSelect}}} {Arc08/Private {{\NoInferiors} {\UnMarked}}} {INBOX {\NoInferiors}}}
}]
[call [cmd ::imap4::msginfo] [arg chan] [arg msgid] [opt [arg info]] [opt [arg defval]]]
[para]Get information (from previously collected using fetch) from a given
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
[para]If the required information name is suffixed with a ? character,
the command returns true if the information is available, or
false if it is not.
[para][arg chan] - imap channel
[para][arg opt] - mailbox option to retrieve
[para]
Currently supported options:
[strong EXISTS] (noof msgs), 
[strong RECENT] (noof 'recent' flagged msgs), 
[strong FLAGS]
[para]In conjunction with OK:
[strong PERMFLAGS], [strong UIDNEXT], [strong UIDVAL], [strong UNSEEN]
[para]Div. states:
[strong CURRENT], [strong FOUND], [strong PERM].

[example {
    ::imap4::select $chan INBOX
    puts "[::imap4::mboxinfo $chan exists] mails in INBOX"}]

[call [cmd ::imap4::isableto] [arg chan] [opt [arg capability]]]
[para]Test for capability.







|
|
|

|

|







134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
[para]If the required information name is suffixed with a ? character,
the command returns true if the information is available, or
false if it is not.
[para][arg chan] - imap channel
[para][arg opt] - mailbox option to retrieve
[para]
Currently supported options:
[emph EXISTS] (noof msgs), 
[emph RECENT] (noof 'recent' flagged msgs), 
[emph FLAGS]
[para]In conjunction with OK:
[emph PERMFLAGS], [emph UIDNEXT], [emph UIDVAL], [emph UNSEEN]
[para]Div. states:
[emph CURRENT], [emph FOUND], [emph PERM].

[example {
    ::imap4::select $chan INBOX
    puts "[::imap4::mboxinfo $chan exists] mails in INBOX"}]

[call [cmd ::imap4::isableto] [arg chan] [opt [arg capability]]]
[para]Test for capability.
232
233
234
235
236
237
238

















































239
240
241
242
243
244
245
programmer. Every line entered is sent verbatim to the
server (after the addition of the request identifier).
The ::imap4::debug variable is automatically set to '1' on enter.
[para]It's possible to execute Tcl commands starting the line
with a slash.
[para][arg chan] - imap channel
[para][arg errormsg] - optional error message to display

















































[list_end]

[section EXAMPLES]

[example_begin]
    set user myusername
    set pass xtremescrt







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
programmer. Every line entered is sent verbatim to the
server (after the addition of the request identifier).
The ::imap4::debug variable is automatically set to '1' on enter.
[para]It's possible to execute Tcl commands starting the line
with a slash.
[para][arg chan] - imap channel
[para][arg errormsg] - optional error message to display

[call [cmd ::imap4::store] [arg chan] [arg range] [arg data] [arg flaglist]]

[para] Alters data associated with a message in the selected
mailbox.

[para][arg chan] - imap channel
[para][arg range] - message index in format [emph FROM]:[emph TO]
[para][arg flaglist] - Flags the [arg data] operates on.
[para][arg data] - The currently defined [arg data] items that can be
stored are shown below. [emph Note] that all of these data types may
also be suffixed with ".SILENT" to suppress the untagged FETCH
response.

[list_begin definitions]
[def FLAGS]
Replace the flags for the message (other than \Recent) with the
[arg flaglist].
[def "+FLAGS"]
Add the flags in [arg flaglist] to the existing flags for the message.
[def "-FLAGS"]
Remove the flags in [arg flaglist] to the existing flags for the
message.
[list_end]

For example:
[example {
	::imap4::store $chan $start_msgid:$end_msgid +FLAGS "Deleted"
}]

[call [cmd ::imap4::expunge] [arg chan]]

[para] Permanently removes all messages that have the \Deleted flag
set from the currently selected mailbox, without the need to close the
connection.

[para][arg chan] - imap channel

[call [cmd ::imap4::logout] [arg chan]]

[para] Informs the server that the client is done with the connection
and closes the network connection. Permanently removes \Deleted
messages.

[para] A new connection will need to be established to login once
more.

[para][arg chan] - imap channel

[list_end]

[section EXAMPLES]

[example_begin]
    set user myusername
    set pass xtremescrt

Changes to modules/imap4/imap4.tcl.

1
2
3
4
5

6
7
8
9
10
11
12
# IMAP4 protocol pure Tcl implementation.
#
# COPYRIGHT AND PERMISSION NOTICE
#
# Copyright (C) 2004 Salvatore Sanfilippo <[email protected]>.

#
# All rights reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,





>







1
2
3
4
5
6
7
8
9
10
11
12
13
# IMAP4 protocol pure Tcl implementation.
#
# COPYRIGHT AND PERMISSION NOTICE
#
# Copyright (C) 2004 Salvatore Sanfilippo <[email protected]>.
# Copyright (C) 2013 Nicola Hall <[email protected]>
#
# All rights reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#             option -inline for ::imap4::fetch, in order to return data as a Tcl list
#             isableto without arguments returns the capability list
#             implementation of LIST command
#   20100709: Adding suppport for SSL connections, namespace variable
#             use_ssl must be set to 1 and package TLS must be loaded
#   20100716: Bug in parsing special leading FLAGS characters in FETCH
#             command repaired, documentation cleanup.
#

package require Tcl 8.5
package provide imap4 0.3

namespace eval imap4 {
    variable debugmode 0     ;# inside debug mode? usually not.
    variable folderinfo
    variable mboxinfo
    variable msginfo
    variable info







|


|







45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#             option -inline for ::imap4::fetch, in order to return data as a Tcl list
#             isableto without arguments returns the capability list
#             implementation of LIST command
#   20100709: Adding suppport for SSL connections, namespace variable
#             use_ssl must be set to 1 and package TLS must be loaded
#   20100716: Bug in parsing special leading FLAGS characters in FETCH
#             command repaired, documentation cleanup.
#   20121221: Added basic scope, expunge and logout function

package require Tcl 8.5
package provide imap4 0.4

namespace eval imap4 {
    variable debugmode 0     ;# inside debug mode? usually not.
    variable folderinfo
    variable mboxinfo
    variable msginfo
    variable info
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235

        set tag [string range $line 0 [expr {$idx-1}]]
        set line [string range $line [expr {$idx+1}] end]
        # If it's just a command continuation response, return.
        if {$tag eq {+}} {return +}

        # Extract the error code, if it's a tagged line
        if {$tag ne {*}} {
            set idx [string first { } $line]
            if {$idx <= 0} {
                protoerror $chan "IMAP: malformed response '$line'"
            }
            set code [string range $line 0 [expr {$idx-1}]]
            set line [string trim [string range $line [expr {$idx+1}] end]]
            set info($chan,lastcode) $code







|







222
223
224
225
226
227
228
229
230
231
232
233
234
235
236

        set tag [string range $line 0 [expr {$idx-1}]]
        set line [string range $line [expr {$idx+1}] end]
        # If it's just a command continuation response, return.
        if {$tag eq {+}} {return +}

        # Extract the error code, if it's a tagged line
        if {$tag ne "*"} {
            set idx [string first { } $line]
            if {$idx <= 0} {
                protoerror $chan "IMAP: malformed response '$line'"
            }
            set code [string range $line 0 [expr {$idx-1}]]
            set line [string trim [string range $line [expr {$idx+1}] end]]
            set info($chan,lastcode) $code
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
                if {$p1<0||$p2<0||$p3<0} {
                    protoerror $chan "IMAP: Not a valid RFC822 LIST format in '$line'"
                }
                set flags [string range $line [expr {$p1+1}] [expr {$p2-1}]]
                set delim [string range $line [expr {$p2+2}] [expr {$p3-1}]]
                set fname [string range $line [expr {$p3+1}] end]
                if {$fname eq ""} {
                    set folderinfo($chan,delim) [string trim $delim {"}]
                } else {
                    set fflag {}
                    foreach f [split $flags] {
                        lappend fflag $f
                    }
                    lappend folderinfo($chan,names) $fname
                    lappend folderinfo($chan,flags) [list $fname $fflag]
                    if {$delim ne "NIL"} {
                        set folderinfo($chan,delim) [string trim $delim {"}]
                    }
                }
                incr dirty
            }
            {FLAGS *(*)*} {
                regexp {.*\((.*)\).*} $line => flags
                set mboxinfo($chan,flags) $flags







|








|







253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
                if {$p1<0||$p2<0||$p3<0} {
                    protoerror $chan "IMAP: Not a valid RFC822 LIST format in '$line'"
                }
                set flags [string range $line [expr {$p1+1}] [expr {$p2-1}]]
                set delim [string range $line [expr {$p2+2}] [expr {$p3-1}]]
                set fname [string range $line [expr {$p3+1}] end]
                if {$fname eq ""} {
                    set folderinfo($chan,delim) [string trim $delim "\""]
                } else {
                    set fflag {}
                    foreach f [split $flags] {
                        lappend fflag $f
                    }
                    lappend folderinfo($chan,names) $fname
                    lappend folderinfo($chan,flags) [list $fname $fflag]
                    if {$delim ne "NIL"} {
                        set folderinfo($chan,delim) [string trim $delim "\""]
                    }
                }
                incr dirty
            }
            {FLAGS *(*)*} {
                regexp {.*\((.*)\).*} $line => flags
                set mboxinfo($chan,flags) $flags
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
    }

    # Write a request.
    proc request {chan request} {
        variable debug
        variable info

        set t "[tag $chan] $request"
        if {$debug} {
            puts "C: $t"
        }
        set info($chan,lastrequest) $t
        puts -nonewline $chan "$t\r\n"
        flush $chan
    }







|







522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
    }

    # Write a request.
    proc request {chan request} {
        variable debug
        variable info

        set t "[tag $chan] [string trim $request]"
        if {$debug} {
            puts "C: $t"
        }
        set info($chan,lastrequest) $t
        puts -nonewline $chan "$t\r\n"
        flush $chan
    }
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
        set folderinfo($chan,match) [list $ref $mbox]
        # parray folderinfo
        set rv [simplecmd $chan LIST {SELECT AUTH} \"$ref\" \"$mbox\"]
        if {$inline} {
            set rv {}
            foreach f [folderinfo $chan flags] {
                set lflags {}
                foreach {fl} [lindex $f 1] {
                    if {[string is alnum [string index $fl 0]]} {
                        lappend lflags [string tolower $fl]]
                    } else {
                        lappend lflags [string tolower [string range $fl 1 end]]
                    }
                }
                lappend rv [list [lindex $f 0] $lflags]
            }
        }







|

|







939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
        set folderinfo($chan,match) [list $ref $mbox]
        # parray folderinfo
        set rv [simplecmd $chan LIST {SELECT AUTH} \"$ref\" \"$mbox\"]
        if {$inline} {
            set rv {}
            foreach f [folderinfo $chan flags] {
                set lflags {}
                foreach fl [lindex $f 1] {
                    if {[string is alnum [string index $fl 0]]} {
                        lappend lflags [string tolower $fl]
                    } else {
                        lappend lflags [string tolower [string range $fl 1 end]]
                    }
                }
                lappend rv [list [lindex $f 0] $lflags]
            }
        }
1214
1215
1216
1217
1218
1219
1220

























































1221
1222
1223
1224
1225
1226
1227
    # Other stuff to do in random order...
    #
    # proc ::imap4::idle notify-command
    # proc ::imap4::auth plain ...
    # proc ::imap4::securestauth user pass
    # proc ::imap4::store
    # proc ::imap4::logout (need to clean both msg and mailbox info arrays)

























































}

################################################################################
# Example and test
################################################################################
if {[info script] eq $argv0} {
    # set imap4::debug 0







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
    # Other stuff to do in random order...
    #
    # proc ::imap4::idle notify-command
    # proc ::imap4::auth plain ...
    # proc ::imap4::securestauth user pass
    # proc ::imap4::store
    # proc ::imap4::logout (need to clean both msg and mailbox info arrays)

    # Amend the flags of a message to be updated once CLOSE/EXPUNGE is initiated
    proc store {chan range key values} {
	set valid_keys {
	    FLAGS
	    FLAGS.SILENT
	    +FLAGS
	    +FLAGS.SILENT
	    -FLAGS
	    -FLAGS.SILENT
	}
	if {$key ni $valid_keys} {
	    error "Invalid data item: $key. Must be one of [join $valid_keys ,]"
	}
        parserange $chan $range start end
	set newflags {}
	foreach val $values {
	    if {[regexp {^\\+(.*?)$} $val]} {
		lappend newflags $values
	    } else {
		lappend newflags "\\$val"
	    }
	}
        request $chan "STORE $start:$end $key ([join $newflags])"
	if {[getresponse $chan]} {
	    return 1
	}
	return 0
    }

    # Logout
    proc logout {chan} {
	if {[simplecmd $chan LOGOUT SELECT {}]} {
	    # clean out info arrays
	    variable info
	    variable folderinfo
	    variable mboxinfo
	    variable msginfo

	    array unset folderinfo $chan,*
	    array unset mboxinfo $chan,*
	    array unset msginfo $chan,*
	    array unset info $chan,*

	    return 1
	}
        return 0
    }

    # Expunge : force removal of any messages with the 
    # flag \Deleted
    proc expunge {chan} {
        if {[simplecmd $chan EXPUNGE SELECT {}]} {
            return 1
        }
        return 0
    }
}

################################################################################
# Example and test
################################################################################
if {[info script] eq $argv0} {
    # set imap4::debug 0

Changes to modules/imap4/pkgIndex.tcl.

1
2
if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded imap4 0.3 [list source [file join $dir imap4.tcl]]

|
1
2
if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded imap4 0.4 [list source [file join $dir imap4.tcl]]

Changes to modules/inifile/ChangeLog.







1
2
3
4
5
6
7






2012-01-05  Andreas Kupries  <[email protected]>

	* ini.tcl: [Bug 3469006]: Followup to [Bug 3419727]. Fixed
	* ini.man: the unscoped 'close' command left in the code.
	* pkgIndex.tcl: Bumped version to 0.2.5

2011-12-13  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2012-01-05  Andreas Kupries  <[email protected]>

	* ini.tcl: [Bug 3469006]: Followup to [Bug 3419727]. Fixed
	* ini.man: the unscoped 'close' command left in the code.
	* pkgIndex.tcl: Bumped version to 0.2.5

2011-12-13  Andreas Kupries  <[email protected]>

Changes to modules/interp/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-11-07  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-11-07  Andreas Kupries  <[email protected]>

Changes to modules/irc/ChangeLog.







1
2
3
4
5
6
7






2013-01-09  Andreas Kupries  <[email protected]>

	* irc.man: Documented the callback for EOF as required.

2011-12-13  Andreas Kupries  <[email protected]>

	*
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2013-01-09  Andreas Kupries  <[email protected]>

	* irc.man: Documented the callback for EOF as required.

2011-12-13  Andreas Kupries  <[email protected]>

	*

Changes to modules/javascript/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/jpeg/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-05-06  Pat Thoyts  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-05-06  Pat Thoyts  <[email protected]>

Changes to modules/json/ChangeLog.







1
2
3
4
5
6
7






2013-02-01  Andreas Kupries  <aku@hephaistos>

	* json_write.tcl: While we can quote / (solidus) via \/ as per the
	* json_write.man: JSON syntax there is no reason why we should.
	* json_write.test: Bumped version to 1.0.2.
	* pkgIndex.tcl:

>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2013-02-01  Andreas Kupries  <aku@hephaistos>

	* json_write.tcl: While we can quote / (solidus) via \/ as per the
	* json_write.man: JSON syntax there is no reason why we should.
	* json_write.test: Bumped version to 1.0.2.
	* pkgIndex.tcl:

Changes to modules/lambda/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-05-31  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-05-31  Andreas Kupries  <[email protected]>

Changes to modules/ldap/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/ldap/ldap.man.

217
218
219
220
221
222
223
224
225
226
227
228
229
230
231


[para]

[call [cmd ::ldap::searchEnd] [arg handle]]

This command terminates a LDAP search initiated
by [call ::ldap::searchInit]. It also cleans up
the internal state so a new search can be initiated.

If the client has not yet received all results, the client
sends an ABANDON message to inform the server that no
further results for the previous search should to be sent.

[para]







|







217
218
219
220
221
222
223
224
225
226
227
228
229
230
231


[para]

[call [cmd ::ldap::searchEnd] [arg handle]]

This command terminates a LDAP search initiated
by [cmd ::ldap::searchInit]. It also cleans up
the internal state so a new search can be initiated.

If the client has not yet received all results, the client
sends an ABANDON message to inform the server that no
further results for the previous search should to be sent.

[para]

Changes to modules/log/ChangeLog.







1
2
3
4
5
6
7






2012-07-09  Andreas Kupries  <aku@hephaistos>

	* logger.tcl: [Bug 3541628]: Fixed creative writing issue in
	* logger.man: logger::init. Bumped package to version 0.9.3
	* pkgIndex.tcl: Whitespace cleanup in places.

2011-12-20  Michael Schlenker <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2012-07-09  Andreas Kupries  <aku@hephaistos>

	* logger.tcl: [Bug 3541628]: Fixed creative writing issue in
	* logger.man: logger::init. Bumped package to version 0.9.3
	* pkgIndex.tcl: Whitespace cleanup in places.

2011-12-20  Michael Schlenker <[email protected]>

Changes to modules/map/ChangeLog.







1
2
3
4
5
6
7






2012-05-11  Andreas Kupries  <[email protected]>

	* map_slippy_fetcher.tcl: Added timeouts to the http queries issued
	* map_geocode_nominatim.tcl: by the fetcher and geo-name
	  resolver. Fetcher bumped to version 0.3.

	* map_slippy.tcl: Integrated code contributed by <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2012-05-11  Andreas Kupries  <[email protected]>

	* map_slippy_fetcher.tcl: Added timeouts to the http queries issued
	* map_geocode_nominatim.tcl: by the fetcher and geo-name
	  resolver. Fetcher bumped to version 0.3.

	* map_slippy.tcl: Integrated code contributed by <[email protected]>

Changes to modules/mapproj/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/math/ChangeLog.







1

2
3
4
5
6
7
8
9
10






2012-06-25  Arjen Markus <[email protected]>

	* statistics.tcl:  Add procedures for Wilcoxon test and Spearman rank correlation
	  to the export list

2012-06-24  Arjen Markus <[email protected]>
	* decimal.man:     Correct documentation (namespace) for decimal package
	* statistics.tcl:  Add Wilcoxon test and Spearman rank correlation
	  Bumped version to 0.8
	* statistics.test: Add test cases for Wilcoxon test and Spearman rank correlation
	* statistics.man:  Describe procs for Wilcoxon test and Spearman rank correlation
>
>
>
>
>
>

>
|
|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2012-06-25  Arjen Markus <[email protected]>

	* statistics.tcl: Add procedures for Wilcoxon test and Spearman
	  rank correlation to the export list

2012-06-24  Arjen Markus <[email protected]>
	* decimal.man:     Correct documentation (namespace) for decimal package
	* statistics.tcl:  Add Wilcoxon test and Spearman rank correlation
	  Bumped version to 0.8
	* statistics.test: Add test cases for Wilcoxon test and Spearman rank correlation
	* statistics.man:  Describe procs for Wilcoxon test and Spearman rank correlation

Changes to modules/md4/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/md5/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/md5crypt/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/mime/ChangeLog.







1
2
3
4
5
6
7






2013-01-09  Andreas Kupries  <[email protected]>

	* mime.tcl (::mime::buildmessage): [Bug 3565267]: Handle
	* mime.man: possibility of 'errorCode' not set. Version
	* pkgIndex.tcl: bumped to 1.5.6.

2012-08-02  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2013-01-09  Andreas Kupries  <[email protected]>

	* mime.tcl (::mime::buildmessage): [Bug 3565267]: Handle
	* mime.man: possibility of 'errorCode' not set. Version
	* pkgIndex.tcl: bumped to 1.5.6.

2012-08-02  Andreas Kupries  <[email protected]>

Changes to modules/multiplexer/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-11-10  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-11-10  Andreas Kupries  <[email protected]>

Changes to modules/namespacex/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/ncgi/ChangeLog.















1
2
3
4
5
6
7














2012-05-03  Andreas Kupries  <[email protected]>

	* ncgi.tcl: Applied Richard Hipp's patch to extend handling of
	* pkgIndex.tcl: utf characters in [decode]. Extended testsuite.
	* ncgi.man: Used the opportunity to bump the minimum required
	* ncgi.test: Tcl runtime up to 8.4. Bumped package version up
	  to 1.4 to reflect this latter change.
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2013-01-30  Andreas Kupries  <[email protected]>

	* ncgi.man: [Bug 3601995]: Accepted [decode] changes by
	* ncgi.tcl: <[email protected]>. Fixed both missing
	* ncgi.test: acceptance of various ut-8 sequences, and missing
	* pkgIndex.tcl: rejection of bad sequences. Test cases
	  added. Bumped to version 1.4.1.

2012-05-03  Andreas Kupries  <[email protected]>

	* ncgi.tcl: Applied Richard Hipp's patch to extend handling of
	* pkgIndex.tcl: utf characters in [decode]. Extended testsuite.
	* ncgi.man: Used the opportunity to bump the minimum required
	* ncgi.test: Tcl runtime up to 8.4. Bumped package version up
	  to 1.4 to reflect this latter change.

Changes to modules/ncgi/ncgi.man.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[manpage_begin ncgi n 1.4]
[comment {-*- tcl -*- doctools manpage}]
[moddesc   {CGI Support}]
[titledesc {Procedures to manipulate CGI values.}]
[category  {CGI programming}]
[require Tcl 8.2]
[require ncgi [opt 1.4]]
[description]
[para]

The [package ncgi] package provides commands that manipulate CGI
values.  These are values that come from Web forms and are processed
either by CGI scripts or web pages with embedded Tcl code.  Use the
[package ncgi] package to query these values, set and get cookies, and
|




|
|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
[manpage_begin ncgi n 1.4.1]
[comment {-*- tcl -*- doctools manpage}]
[moddesc   {CGI Support}]
[titledesc {Procedures to manipulate CGI values.}]
[category  {CGI programming}]
[require Tcl 8.4]
[require ncgi [opt 1.4.1]]
[description]
[para]

The [package ncgi] package provides commands that manipulate CGI
values.  These are values that come from Web forms and are processed
either by CGI scripts or web pages with embedded Tcl code.  Use the
[package ncgi] package to query these values, set and get cookies, and

Changes to modules/ncgi/ncgi.tcl.

24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# repeated.  The names and values are encoded, and this module takes care
# of decoding them.

# We use newer string routines
package require Tcl 8.4
package require fileutil ; # Required by importFile.

package provide ncgi 1.4

namespace eval ::ncgi {

    # "query" holds the raw query (i.e., form) data
    # This is treated as a cache, too, so you can call ncgi::query more than
    # once








|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# repeated.  The names and values are encoded, and this module takes care
# of decoding them.

# We use newer string routines
package require Tcl 8.4
package require fileutil ; # Required by importFile.

package provide ncgi 1.4.1

namespace eval ::ncgi {

    # "query" holds the raw query (i.e., form) data
    # This is treated as a cache, too, so you can call ncgi::query more than
    # once

265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281

proc ncgi::decode {str} {
    # rewrite "+" back to space
    # protect \ from quoting another '\'
    set str [string map [list + { } "\\" "\\\\" \[ \\\[ \] \\\]] $str]

    # prepare to process all %-escapes
    regsub -all -- {%([A-Fa-f][A-Fa-f0-9])%([A-Fa-f][A-Fa-f0-9])%([A-Fa-f][A-Fa-f0-9])} \
	$str {[encoding convertfrom utf-8 [DecodeHex \1\2\3]]} str
    regsub -all -- {%([A-Fa-f][A-Fa-f0-9])%([A-Fa-f][A-Fa-f0-9])} \
	$str {[encoding convertfrom utf-8 [DecodeHex \1\2]]} str
    regsub -all -- {%([0-7][A-Fa-f0-9])} $str {\\u00\1} str

    # process \u unicode mapped chars
    return [subst -novar $str]
}








|

|







265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281

proc ncgi::decode {str} {
    # rewrite "+" back to space
    # protect \ from quoting another '\'
    set str [string map [list + { } "\\" "\\\\" \[ \\\[ \] \\\]] $str]

    # prepare to process all %-escapes
    regsub -all -- {%([Ee][A-Fa-f0-9])%([89ABab][A-Fa-f0-9])%([89ABab][A-Fa-f0-9])} \
	$str {[encoding convertfrom utf-8 [DecodeHex \1\2\3]]} str
    regsub -all -- {%([CDcd][A-Fa-f0-9])%([89ABab][A-Fa-f0-9])}                     \
	$str {[encoding convertfrom utf-8 [DecodeHex \1\2]]} str
    regsub -all -- {%([0-7][A-Fa-f0-9])} $str {\\u00\1} str

    # process \u unicode mapped chars
    return [subst -novar $str]
}

Changes to modules/ncgi/ncgi.test.

124
125
126
127
128
129
130
















131
132
133
134
135
136
137
    ncgi::decode {aik%C5%ABloa}
} "aik\u016Bloa" ; # u+macron

test ncgi-3.6 {ncgi::decode} {
    ncgi::decode {paran%C3%A1}
} "paran\u00E1" ; # a+acute

















test ncgi-4.1 {ncgi::encode} {
    ncgi::encode abcdef0123
} abcdef0123

test ncgi-4.2 {ncgi::encode} {
    ncgi::encode "\[abc\]def\$0123\\x"
} {%5Babc%5Ddef%240123%5Cx}







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
    ncgi::decode {aik%C5%ABloa}
} "aik\u016Bloa" ; # u+macron

test ncgi-3.6 {ncgi::decode} {
    ncgi::decode {paran%C3%A1}
} "paran\u00E1" ; # a+acute

test ncgi-3.7 {ncgi::decode, bug 3601995} {
    ncgi::decode {%C4%85}
} "\u0105" ; # a+ogonek

test ncgi-3.8 {ncgi::decode, bug 3601995} {
    ncgi::decode {%E2%80%A0}
} "\u2020" ; # dagger

test ncgi-3.9 {ncgi::decode, bug 3601995} {
    ncgi::decode {%E2%A0%90}
} "\u2810" ; # a braille pattern

test ncgi-3.10 {ncgi::decode, bug 3601995} {
    ncgi::decode {%E2%B1}
} "%E2%B1" ; # missing byte trailing %A0, do not accept/decode, pass through.

test ncgi-4.1 {ncgi::encode} {
    ncgi::encode abcdef0123
} abcdef0123

test ncgi-4.2 {ncgi::encode} {
    ncgi::encode "\[abc\]def\$0123\\x"
} {%5Babc%5Ddef%240123%5Cx}

Changes to modules/ncgi/pkgIndex.tcl.

1
2
if {![package vsatisfies [package provide Tcl] 8.4]} {return}
package ifneeded ncgi 1.4 [list source [file join $dir ncgi.tcl]]

|
1
2
if {![package vsatisfies [package provide Tcl] 8.4]} {return}
package ifneeded ncgi 1.4.1 [list source [file join $dir ncgi.tcl]]

Changes to modules/nmea/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/nns/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/nntp/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/ntp/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/ooutil/ChangeLog.







1
2
3
4
5
6
7






2013-01-30  Andreas Kupries  <[email protected]>

	* ooutil.man: Added more utilities to support class variables,
	* ooutil.tcl: class methods, and singleton classes. Packed version
	* pkgIndex.tcl: bumped to 1.1 for all these new features.

2011-12-13  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2013-01-30  Andreas Kupries  <[email protected]>

	* ooutil.man: Added more utilities to support class variables,
	* ooutil.tcl: class methods, and singleton classes. Packed version
	* pkgIndex.tcl: bumped to 1.1 for all these new features.

2011-12-13  Andreas Kupries  <[email protected]>

Changes to modules/otp/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/page/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-11-10  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-11-10  Andreas Kupries  <[email protected]>

Changes to modules/pki/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-11-07  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-11-07  Andreas Kupries  <[email protected]>

Changes to modules/pluginmgr/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/png/ChangeLog.







1
2
3
4
5
6
7






2012-07-09  Aaron Faupell <[email protected]>

	* png.tcl: add capability to read and write images from color lists
        * png.tcl: make crc package optional in imageInfo

2011-12-13  Andreas Kupries  <[email protected]>

>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2012-07-09  Aaron Faupell <[email protected]>

	* png.tcl: add capability to read and write images from color lists
        * png.tcl: make crc package optional in imageInfo

2011-12-13  Andreas Kupries  <[email protected]>

Changes to modules/png/pkgIndex.tcl.

1
2
if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded png 0.1.2 [list source [file join $dir png.tcl]]

|
1
2
if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded png 0.2 [list source [file join $dir png.tcl]]

Changes to modules/png/png.tcl.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# png.tcl --
#
#       Querying and modifying PNG image files.
#
# Copyright (c) 2004    Aaron Faupell <[email protected]>
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# 
# RCS: @(#) $Id: png.tcl,v 1.11 2012/07/09 16:35:04 afaupell Exp $

package provide png 0.1.2

namespace eval ::png {}

proc ::png::_openPNG {file {mode r}} {
    set fh [open $file $mode]
    fconfigure $fh -encoding binary -translation binary -eofchar {}
    if {[read $fh 8] != "\x89PNG\r\n\x1a\n"} { close $fh; return -code error "not a png file" }




|






|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# png.tcl --
#
#       Querying and modifying PNG image files.
#
# Copyright (c) 2004-2012 Aaron Faupell <[email protected]>
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# 
# RCS: @(#) $Id: png.tcl,v 1.11 2012/07/09 16:35:04 afaupell Exp $

package provide png 0.2

namespace eval ::png {}

proc ::png::_openPNG {file {mode r}} {
    set fh [open $file $mode]
    fconfigure $fh -encoding binary -translation binary -eofchar {}
    if {[read $fh 8] != "\x89PNG\r\n\x1a\n"} { close $fh; return -code error "not a png file" }

Changes to modules/pop3/ChangeLog.







1
2
3
4
5
6
7






2012-01-10  Andreas Kupries  <[email protected]>

	* pop3.test: Requiring Tcl 8.4 here as well.

	* pop3.tcl: [Bug 3471474]: Fixed bug where the socketcmd was not
	* pop3.man: treated as cmdprefix as documented, but as command
	* pkgIndex.tcl: name. Dropped supported for 8.2 and moved forward
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2012-01-10  Andreas Kupries  <[email protected]>

	* pop3.test: Requiring Tcl 8.4 here as well.

	* pop3.tcl: [Bug 3471474]: Fixed bug where the socketcmd was not
	* pop3.man: treated as cmdprefix as documented, but as command
	* pkgIndex.tcl: name. Dropped supported for 8.2 and moved forward

Changes to modules/pop3/pop3.man.

44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

[opt_def -msex boolean]

Setting this option tells the package that the server we are talking
to is an MS Exchange server (which has some oddities we have to work
around). The default is [const False].

[opt_def -retr-mode retr|list|slow].

The retrieval mode determines how exactly messages are read from the
server.

The allowed values are [const retr], [const list] and [const slow].
The default is [const retr]. See [cmd ::pop3::retrieve] for more
information.







|







44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

[opt_def -msex boolean]

Setting this option tells the package that the server we are talking
to is an MS Exchange server (which has some oddities we have to work
around). The default is [const False].

[opt_def -retr-mode retr|list|slow]

The retrieval mode determines how exactly messages are read from the
server.

The allowed values are [const retr], [const list] and [const slow].
The default is [const retr]. See [cmd ::pop3::retrieve] for more
information.

Changes to modules/pop3d/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-11-10  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-11-10  Andreas Kupries  <[email protected]>

Changes to modules/profiler/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/pt/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-11-09  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-11-09  Andreas Kupries  <[email protected]>

Changes to modules/rc4/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/rcs/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/report/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/rest/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/ripemd/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/sasl/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/sha1/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/simulation/ChangeLog.







1
2
3
4
5
6
7






2012-08-15  Arjen Markus  <[email protected]>
	* random.tcl: Correct the normal random number generator (missing factor 2 - reported by Jochem Snuverink)
	* pkgIndex.tcl: bumped version to 0.3.1 for "random"

2011-12-13  Andreas Kupries  <[email protected]>

	*
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2012-08-15  Arjen Markus  <[email protected]>
	* random.tcl: Correct the normal random number generator (missing factor 2 - reported by Jochem Snuverink)
	* pkgIndex.tcl: bumped version to 0.3.1 for "random"

2011-12-13  Andreas Kupries  <[email protected]>

	*

Changes to modules/smtpd/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-04-11  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-04-11  Andreas Kupries  <[email protected]>

Changes to modules/snit/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/soundex/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/stooop/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/stringprep/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/struct/ChangeLog.














1
2
3
4
5
6
7













2013-01-08  Andreas Kupries  <[email protected]>

	* pkgIndex.tcl: Fixed package require mismatch for use of TclOO
	* queue.man: in Tcl 8.6+. This is TclOO v1 (major version change).
	* queue.tcl: Now accepting 0.6.1+ and 1+. Versions bumped to
	* queue_oo.tcl: 1.4.4 and 1.5.3 respectively.
	* stack.man:
>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2013-01-21  Andreas Kupries  <[email protected]>

	* queue.tcl: Rewritten, simplified. The 8.5 requisite means
	* queue_oo.tcl: that we have extended requirement syntax allowing
	* stack.tcl: us to jump the major version barrier without fuss.
	* stack_oo.tcl:

2013-01-08  Andreas Kupries  <[email protected]>

	* pkgIndex.tcl: Fixed package require mismatch for use of TclOO
	* queue.man: in Tcl 8.6+. This is TclOO v1 (major version change).
	* queue.tcl: Now accepting 0.6.1+ and 1+. Versions bumped to
	* queue_oo.tcl: 1.4.4 and 1.5.3 respectively.
	* stack.man:

Changes to modules/struct/graph1.man.

1
2
3
4
5
6
7
8
9
[comment {-*- tcl -*-}]
[manpage_begin {struct::graph v1} n 1.2.1]
[copyright {2002 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate directed graph objects}]
[category  {Data structures}]
[require Tcl 8.2]
[require struct::graph [opt 1.2.1]]
[description]

|







1
2
3
4
5
6
7
8
9
[comment {-*- tcl -*-}]
[manpage_begin {struct::graph_v1} n 1.2.1]
[copyright {2002 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate directed graph objects}]
[category  {Data structures}]
[require Tcl 8.2]
[require struct::graph [opt 1.2.1]]
[description]

Changes to modules/struct/matrix1.man.

1
2
3
4
5
6
7
8
9
[comment {-*- tcl -*-}]
[manpage_begin {struct::matrix v1} n 1.2.1]
[copyright {2002 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate matrix objects}]
[category  {Data structures}]
[require Tcl 8.2]
[require struct::matrix [opt 1.2.1]]
[description]

|







1
2
3
4
5
6
7
8
9
[comment {-*- tcl -*-}]
[manpage_begin {struct::matrix_v1} n 1.2.1]
[copyright {2002 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate matrix objects}]
[category  {Data structures}]
[require Tcl 8.2]
[require struct::matrix [opt 1.2.1]]
[description]

Changes to modules/struct/queue.tcl.

39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
	    if {[catch {package require tcllibc}]} {return 0}
	    set r [llength [info commands ::struct::queue_critcl]]
	}
	tcl {
	    variable selfdir
	    if {
		[package vsatisfies [package provide Tcl] 8.5] &&
		(![catch {package require TclOO 0.6.1}] ||
		 ![catch {package require TclOO 1}])
	    } {
		source [file join $selfdir queue_oo.tcl]
	    } else {
		source [file join $selfdir queue_tcl.tcl]
	    }
	    set r 1
	}







<
|







39
40
41
42
43
44
45

46
47
48
49
50
51
52
53
	    if {[catch {package require tcllibc}]} {return 0}
	    set r [llength [info commands ::struct::queue_critcl]]
	}
	tcl {
	    variable selfdir
	    if {
		[package vsatisfies [package provide Tcl] 8.5] &&

		![catch {package require TclOO 0.6.1-}]
	    } {
		source [file join $selfdir queue_oo.tcl]
	    } else {
		source [file join $selfdir queue_tcl.tcl]
	    }
	    set r 1
	}

Changes to modules/struct/queue_oo.tcl.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# queue.tcl --
#
#	Queue implementation for Tcl.
#
# Copyright (c) 1998-2000 by Ajuba Solutions.
# Copyright (c) 2008-2010 Andreas Kupries
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# 
# RCS: @(#) $Id: queue_oo.tcl,v 1.2 2010/09/10 17:31:04 andreas_kupries Exp $

if {[catch {package require TclOO 0.6.1}]} {
    package require TclOO 1
}

# Cleanup first
catch {namespace delete ::struct::queue::queue_oo}
catch {rename           ::struct::queue::queue_oo {}}
oo::class create ::struct::queue::queue_oo {

    variable qat qret qadd












|
|
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14

15
16
17
18
19
20
21
# queue.tcl --
#
#	Queue implementation for Tcl.
#
# Copyright (c) 1998-2000 by Ajuba Solutions.
# Copyright (c) 2008-2010 Andreas Kupries
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# 
# RCS: @(#) $Id: queue_oo.tcl,v 1.2 2010/09/10 17:31:04 andreas_kupries Exp $

package require Tcl   8.5
package require TclOO 0.6.1- ; # This includes 1 and higher.


# Cleanup first
catch {namespace delete ::struct::queue::queue_oo}
catch {rename           ::struct::queue::queue_oo {}}
oo::class create ::struct::queue::queue_oo {

    variable qat qret qadd

Changes to modules/struct/stack.tcl.

39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
	    if {[catch {package require tcllibc}]} {return 0}
	    set r [llength [info commands ::struct::stack_critcl]]
	}
	tcl {
	    variable selfdir
	    if {
		[package vsatisfies [package provide Tcl] 8.5] &&
		(![catch {package require TclOO 0.6.1}] ||
		 ![catch {package require TclOO 1}])
	    } {
		source [file join $selfdir stack_oo.tcl]
	    } else {
		source [file join $selfdir stack_tcl.tcl]
	    }
	    set r 1
	}







<
|







39
40
41
42
43
44
45

46
47
48
49
50
51
52
53
	    if {[catch {package require tcllibc}]} {return 0}
	    set r [llength [info commands ::struct::stack_critcl]]
	}
	tcl {
	    variable selfdir
	    if {
		[package vsatisfies [package provide Tcl] 8.5] &&

		![catch {package require TclOO 0.6.1-} mx]
	    } {
		source [file join $selfdir stack_oo.tcl]
	    } else {
		source [file join $selfdir stack_tcl.tcl]
	    }
	    set r 1
	}

Changes to modules/struct/stack_oo.tcl.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# stack.tcl --
#
#	Stack implementation for Tcl 8.6+, or 8.5 + TclOO
#
# Copyright (c) 2010 Andreas Kupries
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# 
# RCS: @(#) $Id: stack_oo.tcl,v 1.4 2010/09/10 17:31:04 andreas_kupries Exp $

if {[catch {package require TclOO 0.6.1}]} {
    package require TclOO 1
}

# Cleanup first
catch {namespace delete ::struct::stack::stack_oo}
catch {rename           ::struct::stack::stack_oo {}}

oo::class create ::struct::stack::stack_oo {












|
|
<







1
2
3
4
5
6
7
8
9
10
11
12
13

14
15
16
17
18
19
20
# stack.tcl --
#
#	Stack implementation for Tcl 8.6+, or 8.5 + TclOO
#
# Copyright (c) 2010 Andreas Kupries
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# 
# RCS: @(#) $Id: stack_oo.tcl,v 1.4 2010/09/10 17:31:04 andreas_kupries Exp $

package require Tcl   8.5
package require TclOO 0.6.1- ; # This includes 1 and higher.


# Cleanup first
catch {namespace delete ::struct::stack::stack_oo}
catch {rename           ::struct::stack::stack_oo {}}

oo::class create ::struct::stack::stack_oo {

Changes to modules/struct/struct_tree1.man.

1
2
3
4
5
6
7
8
9
[comment {-*- tcl -*-}]
[manpage_begin {struct::tree v1} n 1.2.2]
[copyright {2002 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate tree objects}]
[category  {Data structures}]
[require Tcl 8.2]
[require struct::tree [opt 1.2.2]]
[description]

|







1
2
3
4
5
6
7
8
9
[comment {-*- tcl -*-}]
[manpage_begin {struct::tree_v1} n 1.2.2]
[copyright {2002 Andreas Kupries <[email protected]>}]
[moddesc   {Tcl Data Structures}]
[titledesc {Create and manipulate tree objects}]
[category  {Data structures}]
[require Tcl 8.2]
[require struct::tree [opt 1.2.2]]
[description]

Changes to modules/tar/ChangeLog.







1
2
3
4
5
6
7






2012-09-11  Andreas Kupries  <[email protected]>

	* tar.tcl (seekorskip): Fixed seekorskip which prevented its use
	* pkgIndex.tcl: from a non-seekable channel, like stdin. The issue
	  was that the original attempt to seek before skipping not just
	  failed, but apparently still moved the read pointer in some way
	  which skipped over irreplacable input, breaking the next call of
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2012-09-11  Andreas Kupries  <[email protected]>

	* tar.tcl (seekorskip): Fixed seekorskip which prevented its use
	* pkgIndex.tcl: from a non-seekable channel, like stdin. The issue
	  was that the original attempt to seek before skipping not just
	  failed, but apparently still moved the read pointer in some way
	  which skipped over irreplacable input, breaking the next call of

Changes to modules/tepam/ChangeLog.







1
2
3
4
5
6
7






2012/05/07  Andreas Drollinger  <[email protected]>
 
	* TEPAM version 0.4.0
	* Add the new text procedure argument type and the text multi line data 
	  entry widget. Add test and documentation support for these new features:
	  - tepam.tcl
	  - adbox_all.test, adbox_widgets.test, proc_call_arg_type.test
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2012/05/07  Andreas Drollinger  <[email protected]>
 
	* TEPAM version 0.4.0
	* Add the new text procedure argument type and the text multi line data 
	  entry widget. Add test and documentation support for these new features:
	  - tepam.tcl
	  - adbox_all.test, adbox_widgets.test, proc_call_arg_type.test

Changes to modules/term/ChangeLog.







1
2
3
4
5
6
7






2013-01-08  Andreas Kupries  <[email protected]>

	* ansi/code/ctrl.tcl: Bumped to version 0.1.2. Moved character
	  definition around to prevent mis-interpretation as a bad
	  continuation line by static syntax checkers.

2011-12-13  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2013-01-08  Andreas Kupries  <[email protected]>

	* ansi/code/ctrl.tcl: Bumped to version 0.1.2. Moved character
	  definition around to prevent mis-interpretation as a bad
	  continuation line by static syntax checkers.

2011-12-13  Andreas Kupries  <[email protected]>

Changes to modules/textutil/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-12-13  Andreas Kupries  <aku@hephaistos>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-12-13  Andreas Kupries  <aku@hephaistos>

Changes to modules/tie/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/tiff/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/transfer/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/treeql/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/try/ChangeLog.







1
2
3
4
5
6
7






2012-06-25  Andreas Kupries  <[email protected]>

	* try.man: Renamed to tcllib_try.man to prevent clash with Tcl
	  core manpage. Effectively removed.
	* tcllib_try.man: Effectively added, new name of try.man.

2011-12-13  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2012-06-25  Andreas Kupries  <[email protected]>

	* try.man: Renamed to tcllib_try.man to prevent clash with Tcl
	  core manpage. Effectively removed.
	* tcllib_try.man: Effectively added, new name of try.man.

2011-12-13  Andreas Kupries  <[email protected]>

Changes to modules/uev/ChangeLog.







1
2
3
4
5
6
7






2012-04-09  Andreas Kupries  <[email protected]>

	* uevent.man: Fixed typo in variable name (counter / tcounter).
	* uevent.tcl: Bumped version to 0.3.1. Updated documentation.
	* pkgIndex.tcl:

2012-03-30  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2012-04-09  Andreas Kupries  <[email protected]>

	* uevent.man: Fixed typo in variable name (counter / tcounter).
	* uevent.tcl: Bumped version to 0.3.1. Updated documentation.
	* pkgIndex.tcl:

2012-03-30  Andreas Kupries  <[email protected]>

Changes to modules/units/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/uri/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-03-22  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-03-22  Andreas Kupries  <[email protected]>

Changes to modules/uuid/ChangeLog.







1
2
3
4
5
6
7






2012-11-19  Andreas Kupries  <[email protected]>

	* uuid.tcl (::uuid::generate_tcl): Accepted patch by Sean Woods
	* uuid.man: caching the host information part of the uuid. Avoids
	* pkgIndex.tcl: hammering the network stack for hostname and
	  related information. Bumped version to 1.0.2.

>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2012-11-19  Andreas Kupries  <[email protected]>

	* uuid.tcl (::uuid::generate_tcl): Accepted patch by Sean Woods
	* uuid.man: caching the host information part of the uuid. Avoids
	* pkgIndex.tcl: hammering the network stack for hostname and
	  related information. Bumped version to 1.0.2.

Changes to modules/valtype/ChangeLog.







1
2
3
4
5
6
7






2012-06-06  Andreas Kupries  <[email protected]>

	* iban.tcl: [Patch 3532308]: Applied patch by Max Jarek to
	* iban.test: update the code to the IBAN Registry version 35.
	* iban.man: Bumped package version to 1.1.
	* pkgIndex.tcl:

>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2012-06-06  Andreas Kupries  <[email protected]>

	* iban.tcl: [Patch 3532308]: Applied patch by Max Jarek to
	* iban.test: update the code to the IBAN Registry version 35.
	* iban.man: Bumped package version to 1.1.
	* pkgIndex.tcl:

Changes to modules/virtchannel_base/ChangeLog.







1
2
3
4
5
6
7






2012-10-05  Andreas Kupries <[email protected]>

	* cat.tcl (read): Fixed bugs in the reader. Bad check of buffer
	* pkgIndex.tcl: length, and buffer length was not taken into
	  account for the next read after an incomplete one. Version
	  bumped to 1.0.2.

>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2012-10-05  Andreas Kupries <[email protected]>

	* cat.tcl (read): Fixed bugs in the reader. Bad check of buffer
	* pkgIndex.tcl: length, and buffer length was not taken into
	  account for the next read after an incomplete one. Version
	  bumped to 1.0.2.

Changes to modules/virtchannel_core/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-02-21  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-02-21  Andreas Kupries  <[email protected]>

Changes to modules/virtchannel_transform/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-02-21  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-02-21  Andreas Kupries  <[email protected]>

Changes to modules/wip/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/yaml/ChangeLog.







1
2
3
4
5
6
7






2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2011-12-13  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.14 ========================
	* 

2011-01-24  Andreas Kupries  <[email protected]>

Changes to modules/zip/ChangeLog.







1
2
3
4
5






2013-01-28  Andreas Kupries <[email protected]>

	* decode.tcl: New module and packages. De- and
	* encode.tcl: encoding zipfiles.
	* pkgIndex.tcl: 
>
>
>
>
>
>





1
2
3
4
5
6
7
8
9
10
11
2013-02-01  Andreas Kupries  <[email protected]>

	*
	* Released and tagged Tcllib 1.15 ========================
	* 

2013-01-28  Andreas Kupries <[email protected]>

	* decode.tcl: New module and packages. De- and
	* encode.tcl: encoding zipfiles.
	* pkgIndex.tcl: 

Changes to sak.tcl.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/sh
# -*- tcl -*- \
exec tclsh "$0" ${1+"$@"}

# --------------------------------------------------------------
# Perform various checks and operations on the distribution.
# SAK = Swiss Army Knife.

set distribution   [file dirname [info script]]
lappend auto_path  [file join $distribution modules]

set critcldefault {}
set critclnotes   {}
set dist_excluded {}

proc package_name    {text} {global package_name    ; set package_name    $text}
proc package_version {text} {global package_version ; set package_version $text}









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/sh
# -*- tcl -*- \
exec tclsh "$0" ${1+"$@"}

# --------------------------------------------------------------
# Perform various checks and operations on the distribution.
# SAK = Swiss Army Knife.

set distribution   [file dirname [info script]]
set auto_path      [linsert $auto_path 0 [file join $distribution modules]]

set critcldefault {}
set critclnotes   {}
set dist_excluded {}

proc package_name    {text} {global package_name    ; set package_name    $text}
proc package_version {text} {global package_version ; set package_version $text}

Changes to support/installation/modules.tcl.

41
42
43
44
45
46
47

48
49
50
51
52
53
54
Module  base64      _tcl  _man  _null
Module  bee         _tcl  _man  _null
Module  bench       _tcl _null  _null
Module  bibtex      _tcl  _man  _exa
Module  blowfish    _tcl  _man  _null
Module  cache       _tcl  _man  _null
Module  calendar     _tci _man  _null

Module  cmdline     _tcl  _man  _null
Module  comm        _tcl  _man  _null
Module  control      _tci _man  _null
Module  coroutine   _tcl _null  _null
Module  counter     _tcl  _man  _null
Module  crc         _tcl  _man  _null
Module  csv         _tcl  _man _exa







>







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Module  base64      _tcl  _man  _null
Module  bee         _tcl  _man  _null
Module  bench       _tcl _null  _null
Module  bibtex      _tcl  _man  _exa
Module  blowfish    _tcl  _man  _null
Module  cache       _tcl  _man  _null
Module  calendar     _tci _man  _null
Module  clock       _tcl  _man _null
Module  cmdline     _tcl  _man  _null
Module  comm        _tcl  _man  _null
Module  control      _tci _man  _null
Module  coroutine   _tcl _null  _null
Module  counter     _tcl  _man  _null
Module  crc         _tcl  _man  _null
Module  csv         _tcl  _man _exa

Changes to support/installation/version.tcl.

1
2
3
4
5
6
7
8
package_version 1.14
package_name    tcllib

dist_exclude    config
dist_exclude    modules/ftp/example
dist_exclude    modules/ftpd/examples
dist_exclude    modules/stats
dist_exclude    modules/fileinput
|







1
2
3
4
5
6
7
8
package_version 1.15
package_name    tcllib

dist_exclude    config
dist_exclude    modules/ftp/example
dist_exclude    modules/ftpd/examples
dist_exclude    modules/stats
dist_exclude    modules/fileinput

Changes to support/releases/PACKAGES.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25


26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
@@ RELEASE 1.14

S3                                 1.0.0
SASL                               1.3.2
SASL::NTLM                         1.1.1
SASL::XGoogleToken                 1.0.1
aes                                1.0.2
ascii85                            1.0
asn                                0.8.4
autoproxy                          1.5.1
base32                             0.1
base32::core                       0.1
base32::hex                        0.1
base64                             2.4.2
bee                                0.1
bench                              0.4
bench::in                          0.1
bench::out::csv                    0.1.2
bench::out::text                   0.1.2
bibtex                             0.5
blowfish                           1.0.4
cache::async                       0.3
calendar                           0.2
char                               1
cksum                              1.1.3


cmdline                            1.3.3
comm                               4.6.2
configuration                      1
control                            0.1.3
coroutine                          1.1
coroutine::auto                    1.1
counter                            2.0.4
crc16                              1.1.1
crc32                              1.3.1
csv                                0.7.3
des                                1.1.0
dns                                1.3.3
docstrip                           1.2
docstrip::util                     1.3
doctools                           1.4.13
doctools::changelog                1
doctools::config                   0.1
doctools::cvs                      1
doctools::html                     0.1
doctools::html::cssdefaults        0.1
doctools::idx                      1.0.4
doctools::idx                      2
|





|


|















>
>







|

|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
@@ RELEASE 1.15

S3                                 1.0.0
SASL                               1.3.2
SASL::NTLM                         1.1.1
SASL::XGoogleToken                 1.0.1
aes                                1.1
ascii85                            1.0
asn                                0.8.4
autoproxy                          1.5.3
base32                             0.1
base32::core                       0.1
base32::hex                        0.1
base64                             2.4.2
bee                                0.1
bench                              0.4
bench::in                          0.1
bench::out::csv                    0.1.2
bench::out::text                   0.1.2
bibtex                             0.5
blowfish                           1.0.4
cache::async                       0.3
calendar                           0.2
char                               1
cksum                              1.1.3
clock::iso8601                     0.1
clock::rfc2822                     0.1
cmdline                            1.3.3
comm                               4.6.2
configuration                      1
control                            0.1.3
coroutine                          1.1
coroutine::auto                    1.1
counter                            2.0.4
crc16                              1.1.2
crc32                              1.3.1
csv                                0.8
des                                1.1.0
dns                                1.3.3
docstrip                           1.2
docstrip::util                     1.3
doctools                           1.4.14
doctools::changelog                1
doctools::config                   0.1
doctools::cvs                      1
doctools::html                     0.1
doctools::html::cssdefaults        0.1
doctools::idx                      1.0.4
doctools::idx                      2
81
82
83
84
85
86
87
88

89
90
91
92
93
94
95
96
97
98
99

100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137

138
139
140
141
142
143
144
145
146
147
doctools::toc::export::wiki        0.1
doctools::toc::import              0.1
doctools::toc::import::doctoc      0.1
doctools::toc::import::json        0.1
doctools::toc::parse               0.1
doctools::toc::structure           0.1
exif                               1.1.2
fileutil                           1.14.4

fileutil::magic::cfront            1.0
fileutil::magic::cgen              1.0
fileutil::magic::filetype          1.0.2
fileutil::magic::mimetype          1.0.2
fileutil::magic::rt                1.0
fileutil::multi                    0.1
fileutil::multi::op                0.5.3
fileutil::traverse                 0.4.2
ftp                                2.4.11
ftp::geturl                        0.2.1
ftpd                               1.2.6

gpx                                1
grammar::aycock                    1.0
grammar::aycock::debug             1.0
grammar::aycock::runtime           1.0
grammar::fa                        0.4
grammar::fa::dacceptor             0.1.1
grammar::fa::dexec                 0.2
grammar::fa::op                    0.4.1
grammar::me::cpu                   0.2
grammar::me::cpu::core             0.2
grammar::me::cpu::gasm             0.1
grammar::me::tcl                   0.1
grammar::me::util                  0.1
grammar::peg                       0.1
grammar::peg::interp               0.1.1
hook                               0.1
html                               1.4
htmlparse                          1.2
huddle                             0.1.5
ident                              0.42
imap4                              0.3
inifile                            0.2.4
interp                             0.1.2
interp::delegate::method           0.2
interp::delegate::proc             0.2
ip                                 1.2
irc                                0.6.1
javascript                         1.0.2
jpeg                               0.4.0
json                               1.1.2
json::write                        1.0.1
lambda                             1
ldap                               1.8
ldapx                              1.0
log                                1.3
logger                             0.9
logger::appender                   1.3
logger::utils                      1.3

map::slippy                        0.4
map::slippy::cache                 0.2
map::slippy::fetcher               0.2
mapproj                            1.0
math                               1.2.5
math::bigfloat                     1.2.2
math::bigfloat                     2.0.1
math::bignum                       3.1.1
math::calculus                     0.7.1
math::calculus::symdiff            1.0







|
>







|



>













|



|


|
|








|




|


>
|

|







83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
doctools::toc::export::wiki        0.1
doctools::toc::import              0.1
doctools::toc::import::doctoc      0.1
doctools::toc::import::json        0.1
doctools::toc::parse               0.1
doctools::toc::structure           0.1
exif                               1.1.2
fileutil                           1.14.5
fileutil::decode                   0.1
fileutil::magic::cfront            1.0
fileutil::magic::cgen              1.0
fileutil::magic::filetype          1.0.2
fileutil::magic::mimetype          1.0.2
fileutil::magic::rt                1.0
fileutil::multi                    0.1
fileutil::multi::op                0.5.3
fileutil::traverse                 0.4.3
ftp                                2.4.11
ftp::geturl                        0.2.1
ftpd                               1.2.6
generator                          0.1
gpx                                1
grammar::aycock                    1.0
grammar::aycock::debug             1.0
grammar::aycock::runtime           1.0
grammar::fa                        0.4
grammar::fa::dacceptor             0.1.1
grammar::fa::dexec                 0.2
grammar::fa::op                    0.4.1
grammar::me::cpu                   0.2
grammar::me::cpu::core             0.2
grammar::me::cpu::gasm             0.1
grammar::me::tcl                   0.1
grammar::me::util                  0.1
grammar::peg                       0.2
grammar::peg::interp               0.1.1
hook                               0.1
html                               1.4
htmlparse                          1.2.1
huddle                             0.1.5
ident                              0.42
imap4                              0.4
inifile                            0.2.5
interp                             0.1.2
interp::delegate::method           0.2
interp::delegate::proc             0.2
ip                                 1.2
irc                                0.6.1
javascript                         1.0.2
jpeg                               0.4.0
json                               1.1.2
json::write                        1.0.2
lambda                             1
ldap                               1.8
ldapx                              1.0
log                                1.3
logger                             0.9.3
logger::appender                   1.3
logger::utils                      1.3
map::geocode::nominatim            0.1
map::slippy                        0.5
map::slippy::cache                 0.2
map::slippy::fetcher               0.3
mapproj                            1.0
math                               1.2.5
math::bigfloat                     1.2.2
math::bigfloat                     2.0.1
math::bignum                       3.1.1
math::calculus                     0.7.1
math::calculus::symdiff            1.0
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
math::machineparameters            0.1
math::numtheory                    1.0
math::optimize                     1.0
math::polynomials                  1.0.1
math::rationalfunctions            1.0.1
math::roman                        1.0
math::special                      0.2.2
math::statistics                   0.7.0
md4                                1.0.5
md5                                1.4.4
md5                                2.0.7
md5crypt                           1.1.0
mime                               1.5.4
multiplexer                        0.2
nameserv                           0.4.2
nameserv::auto                     0.3
nameserv::common                   0.1
nameserv::server                   0.3.2
namespacex                         0.1
ncgi                               1.3.2
nmea                               1.0.0
nntp                               0.2.1
oo::util                           1
otp                                1.0.0
page::analysis::peg::emodes        0.1
page::analysis::peg::minimize      0.1
page::analysis::peg::reachable     0.1
page::analysis::peg::realizable    0.1
page::compiler::peg::mecpu         0.1.1
page::config::peg                  0.1







|




|






|


|







161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
math::machineparameters            0.1
math::numtheory                    1.0
math::optimize                     1.0
math::polynomials                  1.0.1
math::rationalfunctions            1.0.1
math::roman                        1.0
math::special                      0.2.2
math::statistics                   0.8.0
md4                                1.0.5
md5                                1.4.4
md5                                2.0.7
md5crypt                           1.1.0
mime                               1.5.6
multiplexer                        0.2
nameserv                           0.4.2
nameserv::auto                     0.3
nameserv::common                   0.1
nameserv::server                   0.3.2
namespacex                         0.1
ncgi                               1.4.1
nmea                               1.0.0
nntp                               0.2.1
oo::util                           1.1
otp                                1.0.0
page::analysis::peg::emodes        0.1
page::analysis::peg::minimize      0.1
page::analysis::peg::reachable     0.1
page::analysis::peg::realizable    0.1
page::compiler::peg::mecpu         0.1.1
page::config::peg                  0.1
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
page::writer::null                 0.1
page::writer::peg                  0.1
page::writer::ser                  0.1
page::writer::tpc                  0.1
page::writer::tree                 0.1
paths                              1
picoirc                            0.5.1
pki                                0.2
pluginmgr                          0.3
png                                0.1.2
pop3                               1.8
pop3d                              1.1.0
pop3d::dbox                        1.0.2
pop3d::udb                         1.1
profiler                           0.3
pt::ast                            1.1
pt::cparam::configuration::critcl  1.0.1
pt::parse::peg                     1







|

|
|







220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
page::writer::null                 0.1
page::writer::peg                  0.1
page::writer::ser                  0.1
page::writer::tpc                  0.1
page::writer::tree                 0.1
paths                              1
picoirc                            0.5.1
pki                                0.6
pluginmgr                          0.3
png                                0.2
pop3                               1.9
pop3d                              1.1.0
pop3d::dbox                        1.0.2
pop3d::udb                         1.1
profiler                           0.3
pt::ast                            1.1
pt::cparam::configuration::critcl  1.0.1
pt::parse::peg                     1
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
ripemd128                          1.0.4
ripemd160                          1.0.4
sha1                               1.1.0
sha1                               2.0.3
sha256                             1.0.3
simulation::annealing              0.2
simulation::montecarlo             0.1
simulation::random                 0.3
smtp                               1.4.5
smtpd                              1.5
snit                               1.4.2
snit                               2.3.2
soundex                            1.0
spf                                1.1.1
stooop                             4.4.1
stringprep                         1.0.1
stringprep::data                   1.0.1
struct                             1.4
struct                             2.1
struct::disjointset                1.0
struct::graph                      1.2.1
struct::graph                      2.4
struct::graph::op                  0.11.3
struct::list                       1.8.1
struct::matrix                     1.2.1
struct::matrix                     2.0.2
struct::pool                       1.2.1
struct::prioqueue                  1.4
struct::queue                      1.4.2
struct::record                     1.2.1
struct::set                        2.2.3
struct::skiplist                   1.3
struct::stack                      1.5.1
struct::tree                       1.2.2
struct::tree                       2.1.2
sum                                1.1.0
switched                           2.2.1
tar                                0.7
tcl::chan::cat                     1.0.1
tcl::chan::core                    1
tcl::chan::events                  1
tcl::chan::facade                  1.0.1
tcl::chan::fifo                    1
tcl::chan::fifo2                   1
tcl::chan::halfpipe                1
tcl::chan::memchan                 1.0.2







|















|




|



|




|
|







269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
ripemd128                          1.0.4
ripemd160                          1.0.4
sha1                               1.1.0
sha1                               2.0.3
sha256                             1.0.3
simulation::annealing              0.2
simulation::montecarlo             0.1
simulation::random                 0.3.1
smtp                               1.4.5
smtpd                              1.5
snit                               1.4.2
snit                               2.3.2
soundex                            1.0
spf                                1.1.1
stooop                             4.4.1
stringprep                         1.0.1
stringprep::data                   1.0.1
struct                             1.4
struct                             2.1
struct::disjointset                1.0
struct::graph                      1.2.1
struct::graph                      2.4
struct::graph::op                  0.11.3
struct::list                       1.8.2
struct::matrix                     1.2.1
struct::matrix                     2.0.2
struct::pool                       1.2.1
struct::prioqueue                  1.4
struct::queue                      1.4.4
struct::record                     1.2.1
struct::set                        2.2.3
struct::skiplist                   1.3
struct::stack                      1.5.3
struct::tree                       1.2.2
struct::tree                       2.1.2
sum                                1.1.0
switched                           2.2.1
tar                                0.7.1
tcl::chan::cat                     1.0.2
tcl::chan::core                    1
tcl::chan::events                  1
tcl::chan::facade                  1.0.1
tcl::chan::fifo                    1
tcl::chan::fifo2                   1
tcl::chan::halfpipe                1
tcl::chan::memchan                 1.0.2
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
tcl::transform::observe            1
tcl::transform::otp                1
tcl::transform::rot                1
tcl::transform::spacer             1
tcl::transform::zlib               1
tclDES                             1.0.0
tclDESjr                           1.0.0
tepam                              0.2.0
term                               0.1
term::ansi::code                   0.1
term::ansi::code::attr             0.1
term::ansi::code::ctrl             0.1.1
term::ansi::code::macros           0.1
term::ansi::ctrl::unix             0.1.1
term::ansi::send                   0.1
term::interact::menu               0.1
term::interact::pager              0.1
term::receive                      0.1
term::receive::bind                0.1







|



|







332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
tcl::transform::observe            1
tcl::transform::otp                1
tcl::transform::rot                1
tcl::transform::spacer             1
tcl::transform::zlib               1
tclDES                             1.0.0
tclDESjr                           1.0.0
tepam                              0.4.0
term                               0.1
term::ansi::code                   0.1
term::ansi::code::attr             0.1
term::ansi::code::ctrl             0.1.2
term::ansi::code::macros           0.1
term::ansi::ctrl::unix             0.1.1
term::ansi::send                   0.1
term::interact::menu               0.1
term::interact::pager              0.1
term::receive                      0.1
term::receive::bind                0.1
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400


transfer::copy::queue              0.1
transfer::data::destination        0.2
transfer::data::source             0.2
transfer::receiver                 0.2
transfer::transmitter              0.2
treeql                             1.3.1
try                                1
uevent                             0.2
uevent::onidle                     0.1
unicode                            1.0.0
unicode::data                      1.0.0
units                              2.1.1
uri                                1.2.2
uri::urn                           1.0.2
uuencode                           1.1.5
uuid                               1.0.1
valtype::common                    1
valtype::creditcard::amex          1
valtype::creditcard::discover      1
valtype::creditcard::mastercard    1
valtype::creditcard::visa          1
valtype::gs1::ean13                1
valtype::iban                      1
valtype::imei                      1
valtype::isbn                      1
valtype::luhn                      1
valtype::luhn5                     1
valtype::usnpi                     1
valtype::verhoeff                  1
wip                                1.2
wip                                2.2
xsxp                               1.0
yaml                               0.3.6
yencode                            1.1.3









|







|






|











>
>
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
transfer::copy::queue              0.1
transfer::data::destination        0.2
transfer::data::source             0.2
transfer::receiver                 0.2
transfer::transmitter              0.2
treeql                             1.3.1
try                                1
uevent                             0.3.1
uevent::onidle                     0.1
unicode                            1.0.0
unicode::data                      1.0.0
units                              2.1.1
uri                                1.2.2
uri::urn                           1.0.2
uuencode                           1.1.5
uuid                               1.0.2
valtype::common                    1
valtype::creditcard::amex          1
valtype::creditcard::discover      1
valtype::creditcard::mastercard    1
valtype::creditcard::visa          1
valtype::gs1::ean13                1
valtype::iban                      1.1
valtype::imei                      1
valtype::isbn                      1
valtype::luhn                      1
valtype::luhn5                     1
valtype::usnpi                     1
valtype::verhoeff                  1
wip                                1.2
wip                                2.2
xsxp                               1.0
yaml                               0.3.6
yencode                            1.1.3
zipfile::decode                    0.2
zipfile::encode                    0.1

Added support/releases/history/README-1.15.txt.

























































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
Overview
========

    7   new packages                in 5   modules
    33  changed packages            in 29  modules
    10  internally changed packages in 6   modules
    344 unchanged packages          in 90  modules
    400 packages, total             in 110 modules, total

New in tcllib 1.15
==================

    Module      Package                   New Version   Comments
    ----------- ------------------------- ------------- ----------
    clock       clock::iso8601            0.1
                clock::rfc2822            0.1
    ----------- ------------------------- ------------- ----------
    fileutil    fileutil::decode          0.1
    generator   generator                 0.1
    map         map::geocode::nominatim   0.1
    ----------- ------------------------- ------------- ----------
    zip         zipfile::decode           0.2
                zipfile::encode           0.1
    ----------- ------------------------- ------------- ----------

Changes from tcllib 1.14 to 1.15
================================

                                                tcllib 1.14   tcllib 1.15
    Module             Package                  Old Version   New Version   Comments
    ------------------ ------------------------ ------------- ------------- ----------
    aes                aes                      1.0.2         1.1           D EF
    crc                crc16                    1.1.1         1.1.2         B
    csv                csv                      0.7.3         0.8           EF
    doctools           doctools                 1.4.13        1.4.14        T B
    ------------------ ------------------------ ------------- ------------- ----------
    fileutil           fileutil                 1.14.4        1.14.5        B
                       fileutil::traverse       0.4.2         0.4.3         B
    ------------------ ------------------------ ------------- ------------- ----------
    grammar_peg        grammar::peg             0.1           0.2           B
    htmlparse          htmlparse                1.2           1.2.1         B
    http               autoproxy                1.5.1         1.5.3         B
    imap4              imap4                    0.3           0.4           EF
    inifile            inifile                  0.2.4         0.2.5         B
    json               json::write              1.0.1         1.0.2         B
    log                logger                   0.9           0.9.3         B
    ------------------ ------------------------ ------------- ------------- ----------
    map                map::slippy              0.4           0.5           EF
                       map::slippy::fetcher     0.2           0.3           EF
    ------------------ ------------------------ ------------- ------------- ----------
    math               math::statistics         0.7.0         0.8.0         EF
    mime               mime                     1.5.4         1.5.6         B
    ncgi               ncgi                     1.3.2         1.4.1         EF B T D
    ooutil             oo::util                 1             1.1           EF
    pki                pki                      0.2           0.6           EF
    png                png                      0.1.2         0.2           EF
    pop3               pop3                     1.8           1.9           B T
    simulation         simulation::random       0.3           0.3.1         B
    ------------------ ------------------------ ------------- ------------- ----------
    struct             struct::list             1.8.1         1.8.2         B T
                       struct::queue            1.4.2         1.4.4         B T D
                       struct::stack            1.5.1         1.5.3         B T
    ------------------ ------------------------ ------------- ------------- ----------
    tar                tar                      0.7           0.7.1         B
    tepam              tepam                    0.2.0         0.4.0         EF D T
    term               term::ansi::code::ctrl   0.1.1         0.1.2         B
    uev                uevent                   0.2           0.3.1         EF B
    uuid               uuid                     1.0.1         1.0.2         B
    valtype            valtype::iban            1             1.1           EF
    virtchannel_base   tcl::chan::cat           1.0.1         1.0.2         B
    ------------------ ------------------------ ------------- ------------- ----------

Invisible changes (documentation, testsuites)
=============================================

                                          tcllib 1.14   tcllib 1.15
    Module       Package                  Old Version   New Version   Comments
    ------------ ------------------------ ------------- ------------- ----------
    base64       base64                   2.4.2         2.4.2         D
    cmdline      cmdline                  1.3.3         1.3.3         T
    ------------ ------------------------ ------------- ------------- ----------
    grammar_me   grammar::me::cpu         0.2           0.2           T
                 grammar::me::cpu::core   0.2           0.2           T
                 grammar::me::cpu::gasm   0.1           0.1           T
                 grammar::me::tcl         0.1           0.1           T
                 grammar::me::util        0.1           0.1           T
    ------------ ------------------------ ------------- ------------- ----------
    irc          irc                      0.6.1         0.6.1         D
    ------------ ------------------------ ------------- ------------- ----------
    struct       struct::tree             1.2.2         1.2.2         D
                 struct::tree             2.1.2         2.1.2         D
    ------------ ------------------------ ------------- ------------- ----------
    try          try                      1             1             D
    ------------ ------------------------ ------------- ------------- ----------

Unchanged
=========

    ascii85, asn, base32, base32::core, base32::hex, bee, bench,
    bench::in, bench::out::csv, bench::out::text, bibtex, blowfish,
    cache::async, calendar, char, cksum, comm, configuration,
    control, coroutine, coroutine::auto, counter, crc32, des, dns,
    docstrip, docstrip::util, doctools::changelog, doctools::config,
    doctools::cvs, doctools::html, doctools::html::cssdefaults,
    doctools::idx, doctools::idx, doctools::idx::export,
    doctools::idx::export::docidx, doctools::idx::export::html,
    doctools::idx::export::json, doctools::idx::export::nroff,
    doctools::idx::export::text, doctools::idx::export::wiki,
    doctools::idx::import, doctools::idx::import::docidx,
    doctools::idx::import::json, doctools::idx::parse,
    doctools::idx::structure, doctools::msgcat,
    doctools::msgcat::idx::c, doctools::msgcat::idx::de,
    doctools::msgcat::idx::en, doctools::msgcat::idx::fr,
    doctools::msgcat::toc::c, doctools::msgcat::toc::de,
    doctools::msgcat::toc::en, doctools::msgcat::toc::fr,
    doctools::nroff::man_macros, doctools::paths,
    doctools::tcl::parse, doctools::text, doctools::toc,
    doctools::toc, doctools::toc::export,
    doctools::toc::export::doctoc, doctools::toc::export::html,
    doctools::toc::export::json, doctools::toc::export::nroff,
    doctools::toc::export::text, doctools::toc::export::wiki,
    doctools::toc::import, doctools::toc::import::doctoc,
    doctools::toc::import::json, doctools::toc::parse,
    doctools::toc::structure, exif, fileutil::magic::cfront,
    fileutil::magic::cgen, fileutil::magic::filetype,
    fileutil::magic::mimetype, fileutil::magic::rt, fileutil::multi,
    fileutil::multi::op, ftp, ftp::geturl, ftpd, gpx,
    grammar::aycock, grammar::aycock::debug,
    grammar::aycock::runtime, grammar::fa, grammar::fa::dacceptor,
    grammar::fa::dexec, grammar::fa::op, grammar::peg::interp, hook,
    html, huddle, ident, interp, interp::delegate::method,
    interp::delegate::proc, ip, javascript, jpeg, json, lambda,
    ldap, ldapx, log, logger::appender, logger::utils,
    map::slippy::cache, mapproj, math, math::bigfloat, math::bignum,
    math::calculus, math::calculus::symdiff, math::complexnumbers,
    math::constants, math::decimal, math::fourier, math::fuzzy,
    math::geometry, math::interpolate, math::linearalgebra,
    math::machineparameters, math::numtheory, math::optimize,
    math::polynomials, math::rationalfunctions, math::roman,
    math::special, md4, md5, md5crypt, multiplexer, nameserv,
    nameserv::auto, nameserv::common, nameserv::server, namespacex,
    nmea, nntp, otp, page::analysis::peg::emodes,
    page::analysis::peg::minimize, page::analysis::peg::reachable,
    page::analysis::peg::realizable, page::compiler::peg::mecpu,
    page::config::peg, page::gen::peg::canon, page::gen::peg::cpkg,
    page::gen::peg::hb, page::gen::peg::me, page::gen::peg::mecpu,
    page::gen::peg::ser, page::gen::tree::text, page::parse::lemon,
    page::parse::peg, page::parse::peghb, page::parse::pegser,
    page::pluginmgr, page::reader::hb, page::reader::lemon,
    page::reader::peg, page::reader::ser, page::reader::treeser,
    page::transform::mecpu, page::transform::reachable,
    page::transform::realizable, page::util::flow,
    page::util::norm::lemon, page::util::norm::peg, page::util::peg,
    page::util::quote, page::writer::hb, page::writer::identity,
    page::writer::me, page::writer::mecpu, page::writer::null,
    page::writer::peg, page::writer::ser, page::writer::tpc,
    page::writer::tree, paths, picoirc, pluginmgr, pop3d,
    pop3d::dbox, pop3d::udb, profiler, pt::ast,
    pt::cparam::configuration::critcl, pt::parse::peg, pt::pe,
    pt::pe::op, pt::peg, pt::peg::container,
    pt::peg::container::peg, pt::peg::export,
    pt::peg::export::container, pt::peg::export::json,
    pt::peg::export::peg, pt::peg::from::json, pt::peg::from::peg,
    pt::peg::import, pt::peg::import::json, pt::peg::import::peg,
    pt::peg::interp, pt::peg::op, pt::peg::to::container,
    pt::peg::to::cparam, pt::peg::to::json, pt::peg::to::param,
    pt::peg::to::peg, pt::peg::to::tclparam, pt::pgen, pt::rde,
    pt::tclparam::configuration::snit,
    pt::tclparam::configuration::tcloo, rc4, rcs, report, resolv,
    rest, ripemd128, ripemd160, S3, SASL, SASL::NTLM,
    SASL::XGoogleToken, sha1, sha256, simulation::annealing,
    simulation::montecarlo, smtp, smtpd, snit, soundex, spf, stooop,
    stringprep, stringprep::data, struct, struct::disjointset,
    struct::graph, struct::graph::op, struct::matrix, struct::pool,
    struct::prioqueue, struct::record, struct::set,
    struct::skiplist, sum, switched, tcl::chan::core,
    tcl::chan::events, tcl::chan::facade, tcl::chan::fifo,
    tcl::chan::fifo2, tcl::chan::halfpipe, tcl::chan::memchan,
    tcl::chan::null, tcl::chan::nullzero, tcl::chan::random,
    tcl::chan::std, tcl::chan::string, tcl::chan::textwindow,
    tcl::chan::variable, tcl::chan::zero, tcl::randomseed,
    tcl::transform::adler32, tcl::transform::base64,
    tcl::transform::core, tcl::transform::counter,
    tcl::transform::crc32, tcl::transform::hex,
    tcl::transform::identity, tcl::transform::limitsize,
    tcl::transform::observe, tcl::transform::otp,
    tcl::transform::rot, tcl::transform::spacer,
    tcl::transform::zlib, tclDES, tclDESjr, term, term::ansi::code,
    term::ansi::code::attr, term::ansi::code::macros,
    term::ansi::ctrl::unix, term::ansi::send, term::interact::menu,
    term::interact::pager, term::receive, term::receive::bind,
    term::send, text::write, textutil, textutil::adjust,
    textutil::expander, textutil::repeat, textutil::split,
    textutil::string, textutil::tabify, textutil::trim, tie,
    tie::std::array, tie::std::dsource, tie::std::file,
    tie::std::growfile, tie::std::log, tie::std::rarray, tiff, time,
    transfer::connect, transfer::copy, transfer::copy::queue,
    transfer::data::destination, transfer::data::source,
    transfer::receiver, transfer::transmitter, treeql,
    uevent::onidle, unicode, unicode::data, units, uri, uri::urn,
    uuencode, valtype::common, valtype::creditcard::amex,
    valtype::creditcard::discover, valtype::creditcard::mastercard,
    valtype::creditcard::visa, valtype::gs1::ean13, valtype::imei,
    valtype::isbn, valtype::luhn, valtype::luhn5, valtype::usnpi,
    valtype::verhoeff, wip, xsxp, yaml, yencode

Legend  Change  Details Comments
        ------  ------- ---------
        Major   API:    ** incompatible ** API changes.

        Minor   EF :    Extended functionality, API.
                I  :    Major rewrite, but no API change

        Patch   B  :    Bug fixes.
                EX :    New examples.
                P  :    Performance enhancement.

        None    T  :    Testsuite changes.
                D  :    Documentation updates.